@kizenapps/engine 1.11.0 → 1.11.1-a77d2c7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-MP7VEXDT.js → chunk-AXFROPC2.js} +3 -3
- package/dist/{chunk-MP7VEXDT.js.map → chunk-AXFROPC2.js.map} +1 -1
- package/dist/{chunk-PZEO6NPB.js → chunk-DRABIUOX.js} +4 -4
- package/dist/{chunk-PZEO6NPB.js.map → chunk-DRABIUOX.js.map} +1 -1
- package/dist/{chunk-F2SE2B4O.js → chunk-NF2ECXMZ.js} +3 -3
- package/dist/chunk-NF2ECXMZ.js.map +1 -0
- package/dist/{chunk-4RYL6BUM.js → chunk-PQDZVTD7.js} +3 -3
- package/dist/{chunk-4RYL6BUM.js.map → chunk-PQDZVTD7.js.map} +1 -1
- package/dist/{chunk-WNOKZ4X3.js → chunk-REHCSRJC.js} +59 -15
- package/dist/chunk-REHCSRJC.js.map +1 -0
- package/dist/{chunk-MGKXLESC.js → chunk-VASCNO57.js} +3 -3
- package/dist/{chunk-MGKXLESC.js.map → chunk-VASCNO57.js.map} +1 -1
- package/dist/{chunk-WM7HHYBQ.js → chunk-WTY7QQXW.js} +3 -3
- package/dist/{chunk-WM7HHYBQ.js.map → chunk-WTY7QQXW.js.map} +1 -1
- package/dist/{chunk-OVZXLUFD.js → chunk-Y7J5RZKO.js} +5 -5
- package/dist/{chunk-OVZXLUFD.js.map → chunk-Y7J5RZKO.js.map} +1 -1
- package/dist/{chunk-3MOVWXNZ.js → chunk-YYQXPT6O.js} +3 -3
- package/dist/{chunk-3MOVWXNZ.js.map → chunk-YYQXPT6O.js.map} +1 -1
- package/dist/communication.js +2 -2
- package/dist/contexts/base.js +4 -4
- package/dist/contexts/floatingFrame.js +5 -5
- package/dist/contexts/recordDetail.js +5 -5
- package/dist/index.js +4 -4
- package/dist/react.js +5 -5
- package/dist/util.js +6 -6
- package/dist/workers/calendarSource.worker.js +6 -6
- package/dist/workers/expression.worker.js +74 -11
- package/dist/workers/expression.worker.js.map +1 -1
- package/dist/workers/floatingFrame.worker.js +7 -7
- package/dist/workers/generic.worker.js +6 -6
- package/dist/workers/recordDetail.worker.js +7 -7
- package/package.json +1 -1
- package/dist/chunk-F2SE2B4O.js.map +0 -1
- package/dist/chunk-WNOKZ4X3.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { FloatingFrameWorkerContext } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
1
|
+
export { FloatingFrameWorkerContext } from '../chunk-DRABIUOX.js';
|
|
2
|
+
import '../chunk-Y7J5RZKO.js';
|
|
3
|
+
import '../chunk-VASCNO57.js';
|
|
4
|
+
import '../chunk-WTY7QQXW.js';
|
|
5
|
+
import '../chunk-NF2ECXMZ.js';
|
|
6
6
|
import '../chunk-5WRI5ZAA.js';
|
|
7
7
|
//# sourceMappingURL=floatingFrame.js.map
|
|
8
8
|
//# sourceMappingURL=floatingFrame.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { RecordDetailWorkerContext } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
1
|
+
export { RecordDetailWorkerContext } from '../chunk-PQDZVTD7.js';
|
|
2
|
+
import '../chunk-Y7J5RZKO.js';
|
|
3
|
+
import '../chunk-VASCNO57.js';
|
|
4
|
+
import '../chunk-WTY7QQXW.js';
|
|
5
|
+
import '../chunk-NF2ECXMZ.js';
|
|
6
6
|
import '../chunk-5WRI5ZAA.js';
|
|
7
7
|
//# sourceMappingURL=recordDetail.js.map
|
|
8
8
|
//# sourceMappingURL=recordDetail.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { clearNavigationContext, consumeNavigationContext, modalSize, readNavigationContext, runExpression, runObjectExpression, runOptionExpression, runScript, runStringExpression, version } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
1
|
+
export { clearNavigationContext, consumeNavigationContext, modalSize, readNavigationContext, runExpression, runObjectExpression, runOptionExpression, runScript, runStringExpression, version } from './chunk-REHCSRJC.js';
|
|
2
|
+
import './chunk-AXFROPC2.js';
|
|
3
|
+
import './chunk-VASCNO57.js';
|
|
4
|
+
import './chunk-NF2ECXMZ.js';
|
|
5
5
|
import './chunk-5WRI5ZAA.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/react.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { runScript, getPluginSafeHTML, getStableHash, readNavigationContext, clearNavigationContext, flattenReservedState, runExpression, replaceConfigValues, isFlagEnabled } from './chunk-
|
|
1
|
+
import { runScript, getPluginSafeHTML, getStableHash, readNavigationContext, clearNavigationContext, flattenReservedState, runExpression, replaceConfigValues, isFlagEnabled } from './chunk-REHCSRJC.js';
|
|
2
2
|
import './chunk-LGJYUPYZ.js';
|
|
3
|
-
import { generateExecutionKey } from './chunk-
|
|
4
|
-
import { buildIframeURLWithProxy, unwrapProxyMessage, getAllNestedInputsFromConfig, getActionFieldKey, getFieldFromAction, getActionMenuFieldKey } from './chunk-
|
|
5
|
-
import { runFrameScriptEventName, runBlockScriptEventName } from './chunk-
|
|
6
|
-
import { QUERY_KEYS, ROUTE_CHANGE_INTERNAL_EVENT, IFRAME_PREFIX, ROUTE_CHANGE_IFRAME_EVENT } from './chunk-
|
|
3
|
+
import { generateExecutionKey } from './chunk-AXFROPC2.js';
|
|
4
|
+
import { buildIframeURLWithProxy, unwrapProxyMessage, getAllNestedInputsFromConfig, getActionFieldKey, getFieldFromAction, getActionMenuFieldKey } from './chunk-VASCNO57.js';
|
|
5
|
+
import { runFrameScriptEventName, runBlockScriptEventName } from './chunk-WTY7QQXW.js';
|
|
6
|
+
import { QUERY_KEYS, ROUTE_CHANGE_INTERNAL_EVENT, IFRAME_PREFIX, ROUTE_CHANGE_IFRAME_EVENT } from './chunk-NF2ECXMZ.js';
|
|
7
7
|
import './chunk-5WRI5ZAA.js';
|
|
8
8
|
import { QueryClient, useQueries, useQueryClient, QueryClientContext, QueryClientProvider } from '@tanstack/react-query';
|
|
9
9
|
import { createContext, useContext, useState, useCallback, useMemo, useRef, useEffect, useImperativeHandle } from 'react';
|
package/dist/util.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { getHash } from './chunk-
|
|
2
|
-
export { flattenReservedState, forceQualifiedUrl, getDisabledValue, getEnabledState, getHash, getLinkValue, getPluginSafeHTML, getQrCodeValue, getStableHash, isFlagEnabled, mergeConfig, pluginMapper, reduceEnabledResults, replaceConfigValues } from './chunk-
|
|
3
|
-
export { emitRouteChange, findMatchingAction, getPartialLocation } from './chunk-
|
|
4
|
-
import { KizenRequestError, isActionMenuFieldKey, splitActionMenuFieldKey, getActionFieldKey, isActionFieldKey, cleanConfig, getAllNestedInputsFromConfig } from './chunk-
|
|
5
|
-
export { KizenRequestError, cleanConfig, getActionContainerKey, getActionMenuFieldKey, getActionMenuHeadingKey, getAllNestedInputsFromConfig, getFieldFromAction, isActionMenuFieldKey, splitActionFieldKey } from './chunk-
|
|
6
|
-
import './chunk-
|
|
1
|
+
import { getHash } from './chunk-REHCSRJC.js';
|
|
2
|
+
export { flattenReservedState, forceQualifiedUrl, getDisabledValue, getEnabledState, getHash, getLinkValue, getPluginSafeHTML, getQrCodeValue, getStableHash, isFlagEnabled, mergeConfig, pluginMapper, reduceEnabledResults, replaceConfigValues } from './chunk-REHCSRJC.js';
|
|
3
|
+
export { emitRouteChange, findMatchingAction, getPartialLocation } from './chunk-AXFROPC2.js';
|
|
4
|
+
import { KizenRequestError, isActionMenuFieldKey, splitActionMenuFieldKey, getActionFieldKey, isActionFieldKey, cleanConfig, getAllNestedInputsFromConfig } from './chunk-VASCNO57.js';
|
|
5
|
+
export { KizenRequestError, cleanConfig, getActionContainerKey, getActionMenuFieldKey, getActionMenuHeadingKey, getAllNestedInputsFromConfig, getFieldFromAction, isActionMenuFieldKey, splitActionFieldKey } from './chunk-VASCNO57.js';
|
|
6
|
+
import './chunk-NF2ECXMZ.js';
|
|
7
7
|
import './chunk-5WRI5ZAA.js';
|
|
8
8
|
|
|
9
9
|
// src/util/network.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { WorkerPromise } from '../chunk-
|
|
2
|
-
import { buildCodeRunnerFunction } from '../chunk-
|
|
3
|
-
import { BaseWorkerContext } from '../chunk-
|
|
4
|
-
import { dynamicPromptHandler, promptHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import { ACTIONS } from '../chunk-
|
|
1
|
+
import { WorkerPromise } from '../chunk-YYQXPT6O.js';
|
|
2
|
+
import { buildCodeRunnerFunction } from '../chunk-AXFROPC2.js';
|
|
3
|
+
import { BaseWorkerContext } from '../chunk-Y7J5RZKO.js';
|
|
4
|
+
import { dynamicPromptHandler, promptHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-VASCNO57.js';
|
|
5
|
+
import '../chunk-WTY7QQXW.js';
|
|
6
|
+
import { ACTIONS } from '../chunk-NF2ECXMZ.js';
|
|
7
7
|
import '../chunk-5WRI5ZAA.js';
|
|
8
8
|
|
|
9
9
|
// src/workers/calendarSource.worker.ts
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import '../chunk-5WRI5ZAA.js';
|
|
2
|
+
|
|
3
|
+
// src/workers/expression.ts
|
|
4
|
+
var getValue = (key, args) => {
|
|
5
|
+
const rawValue = args[key];
|
|
6
|
+
if (!rawValue) {
|
|
7
|
+
return "null";
|
|
8
|
+
}
|
|
9
|
+
const value = typeof rawValue.value !== "undefined" ? JSON.stringify(rawValue.value) : "null";
|
|
10
|
+
return value;
|
|
11
|
+
};
|
|
2
12
|
var interpolateValues = (expression, args) => {
|
|
3
13
|
const interpolated = expression.replace(/{{(.*?)}}/g, (_, key) => {
|
|
4
14
|
return getValue(key, args);
|
|
@@ -17,19 +27,72 @@ ${fnBody}`);
|
|
|
17
27
|
const fn = new Function(fnBody);
|
|
18
28
|
return fn();
|
|
19
29
|
};
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
var STANDARD_ERROR_NAMES = /* @__PURE__ */ new Set([
|
|
31
|
+
"Error",
|
|
32
|
+
"EvalError",
|
|
33
|
+
"RangeError",
|
|
34
|
+
"ReferenceError",
|
|
35
|
+
"SyntaxError",
|
|
36
|
+
"TypeError",
|
|
37
|
+
"URIError"
|
|
38
|
+
]);
|
|
39
|
+
var describeFailure = (stage, ex, isDebug) => {
|
|
40
|
+
let name = "non-Error thrown";
|
|
41
|
+
let detail = "";
|
|
42
|
+
try {
|
|
43
|
+
if (ex instanceof Error) {
|
|
44
|
+
const errorName = ex.name;
|
|
45
|
+
name = typeof errorName === "string" && STANDARD_ERROR_NAMES.has(errorName) ? errorName : "Error";
|
|
46
|
+
}
|
|
47
|
+
if (isDebug) {
|
|
48
|
+
detail = ex instanceof Error ? ex.message : String(ex);
|
|
49
|
+
}
|
|
50
|
+
} catch {
|
|
24
51
|
}
|
|
25
|
-
|
|
26
|
-
return value;
|
|
52
|
+
return detail ? `${stage} (${name}): ${detail}` : `${stage} (${name})`;
|
|
27
53
|
};
|
|
54
|
+
var failure = (error) => JSON.stringify({ result: null, error });
|
|
55
|
+
var buildExpressionResponse = (rawPayload) => {
|
|
56
|
+
let parsed;
|
|
57
|
+
try {
|
|
58
|
+
parsed = JSON.parse(rawPayload);
|
|
59
|
+
} catch {
|
|
60
|
+
return failure("invalid payload");
|
|
61
|
+
}
|
|
62
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
63
|
+
return failure("invalid payload");
|
|
64
|
+
}
|
|
65
|
+
const payload = parsed;
|
|
66
|
+
const { expression, args, isDebug = false } = payload;
|
|
67
|
+
let result;
|
|
68
|
+
try {
|
|
69
|
+
result = evaluateExpression(expression, args, isDebug);
|
|
70
|
+
} catch (ex) {
|
|
71
|
+
return failure(describeFailure("evaluation failed", ex, isDebug));
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
return JSON.stringify({ result });
|
|
75
|
+
} catch (ex) {
|
|
76
|
+
return failure(describeFailure("result not serializable", ex, isDebug));
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
var handleUncaughtError = (e, post) => {
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
post(failure("uncaught error in expression worker"));
|
|
82
|
+
};
|
|
83
|
+
var handleUnhandledRejection = (e) => {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// src/workers/expression.worker.ts
|
|
28
88
|
self.onmessage = (e) => {
|
|
29
|
-
|
|
30
|
-
const { expression, args, isDebug = false } = data;
|
|
31
|
-
const result = evaluateExpression(expression, args, isDebug);
|
|
32
|
-
self.postMessage(JSON.stringify({ result }));
|
|
89
|
+
self.postMessage(buildExpressionResponse(e.data));
|
|
33
90
|
};
|
|
91
|
+
self.addEventListener("error", (e) => {
|
|
92
|
+
handleUncaughtError(e, (message) => {
|
|
93
|
+
self.postMessage(message);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
self.addEventListener("unhandledrejection", handleUnhandledRejection);
|
|
34
97
|
//# sourceMappingURL=expression.worker.js.map
|
|
35
98
|
//# sourceMappingURL=expression.worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/workers/expression.worker.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../src/workers/expression.ts","../../src/workers/expression.worker.ts"],"names":[],"mappings":"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","file":"expression.worker.js","sourcesContent":["import type { UnknownJSON } from '../types/common.js';\nimport type { ExpressionPayload } from '../types/workers.js';\n\nexport interface ExpressionResponse {\n result: unknown;\n error?: string;\n}\n\nconst getValue = (key: string, args: Record<string, UnknownJSON>): string => {\n const rawValue = args[key];\n\n if (!rawValue) {\n return 'null';\n }\n\n const value = typeof rawValue.value !== 'undefined' ? JSON.stringify(rawValue.value) : 'null';\n\n return value;\n};\n\nexport const interpolateValues = (\n expression: string,\n args: Record<string, UnknownJSON>,\n): string => {\n const interpolated = expression.replace(/{{(.*?)}}/g, (_, key: string) => {\n return getValue(key, args);\n });\n\n return interpolated;\n};\n\nexport const evaluateExpression = (\n expression: string,\n args: Record<string, UnknownJSON>,\n isDebug: boolean,\n): unknown => {\n const fnBody = `return ${interpolateValues(expression, args)};`;\n\n if (isDebug) {\n console.log(`Initial expression:\\n${expression}\\n\\nInterpreted as:\\n${fnBody}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const fn = new Function(fnBody);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return fn();\n};\n\nconst STANDARD_ERROR_NAMES = new Set([\n 'Error',\n 'EvalError',\n 'RangeError',\n 'ReferenceError',\n 'SyntaxError',\n 'TypeError',\n 'URIError',\n]);\n\nconst describeFailure = (stage: string, ex: unknown, isDebug: boolean): string => {\n let name = 'non-Error thrown';\n let detail = '';\n\n try {\n if (ex instanceof Error) {\n const errorName: unknown = ex.name;\n\n name =\n typeof errorName === 'string' && STANDARD_ERROR_NAMES.has(errorName) ? errorName : 'Error';\n }\n\n if (isDebug) {\n detail = ex instanceof Error ? ex.message : String(ex);\n }\n } catch {}\n\n return detail ? `${stage} (${name}): ${detail}` : `${stage} (${name})`;\n};\n\nconst failure = (error: string): string =>\n JSON.stringify({ result: null, error } satisfies ExpressionResponse);\n\nexport const buildExpressionResponse = (rawPayload: string): string => {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(rawPayload);\n } catch {\n return failure('invalid payload');\n }\n\n if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return failure('invalid payload');\n }\n\n const payload = parsed as ExpressionPayload;\n\n const { expression, args, isDebug = false } = payload;\n let result: unknown;\n\n try {\n result = evaluateExpression(expression, args, isDebug);\n } catch (ex) {\n return failure(describeFailure('evaluation failed', ex, isDebug));\n }\n\n try {\n return JSON.stringify({ result } satisfies ExpressionResponse);\n } catch (ex) {\n return failure(describeFailure('result not serializable', ex, isDebug));\n }\n};\n\nexport const handleUncaughtError = (e: Event, post: (message: string) => void): void => {\n e.preventDefault();\n post(failure('uncaught error in expression worker'));\n};\n\nexport const handleUnhandledRejection = (e: Event): void => {\n e.preventDefault();\n};\n","import {\n buildExpressionResponse,\n handleUncaughtError,\n handleUnhandledRejection,\n} from './expression.js';\n\nself.onmessage = (e: MessageEvent<string>): void => {\n self.postMessage(buildExpressionResponse(e.data));\n};\n\nself.addEventListener('error', (e) => {\n handleUncaughtError(e, (message) => {\n self.postMessage(message);\n });\n});\n\nself.addEventListener('unhandledrejection', handleUnhandledRejection);\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { FloatingFrameWorkerContext } from '../chunk-
|
|
2
|
-
import { WorkerPromise } from '../chunk-
|
|
3
|
-
import { buildCodeRunnerFunction } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import { ACTIONS } from '../chunk-
|
|
1
|
+
import { FloatingFrameWorkerContext } from '../chunk-DRABIUOX.js';
|
|
2
|
+
import { WorkerPromise } from '../chunk-YYQXPT6O.js';
|
|
3
|
+
import { buildCodeRunnerFunction } from '../chunk-AXFROPC2.js';
|
|
4
|
+
import '../chunk-Y7J5RZKO.js';
|
|
5
|
+
import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-VASCNO57.js';
|
|
6
|
+
import '../chunk-WTY7QQXW.js';
|
|
7
|
+
import { ACTIONS } from '../chunk-NF2ECXMZ.js';
|
|
8
8
|
import '../chunk-5WRI5ZAA.js';
|
|
9
9
|
|
|
10
10
|
// src/workers/floatingFrame.worker.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { WorkerPromise } from '../chunk-
|
|
2
|
-
import { buildCodeRunnerFunction } from '../chunk-
|
|
3
|
-
import { BaseWorkerContext } from '../chunk-
|
|
4
|
-
import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import { ACTIONS } from '../chunk-
|
|
1
|
+
import { WorkerPromise } from '../chunk-YYQXPT6O.js';
|
|
2
|
+
import { buildCodeRunnerFunction } from '../chunk-AXFROPC2.js';
|
|
3
|
+
import { BaseWorkerContext } from '../chunk-Y7J5RZKO.js';
|
|
4
|
+
import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-VASCNO57.js';
|
|
5
|
+
import '../chunk-WTY7QQXW.js';
|
|
6
|
+
import { ACTIONS } from '../chunk-NF2ECXMZ.js';
|
|
7
7
|
import '../chunk-5WRI5ZAA.js';
|
|
8
8
|
|
|
9
9
|
// src/workers/generic.worker.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { RecordDetailWorkerContext } from '../chunk-
|
|
2
|
-
import { WorkerPromise } from '../chunk-
|
|
3
|
-
import { buildCodeRunnerFunction } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import { ACTIONS } from '../chunk-
|
|
1
|
+
import { RecordDetailWorkerContext } from '../chunk-PQDZVTD7.js';
|
|
2
|
+
import { WorkerPromise } from '../chunk-YYQXPT6O.js';
|
|
3
|
+
import { buildCodeRunnerFunction } from '../chunk-AXFROPC2.js';
|
|
4
|
+
import '../chunk-Y7J5RZKO.js';
|
|
5
|
+
import { completeSetupHandler, closeModalHandler, showViewInModalHandler, openCreateRelatedRecordHandler, openCreateRecordHandler, refreshEntityHandler, dynamicPromptHandler, promptHandler, installThirdPartyScriptHandler, uploadFileHandler, postFormDataHandler, kizenRequestHandler, handleCommonResponse } from '../chunk-VASCNO57.js';
|
|
6
|
+
import '../chunk-WTY7QQXW.js';
|
|
7
|
+
import { ACTIONS } from '../chunk-NF2ECXMZ.js';
|
|
8
8
|
import '../chunk-5WRI5ZAA.js';
|
|
9
9
|
|
|
10
10
|
// src/workers/recordDetail.worker.ts
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/communication/constants.ts","../src/communication/ThirdPartyScript.ts"],"names":["INDICATOR_TYPE"],"mappings":"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","file":"chunk-F2SE2B4O.js","sourcesContent":["export const ACTIONS = {\n QUERY_REQUEST: 'query:request',\n UI_OUTPUT: 'outputui',\n IFRAME_OUTPUT: 'iframeoutput',\n POSTFORMDATA_REQUEST: 'postformdata:request',\n SETSTATE: 'setstate',\n DONE: 'done',\n RUN: 'run',\n OPEN_WINDOW: 'openwindow',\n COMMUNICATE: 'communicate',\n HIDE: 'hide',\n SHOW: 'show',\n EXPAND: 'expand',\n COLLAPSE: 'collapse',\n HIDE_HEADER: 'hideheader',\n SHOW_HEADER: 'showheader',\n OPEN_CREATE_RECORD_MODAL_REQUEST: 'opencreaterecordmodal:request',\n OPEN_CREATE_RELATED_RECORD_MODAL_REQUEST: 'opencreaterelatedrecordmodal:request',\n SHOW_TOAST: 'showtoast',\n CLEAR_TOASTS: 'cleartoasts',\n REFRESH_TIMELINE: 'refreshtimeline',\n REFRESH_ENTITY: 'refreshentity',\n UPLOADFILE_REQUEST: 'uploadfile:request',\n UPDATE_SESSION_DATA: 'updatesessiondata',\n INSTALL_THIRD_PARTY_SCRIPT_REQUEST: 'installthirdpartyscript:request',\n PROMPT_REQUEST: 'prompt:request',\n // Note: We have a special request for dynamic prompts, but the regular response is sufficient\n // and no special dynamic one is needed\n DYNAMIC_PROMPT_REQUEST: 'dynamicprompt:request',\n RELEASE_BLOCKING_SCRIPT: 'releaseblockingscript',\n AUTHORIZE: 'authorize',\n COPY_TO_CLIPBOARD: 'copytoclipboard',\n SHOW_VIEW_IN_MODAL_REQUEST: 'showviewinmodal:request',\n CLOSE_MODAL_REQUEST: 'closemodal:request',\n CONSOLE_LOG: 'consolelog',\n RUN_EVENT_SCRIPT: 'runeventscript',\n COMPLETE_SETUP_REQUEST: 'completesetup:request',\n};\n\nexport const RESPONSES = {\n QUERY_RESPONSE: 'query:response',\n POSTFORMDATA_RESPONSE: 'postformdata:response',\n ERROR: 'error',\n UPLOADFILE_RESPONSE: 'uploadfile:response',\n UPLOADFILE_PROGRESS: 'uploadfile:progress',\n INSTALL_THIRD_PARTY_SCRIPT_RESPONSE: 'installthirdpartyscript:response',\n PROMPT_RESPONSE: 'prompt:response',\n REFRESH_ENTITY_RESPONSE: 'refreshentity:response',\n CREATE_RECORD_RESPONSE: 'createrecord:response',\n CREATE_RELATED_RECORD_RESPONSE: 'createrelatedrecord:response',\n COMPLETE_SETUP_RESPONSE: 'completesetup:response',\n};\n\nexport const COMMUNICATIONS = {\n RUN_FRAME_SCRIPT: 'runframescript',\n RUN_BLOCK_SCRIPT: 'runblockscript',\n SEND_MESSAGE_TO_FRAME: 'sendmessagetoframe',\n CALL_THIRD_PARTY_SCRIPT: 'callthirdpartyscript',\n};\n\nexport enum INDICATOR_TYPE {\n NONE = 'none',\n BLOCK = 'block',\n BUTTON = 'button',\n SPINNER = 'spinner',\n}\n\nexport const ROUTE_CHANGE_INTERNAL_EVENT = 'integration:route-change';\nexport const ROUTE_CHANGE_IFRAME_EVENT = 'kizen-route-change';\nexport const IFRAME_PREFIX = 'kzn-integration-frame';\n\nconst PKG_VERSION = __PKG_VERSION__;\n\nconst BASE_QUERY_KEY = ['__plugin_engine', PKG_VERSION] as const;\n\nexport const QUERY_KEYS = {\n CALENDAR_SOURCE_CALENDAR_LIST: (pluginApiName: string, sourceApiName: string) =>\n [...BASE_QUERY_KEY, 'calendar-source', 'calendar-list', pluginApiName, sourceApiName] as const,\n CALENDAR_SOURCE_EVENTS: (\n pluginApiName: string,\n sourceApiName: string,\n calendarId: string,\n params: unknown,\n ) =>\n [\n ...BASE_QUERY_KEY,\n 'calendar-source',\n 'events',\n pluginApiName,\n sourceApiName,\n calendarId,\n params,\n ] as const,\n};\n","import type { Instance } from '../types/contexts.js';\nimport { ACTIONS, COMMUNICATIONS } from './constants.js';\n\nconst freshWorksPattern = /https:\\/\\/.*widget\\.freshworks\\.com\\/.*\\.js/;\nconst intercomPattern = /https:\\/\\/widget\\.intercom\\.io\\/widget\\/[a-z0-9]+/;\n\nexport const ALLOWED_INTEGRATIONS = {\n FRESHWORKS: 'freshworks',\n INTERCOM: 'intercom',\n} as const;\n\n/*\n Third party scripts must match an approved regex, and arbitrary scripts cannot be\n loaded by a plugin if they do not.\n*/\nexport const getScriptIntegrationType = (\n scriptUrl: string,\n): (typeof ALLOWED_INTEGRATIONS)[keyof typeof ALLOWED_INTEGRATIONS] | undefined => {\n if (freshWorksPattern.test(scriptUrl)) {\n return ALLOWED_INTEGRATIONS.FRESHWORKS;\n }\n\n if (intercomPattern.test(scriptUrl)) {\n return ALLOWED_INTEGRATIONS.INTERCOM;\n }\n};\n\n/* \n The global name of the third-party integration. This is the variable where the\n integration code can be called from. For example, if the third-party integration\n is 'Freshworks', function calls will be made like window.FreshworksWidget(...args).\n*/\nexport const thirdPartyGlobalNames = {\n [ALLOWED_INTEGRATIONS.FRESHWORKS]: 'FreshworksWidget',\n [ALLOWED_INTEGRATIONS.INTERCOM]: 'Intercom',\n};\n\n/*\n For a predefined third-party integration, the setup script will be run\n BEFORE the third party javascript has been loaded.\n*/\nexport const thirdPartySetupScripts = {\n [ALLOWED_INTEGRATIONS.FRESHWORKS]: (args: Record<string, unknown>) => {\n (window as unknown as Record<string, unknown>).fwSettings = {\n widget_id: args.widgetId,\n };\n\n // Function adapted from https://developers.freshdesk.com/widget-api/#introduction\n (function (...rest) {\n if (\n 'function' !=\n typeof (window as unknown as Record<string, unknown>)[\n thirdPartyGlobalNames[ALLOWED_INTEGRATIONS.FRESHWORKS]\n ]\n ) {\n const n: { q: unknown[]; __kizen_pending?: boolean } = function () {\n n.q.push(...rest);\n };\n\n n.__kizen_pending = true;\n\n // eslint-disable-next-line\n ((n.q = []), ((window as any)[thirdPartyGlobalNames[ALLOWED_INTEGRATIONS.FRESHWORKS]] = n));\n }\n })();\n },\n // Function adapted from https://developers.intercom.com/installing-intercom/web/installation\n [ALLOWED_INTEGRATIONS.INTERCOM]: () => {\n (function () {\n if (\n 'function' !=\n typeof (window as unknown as Record<string, unknown>)[\n thirdPartyGlobalNames[ALLOWED_INTEGRATIONS.INTERCOM]\n ]\n ) {\n const w = window as unknown as Record<string, unknown>;\n const i: { c: (args: unknown) => void; q: unknown[]; __kizen_pending?: boolean } =\n function () {\n // eslint-disable-next-line prefer-rest-params\n i.c(arguments);\n };\n\n i.q = [];\n i.c = function (args: unknown) {\n i.q.push(args);\n };\n\n i.__kizen_pending = true;\n\n w[thirdPartyGlobalNames[ALLOWED_INTEGRATIONS.INTERCOM]] = i;\n }\n })();\n },\n};\n\n/*\n For a predefined third-party integration, the ready predicate will be run\n AFTER the third party javascript has been loaded, but before the worker has been\n notified that it is ready. This is optional, but gives a chance to wait for an arbitrary\n condition to be met before considering the third-party code initialized successfully.\n*/\nexport const thirdPartyReadyPredicates = {\n [ALLOWED_INTEGRATIONS.FRESHWORKS]: () => {\n return (\n (\n (window as unknown as Record<string, unknown>)[\n thirdPartyGlobalNames[ALLOWED_INTEGRATIONS.FRESHWORKS]\n ] as { __kizen_pending?: boolean } | undefined\n )?.__kizen_pending !== true\n );\n },\n [ALLOWED_INTEGRATIONS.INTERCOM]: () => {\n return (\n (\n (window as unknown as Record<string, unknown>)[\n thirdPartyGlobalNames[ALLOWED_INTEGRATIONS.INTERCOM]\n ] as { __kizen_pending?: boolean } | undefined\n )?.__kizen_pending !== true\n );\n },\n};\n\nexport class ThirdPartyScript {\n private instance: Instance;\n private scriptUrl: string;\n private integration: (typeof ALLOWED_INTEGRATIONS)[keyof typeof ALLOWED_INTEGRATIONS];\n\n constructor(instance: Instance, scriptUrl: string) {\n this.instance = instance;\n this.scriptUrl = scriptUrl;\n const type = getScriptIntegrationType(scriptUrl);\n\n if (type) {\n this.integration = type;\n } else {\n throw new Error(`Error: Disallowed script url: ${scriptUrl}`);\n }\n }\n\n get type(): (typeof ALLOWED_INTEGRATIONS)[keyof typeof ALLOWED_INTEGRATIONS] {\n return this.integration;\n }\n\n public call(...params: unknown[]): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.CALL_THIRD_PARTY_SCRIPT,\n eventName: `thirdParty:${COMMUNICATIONS.CALL_THIRD_PARTY_SCRIPT}`,\n recipient: {\n script: this.scriptUrl,\n type: this.type,\n },\n params,\n }),\n );\n }\n}\n"]}
|