@kizenapps/engine 0.3.0-edc2730 → 0.3.1-6343d11

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 (31) hide show
  1. package/README.md +13 -1
  2. package/dist/{chunk-XHL4J5DZ.js → chunk-263CZJ2H.js} +3 -3
  3. package/dist/{chunk-XHL4J5DZ.js.map → chunk-263CZJ2H.js.map} +1 -1
  4. package/dist/{chunk-2MGW5YZ6.js → chunk-2YW77J3I.js} +5 -5
  5. package/dist/{chunk-2MGW5YZ6.js.map → chunk-2YW77J3I.js.map} +1 -1
  6. package/dist/{chunk-A6ZFHDF3.js → chunk-3URNAX7I.js} +3 -3
  7. package/dist/{chunk-A6ZFHDF3.js.map → chunk-3URNAX7I.js.map} +1 -1
  8. package/dist/{chunk-HTP5DKJZ.js → chunk-5XQFIJUK.js} +4 -4
  9. package/dist/{chunk-HTP5DKJZ.js.map → chunk-5XQFIJUK.js.map} +1 -1
  10. package/dist/{chunk-D3MYWM32.js → chunk-BM2IPN44.js} +5 -5
  11. package/dist/{chunk-D3MYWM32.js.map → chunk-BM2IPN44.js.map} +1 -1
  12. package/dist/{chunk-7F6OJQQJ.js → chunk-BZGTKYWM.js} +3 -3
  13. package/dist/{chunk-7F6OJQQJ.js.map → chunk-BZGTKYWM.js.map} +1 -1
  14. package/dist/{chunk-OV2LTZHB.js → chunk-CAF434YF.js} +3 -3
  15. package/dist/{chunk-OV2LTZHB.js.map → chunk-CAF434YF.js.map} +1 -1
  16. package/dist/{chunk-5ITM37KQ.js → chunk-NSV4M67S.js} +3 -3
  17. package/dist/{chunk-5ITM37KQ.js.map → chunk-NSV4M67S.js.map} +1 -1
  18. package/dist/{chunk-TVSR7UNB.js → chunk-W2PO3ZEB.js} +3 -3
  19. package/dist/{chunk-TVSR7UNB.js.map → chunk-W2PO3ZEB.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 +3 -3
  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 +1 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@ The core app engine for the Kizen developer platform for running plugin apps in
8
8
  yarn add @kizenapps/engine
9
9
  ```
10
10
 
11
- ### Usage With Vite
11
+ #### Usage With Vite
12
12
 
13
13
  The app engine is designed to work with consumers that use Vite, and ships with a vite plugin to do so. This plugin is important for web workers being bundled correctly by the consuming application.
14
14
 
@@ -24,6 +24,18 @@ export default defineConfig({
24
24
  });
25
25
  ```
26
26
 
27
+ #### Localization
28
+
29
+ The app engine includes some text that can be localized if needed. These messages are mostly limited to error handling currently. Localization is done using `i18next`. At build time `translation.json` is created with the strings that need to be translated. If the consuming app is also using `i18next`, and the `package.json` has a script to extract translations, you can append the engine's `merge-translations` command:
30
+
31
+ ```json
32
+ {
33
+ "scripts": {
34
+ "extract-translations": "i18next && npx @kizenapps/engine merge-translations"
35
+ }
36
+ }
37
+ ```
38
+
27
39
  ### Engine Usage
28
40
 
29
41
  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.
@@ -1,4 +1,4 @@
1
- import { BaseWorkerContext } from './chunk-D3MYWM32.js';
1
+ import { BaseWorkerContext } from './chunk-BM2IPN44.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-XHL4J5DZ.js.map
120
- //# sourceMappingURL=chunk-XHL4J5DZ.js.map
119
+ //# sourceMappingURL=chunk-263CZJ2H.js.map
120
+ //# sourceMappingURL=chunk-263CZJ2H.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/RecordDetailWorkerContext.ts"],"names":[],"mappings":"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","file":"chunk-XHL4J5DZ.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":"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","file":"chunk-263CZJ2H.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,5 +1,5 @@
1
- import { generateUUIDV4, getPartialLocation } from './chunk-TVSR7UNB.js';
2
- import { IFRAME_PREFIX, ACTIONS, RESPONSES, COMMUNICATIONS, thirdPartyGlobalNames, getScriptIntegrationType, thirdPartySetupScripts, thirdPartyReadyPredicates } from './chunk-5ITM37KQ.js';
1
+ import { generateUUIDV4, getPartialLocation } from './chunk-W2PO3ZEB.js';
2
+ import { IFRAME_PREFIX, ACTIONS, RESPONSES, COMMUNICATIONS, thirdPartyGlobalNames, getScriptIntegrationType, thirdPartySetupScripts, thirdPartyReadyPredicates } from './chunk-NSV4M67S.js';
3
3
  import { __commonJS, __toESM } from './chunk-5WRI5ZAA.js';
4
4
  import DOMPurify from 'dompurify';
5
5
 
@@ -2408,8 +2408,8 @@ var runObjectExpression = async (expression, values) => {
2408
2408
  };
2409
2409
 
2410
2410
  // src/index.ts
2411
- var version = "0.3.0-edc2730";
2411
+ var version = "0.3.1-6343d11";
2412
2412
 
2413
2413
  export { getHash, getStableHash, isFlagEnabled, runExpression, runObjectExpression, runOptionExpression, runScript, runStringExpression, version };
2414
- //# sourceMappingURL=chunk-2MGW5YZ6.js.map
2415
- //# sourceMappingURL=chunk-2MGW5YZ6.js.map
2414
+ //# sourceMappingURL=chunk-2YW77J3I.js.map
2415
+ //# sourceMappingURL=chunk-2YW77J3I.js.map