@wix/editor-application 1.63.0 → 1.65.0

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/cjs/index.js CHANGED
@@ -106,8 +106,7 @@ class EditorPlatformApplication {
106
106
  constructor(type, context) {
107
107
  this.type = type;
108
108
  this.#context = context;
109
- const bindings = this.#context.getBindings();
110
- this.appDefinitionId = bindings.appDefinitionId;
109
+ this.appDefinitionId = this.#context.getAppDefinitionId();
111
110
  const events = this.#context.getEvents();
112
111
  this.lifecycle = new ApplicationLifecycle(events);
113
112
  events.addEventListener(publicEditorPlatformInterfaces.EventType.removeAppCompleted, (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/hash.ts","../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/types.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["/**\n * it would be good to use performance.now()\n * but it some cases performance API is not available\n */\nexport function hash() {\n const _performance = globalThis['performance'];\n\n if (_performance && _performance.now) {\n return _performance.now();\n }\n\n let result = '';\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const charactersLength = characters.length;\n\n let counter = 0;\n\n const length = 10;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n\n return result;\n}\n","import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport {\n ApplicationContext,\n IApplicationContext,\n} from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TContext extends IApplicationContext = IApplicationContext,\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext<TContext>;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext<TContext>,\n ) {\n this.#context = context;\n const bindings = this.#context.getBindings();\n\n this.appDefinitionId = bindings.appDefinitionId;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","export enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import {\n ApplicationContext,\n IEditorApplicationContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<\n IEditorApplicationContext,\n TPublicAPI,\n TPrivateAPI\n> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext<IEditorApplicationContext>) {\n super(ApplicationType.Platform, context);\n }\n}\n","import {\n ApplicationContext,\n IAddonContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<IAddonContext, TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance<IAddonContext>();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext<IAddonContext>) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":["PlatformAppEvent","EditorPlatformApplicationErrorCode","BaseError","createErrorBuilder","EventType","ApplicationType","ApplicationContext"],"mappings":";;;;;;;AAIO,SAAS,IAAO,GAAA;AACrB,EAAM,MAAA,YAAA,GAAe,WAAW,aAAa,CAAA,CAAA;AAE7C,EAAI,IAAA,YAAA,IAAgB,aAAa,GAAK,EAAA;AACpC,IAAA,OAAO,aAAa,GAAI,EAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAA,MAAM,UACJ,GAAA,gEAAA,CAAA;AAEF,EAAA,MAAM,mBAAmB,UAAW,CAAA,MAAA,CAAA;AAEpC,EAAA,IAAI,OAAU,GAAA,CAAA,CAAA;AAEd,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,OAAO,UAAU,MAAQ,EAAA;AACvB,IAAU,MAAA,IAAA,UAAA,CAAW,OAAO,IAAK,CAAA,KAAA,CAAM,KAAK,MAAO,EAAA,GAAI,gBAAgB,CAAC,CAAA,CAAA;AACxE,IAAW,OAAA,IAAA,CAAA,CAAA;AAAA,GACb;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;ACnBO,MAAM,oBAAqB,CAAA;AAAA,EAWhC,YAAoB,MAAgC,EAAA;AAAhC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAClB,IAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AAAA,GACjB;AAAA,EAZQ,YAQJ,EAAC,CAAA;AAAA,EAMG,SAAY,GAAA;AAClB,IAAK,IAAA,CAAA,MAAA,CAAO,SAAU,CAAA,CAAC,KAAU,KAAA;AAC/B,MAAM,MAAA,EAAE,IAAM,EAAA,OAAA,EAAY,GAAA,KAAA,CAAA;AAC1B,MAAI,IAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAG,EAAA;AACxB,QAAK,IAAA,CAAA,SAAA,CAAU,IAAI,CAAA,CAAG,OAAQ,CAAA,CAAC,EAAE,EAAG,EAAA,KAAM,EAAG,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,OACvD;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEQ,WAAA,CAAY,OAAyB,EAA4B,EAAA;AACvE,IAAA,IAAI,CAAC,IAAA,CAAK,SAAU,CAAA,KAAK,CAAG,EAAA;AAC1B,MAAK,IAAA,CAAA,SAAA,CAAU,KAAK,CAAA,GAAI,EAAC,CAAA;AAAA,KAC3B;AAEA,IAAM,MAAA,EAAA,GAAK,CAAG,EAAA,IAAA,EAAM,CAAA,CAAA,CAAA;AAEpB,IAAK,IAAA,CAAA,SAAA,CAAU,KAAK,CAAA,CAAG,IAAK,CAAA;AAAA,MAC1B,EAAA;AAAA,MACA,EAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,UAAU,KAAK,CAAA,GAAI,IAAK,CAAA,SAAA,CAAU,KAAK,CAAG,CAAA,MAAA;AAAA,QAC7C,CAAC,EAAO,KAAA,EAAA,CAAG,EAAO,KAAA,EAAA;AAAA,OACpB,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,cACL,EACA,EAAA;AACA,IAAA,OAAO,IAAK,CAAA,WAAA,CAAYA,2CAAiB,CAAA,WAAA,EAAa,EAAE,CAAA,CAAA;AAAA,GAC1D;AACF;;ACvDY,IAAA,kCAAA,qBAAAC,mCAAL,KAAA;AACL,EAAAA,oCAAA,yBAA0B,CAAA,GAAA,yBAAA,CAAA;AADhB,EAAAA,OAAAA,mCAAAA,CAAAA;AAAA,CAAA,EAAA,kCAAA,IAAA,EAAA,CAAA,CAAA;AAIZ,MAAM,uCAAuCC,oCAA8C,CAAA;AAAA,EACzF,QAKK,EAAC,CAAA;AAAA,EAEN,WAAA,CAAY,SAAiB,IAA0C,EAAA;AACrE,IAAM,KAAA,CAAA,OAAA,EAAS,MAAM,sBAAsB,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,QAAQ,GAAa,EAAA;AACnB,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,GAAI,EAAA,CAAA;AAClC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,oBAAoB,eAAyB,EAAA;AAC3C,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,eAAgB,EAAA,CAAA;AAC9C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,cAAc,SAAmB,EAAA;AAC/B,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,SAAU,EAAA,CAAA;AACxC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,YAAY,OAAiB,EAAA;AAC3B,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,OAAQ,EAAA,CAAA;AACtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AAEa,MAAA,oCAAA,GAAuCC,8CAGlD,8BAA8B,CAAA;;ACfhC,MAAM,qBAA+C,CAAA;AAAA,EACnD,YAAoB,GAA+C,EAAA;AAA/C,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA,CAAA;AAAA,GAAgD;AAAA,EAEpE,gBAAgB,GAAiB,EAAA;AAC/B,IAAA,IAAA,CAAK,IAAI,MAAS,GAAA,GAAA,CAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,iBAAiB,GAAkB,EAAA;AACjC,IAAA,IAAA,CAAK,IAAI,OAAU,GAAA,GAAA,CAAA;AACnB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AAKO,MAAe,yBAIpB,CAAA;AAAA,EAcU,WAAA,CACQ,MAChB,OACA,EAAA;AAFgB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AAGhB,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA,CAAA;AAChB,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,QAAA,CAAS,WAAY,EAAA,CAAA;AAE3C,IAAA,IAAA,CAAK,kBAAkB,QAAS,CAAA,eAAA,CAAA;AAEhC,IAAM,MAAA,MAAA,GAAS,IAAK,CAAA,QAAA,CAAS,SAAU,EAAA,CAAA;AACvC,IAAK,IAAA,CAAA,SAAA,GAAY,IAAI,oBAAA,CAAqB,MAAM,CAAA,CAAA;AAKhD,IAAA,MAAA,CAAO,gBAAiB,CAAAC,wCAAA,CAAU,kBAAoB,EAAA,CAAC,CAAM,KAAA;AAC3D,MAAI,IAAA,CAAA,CAAE,eAAoB,KAAA,IAAA,CAAK,eAAiB,EAAA;AAC9C,QAAA,IAAA,CAAK,KAAQ,GAAA,SAAA,CAAA;AAAA,OACf;AAAA,KACD,CAAA,CAAA;AAKD,IAAA,MAAM,mBAAsB,GAAA,0BAAA,CAAA;AAC5B,IAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AAExB,IAAA,MAAA,CAAO,MAAO,CAAA;AAAA,MACZ,MAAMJ,2CAAiB,CAAA,eAAA;AAAA,MACvB,SAAS,EAAC;AAAA,KACX,CAAA,CAAA;AAAA,GACH;AAAA,EA5CO,eAAA,CAAA;AAAA,EACA,KAA6B,GAAA,OAAA,CAAA;AAAA,EAE7B,SAAA,CAAA;AAAA,EAEP,kBAA4D,EAAC,CAAA;AAAA,EAC7D,yBAAyB,IAAI,qBAAA;AAAA,IAC3B,IAAK,CAAA,eAAA;AAAA,GACP,CAAA;AAAA,EAEA,SAAA,CAAA;AAAA,EACA,QAAA,CAAA;AAAA,EAmCA,IAAc,OAAU,GAAA;AACtB,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAW,MAAS,GAAA;AAClB,IAAO,OAAA,IAAA,CAAK,SAAS,SAAU,EAAA,CAAA;AAAA,GACjC;AAAA,EAEO,YAAY,QAAe,EAAA;AAChC,IAAA,IAAA,CAAK,SAAY,GAAA,QAAA,CAAA;AAAA,GACnB;AAAA,EAEO,WAAc,GAAA;AACnB,IAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAAA,GACd;AAAA,EAEO,gBAAgB,GAAiB,EAAA;AACtC,IAAO,OAAA,IAAA,CAAK,sBAAuB,CAAA,eAAA,CAAgB,GAAG,CAAA,CAAA;AAAA,GACxD;AAAA,EAEO,iBAAiB,GAAkB,EAAA;AACxC,IAAO,OAAA,IAAA,CAAK,sBAAuB,CAAA,gBAAA,CAAiB,GAAG,CAAA,CAAA;AAAA,GACzD;AAAA,EAEO,YAAe,GAAA;AACpB,IAAA,OAAO,KAAK,eAAgB,CAAA,MAAA,CAAA;AAAA,GAC9B;AAAA,EAEO,aAAgB,GAAA;AACrB,IAAA,OAAO,KAAK,eAAgB,CAAA,OAAA,CAAA;AAAA,GAC9B;AAAA,EAEO,KAAQ,GAAA;AAAA,GAAC;AAAA,EAEhB,sBAAsB,OAAiB,EAAA;AACrC,IAAO,OAAA,oCAAA;AAAA,MACL,kCAAmC,CAAA,uBAAA;AAAA,MACnC,OAAA;AAAA,KACF,CAAE,mBAAoB,CAAA,IAAA,CAAK,eAAe,CAAA,CAAA;AAAA,GAC5C;AACF;;ACzIY,IAAA,eAAA,qBAAAK,gBAAL,KAAA;AACL,EAAAA,iBAAA,aAAc,CAAA,GAAA,cAAA,CAAA;AACd,EAAAA,iBAAA,UAAW,CAAA,GAAA,UAAA,CAAA;AAFD,EAAAA,OAAAA,gBAAAA,CAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;;ACQL,MAAM,qCAGH,yBAIR,CAAA;AAAA,EACA,aAAa,MAAsD,GAAA;AACjE,IAAA,OAAO,IAAI,4BAAA;AAAA,MACT,MAAMC,0CAAmB,WAAY,EAAA;AAAA,KACvC,CAAA;AAAA,GACF;AAAA,EAEA,YAAY,OAAwD,EAAA;AAClE,IAAM,KAAA,CAAA,eAAA,CAAgB,UAAU,OAAO,CAAA,CAAA;AAAA,GACzC;AACF;;ACjBO,MAAM,+BAGH,yBAAkE,CAAA;AAAA,EAC1E,aAAa,MAEX,GAAA;AACA,IAAM,MAAA,OAAA,GAAU,MAAMA,yCAAA,CAAmB,WAA2B,EAAA,CAAA;AAEpE,IAAO,OAAA,IAAI,uBAAgD,OAAO,CAAA,CAAA;AAAA,GACpE;AAAA,EAEA,YAAY,OAA4C,EAAA;AACtD,IAAM,KAAA,CAAA,eAAA,CAAgB,aAAa,OAAO,CAAA,CAAA;AAAA,GAC5C;AACF;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/hash.ts","../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/types.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["/**\n * it would be good to use performance.now()\n * but it some cases performance API is not available\n */\nexport function hash() {\n const _performance = globalThis['performance'];\n\n if (_performance && _performance.now) {\n return _performance.now();\n }\n\n let result = '';\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const charactersLength = characters.length;\n\n let counter = 0;\n\n const length = 10;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n\n return result;\n}\n","import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport { ApplicationContext } from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext,\n ) {\n this.#context = context;\n\n this.appDefinitionId = this.#context.getAppDefinitionId()!;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","/**\n * TODO: use this enum\n * import {ApplicationContextType} from \"@wix/editor-platform-contexts\";\n */\nexport enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.Platform, context);\n }\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":["PlatformAppEvent","EditorPlatformApplicationErrorCode","BaseError","createErrorBuilder","EventType","ApplicationType","ApplicationContext"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -104,8 +104,7 @@ class EditorPlatformApplication {
104
104
  constructor(type, context) {
105
105
  this.type = type;
106
106
  this.#context = context;
107
- const bindings = this.#context.getBindings();
108
- this.appDefinitionId = bindings.appDefinitionId;
107
+ this.appDefinitionId = this.#context.getAppDefinitionId();
109
108
  const events = this.#context.getEvents();
110
109
  this.lifecycle = new ApplicationLifecycle(events);
111
110
  events.addEventListener(EventType.removeAppCompleted, (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/hash.ts","../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/types.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["/**\n * it would be good to use performance.now()\n * but it some cases performance API is not available\n */\nexport function hash() {\n const _performance = globalThis['performance'];\n\n if (_performance && _performance.now) {\n return _performance.now();\n }\n\n let result = '';\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const charactersLength = characters.length;\n\n let counter = 0;\n\n const length = 10;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n\n return result;\n}\n","import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport {\n ApplicationContext,\n IApplicationContext,\n} from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TContext extends IApplicationContext = IApplicationContext,\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext<TContext>;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext<TContext>,\n ) {\n this.#context = context;\n const bindings = this.#context.getBindings();\n\n this.appDefinitionId = bindings.appDefinitionId;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","export enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import {\n ApplicationContext,\n IEditorApplicationContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<\n IEditorApplicationContext,\n TPublicAPI,\n TPrivateAPI\n> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext<IEditorApplicationContext>) {\n super(ApplicationType.Platform, context);\n }\n}\n","import {\n ApplicationContext,\n IAddonContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<IAddonContext, TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance<IAddonContext>();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext<IAddonContext>) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":["EditorPlatformApplicationErrorCode","ApplicationType"],"mappings":";;;;;AAIO,SAAS,IAAO,GAAA;AACrB,EAAM,MAAA,YAAA,GAAe,WAAW,aAAa,CAAA,CAAA;AAE7C,EAAI,IAAA,YAAA,IAAgB,aAAa,GAAK,EAAA;AACpC,IAAA,OAAO,aAAa,GAAI,EAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAA,MAAM,UACJ,GAAA,gEAAA,CAAA;AAEF,EAAA,MAAM,mBAAmB,UAAW,CAAA,MAAA,CAAA;AAEpC,EAAA,IAAI,OAAU,GAAA,CAAA,CAAA;AAEd,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,OAAO,UAAU,MAAQ,EAAA;AACvB,IAAU,MAAA,IAAA,UAAA,CAAW,OAAO,IAAK,CAAA,KAAA,CAAM,KAAK,MAAO,EAAA,GAAI,gBAAgB,CAAC,CAAA,CAAA;AACxE,IAAW,OAAA,IAAA,CAAA,CAAA;AAAA,GACb;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;ACnBO,MAAM,oBAAqB,CAAA;AAAA,EAWhC,YAAoB,MAAgC,EAAA;AAAhC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAClB,IAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AAAA,GACjB;AAAA,EAZQ,YAQJ,EAAC,CAAA;AAAA,EAMG,SAAY,GAAA;AAClB,IAAK,IAAA,CAAA,MAAA,CAAO,SAAU,CAAA,CAAC,KAAU,KAAA;AAC/B,MAAM,MAAA,EAAE,IAAM,EAAA,OAAA,EAAY,GAAA,KAAA,CAAA;AAC1B,MAAI,IAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAG,EAAA;AACxB,QAAK,IAAA,CAAA,SAAA,CAAU,IAAI,CAAA,CAAG,OAAQ,CAAA,CAAC,EAAE,EAAG,EAAA,KAAM,EAAG,CAAA,OAAO,CAAC,CAAA,CAAA;AAAA,OACvD;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEQ,WAAA,CAAY,OAAyB,EAA4B,EAAA;AACvE,IAAA,IAAI,CAAC,IAAA,CAAK,SAAU,CAAA,KAAK,CAAG,EAAA;AAC1B,MAAK,IAAA,CAAA,SAAA,CAAU,KAAK,CAAA,GAAI,EAAC,CAAA;AAAA,KAC3B;AAEA,IAAM,MAAA,EAAA,GAAK,CAAG,EAAA,IAAA,EAAM,CAAA,CAAA,CAAA;AAEpB,IAAK,IAAA,CAAA,SAAA,CAAU,KAAK,CAAA,CAAG,IAAK,CAAA;AAAA,MAC1B,EAAA;AAAA,MACA,EAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,UAAU,KAAK,CAAA,GAAI,IAAK,CAAA,SAAA,CAAU,KAAK,CAAG,CAAA,MAAA;AAAA,QAC7C,CAAC,EAAO,KAAA,EAAA,CAAG,EAAO,KAAA,EAAA;AAAA,OACpB,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,cACL,EACA,EAAA;AACA,IAAA,OAAO,IAAK,CAAA,WAAA,CAAY,gBAAiB,CAAA,WAAA,EAAa,EAAE,CAAA,CAAA;AAAA,GAC1D;AACF;;ACvDY,IAAA,kCAAA,qBAAAA,mCAAL,KAAA;AACL,EAAAA,oCAAA,yBAA0B,CAAA,GAAA,yBAAA,CAAA;AADhB,EAAAA,OAAAA,mCAAAA,CAAAA;AAAA,CAAA,EAAA,kCAAA,IAAA,EAAA,CAAA,CAAA;AAIZ,MAAM,uCAAuC,SAA8C,CAAA;AAAA,EACzF,QAKK,EAAC,CAAA;AAAA,EAEN,WAAA,CAAY,SAAiB,IAA0C,EAAA;AACrE,IAAM,KAAA,CAAA,OAAA,EAAS,MAAM,sBAAsB,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,QAAQ,GAAa,EAAA;AACnB,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,GAAI,EAAA,CAAA;AAClC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,oBAAoB,eAAyB,EAAA;AAC3C,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,eAAgB,EAAA,CAAA;AAC9C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,cAAc,SAAmB,EAAA;AAC/B,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,SAAU,EAAA,CAAA;AACxC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,YAAY,OAAiB,EAAA;AAC3B,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,GAAG,IAAA,CAAK,OAAO,OAAQ,EAAA,CAAA;AACtC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AAEa,MAAA,oCAAA,GAAuC,mBAGlD,8BAA8B,CAAA;;ACfhC,MAAM,qBAA+C,CAAA;AAAA,EACnD,YAAoB,GAA+C,EAAA;AAA/C,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA,CAAA;AAAA,GAAgD;AAAA,EAEpE,gBAAgB,GAAiB,EAAA;AAC/B,IAAA,IAAA,CAAK,IAAI,MAAS,GAAA,GAAA,CAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,iBAAiB,GAAkB,EAAA;AACjC,IAAA,IAAA,CAAK,IAAI,OAAU,GAAA,GAAA,CAAA;AACnB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF,CAAA;AAKO,MAAe,yBAIpB,CAAA;AAAA,EAcU,WAAA,CACQ,MAChB,OACA,EAAA;AAFgB,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA,CAAA;AAGhB,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA,CAAA;AAChB,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,QAAA,CAAS,WAAY,EAAA,CAAA;AAE3C,IAAA,IAAA,CAAK,kBAAkB,QAAS,CAAA,eAAA,CAAA;AAEhC,IAAM,MAAA,MAAA,GAAS,IAAK,CAAA,QAAA,CAAS,SAAU,EAAA,CAAA;AACvC,IAAK,IAAA,CAAA,SAAA,GAAY,IAAI,oBAAA,CAAqB,MAAM,CAAA,CAAA;AAKhD,IAAA,MAAA,CAAO,gBAAiB,CAAA,SAAA,CAAU,kBAAoB,EAAA,CAAC,CAAM,KAAA;AAC3D,MAAI,IAAA,CAAA,CAAE,eAAoB,KAAA,IAAA,CAAK,eAAiB,EAAA;AAC9C,QAAA,IAAA,CAAK,KAAQ,GAAA,SAAA,CAAA;AAAA,OACf;AAAA,KACD,CAAA,CAAA;AAKD,IAAA,MAAM,mBAAsB,GAAA,0BAAA,CAAA;AAC5B,IAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AAExB,IAAA,MAAA,CAAO,MAAO,CAAA;AAAA,MACZ,MAAM,gBAAiB,CAAA,eAAA;AAAA,MACvB,SAAS,EAAC;AAAA,KACX,CAAA,CAAA;AAAA,GACH;AAAA,EA5CO,eAAA,CAAA;AAAA,EACA,KAA6B,GAAA,OAAA,CAAA;AAAA,EAE7B,SAAA,CAAA;AAAA,EAEP,kBAA4D,EAAC,CAAA;AAAA,EAC7D,yBAAyB,IAAI,qBAAA;AAAA,IAC3B,IAAK,CAAA,eAAA;AAAA,GACP,CAAA;AAAA,EAEA,SAAA,CAAA;AAAA,EACA,QAAA,CAAA;AAAA,EAmCA,IAAc,OAAU,GAAA;AACtB,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAW,MAAS,GAAA;AAClB,IAAO,OAAA,IAAA,CAAK,SAAS,SAAU,EAAA,CAAA;AAAA,GACjC;AAAA,EAEO,YAAY,QAAe,EAAA;AAChC,IAAA,IAAA,CAAK,SAAY,GAAA,QAAA,CAAA;AAAA,GACnB;AAAA,EAEO,WAAc,GAAA;AACnB,IAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAAA,GACd;AAAA,EAEO,gBAAgB,GAAiB,EAAA;AACtC,IAAO,OAAA,IAAA,CAAK,sBAAuB,CAAA,eAAA,CAAgB,GAAG,CAAA,CAAA;AAAA,GACxD;AAAA,EAEO,iBAAiB,GAAkB,EAAA;AACxC,IAAO,OAAA,IAAA,CAAK,sBAAuB,CAAA,gBAAA,CAAiB,GAAG,CAAA,CAAA;AAAA,GACzD;AAAA,EAEO,YAAe,GAAA;AACpB,IAAA,OAAO,KAAK,eAAgB,CAAA,MAAA,CAAA;AAAA,GAC9B;AAAA,EAEO,aAAgB,GAAA;AACrB,IAAA,OAAO,KAAK,eAAgB,CAAA,OAAA,CAAA;AAAA,GAC9B;AAAA,EAEO,KAAQ,GAAA;AAAA,GAAC;AAAA,EAEhB,sBAAsB,OAAiB,EAAA;AACrC,IAAO,OAAA,oCAAA;AAAA,MACL,kCAAmC,CAAA,uBAAA;AAAA,MACnC,OAAA;AAAA,KACF,CAAE,mBAAoB,CAAA,IAAA,CAAK,eAAe,CAAA,CAAA;AAAA,GAC5C;AACF;;ACzIY,IAAA,eAAA,qBAAAC,gBAAL,KAAA;AACL,EAAAA,iBAAA,aAAc,CAAA,GAAA,cAAA,CAAA;AACd,EAAAA,iBAAA,UAAW,CAAA,GAAA,UAAA,CAAA;AAFD,EAAAA,OAAAA,gBAAAA,CAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;;ACQL,MAAM,qCAGH,yBAIR,CAAA;AAAA,EACA,aAAa,MAAsD,GAAA;AACjE,IAAA,OAAO,IAAI,4BAAA;AAAA,MACT,MAAM,mBAAmB,WAAY,EAAA;AAAA,KACvC,CAAA;AAAA,GACF;AAAA,EAEA,YAAY,OAAwD,EAAA;AAClE,IAAM,KAAA,CAAA,eAAA,CAAgB,UAAU,OAAO,CAAA,CAAA;AAAA,GACzC;AACF;;ACjBO,MAAM,+BAGH,yBAAkE,CAAA;AAAA,EAC1E,aAAa,MAEX,GAAA;AACA,IAAM,MAAA,OAAA,GAAU,MAAM,kBAAA,CAAmB,WAA2B,EAAA,CAAA;AAEpE,IAAO,OAAA,IAAI,uBAAgD,OAAO,CAAA,CAAA;AAAA,GACpE;AAAA,EAEA,YAAY,OAA4C,EAAA;AACtD,IAAM,KAAA,CAAA,eAAA,CAAgB,aAAa,OAAO,CAAA,CAAA;AAAA,GAC5C;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/hash.ts","../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/types.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["/**\n * it would be good to use performance.now()\n * but it some cases performance API is not available\n */\nexport function hash() {\n const _performance = globalThis['performance'];\n\n if (_performance && _performance.now) {\n return _performance.now();\n }\n\n let result = '';\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const charactersLength = characters.length;\n\n let counter = 0;\n\n const length = 10;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n\n return result;\n}\n","import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport { ApplicationContext } from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext,\n ) {\n this.#context = context;\n\n this.appDefinitionId = this.#context.getAppDefinitionId()!;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","/**\n * TODO: use this enum\n * import {ApplicationContextType} from \"@wix/editor-platform-contexts\";\n */\nexport enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.Platform, context);\n }\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":["EditorPlatformApplicationErrorCode","ApplicationType"],"mappings":"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"}
@@ -105,8 +105,7 @@
105
105
  constructor(type, context) {
106
106
  this.type = type;
107
107
  this.#context = context;
108
- const bindings = this.#context.getBindings();
109
- this.appDefinitionId = bindings.appDefinitionId;
108
+ this.appDefinitionId = this.#context.getAppDefinitionId();
110
109
  const events = this.#context.getEvents();
111
110
  this.lifecycle = new ApplicationLifecycle(events);
112
111
  events.addEventListener(publicEditorPlatformInterfaces.EventType.removeAppCompleted, (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/hash.ts","../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/types.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["/**\n * it would be good to use performance.now()\n * but it some cases performance API is not available\n */\nexport function hash() {\n const _performance = globalThis['performance'];\n\n if (_performance && _performance.now) {\n return _performance.now();\n }\n\n let result = '';\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const charactersLength = characters.length;\n\n let counter = 0;\n\n const length = 10;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n\n return result;\n}\n","import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport {\n ApplicationContext,\n IApplicationContext,\n} from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TContext extends IApplicationContext = IApplicationContext,\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext<TContext>;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext<TContext>,\n ) {\n this.#context = context;\n const bindings = this.#context.getBindings();\n\n this.appDefinitionId = bindings.appDefinitionId;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","export enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import {\n ApplicationContext,\n IEditorApplicationContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<\n IEditorApplicationContext,\n TPublicAPI,\n TPrivateAPI\n> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext<IEditorApplicationContext>) {\n super(ApplicationType.Platform, context);\n }\n}\n","import {\n ApplicationContext,\n IAddonContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<IAddonContext, TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance<IAddonContext>();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext<IAddonContext>) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":["PlatformAppEvent","EditorPlatformApplicationErrorCode","BaseError","createErrorBuilder","EventType","ApplicationType","ApplicationContext"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/hash.ts","../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/types.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["/**\n * it would be good to use performance.now()\n * but it some cases performance API is not available\n */\nexport function hash() {\n const _performance = globalThis['performance'];\n\n if (_performance && _performance.now) {\n return _performance.now();\n }\n\n let result = '';\n const characters =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const charactersLength = characters.length;\n\n let counter = 0;\n\n const length = 10;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n\n return result;\n}\n","import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport { ApplicationContext } from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext,\n ) {\n this.#context = context;\n\n this.appDefinitionId = this.#context.getAppDefinitionId()!;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","/**\n * TODO: use this enum\n * import {ApplicationContextType} from \"@wix/editor-platform-contexts\";\n */\nexport enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.Platform, context);\n }\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":["PlatformAppEvent","EditorPlatformApplicationErrorCode","BaseError","createErrorBuilder","EventType","ApplicationType","ApplicationContext"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as _wix_public_editor_platform_errors from '@wix/public-editor-platform-errors';
2
2
  import * as _wix_editor_platform_contexts from '@wix/editor-platform-contexts';
3
- import { ApplicationBoundEvents, IApplicationContext, ApplicationContext, IEditorApplicationContext, IAddonContext } from '@wix/editor-platform-contexts';
3
+ import { ApplicationBoundEvents, ApplicationContext } from '@wix/editor-platform-contexts';
4
4
  import { IPlatformEditorReadyEvent } from '@wix/public-editor-platform-events';
5
5
 
6
6
  declare class ApplicationLifecycle {
@@ -21,6 +21,10 @@ declare enum EditorPlatformApplicationErrorCode {
21
21
  ApplicationRuntimeError = "ApplicationRuntimeError"
22
22
  }
23
23
 
24
+ /**
25
+ * TODO: use this enum
26
+ * import {ApplicationContextType} from "@wix/editor-platform-contexts";
27
+ */
24
28
  declare enum ApplicationType {
25
29
  EditorAddon = "EDITOR_ADDON",
26
30
  Platform = "PLATFORM"
@@ -46,14 +50,14 @@ declare class ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {
46
50
  /**
47
51
  * TODO: should accept generic type
48
52
  */
49
- declare abstract class EditorPlatformApplication<TContext extends IApplicationContext = IApplicationContext, TPublicAPI = unknown, TPrivateAPI = unknown> {
53
+ declare abstract class EditorPlatformApplication<TPublicAPI = unknown, TPrivateAPI = unknown> {
50
54
  #private;
51
55
  readonly type: ApplicationType;
52
56
  appDefinitionId: string;
53
57
  state: 'READY' | 'REMOVED';
54
58
  lifecycle: ApplicationLifecycle;
55
- protected constructor(type: ApplicationType, context: ApplicationContext<TContext>);
56
- protected get context(): ApplicationContext<TContext>;
59
+ protected constructor(type: ApplicationType, context: ApplicationContext);
60
+ protected get context(): ApplicationContext;
57
61
  get events(): _wix_editor_platform_contexts.ApplicationBoundEvents;
58
62
  setManifest(manifest: any): void;
59
63
  getManifest(): any;
@@ -92,14 +96,14 @@ declare abstract class EditorPlatformApplication<TContext extends IApplicationCo
92
96
  };
93
97
  }
94
98
 
95
- declare class WixEditorPlatformApplication<TPublicAPI = unknown, TPrivateAPI = unknown> extends EditorPlatformApplication<IEditorApplicationContext, TPublicAPI, TPrivateAPI> {
99
+ declare class WixEditorPlatformApplication<TPublicAPI = unknown, TPrivateAPI = unknown> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {
96
100
  static create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>>;
97
- constructor(context: ApplicationContext<IEditorApplicationContext>);
101
+ constructor(context: ApplicationContext);
98
102
  }
99
103
 
100
- declare class WixEditorPlatformAddon<TPublicAPI = unknown, TPrivateAPI = unknown> extends EditorPlatformApplication<IAddonContext, TPublicAPI, TPrivateAPI> {
104
+ declare class WixEditorPlatformAddon<TPublicAPI = unknown, TPrivateAPI = unknown> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {
101
105
  static create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>>;
102
- constructor(context: ApplicationContext<IAddonContext>);
106
+ constructor(context: ApplicationContext);
103
107
  }
104
108
 
105
109
  export { ApplicationType, EditorPlatformApplication, WixEditorPlatformAddon, WixEditorPlatformApplication };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/types.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","export enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport {\n ApplicationContext,\n IApplicationContext,\n} from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TContext extends IApplicationContext = IApplicationContext,\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext<TContext>;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext<TContext>,\n ) {\n this.#context = context;\n const bindings = this.#context.getBindings();\n\n this.appDefinitionId = bindings.appDefinitionId;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","import {\n ApplicationContext,\n IEditorApplicationContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<\n IEditorApplicationContext,\n TPublicAPI,\n TPrivateAPI\n> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext<IEditorApplicationContext>) {\n super(ApplicationType.Platform, context);\n }\n}\n","import {\n ApplicationContext,\n IAddonContext,\n} from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<IAddonContext, TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance<IAddonContext>();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext<IAddonContext>) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":[],"mappings":";;;;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbO;AACP;AACA;;ACHO;AACP;AACA;AACA;;ACCA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEO;AACP;AACA;AACA;;ACHO;AACP;AACA;AACA;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../src/ApplicationLifecycle/ApplicationLifecycle.ts","../../src/errors.ts","../../src/types.ts","../../src/EditorPlatformApplication/EditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformApplication.ts","../../src/EditorPlatformApplication/WixEditorPlatformAddon.ts"],"sourcesContent":["import {\n PlatformAppEvent,\n IPlatformEditorReadyEvent,\n} from '@wix/public-editor-platform-events';\nimport type { ApplicationBoundEvents } from '@wix/editor-platform-contexts';\nimport { hash } from '../hash';\n\nexport class ApplicationLifecycle {\n private callbacks: Partial<\n Record<\n PlatformAppEvent,\n {\n id: string;\n fn: (payload: any) => void;\n }[]\n >\n > = {};\n\n constructor(private events: ApplicationBoundEvents) {\n this.subscribe();\n }\n\n private subscribe() {\n this.events.subscribe((event) => {\n const { type, payload } = event;\n if (this.callbacks[type]) {\n this.callbacks[type]!.forEach(({ fn }) => fn(payload));\n }\n });\n }\n\n private addCallback(event: PlatformAppEvent, fn: (payload: any) => void) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n\n const id = `${hash()}`;\n\n this.callbacks[event]!.push({\n id,\n fn,\n });\n\n return () => {\n this.callbacks[event] = this.callbacks[event]!.filter(\n (cb) => cb.id !== id,\n );\n };\n }\n\n /**\n * NOTE: currently, we return function to unsubscribe from the event,\n * probably it is better to return `this` to allow chaining\n * and provide another way to unsubscribe from events.\n */\n public onEditorReady(\n fn: (payload: IPlatformEditorReadyEvent['payload']) => void,\n ) {\n return this.addCallback(PlatformAppEvent.EditorReady, fn);\n }\n}\n","import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformApplicationErrorCode {\n ApplicationRuntimeError = 'ApplicationRuntimeError',\n}\n\nclass EditorPlatformApplicationError extends BaseError<EditorPlatformApplicationErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n apiMethod: string;\n apiType: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformApplicationErrorCode) {\n super(message, code, 'EP Application Error');\n }\n\n withUrl(url: string) {\n this.state = { ...this.state, url };\n return this;\n }\n\n withAppDefinitionId(appDefinitionId: string) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n\n withApiMethod(apiMethod: string) {\n this.state = { ...this.state, apiMethod };\n return this;\n }\n\n withApiType(apiType: string) {\n this.state = { ...this.state, apiType };\n return this;\n }\n}\n\nexport const createEditorPlatformApplicationError = createErrorBuilder<\n EditorPlatformApplicationErrorCode,\n EditorPlatformApplicationError\n>(EditorPlatformApplicationError);\n","/**\n * TODO: use this enum\n * import {ApplicationContextType} from \"@wix/editor-platform-contexts\";\n */\nexport enum ApplicationType {\n EditorAddon = 'EDITOR_ADDON',\n Platform = 'PLATFORM',\n}\n","import { PlatformAppEvent } from '@wix/public-editor-platform-events';\nimport { ApplicationContext } from '@wix/editor-platform-contexts';\nimport { EventType } from '@wix/public-editor-platform-interfaces';\nimport { ApplicationLifecycle } from '../ApplicationLifecycle';\nimport {\n createEditorPlatformApplicationError,\n EditorPlatformApplicationErrorCode,\n} from '../errors';\nimport { ApplicationType } from '../types';\n\n/**\n * TODO: duplicated type to get rid of extra dependency\n */\nexport type IApplicationRegistry = (\n instance: EditorPlatformApplication,\n) => void;\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_REGISTRY_KEY: IApplicationRegistry;\n}\n\nexport interface IApplicationAPI<TPublicAPI, TPrivateAPI> {\n public?: TPublicAPI;\n private?: TPrivateAPI;\n}\n\nclass ChainAPIConfiguration<TPublicAPI, TPrivateAPI> {\n constructor(private api: IApplicationAPI<TPublicAPI, TPrivateAPI>) {}\n\n exposePublicAPI(api: TPublicAPI) {\n this.api.public = api;\n return this;\n }\n\n exposePrivateAPI(api: TPrivateAPI) {\n this.api.private = api;\n return this;\n }\n}\n\n/**\n * TODO: should accept generic type\n */\nexport abstract class EditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> {\n public appDefinitionId: string;\n public state: 'READY' | 'REMOVED' = 'READY';\n\n public lifecycle: ApplicationLifecycle;\n\n #applicationAPI: IApplicationAPI<TPublicAPI, TPrivateAPI> = {};\n #chainAPIConfiguration = new ChainAPIConfiguration<TPublicAPI, TPrivateAPI>(\n this.#applicationAPI,\n );\n\n #manifest: any;\n #context: ApplicationContext;\n\n protected constructor(\n public readonly type: ApplicationType,\n context: ApplicationContext,\n ) {\n this.#context = context;\n\n this.appDefinitionId = this.#context.getAppDefinitionId()!;\n\n const events = this.#context.getEvents();\n this.lifecycle = new ApplicationLifecycle(events);\n\n /**\n * TODO: application should not listen such event, we should manage its state outside\n */\n events.addEventListener(EventType.removeAppCompleted, (e) => {\n if (e.appDefinitionId === this.appDefinitionId) {\n this.state = 'REMOVED';\n }\n });\n\n // This line is used to get the application registry from the function scope\n // that is creating dynamically by using the `new Function` constructor\n // e.g. new Function('__APPLICATION_REGISTRY_KEY', '// our app code')\n const applicationRegister = __APPLICATION_REGISTRY_KEY;\n applicationRegister(this);\n\n events.notify({\n type: PlatformAppEvent.ApplicationInit,\n payload: {},\n });\n }\n\n protected get context() {\n return this.#context;\n }\n public get events() {\n return this.#context.getEvents();\n }\n\n public setManifest(manifest: any) {\n this.#manifest = manifest;\n }\n\n public getManifest() {\n return this.#manifest;\n }\n\n public exposePublicAPI(api: TPublicAPI) {\n return this.#chainAPIConfiguration.exposePublicAPI(api);\n }\n\n public exposePrivateAPI(api: TPrivateAPI) {\n return this.#chainAPIConfiguration.exposePrivateAPI(api);\n }\n\n public getPublicAPI() {\n return this.#applicationAPI.public;\n }\n\n public getPrivateAPI() {\n return this.#applicationAPI.private;\n }\n\n public ready() {}\n\n buildApplicationError(message: string) {\n return createEditorPlatformApplicationError(\n EditorPlatformApplicationErrorCode.ApplicationRuntimeError,\n message,\n ).withAppDefinitionId(this.appDefinitionId);\n }\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformApplication<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>() {\n return new WixEditorPlatformApplication<TPublicAPI, TPrivateAPI>(\n await ApplicationContext.getInstance(),\n );\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.Platform, context);\n }\n}\n","import { ApplicationContext } from '@wix/editor-platform-contexts';\n\nimport { EditorPlatformApplication } from './EditorPlatformApplication';\nimport { ApplicationType } from '../types';\n\nexport class WixEditorPlatformAddon<\n TPublicAPI = unknown,\n TPrivateAPI = unknown,\n> extends EditorPlatformApplication<TPublicAPI, TPrivateAPI> {\n static async create<TPublicAPI = unknown, TPrivateAPI = unknown>(): Promise<\n WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>\n > {\n const context = await ApplicationContext.getInstance();\n\n return new WixEditorPlatformAddon<TPublicAPI, TPrivateAPI>(context);\n }\n\n constructor(context: ApplicationContext) {\n super(ApplicationType.EditorAddon, context);\n }\n}\n"],"names":[],"mappings":";;;;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbO;AACP;AACA;;ACHA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;ACHA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEO;AACP;AACA;AACA;;ACHO;AACP;AACA;AACA;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/editor-application",
3
- "version": "1.63.0",
3
+ "version": "1.65.0",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -31,7 +31,7 @@
31
31
  "license": "UNLICENSED",
32
32
  "devDependencies": {
33
33
  "@rollup/plugin-node-resolve": "^15.3.1",
34
- "esbuild": "^0.25.3",
34
+ "esbuild": "^0.25.4",
35
35
  "eslint": "^8.57.1",
36
36
  "prettier": "^3.5.3",
37
37
  "rollup": "^3.29.5",
@@ -40,7 +40,7 @@
40
40
  "typescript": "^5.8.3"
41
41
  },
42
42
  "dependencies": {
43
- "@wix/editor-platform-contexts": "1.63.0",
43
+ "@wix/editor-platform-contexts": "1.65.0",
44
44
  "@wix/public-editor-platform-errors": "1.8.0",
45
45
  "@wix/public-editor-platform-events": "1.313.0",
46
46
  "@wix/public-editor-platform-interfaces": "1.23.0"
@@ -67,5 +67,5 @@
67
67
  ]
68
68
  }
69
69
  },
70
- "falconPackageHash": "4ea968892dd8311e9be86852a9940d783a088a4b3416e24eeacce122"
70
+ "falconPackageHash": "a2f8233d09b29237c5cb82552c064020eceeb0f6aecebe6be618d000"
71
71
  }