@kizenapps/engine 1.9.1-c41e202 → 1.9.2

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.
Files changed (32) hide show
  1. package/README.md +136 -120
  2. package/dist/{chunk-PMDBTXZ2.js → chunk-3PYBDXBN.js} +3 -3
  3. package/dist/{chunk-PMDBTXZ2.js.map → chunk-3PYBDXBN.js.map} +1 -1
  4. package/dist/{chunk-BR22X66J.js → chunk-COJQSTZX.js} +3 -3
  5. package/dist/{chunk-BR22X66J.js.map → chunk-COJQSTZX.js.map} +1 -1
  6. package/dist/{chunk-KLSFE47Q.js → chunk-NM7AUY5F.js} +4 -4
  7. package/dist/{chunk-KLSFE47Q.js.map → chunk-NM7AUY5F.js.map} +1 -1
  8. package/dist/{chunk-4YCXMK3X.js → chunk-PL4TAA6U.js} +3 -3
  9. package/dist/{chunk-4YCXMK3X.js.map → chunk-PL4TAA6U.js.map} +1 -1
  10. package/dist/{chunk-YXUC3W34.js → chunk-RA63N62U.js} +3 -3
  11. package/dist/{chunk-YXUC3W34.js.map → chunk-RA63N62U.js.map} +1 -1
  12. package/dist/{chunk-OOXUIWRQ.js → chunk-TURP3EK7.js} +3 -3
  13. package/dist/{chunk-OOXUIWRQ.js.map → chunk-TURP3EK7.js.map} +1 -1
  14. package/dist/{chunk-BTPUAPQT.js → chunk-WTE3FFSZ.js} +6 -8
  15. package/dist/chunk-WTE3FFSZ.js.map +1 -0
  16. package/dist/{chunk-UF43EXLZ.js → chunk-YFOCC5GA.js} +3 -3
  17. package/dist/{chunk-UF43EXLZ.js.map → chunk-YFOCC5GA.js.map} +1 -1
  18. package/dist/{chunk-5MDTL4TJ.js → chunk-Z3KVUTUF.js} +6 -6
  19. package/dist/{chunk-5MDTL4TJ.js.map → chunk-Z3KVUTUF.js.map} +1 -1
  20. package/dist/communication.js +2 -2
  21. package/dist/contexts/base.js +4 -4
  22. package/dist/contexts/floatingFrame.js +5 -5
  23. package/dist/contexts/recordDetail.js +5 -5
  24. package/dist/index.js +4 -4
  25. package/dist/react.js +5 -5
  26. package/dist/util.js +6 -6
  27. package/dist/workers/calendarSource.worker.js +6 -6
  28. package/dist/workers/floatingFrame.worker.js +7 -7
  29. package/dist/workers/generic.worker.js +6 -6
  30. package/dist/workers/recordDetail.worker.js +7 -7
  31. package/package.json +21 -3
  32. package/dist/chunk-BTPUAPQT.js.map +0 -1
package/README.md CHANGED
@@ -1,11 +1,21 @@
1
1
  ## Kizen App Engine
2
2
 
