-
Notifications
You must be signed in to change notification settings - Fork 89
/
execute.ts
43 lines (41 loc) · 2.27 KB
/
execute.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { _afterPluginsLoaded } from '../helpers/_afterPluginsLoaded';
import { _extractMeaningfulErrorMessage } from '../helpers/_extractMeaningfulErrorMessage';
import { __cadesAsyncToken__, __createCadesPluginObject__, _generateCadesFn } from '../helpers/_generateCadesFn';
/**
* Функция кастомной реализации с доступом к Cades плагину напрямую
*
* @callback executeCallback
* @param exposedAPI - API доступные для кастомной реализации
* @param exposedAPI.cadesplugin - Cades плагин, предоставляемый КриптоПРО
* @param exposedAPI._generateCadesFn - функция, компилирующая тело передаваемой javascript функции для текущей среды
* @param exposedAPI.__cadesAsyncToken__ - синтетический маркер, подменяемый в рантайме
* @param exposedAPI.__createCadesPluginObject__ - функция для создания синхронных/асинхронных Cades объектов
* @param exposedAPI._extractMeaningfulErrorMessage - хелпер для извлечения текста ошибки
*
* @returns результат выполнения кастомной реализации
*/
/**
* Компилирует и выполняет переданную функцию для доступной браузерной среды (синхронной/асинхронной)
*
* @param {executeCallback} callback - функция, использующая низкоуровневый доступ к Cades плагину
*
* @returns асинхронный результат выполнения передаваемой функции
*/
export const execute = _afterPluginsLoaded(
async (
callback: (exposedAPI: {
cadesplugin: any;
_generateCadesFn: (callback: Function) => string;
__cadesAsyncToken__: object;
__createCadesPluginObject__: (...args) => any;
_extractMeaningfulErrorMessage: (error: Error) => string | null;
}) => any,
): Promise<any> =>
await callback({
cadesplugin: window.cadesplugin,
_generateCadesFn,
__cadesAsyncToken__,
__createCadesPluginObject__,
_extractMeaningfulErrorMessage,
}),
);