3
- The core app engine for the Kizen developer platform for running plugin apps in web workers.
3
+ The runtime that powers plugin apps on the Kizen developer platform. It executes plugin JavaScript
4
+ inside sandboxed Web Workers and brokers everything that crosses the worker boundary — network
5
+ requests, rendered UI, modals, toasts, navigation, and file uploads.
6
+
7
+ **If you are writing a plugin,** you want the [plugin developer
8
+ documentation](https://kizen.github.io/app-engine/) (source under [`docs/`](docs/README.md)) and the
9
+ `@kizenapps/cli` app builder. The engine is what your plugin runs _on_ — you do not install it
10
+ yourself.
11
+
12
+ **If you are embedding the engine in a host application,** that is what the rest of this README
13
+ covers.
4
14
 
5
15
  ### Installation
6
16
 
7
17
  ```
8
- yarn add @kizenapps/engine
18
+ pnpm add @kizenapps/engine
9
19
  ```
10
20
 
11
21
  #### Usage With Vite
@@ -40,160 +50,137 @@ In order for translated strings to appear, you'll need to pass the app's transla
40
50
 
41
51
  ### Engine Usage
42
52
 
43
- Your app needs to be wrapped in the `AppEngineProvider`. This provider gives the internal components access to the worker runner, network requests, and other consumer-specific features, and adapts your application's common UI components like modals and toasts to a common API that plugins can use.
53
+ The engine has two halves:
54
+
55
+ - **Worker side** — the `this.*` API a plugin script calls. Fully documented in [`docs/`](docs/README.md); nothing to configure here.
56
+ - **Host side** — a React provider plus hooks, which is what you integrate.
57
+
58
+ The host side is deliberately unopinionated about your UI. You supply primitives — how to navigate,
59
+ how to show a toast, how to open a modal, how to make an authenticated request — and the engine
60
+ adapts them to the stable API that plugins are written against. That indirection is the point: a
61
+ plugin written once runs in any host that satisfies this contract.
44
62
 
45
63
  #### Context Provider
46
64
 
65
+ Wrap your application in `AppEngineProvider`.
66
+
67
+ **Required props**
68
+
69
+ | Prop | Type | Purpose |
70
+ | --------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
71
+ | `user` | `{ id, crm_client_id }` | The signed-in user. |
72
+ | `teamMember` | `{ id, full_name, first_name, last_name, email, phone, created }` | Team-member profile, exposed to plugins as `this.currentUser.profile`. |
73
+ | `business` | `{ id }` | The active business/tenant. |
74
+ | `appPath` | `string` | Your API base path. |
75
+ | `onNavigate` | `(path: string, options?: { replace?: boolean }) => void` | Hand off to your router. |
76
+ | `performRequest` | `(method, url, payload?, options?) => Promise<{ data } \| undefined>` | Your authenticated HTTP client. Every plugin `this.get/post/patch/delete` is routed through it. |
77
+ | `showToast` | `({ message, variant?, autohide? }) => void` | Your toast implementation. |
78
+ | `clearToasts` | `() => void` | Dismiss all toasts. |
79
+ | `monitoringExceptionHelper` | `(error: Error, extra: { extra }) => void` | Where uncaught plugin errors are reported. |
80
+ | `modal` | `{ showing, show, showPrompt, onConfirm, onHide }` | Your confirm/prompt modal primitives. |
81
+ | `children` | render prop | See the render-prop table below. |
82
+
83
+ **Optional props**
84
+
85
+ | Prop | Type | Notes |
86
+ | ---------------------- | -------------------------------------------------------------- | --------------------------------------------------------------- |
87
+ | `clientObject` | `{ id, objectName }` | Contextual record object, when there is one. |
88
+ | `bootstrapPlugins` | `{ id, api_name }[]` | Plugins to bootstrap on mount. Defaults to `[]`. |
89
+ | `userConfigs` | `{ config, api_name }[]` | Per-user plugin config. Defaults to `[]`. |
90
+ | `onCompleteSetup` | `(pluginApiName, payload, options?) => Promise<unknown>` | Persist a plugin's setup-assistant result. |
91
+ | `createFileId` | `() => string` | Required only if plugins upload files. |
92
+ | `performFileUpload` | `(args) => Promise<unknown>` | Required only if plugins upload files. |
93
+ | `getPendingCacheCount` | `(search: string) => number` | Lets the engine wait on your in-flight cache writes. |
94
+ | `invalidateCache` | `(category: 'timeline' \| 'entity', entityId: string) => void` | Called when a plugin mutates a record. |
95
+ | `hideFramesOnModal` | `boolean` | Hide floating frames while a modal is open. Defaults to `true`. |
96
+ | `t` | `(s: string) => string` | Translation function. Omit for English. |
97
+
98
+ **A minimal integration**
99
+
47
100
  ```tsx
48
101
  import { AppEngineProvider } from '@kizenapps/engine/react';
49
- import { useHistory } from 'react-router-dom';
50
- import PluginContext from 'contexts/Plugins';
51
- import { useTranslation } from 'react-i18next';
102
+ import { useNavigate } from 'react-router-dom';
103
+ import { useCallback } from 'react';
52
104
 
53
- const AppProvider = ({ user, teamMember, business, clientObject }) => {
54
- const history = useHistory();
105
+ const AppProvider = ({ user, teamMember, business, children }) => {
106
+ const navigate = useNavigate();
55
107
 
56
108
  const onNavigate = useCallback(
57
- (path: string, args?: { replace?: boolean }) => {
58
- if (args?.replace) {
59
- history.replace(path);
60
- } else {
61
- history.push(path);
62
- }
109
+ (path: string, options?: { replace?: boolean }) => {
110
+ navigate(path, { replace: Boolean(options?.replace) });
63
111
  },
64
- [history],
112
+ [navigate],
65
113
  );
66
114
 
67
- const [showToast, , clearToasts] = useToast();
68
-
69
- const [integrationModalProps, , integrationModalTriggerProps] = useModal({});
70
-
71
- const { onConfirm, show, onHide } = integrationModalProps;
72
- const { show: showPrompt, showing } = integrationModalTriggerProps;
73
-
74
- const { t } = useTranslation();
75
-
76
-
77
115
  return (
78
116
  <AppEngineProvider
79
117
  user={user}
80
118
  teamMember={teamMember}
81
119
  business={business}
82
- clientObject={clientObject}
120
+ appPath={API_BASE_PATH}
83
121
  onNavigate={onNavigate}
84
- monitoringExceptionHelper={onError}
85
- showToast={showToast}
86
- clearToasts={clearToasts}
87
- modal={{
88
- showing,
89
- show,
90
- onConfirm,
91
- onHide,
92
- showPrompt,
93
- }}
94
- performRequest={performKizenRequest}
95
- appPath={import.meta.env.VITE_API_BASE_PATH}
96
- bootstrapPlugins={pluginApps}
97
- performFileUpload={FileService.upload}
98
- getPendingCacheCount={getPendingCacheCount}
99
- invalidateCache={invalidateCache}
100
- t={t}
122
+ performRequest={myApiClient.request}
123
+ showToast={myToast.show}
124
+ clearToasts={myToast.clearAll}
125
+ monitoringExceptionHelper={reportError}
126
+ modal={myConfirmModal}
101
127
  >
102
- {({
103
- handleCreateRecordComplete,
104
- handleCreateRelatedRecordComplete,
105
- showCreateRecordModal,
106
- showCreateRelatedRecordModal,
107
- createRecordModalObjectId,
108
- createRelatedRecordModalObjectId,
109
- createRelatedRecordModalRelatedEntityId,
110
- showLoadingIndicator,
111
- hasFinishedBootstrapping,
112
- derivedModalState,
113
- showPluginModal,
114
- pluginApiName,
115
- ...rest
116
- }) => {
117
- return (
118
- <PluginContext.Provider
119
- value={{
120
- isFetched: hasFetchedBootstrap,
121
- isLoading,
122
- pluginNames,
123
- floatingFrames: isLoading ? [] : floatingFrames,
124
- routablePages,
125
- dataAdornments,
126
- calendarSources,
127
- refetch,
128
- fullRefetch,
129
- installedPluginAPINamesToIds,
130
- plugins: data,
131
- toolbarItems,
132
- toolbarItemsByFullId,
133
- routeScripts,
134
- automationSteps: isLoading ? [] : automationSteps,
135
- objectSettingsMenuItems,
136
- userConfigsByApiName,
137
- featureFlags,
138
- refetchFeatureFlags,
139
- featureFlagsLoading: !hasCalculatedFeatureFlags && !hasFinishedBootstrapping,
140
- businessPluginAppsByApiName,
141
- ...rest,
142
- }}
143
- >
144
- {showLoadingIndicator ? <StyledLoader loading /> : null}
145
- {children}
146
- {showPluginModal ? (
147
- <PluginModal modalState={derivedModalState} pluginApiName={pluginApiName} />
148
- ) : null}
149
- {showCreateRecordModal ? (
150
- <Suspense fallback={null}>
151
- <CreateRecordModal
152
- objectId={createRecordModalObjectId}
153
- onComplete={handleCreateRecordComplete}
154
- />
155
- </Suspense>
156
- ) : null}
157
- {showCreateRelatedRecordModal ? (
158
- <Suspense fallback={null}>
159
- <CreateRelatedRecordModal
160
- objectId={createRelatedRecordModalObjectId}
161
- relatedEntityId={createRelatedRecordModalRelatedEntityId}
162
- onComplete={handleCreateRelatedRecordComplete}
163
- />
164
- </Suspense>
165
- ) : null}
166
- </PluginContext.Provider>
167
- );
168
- }}
169
- </PluginEngineProvider>
128
+ {({ showLoadingIndicator, showPluginModal, pluginApiName, derivedModalState }) => (
129
+ <>
130
+ {showLoadingIndicator ? <YourSpinner /> : null}
131
+ {children}
132
+ {showPluginModal ? (
133
+ <YourPluginModal modalState={derivedModalState} pluginApiName={pluginApiName} />
134
+ ) : null}
135
+ </>
136
+ )}
137
+ </AppEngineProvider>
170
138
  );
171
139
  };
172
140
  ```
173
141
 
142
+ **The render prop**
143
+
144
+ The engine tells you _when_ to render something and _what_ to render it for; you supply the
145
+ component. Alongside the modal callbacks it passes:
146
+
147
+ | Key | Meaning |
148
+ | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
149
+ | `showLoadingIndicator` | A blocking plugin script is running. |
150
+ | `hasFinishedBootstrapping` | All bootstrapped plugins have loaded. |
151
+ | `waitingOnRouteScript` | A route script is still resolving. |
152
+ | `hiddenByModal` | Floating frames are hidden behind a modal. |
153
+ | `showPluginModal`, `pluginApiName`, `derivedModalState` | Render a plugin-owned modal. |
154
+ | `showCreateRecordModal`, `createRecordModalObjectId`, `handleCreateRecordComplete` | A plugin asked for a record-creation modal. Call the handler with the created record. |
155
+ | `showCreateRelatedRecordModal`, `createRelatedRecordModalObjectId`, `createRelatedRecordModalRelatedEntityId`, `handleCreateRelatedRecordComplete` | Same, for a related record. |
156
+ | `handleShowModal`, `handleShowCreateRecordModal`, `handleShowCreateRelatedRecordModal`, `closeCurrentModal` | Imperative modal controls. |
157
+
174
158
  #### Running Scripts
175
159
 
176
- ```tsx
177
- import { useGenericPluginCustomScript } from '@kizenapps/engine/react';
178
- import { useToast } from 'components/ToastProvider';
160
+ Hooks are provided for each surface a plugin script can run on. The generic one:
179
161
 
180
- const ScriptButton = ({ pluginScript }: { pluginScript: string }) => {
181
- const [showToast] = useToast();
162
+ ```tsx
163
+ import { useGenericAppCustomScript } from '@kizenapps/engine/react';
182
164
 
183
- const [executeInline, { pending: inlinePending }] = useGenericPluginCustomScript({
165
+ const ScriptButton = ({ plugin, pluginScript }) => {
166
+ const [executeInline, { pending }] = useGenericAppCustomScript({
167
+ plugin,
184
168
  onError: (e) => {
185
- showToast({
169
+ myToast.show({
186
170
  message: `Script could not be executed: ${e?.message}`,
187
171
  variant: 'failure',
188
172
  });
189
173
  },
190
- plugin: item,
191
174
  });
192
175
 
193
- return <button onClick={() => executeInline(pluginScript)} disabled={inlinePending} />;
176
+ return <button onClick={() => executeInline(pluginScript)} disabled={pending} />;
194
177
  };
195
178
  ```
196
179
 
180
+ Surface-specific equivalents are exported from `@kizenapps/engine/react` — `useAppPage`,
181
+ `useCustomBlock`, `useFloatingFrame`, `useRecordDetailCustomScript`,
182
+ `useCalendarSourceCustomScript`, and others.
183
+
197
184
  #### Worker Runner
198
185
 
199
186
  Some worker calls are coordinated using `@tanstack/react-query`. If your consumer app also uses react-query, the app engine will use your existing query provider. If you aren't already using react-query, the engine provider will be wrapped in its own query context and no additional action is needed.
@@ -275,3 +262,32 @@ if (context?.unsavedFilter) {
275
262
  applyUnsavedFilter(context.unsavedFilter);
276
263
  }
277
264
  ```
265
+
266
+ ### Development
267
+
268
+ This repo uses pnpm.
269
+
270
+ ```
271
+ pnpm install
272
+ pnpm build # extract translations, bundle with tsup, verify worker bundles
273
+ pnpm test # unit tests
274
+ pnpm typecheck
275
+ pnpm lint
276
+ pnpm format:check
277
+ ```
278
+
279
+ `pnpm build` finishes by running `scripts/check-worker-bundles.js`, which fails the build if a
280
+ worker bundle pulls in code that must never run inside a worker (`localStorage`, React, and
281
+ similar) or if the worker chunks exceed their size budget.
282
+
283
+ The plugin developer documentation lives in [`docs/`](docs/README.md) and publishes to GitHub Pages
284
+ on merge to `main`. Its static-site generator is a standalone project under `docs/site`, with its
285
+ own lockfile and tests.
286
+
287
+ ### License
288
+
289
+ Licensed under the GNU General Public License, version 3. See [LICENSE.md](LICENSE.md) for the full
290
+ text.
291
+
292
+ This matches the other published Kizen developer platform packages, `@kizenapps/cli` and
293
+ `@kizenapps/packager`. Note that the plugins themselves are licensed separately, under GPL 2.0.
@@ -1,4 +1,4 @@
1
- import { ROUTE_CHANGE_INTERNAL_EVENT } from './chunk-4YCXMK3X.js';
1
+ import { ROUTE_CHANGE_INTERNAL_EVENT } from './chunk-PL4TAA6U.js';
2
2
 
3
3
  // src/util/run.ts
4
4
  var getPartialLocation = () => {
@@ -96,5 +96,5 @@ var findMatchingAction = (availableActions, apiName) => {
96
96
  };
97
97
 
98
98
  export { buildCodeRunnerFunction, emitRouteChange, findMatchingAction, generateExecutionKey, generateUUIDV4, getPartialLocation };
99
- //# sourceMappingURL=chunk-PMDBTXZ2.js.map
100
- //# sourceMappingURL=chunk-PMDBTXZ2.js.map
99
+ //# sourceMappingURL=chunk-3PYBDXBN.js.map
100
+ //# sourceMappingURL=chunk-3PYBDXBN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/run.ts"],"names":["action"],"mappings":"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","file":"chunk-PMDBTXZ2.js","sourcesContent":["import { ROUTE_CHANGE_INTERNAL_EVENT } from '../communication/constants.js';\nimport type { PartialLocation } from '../types/common.js';\nimport type { CommonExecutionPlugin, CommonPluginDefinition } from '../types/run.js';\nimport type { AsyncFunctionConstructor, BuiltAsyncFn } from '../types/workers.js';\n\nexport const getPartialLocation = (): PartialLocation => {\n return {\n host: window.location.host,\n hash: window.location.hash,\n href: window.location.href,\n origin: window.location.origin,\n pathname: window.location.pathname,\n search: window.location.search,\n port: window.location.port,\n protocol: window.location.protocol,\n };\n};\n\nexport const generateUUIDV4 = (): string => {\n let d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now();\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nconst AsyncFunction = (\n Object.getPrototypeOf(async function () {\n /* empty */\n }) as { constructor: AsyncFunctionConstructor }\n).constructor;\n\nexport const buildCodeRunnerFunction = (script: string): BuiltAsyncFn => {\n const functionBody = `\n const __cleanup = this.__cleanup.bind(this);\n const __error = this.onError.bind(this);\n\n const console = this.console;\n\n let __kizen_internal_result;\n\n {\n this.__setup();\n }\n\n try {\n __kizen_internal_result = await (async () => { ${script} })();\n } catch (ex) {\n __error(ex);\n } finally {\n __cleanup(__kizen_internal_result);\n }\n `;\n\n try {\n const fn = new AsyncFunction(functionBody);\n\n return { fn, functionBody };\n } catch {\n const errorFnBody = `\n this.__setup();\n\n this.onError({ message: \"The script has a syntax error and could not be parsed\" });\n \n this.__cleanup();\n `;\n\n const fn = new AsyncFunction(errorFnBody);\n\n return { fn, functionBody: errorFnBody };\n }\n};\n\nexport const generateExecutionKey = (\n pluginConfig?: CommonPluginDefinition | CommonExecutionPlugin,\n): string => {\n return `${pluginConfig?.plugin_api_name ?? ''}-${pluginConfig?.id ?? ''}-${pluginConfig?.api_name ?? ''}-${pluginConfig?.script_id ?? ''}`;\n};\n\nexport const emitRouteChange = (): void => {\n const event = new CustomEvent(ROUTE_CHANGE_INTERNAL_EVENT, {\n detail: {\n location: getPartialLocation(),\n },\n });\n\n window.dispatchEvent(event);\n};\n\nconst splitScriptApiName = (\n scriptApiName: string,\n): { pluginApiName: string | undefined; actionApiName: string | undefined } => {\n const [pluginApiName, actionApiName] = scriptApiName.split('.');\n\n return {\n pluginApiName,\n actionApiName,\n };\n};\n\nexport const findMatchingAction = (\n availableActions: {\n pluginApp?: {\n apiName: string;\n };\n apiName: string;\n }[],\n apiName?: string,\n): unknown => {\n if (!apiName) {\n return null;\n }\n\n const { pluginApiName, actionApiName } = splitScriptApiName(apiName);\n\n if (!pluginApiName) {\n const action = availableActions.find((act) => !act.pluginApp && act.apiName === actionApiName);\n\n return action;\n }\n\n const action = availableActions.find(\n (act) => act.apiName === actionApiName && act.pluginApp?.apiName === pluginApiName,\n );\n\n return action;\n};\n"]}
1
+ {"version":3,"sources":["../src/util/run.ts"],"names":["action"],"mappings":"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","file":"chunk-3PYBDXBN.js","sourcesContent":["import { ROUTE_CHANGE_INTERNAL_EVENT } from '../communication/constants.js';\nimport type { PartialLocation } from '../types/common.js';\nimport type { CommonExecutionPlugin, CommonPluginDefinition } from '../types/run.js';\nimport type { AsyncFunctionConstructor, BuiltAsyncFn } from '../types/workers.js';\n\nexport const getPartialLocation = (): PartialLocation => {\n return {\n host: window.location.host,\n hash: window.location.hash,\n href: window.location.href,\n origin: window.location.origin,\n pathname: window.location.pathname,\n search: window.location.search,\n port: window.location.port,\n protocol: window.location.protocol,\n };\n};\n\nexport const generateUUIDV4 = (): string => {\n let d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now();\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nconst AsyncFunction = (\n Object.getPrototypeOf(async function () {\n /* empty */\n }) as { constructor: AsyncFunctionConstructor }\n).constructor;\n\nexport const buildCodeRunnerFunction = (script: string): BuiltAsyncFn => {\n const functionBody = `\n const __cleanup = this.__cleanup.bind(this);\n const __error = this.onError.bind(this);\n\n const console = this.console;\n\n let __kizen_internal_result;\n\n {\n this.__setup();\n }\n\n try {\n __kizen_internal_result = await (async () => { ${script} })();\n } catch (ex) {\n __error(ex);\n } finally {\n __cleanup(__kizen_internal_result);\n }\n `;\n\n try {\n const fn = new AsyncFunction(functionBody);\n\n return { fn, functionBody };\n } catch {\n const errorFnBody = `\n this.__setup();\n\n this.onError({ message: \"The script has a syntax error and could not be parsed\" });\n \n this.__cleanup();\n `;\n\n const fn = new AsyncFunction(errorFnBody);\n\n return { fn, functionBody: errorFnBody };\n }\n};\n\nexport const generateExecutionKey = (\n pluginConfig?: CommonPluginDefinition | CommonExecutionPlugin,\n): string => {\n return `${pluginConfig?.plugin_api_name ?? ''}-${pluginConfig?.id ?? ''}-${pluginConfig?.api_name ?? ''}-${pluginConfig?.script_id ?? ''}`;\n};\n\nexport const emitRouteChange = (): void => {\n const event = new CustomEvent(ROUTE_CHANGE_INTERNAL_EVENT, {\n detail: {\n location: getPartialLocation(),\n },\n });\n\n window.dispatchEvent(event);\n};\n\nconst splitScriptApiName = (\n scriptApiName: string,\n): { pluginApiName: string | undefined; actionApiName: string | undefined } => {\n const [pluginApiName, actionApiName] = scriptApiName.split('.');\n\n return {\n pluginApiName,\n actionApiName,\n };\n};\n\nexport const findMatchingAction = (\n availableActions: {\n pluginApp?: {\n apiName: string;\n };\n apiName: string;\n }[],\n apiName?: string,\n): unknown => {\n if (!apiName) {\n return null;\n }\n\n const { pluginApiName, actionApiName } = splitScriptApiName(apiName);\n\n if (!pluginApiName) {\n const action = availableActions.find((act) => !act.pluginApp && act.apiName === actionApiName);\n\n return action;\n }\n\n const action = availableActions.find(\n (act) => act.apiName === actionApiName && act.pluginApp?.apiName === pluginApiName,\n );\n\n return action;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { COMMUNICATIONS, ACTIONS } from './chunk-4YCXMK3X.js';
1
+ import { COMMUNICATIONS, ACTIONS } from './chunk-PL4TAA6U.js';
2
2
 
3
3
  // src/communication/Communicate.ts
4
4
  var runFrameScriptEventName = `integration:${COMMUNICATIONS.RUN_FRAME_SCRIPT}`;
@@ -51,5 +51,5 @@ var Communicate = class {
51
51
  };
52
52
 
53
53
  export { Communicate, runBlockScriptEventName, runFrameScriptEventName };
54
- //# sourceMappingURL=chunk-BR22X66J.js.map
55
- //# sourceMappingURL=chunk-BR22X66J.js.map
54
+ //# sourceMappingURL=chunk-COJQSTZX.js.map
55
+ //# sourceMappingURL=chunk-COJQSTZX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/communication/Communicate.ts"],"names":[],"mappings":";;;AAGO,IAAM,uBAAA,GAA0B,CAAA,YAAA,EAAe,cAAA,CAAe,gBAAgB,CAAA;AAC9E,IAAM,uBAAA,GAA0B,CAAA,YAAA,EAAe,cAAA,CAAe,gBAAgB,CAAA;AAE9E,IAAM,cAAN,MAAkB;AAAA,EACf,QAAA;AAAA,EAER,YAAY,QAAA,EAAoB;AAC9B,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AAAA,EAEO,cAAA,CACL,YAAA,EACA,QAAA,EACA,IAAA,EACM;AACN,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,WAAA;AAAA,QAChB,MAAM,cAAA,CAAe,gBAAA;AAAA,QACrB,SAAA,EAAW,uBAAA;AAAA,QACX,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,YAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,cAAA,CACL,YAAA,EACA,QAAA,EACA,IAAA,EACM;AACN,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,WAAA;AAAA,QAChB,MAAM,cAAA,CAAe,gBAAA;AAAA,QACrB,SAAA,EAAW,uBAAA;AAAA,QACX,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,YAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,qBAAA,CAAsB,SAAkB,IAAA,EAAoB;AACjE,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,WAAA;AAAA,QAChB,MAAM,cAAA,CAAe,qBAAA;AAAA,QACrB,IAAA,EAAM;AAAA,UACJ,OAAA;AAAA,UACA;AAAA;AACF,OACD;AAAA,KACH;AAAA,EACF;AACF","file":"chunk-BR22X66J.js","sourcesContent":["import type { Instance } from '../types/contexts.js';\nimport { ACTIONS, COMMUNICATIONS } from './constants.js';\n\nexport const runFrameScriptEventName = `integration:${COMMUNICATIONS.RUN_FRAME_SCRIPT}`;\nexport const runBlockScriptEventName = `integration:${COMMUNICATIONS.RUN_BLOCK_SCRIPT}`;\n\nexport class Communicate {\n private instance: Instance;\n\n constructor(instance: Instance) {\n this.instance = instance;\n }\n\n public runFrameScript(\n frameAPIName: string,\n scriptId: string,\n args?: Record<string, string | number>,\n ): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.RUN_FRAME_SCRIPT,\n eventName: runFrameScriptEventName,\n recipient: {\n frame: frameAPIName,\n script: scriptId,\n },\n args,\n }),\n );\n }\n\n public runBlockScript(\n blockAPIName: string,\n scriptId: string,\n args?: Record<string, string | number>,\n ): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.RUN_BLOCK_SCRIPT,\n eventName: runBlockScriptEventName,\n recipient: {\n block: blockAPIName,\n script: scriptId,\n },\n args,\n }),\n );\n }\n\n public sendMessageToOwnFrame(payload: unknown, path: string): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.SEND_MESSAGE_TO_FRAME,\n args: {\n payload,\n path,\n },\n }),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/communication/Communicate.ts"],"names":[],"mappings":";;;AAGO,IAAM,uBAAA,GAA0B,CAAA,YAAA,EAAe,cAAA,CAAe,gBAAgB,CAAA;AAC9E,IAAM,uBAAA,GAA0B,CAAA,YAAA,EAAe,cAAA,CAAe,gBAAgB,CAAA;AAE9E,IAAM,cAAN,MAAkB;AAAA,EACf,QAAA;AAAA,EAER,YAAY,QAAA,EAAoB;AAC9B,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AAAA,EAEO,cAAA,CACL,YAAA,EACA,QAAA,EACA,IAAA,EACM;AACN,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,WAAA;AAAA,QAChB,MAAM,cAAA,CAAe,gBAAA;AAAA,QACrB,SAAA,EAAW,uBAAA;AAAA,QACX,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,YAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,cAAA,CACL,YAAA,EACA,QAAA,EACA,IAAA,EACM;AACN,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,WAAA;AAAA,QAChB,MAAM,cAAA,CAAe,gBAAA;AAAA,QACrB,SAAA,EAAW,uBAAA;AAAA,QACX,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,YAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,qBAAA,CAAsB,SAAkB,IAAA,EAAoB;AACjE,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,WAAA;AAAA,QAChB,MAAM,cAAA,CAAe,qBAAA;AAAA,QACrB,IAAA,EAAM;AAAA,UACJ,OAAA;AAAA,UACA;AAAA;AACF,OACD;AAAA,KACH;AAAA,EACF;AACF","file":"chunk-COJQSTZX.js","sourcesContent":["import type { Instance } from '../types/contexts.js';\nimport { ACTIONS, COMMUNICATIONS } from './constants.js';\n\nexport const runFrameScriptEventName = `integration:${COMMUNICATIONS.RUN_FRAME_SCRIPT}`;\nexport const runBlockScriptEventName = `integration:${COMMUNICATIONS.RUN_BLOCK_SCRIPT}`;\n\nexport class Communicate {\n private instance: Instance;\n\n constructor(instance: Instance) {\n this.instance = instance;\n }\n\n public runFrameScript(\n frameAPIName: string,\n scriptId: string,\n args?: Record<string, string | number>,\n ): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.RUN_FRAME_SCRIPT,\n eventName: runFrameScriptEventName,\n recipient: {\n frame: frameAPIName,\n script: scriptId,\n },\n args,\n }),\n );\n }\n\n public runBlockScript(\n blockAPIName: string,\n scriptId: string,\n args?: Record<string, string | number>,\n ): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.RUN_BLOCK_SCRIPT,\n eventName: runBlockScriptEventName,\n recipient: {\n block: blockAPIName,\n script: scriptId,\n },\n args,\n }),\n );\n }\n\n public sendMessageToOwnFrame(payload: unknown, path: string): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COMMUNICATE,\n type: COMMUNICATIONS.SEND_MESSAGE_TO_FRAME,\n args: {\n payload,\n path,\n },\n }),\n );\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { BaseWorkerContext } from './chunk-BTPUAPQT.js';
2
- import { ACTIONS } from './chunk-4YCXMK3X.js';
1
+ import { BaseWorkerContext } from './chunk-WTE3FFSZ.js';
2
+ import { ACTIONS } from './chunk-PL4TAA6U.js';
3
3
 
4
4
  // src/contexts/FloatingFrameWorkerContext.ts
5
5
  var FloatingFrameWorkerContext = class extends BaseWorkerContext {
@@ -57,5 +57,5 @@ var FloatingFrameWorkerContext = class extends BaseWorkerContext {
57
57
  };
58
58
 
59
59
  export { FloatingFrameWorkerContext };
60
- //# sourceMappingURL=chunk-KLSFE47Q.js.map
61
- //# sourceMappingURL=chunk-KLSFE47Q.js.map
60
+ //# sourceMappingURL=chunk-NM7AUY5F.js.map
61
+ //# sourceMappingURL=chunk-NM7AUY5F.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/FloatingFrameWorkerContext.ts"],"names":[],"mappings":";;;;AAKO,IAAM,0BAAA,GAAN,cAAyC,iBAAA,CAAkB;AAAA,EAChE,YAAY,IAAA,EAAyB;AACnC,IAAA,KAAA,CAAM,IAAI,CAAA;AACV,IAAA,IAAA,CAAK,UAAA,GAAa,eAAA;AAAA,EACpB;AAAA,EAEO,IAAA,CAAK,MAAA,GAAqB,EAAC,EAAS;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,IAAA;AAAA,QAChB;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,UAAA,GAAmB;AACxB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEO,UAAA,GAAmB;AACxB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEO,IAAA,CAAK,MAAA,GAAqB,EAAC,EAAS;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,IAAA;AAAA,QAChB;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,MAAA,GAAe;AACpB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEO,QAAA,GAAiB;AACtB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEmB,UAAA,GAAmB;AACpC,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA,EACZ;AACF","file":"chunk-KLSFE47Q.js","sourcesContent":["import { ACTIONS } from '../communication/constants.js';\nimport type { WorkerContextArgs } from '../types/contexts.js';\nimport type { HideConfig, ShowConfig } from '../types/floatingFrames.js';\nimport { BaseWorkerContext } from './BaseWorkerContext.js';\n\nexport class FloatingFrameWorkerContext extends BaseWorkerContext {\n constructor(args: WorkerContextArgs) {\n super(args);\n this.runnerType = 'floatingFrame';\n }\n\n public hide(config: HideConfig = {}): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.HIDE,\n config,\n }),\n );\n }\n\n public hideHeader(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.HIDE_HEADER,\n }),\n );\n }\n\n public showHeader(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.SHOW_HEADER,\n }),\n );\n }\n\n public show(config: ShowConfig = {}): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.SHOW,\n config,\n }),\n );\n }\n\n public expand(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.EXPAND,\n }),\n );\n }\n\n public collapse(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COLLAPSE,\n }),\n );\n }\n\n protected override afterSetup(): void {\n this.show();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/contexts/FloatingFrameWorkerContext.ts"],"names":[],"mappings":";;;;AAKO,IAAM,0BAAA,GAAN,cAAyC,iBAAA,CAAkB;AAAA,EAChE,YAAY,IAAA,EAAyB;AACnC,IAAA,KAAA,CAAM,IAAI,CAAA;AACV,IAAA,IAAA,CAAK,UAAA,GAAa,eAAA;AAAA,EACpB;AAAA,EAEO,IAAA,CAAK,MAAA,GAAqB,EAAC,EAAS;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,IAAA;AAAA,QAChB;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,UAAA,GAAmB;AACxB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEO,UAAA,GAAmB;AACxB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEO,IAAA,CAAK,MAAA,GAAqB,EAAC,EAAS;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ,IAAA;AAAA,QAChB;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEO,MAAA,GAAe;AACpB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEO,QAAA,GAAiB;AACtB,IAAA,IAAA,CAAK,QAAA,CAAS,WAAA;AAAA,MACZ,KAAK,SAAA,CAAU;AAAA,QACb,QAAQ,OAAA,CAAQ;AAAA,OACjB;AAAA,KACH;AAAA,EACF;AAAA,EAEmB,UAAA,GAAmB;AACpC,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA,EACZ;AACF","file":"chunk-NM7AUY5F.js","sourcesContent":["import { ACTIONS } from '../communication/constants.js';\nimport type { WorkerContextArgs } from '../types/contexts.js';\nimport type { HideConfig, ShowConfig } from '../types/floatingFrames.js';\nimport { BaseWorkerContext } from './BaseWorkerContext.js';\n\nexport class FloatingFrameWorkerContext extends BaseWorkerContext {\n constructor(args: WorkerContextArgs) {\n super(args);\n this.runnerType = 'floatingFrame';\n }\n\n public hide(config: HideConfig = {}): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.HIDE,\n config,\n }),\n );\n }\n\n public hideHeader(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.HIDE_HEADER,\n }),\n );\n }\n\n public showHeader(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.SHOW_HEADER,\n }),\n );\n }\n\n public show(config: ShowConfig = {}): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.SHOW,\n config,\n }),\n );\n }\n\n public expand(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.EXPAND,\n }),\n );\n }\n\n public collapse(): void {\n this.instance.postMessage(\n JSON.stringify({\n action: ACTIONS.COLLAPSE,\n }),\n );\n }\n\n protected override afterSetup(): void {\n this.show();\n }\n}\n"]}
@@ -66,7 +66,7 @@ var INDICATOR_TYPE = /* @__PURE__ */ ((INDICATOR_TYPE2) => {
66
66
  var ROUTE_CHANGE_INTERNAL_EVENT = "integration:route-change";
67
67
  var ROUTE_CHANGE_IFRAME_EVENT = "kizen-route-change";
68
68
  var IFRAME_PREFIX = "kzn-integration-frame";
69
- var PKG_VERSION = "1.9.1-c41e202";
69
+ var PKG_VERSION = "1.9.2";
70
70
  var BASE_QUERY_KEY = ["__plugin_engine", PKG_VERSION];
71
71
  var QUERY_KEYS = {
72
72
  CALENDAR_SOURCE_CALENDAR_LIST: (pluginApiName, sourceApiName) => [...BASE_QUERY_KEY, "calendar-source", "calendar-list", pluginApiName, sourceApiName],
@@ -175,5 +175,5 @@ var ThirdPartyScript = class {
175
175
  };
176
176
 
177
177
  export { ACTIONS, COMMUNICATIONS, IFRAME_PREFIX, INDICATOR_TYPE, QUERY_KEYS, RESPONSES, ROUTE_CHANGE_IFRAME_EVENT, ROUTE_CHANGE_INTERNAL_EVENT, ThirdPartyScript, getScriptIntegrationType, thirdPartyGlobalNames, thirdPartyReadyPredicates, thirdPartySetupScripts };
178
- //# sourceMappingURL=chunk-4YCXMK3X.js.map
179
- //# sourceMappingURL=chunk-4YCXMK3X.js.map
178
+ //# sourceMappingURL=chunk-PL4TAA6U.js.map
179
+ //# sourceMappingURL=chunk-PL4TAA6U.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/communication/constants.ts","../src/communication/ThirdPartyScript.ts"],"names":["INDICATOR_TYPE"],"mappings":"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","file":"chunk-4YCXMK3X.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"]}
1
+ {"version":3,"sources":["../src/communication/constants.ts","../src/communication/ThirdPartyScript.ts"],"names":["INDICATOR_TYPE"],"mappings":"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","file":"chunk-PL4TAA6U.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"]}
@@ -1,4 +1,4 @@
1
- import { BaseWorkerContext } from './chunk-BTPUAPQT.js';
1
+ import { BaseWorkerContext } from './chunk-WTE3FFSZ.js';
2
2
 
3
3
  // src/contexts/RecordDetailWorkerContext.ts
4
4
  var isPipelineObject = (obj) => {
@@ -116,5 +116,5 @@ var RecordDetailWorkerContext = class extends BaseWorkerContext {
116
116
  };
117
117
 
118
118
  export { RecordDetailWorkerContext };
119
- //# sourceMappingURL=chunk-YXUC3W34.js.map
120
- //# sourceMappingURL=chunk-YXUC3W34.js.map
119
+ //# sourceMappingURL=chunk-RA63N62U.js.map
120
+ //# sourceMappingURL=chunk-RA63N62U.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/RecordDetailWorkerContext.ts"],"names":[],"mappings":"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","file":"chunk-YXUC3W34.js","sourcesContent":["import type { PartialCustomObject, PartialEntity } from '../types/common.js';\nimport type { WorkerContextArgs } from '../types/contexts.js';\nimport { BaseWorkerContext } from './BaseWorkerContext.js';\n\nconst isPipelineObject = (obj: PartialCustomObject): boolean => {\n return obj.object_type === 'pipeline' || obj.fetch_url === 'pipeline';\n};\n\nexport class RecordDetailWorkerContext extends BaseWorkerContext {\n public objectId: string | undefined;\n public entityId: string | undefined;\n public actionObjectId: string | undefined;\n public actionEntityId: string | undefined;\n\n constructor({\n objectId,\n entityId,\n actionObjectId,\n actionEntityId,\n ...rest\n }: WorkerContextArgs & {\n objectId?: string;\n entityId?: string;\n actionObjectId?: string;\n actionEntityId?: string;\n }) {\n super(rest);\n\n this.objectId = objectId;\n this.entityId = entityId;\n this.actionObjectId = actionObjectId;\n this.actionEntityId = actionEntityId;\n this.runnerType = 'recordDetail';\n }\n\n async currentObject(): Promise<unknown> {\n if (this.objectId) {\n return this.getObjectDetail(this.objectId);\n }\n }\n\n async currentEntity(): Promise<unknown> {\n if (this.entityId && this.objectId) {\n return this.getEntity(this.objectId, this.entityId);\n }\n }\n\n async actionEntity(): Promise<unknown> {\n if (this.actionEntityId && this.actionObjectId) {\n return this.getEntity(this.actionObjectId, this.actionEntityId);\n }\n }\n\n getFieldValue(entity: PartialEntity, fieldId: string): unknown {\n return entity.fields?.[fieldId]?.value;\n }\n\n private async getClientEntity(entityId: string): Promise<unknown> {\n const result = await this.get(`/client/${entityId}`);\n\n return result;\n }\n\n protected isClientObject(objectId: string): boolean {\n return objectId === this.clientObject?.id;\n }\n\n async getEntity(objectId: string, entityId: string): Promise<unknown> {\n try {\n if (this.isClientObject(objectId)) {\n return await this.getClientEntity(entityId);\n }\n\n const model = (await this.get(`/custom-objects/${objectId}`)) as PartialCustomObject;\n\n if (isPipelineObject(model)) {\n return await this.getPipelineEntity(objectId, entityId);\n }\n\n return await this.getCustomEntity(objectId, entityId);\n } catch (ex: unknown) {\n this.onError(ex as Error);\n }\n }\n\n async getRelatedEntitiesForField(\n objectId: string,\n entityId: string,\n fieldId: string,\n ): Promise<unknown[]> {\n try {\n const entity = (await this.getEntity(objectId, entityId)) as PartialEntity;\n\n const field = entity.fields?.[fieldId];\n\n if (!field) {\n this.onError(new Error(`Field not found for ID ${fieldId}`));\n return [];\n }\n\n const object = await this.getObjectDetail(objectId);\n\n const relatedObject = object?.related_objects?.find((o) => o.field_id === field.id);\n\n if (!relatedObject) {\n this.onError(new Error('Related object not found'));\n return [];\n }\n\n const relationships = await Promise.all(\n field.value\n .map((value) => {\n if (value.id === undefined) {\n return null;\n }\n\n return this.getEntity(relatedObject.related_object, value.id);\n })\n .filter((promise) => promise !== null),\n );\n\n const result = relationships.filter(Boolean);\n\n return result;\n } catch (ex: unknown) {\n this.onError(ex as Error);\n }\n\n return [];\n }\n\n private async getPipelineEntity(objectId: string, entityId: string): Promise<unknown> {\n const result = await this.get(`/pipelines/${objectId}/entity-records/${entityId}`);\n\n return result;\n }\n\n private async getCustomEntity(objectId: string, entityId: string): Promise<unknown> {\n const result = await this.get(`/custom-objects/${objectId}/entity-records/${entityId}`);\n\n return result;\n }\n\n async getObjectDetail(id: string): Promise<PartialCustomObject | undefined> {\n try {\n const result = await this.get(`/custom-objects/${id}/detail`);\n\n return result as PartialCustomObject;\n } catch (ex: unknown) {\n this.onError(ex as Error);\n }\n }\n\n public refreshTimeline(): void {\n this.refreshTimelineForId(this.entityId);\n }\n\n public refreshEntity(): void {\n this.refreshEntityForId(this.entityId);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/contexts/RecordDetailWorkerContext.ts"],"names":[],"mappings":";;;AAIA,IAAM,gBAAA,GAAmB,CAAC,GAAA,KAAsC;AAC9D,EAAA,OAAO,GAAA,CAAI,WAAA,KAAgB,UAAA,IAAc,GAAA,CAAI,SAAA,KAAc,UAAA;AAC7D,CAAA;AAEO,IAAM,yBAAA,GAAN,cAAwC,iBAAA,CAAkB;AAAA,EACxD,QAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EAEP,WAAA,CAAY;AAAA,IACV,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,GAAG;AAAA,GACL,EAKG;AACD,IAAA,KAAA,CAAM,IAAI,CAAA;AAEV,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,IAAA,IAAA,CAAK,UAAA,GAAa,cAAA;AAAA,EACpB;AAAA,EAEA,MAAM,aAAA,GAAkC;AACtC,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,QAAQ,CAAA;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,MAAM,aAAA,GAAkC;AACtC,IAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,EAAU;AAClC,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAA,EAAU,KAAK,QAAQ,CAAA;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAM,YAAA,GAAiC;AACrC,IAAA,IAAI,IAAA,CAAK,cAAA,IAAkB,IAAA,CAAK,cAAA,EAAgB;AAC9C,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,cAAA,EAAgB,KAAK,cAAc,CAAA;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,aAAA,CAAc,QAAuB,OAAA,EAA0B;AAC7D,IAAA,OAAO,MAAA,CAAO,MAAA,GAAS,OAAO,CAAA,EAAG,KAAA;AAAA,EACnC;AAAA,EAEA,MAAc,gBAAgB,QAAA,EAAoC;AAChE,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,CAAA;AAEnD,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEU,eAAe,QAAA,EAA2B;AAClD,IAAA,OAAO,QAAA,KAAa,KAAK,YAAA,EAAc,EAAA;AAAA,EACzC;AAAA,EAEA,MAAM,SAAA,CAAU,QAAA,EAAkB,QAAA,EAAoC;AACpE,IAAA,IAAI;AACF,MAAA,IAAI,IAAA,CAAK,cAAA,CAAe,QAAQ,CAAA,EAAG;AACjC,QAAA,OAAO,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC5C;AAEA,MAAA,MAAM,QAAS,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,gBAAA,EAAmB,QAAQ,CAAA,CAAE,CAAA;AAE3D,MAAA,IAAI,gBAAA,CAAiB,KAAK,CAAA,EAAG;AAC3B,QAAA,OAAO,MAAM,IAAA,CAAK,iBAAA,CAAkB,QAAA,EAAU,QAAQ,CAAA;AAAA,MACxD;AAEA,MAAA,OAAO,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAA,EAAU,QAAQ,CAAA;AAAA,IACtD,SAAS,EAAA,EAAa;AACpB,MAAA,IAAA,CAAK,QAAQ,EAAW,CAAA;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,0BAAA,CACJ,QAAA,EACA,QAAA,EACA,OAAA,EACoB;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,SAAA,CAAU,UAAU,QAAQ,CAAA;AAEvD,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,GAAS,OAAO,CAAA;AAErC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,IAAA,CAAK,QAAQ,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,OAAO,EAAE,CAAC,CAAA;AAC3D,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AAElD,MAAA,MAAM,aAAA,GAAgB,QAAQ,eAAA,EAAiB,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,KAAa,KAAA,CAAM,EAAE,CAAA;AAElF,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,KAAA,CAAM,0BAA0B,CAAC,CAAA;AAClD,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,GAAA;AAAA,QAClC,KAAA,CAAM,KAAA,CACH,GAAA,CAAI,CAAC,KAAA,KAAU;AACd,UAAA,IAAI,KAAA,CAAM,OAAO,KAAA,CAAA,EAAW;AAC1B,YAAA,OAAO,IAAA;AAAA,UACT;AAEA,UAAA,OAAO,IAAA,CAAK,SAAA,CAAU,aAAA,CAAc,cAAA,EAAgB,MAAM,EAAE,CAAA;AAAA,QAC9D,CAAC,CAAA,CACA,MAAA,CAAO,CAAC,OAAA,KAAY,YAAY,IAAI;AAAA,OACzC;AAEA,MAAA,MAAM,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,OAAO,CAAA;AAE3C,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,EAAA,EAAa;AACpB,MAAA,IAAA,CAAK,QAAQ,EAAW,CAAA;AAAA,IAC1B;AAEA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAc,iBAAA,CAAkB,QAAA,EAAkB,QAAA,EAAoC;AACpF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,GAAA,CAAI,cAAc,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,CAAE,CAAA;AAEjF,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAc,eAAA,CAAgB,QAAA,EAAkB,QAAA,EAAoC;AAClF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,GAAA,CAAI,mBAAmB,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,CAAE,CAAA;AAEtF,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,gBAAgB,EAAA,EAAsD;AAC1E,IAAA,IAAI;AACF,MAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,gBAAA,EAAmB,EAAE,CAAA,OAAA,CAAS,CAAA;AAE5D,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,EAAA,EAAa;AACpB,MAAA,IAAA,CAAK,QAAQ,EAAW,CAAA;AAAA,IAC1B;AAAA,EACF;AAAA,EAEO,eAAA,GAAwB;AAC7B,IAAA,IAAA,CAAK,oBAAA,CAAqB,KAAK,QAAQ,CAAA;AAAA,EACzC;AAAA,EAEO,aAAA,GAAsB;AAC3B,IAAA,IAAA,CAAK,kBAAA,CAAmB,KAAK,QAAQ,CAAA;AAAA,EACvC;AACF","file":"chunk-RA63N62U.js","sourcesContent":["import type { PartialCustomObject, PartialEntity } from '../types/common.js';\nimport type { WorkerContextArgs } from '../types/contexts.js';\nimport { BaseWorkerContext } from './BaseWorkerContext.js';\n\nconst isPipelineObject = (obj: PartialCustomObject): boolean => {\n return obj.object_type === 'pipeline' || obj.fetch_url === 'pipeline';\n};\n\nexport class RecordDetailWorkerContext extends BaseWorkerContext {\n public objectId: string | undefined;\n public entityId: string | undefined;\n public actionObjectId: string | undefined;\n public actionEntityId: string | undefined;\n\n constructor({\n objectId,\n entityId,\n actionObjectId,\n actionEntityId,\n ...rest\n }: WorkerContextArgs & {\n objectId?: string;\n entityId?: string;\n actionObjectId?: string;\n actionEntityId?: string;\n }) {\n super(rest);\n\n this.objectId = objectId;\n this.entityId = entityId;\n this.actionObjectId = actionObjectId;\n this.actionEntityId = actionEntityId;\n this.runnerType = 'recordDetail';\n }\n\n async currentObject(): Promise<unknown> {\n if (this.objectId) {\n return this.getObjectDetail(this.objectId);\n }\n }\n\n async currentEntity(): Promise<unknown> {\n if (this.entityId && this.objectId) {\n return this.getEntity(this.objectId, this.entityId);\n }\n }\n\n async actionEntity(): Promise<unknown> {\n if (this.actionEntityId && this.actionObjectId) {\n return this.getEntity(this.actionObjectId, this.actionEntityId);\n }\n }\n\n getFieldValue(entity: PartialEntity, fieldId: string): unknown {\n return entity.fields?.[fieldId]?.value;\n }\n\n private async getClientEntity(entityId: string): Promise<unknown> {\n const result = await this.get(`/client/${entityId}`);\n\n return result;\n }\n\n protected isClientObject(objectId: string): boolean {\n return objectId === this.clientObject?.id;\n }\n\n async getEntity(objectId: string, entityId: string): Promise<unknown> {\n try {\n if (this.isClientObject(objectId)) {\n return await this.getClientEntity(entityId);\n }\n\n const model = (await this.get(`/custom-objects/${objectId}`)) as PartialCustomObject;\n\n if (isPipelineObject(model)) {\n return await this.getPipelineEntity(objectId, entityId);\n }\n\n return await this.getCustomEntity(objectId, entityId);\n } catch (ex: unknown) {\n this.onError(ex as Error);\n }\n }\n\n async getRelatedEntitiesForField(\n objectId: string,\n entityId: string,\n fieldId: string,\n ): Promise<unknown[]> {\n try {\n const entity = (await this.getEntity(objectId, entityId)) as PartialEntity;\n\n const field = entity.fields?.[fieldId];\n\n if (!field) {\n this.onError(new Error(`Field not found for ID ${fieldId}`));\n return [];\n }\n\n const object = await this.getObjectDetail(objectId);\n\n const relatedObject = object?.related_objects?.find((o) => o.field_id === field.id);\n\n if (!relatedObject) {\n this.onError(new Error('Related object not found'));\n return [];\n }\n\n const relationships = await Promise.all(\n field.value\n .map((value) => {\n if (value.id === undefined) {\n return null;\n }\n\n return this.getEntity(relatedObject.related_object, value.id);\n })\n .filter((promise) => promise !== null),\n );\n\n const result = relationships.filter(Boolean);\n\n return result;\n } catch (ex: unknown) {\n this.onError(ex as Error);\n }\n\n return [];\n }\n\n private async getPipelineEntity(objectId: string, entityId: string): Promise<unknown> {\n const result = await this.get(`/pipelines/${objectId}/entity-records/${entityId}`);\n\n return result;\n }\n\n private async getCustomEntity(objectId: string, entityId: string): Promise<unknown> {\n const result = await this.get(`/custom-objects/${objectId}/entity-records/${entityId}`);\n\n return result;\n }\n\n async getObjectDetail(id: string): Promise<PartialCustomObject | undefined> {\n try {\n const result = await this.get(`/custom-objects/${id}/detail`);\n\n return result as PartialCustomObject;\n } catch (ex: unknown) {\n this.onError(ex as Error);\n }\n }\n\n public refreshTimeline(): void {\n this.refreshTimelineForId(this.entityId);\n }\n\n public refreshEntity(): void {\n this.refreshEntityForId(this.entityId);\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ACTIONS, RESPONSES } from './chunk-4YCXMK3X.js';
1
+ import { ACTIONS, RESPONSES } from './chunk-PL4TAA6U.js';
2
2
 
3
3
  // src/util/console.ts
4
4
  var UNSERIALIZABLE = (reason) => ({
@@ -681,5 +681,5 @@ var getParentFrameAllowParam = () => {
681
681
  };
682
682
 
683
683
  export { KizenRequestError, buildIframeURLWithProxy, cleanConfig, closeModalHandler, completeSetupHandler, deserializeConsoleArg, dynamicPromptHandler, filterAllowList, filterSandboxList, getActionContainerKey, getActionFieldKey, getActionMenuFieldKey, getActionMenuHeadingKey, getAllNestedInputsFromConfig, getFieldFromAction, getParentFrameAllowParam, handleCommonResponse, installThirdPartyScriptHandler, isActionFieldKey, isActionMenuFieldKey, kizenRequestHandler, openCreateRecordHandler, openCreateRelatedRecordHandler, postFormDataHandler, promptHandler, refreshEntityHandler, serializeConsoleArg, showViewInModalHandler, splitActionFieldKey, splitActionMenuFieldKey, unwrapProxyMessage, uploadFileHandler };
684
- //# sourceMappingURL=chunk-OOXUIWRQ.js.map
685
- //# sourceMappingURL=chunk-OOXUIWRQ.js.map
684
+ //# sourceMappingURL=chunk-TURP3EK7.js.map
685
+ //# sourceMappingURL=chunk-TURP3EK7.js.map