@wix/editor-platform-contexts 1.19.0 → 1.20.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/errors.ts","../../src/ApplicationBoundEvents/transformEventPayload.ts","../../src/ApplicationBoundEvents/ApplicationBoundEvents.ts","../../src/contexts/ContextInjectionStatus.ts","../../src/contexts/EnvironmentContext.ts","../../src/contexts/ApplicationContext.ts"],"sourcesContent":["import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformContextErrorCode {\n IncorrectEnvironment = 'IncorrectEnvironment',\n}\n\nclass EditorPlatformContextError extends BaseError<EditorPlatformContextErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformContextErrorCode) {\n super(message, code, 'EP Context 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\nexport const createEditorPlatformContextError = createErrorBuilder<\n EditorPlatformContextErrorCode,\n EditorPlatformContextError\n>(EditorPlatformContextError);\n","import type { ComponentRef } from '@wix/public-editor-platform-interfaces';\nimport {\n AllowedEvents,\n AppEventPayload,\n IComponent,\n PrivateAPIFixMe,\n} from './types';\n\nexport async function transformEventPayload<T extends AllowedEvents>(\n eventPayload: Record<string, string>,\n privateAPI: PrivateAPIFixMe,\n): Promise<AppEventPayload<T>> {\n if (!eventPayload?.type) {\n return eventPayload as AppEventPayload<T>;\n }\n\n switch (eventPayload.type) {\n case 'componentSelectionChanged':\n const componentRefs = (eventPayload.componentRefs ||\n []) as unknown as ComponentRef[];\n\n const components = (await Promise.all(\n componentRefs.map((ref) => {\n return privateAPI.components.getComponent(ref);\n }),\n )) as IComponent[];\n\n return {\n type: eventPayload.type,\n components,\n } as AppEventPayload<T>;\n\n default:\n return eventPayload as AppEventPayload<T>;\n }\n}\n","import {\n PlatformAppEvent,\n PlatformAppEventEmitter,\n IPlatformAppEvent,\n} from '@wix/public-editor-platform-events';\nimport { AllowedEvents, AppEventPayload, PrivateAPIFixMe } from './types';\nimport { transformEventPayload } from './transformEventPayload';\n\nexport type OmitEventMeta<T> = T extends { meta: any } ? Omit<T, 'meta'> : T;\n\n/**\n * TODO: should not be in this package\n */\nexport class ApplicationBoundEvents {\n private events: PlatformAppEventEmitter;\n public subscribe;\n public commit;\n public startTransaction;\n public silent;\n\n constructor(\n private appDefinitionId: string,\n events: PlatformAppEventEmitter,\n private privateAPI: PrivateAPIFixMe,\n ) {\n this.events = events;\n this.subscribe = events.subscribe.bind(events);\n this.commit = events.commit.bind(events);\n this.startTransaction = events.startTransaction.bind(events);\n this.silent = events.silent.bind(events);\n }\n\n public notify(event: OmitEventMeta<IPlatformAppEvent>) {\n this.events.notify({\n type: event.type,\n payload: event.payload,\n meta: {\n appDefinitionId: this.appDefinitionId,\n },\n } as IPlatformAppEvent);\n }\n\n notifyCustomEvent(type: string, payload: Record<string, string>) {\n this.notify({\n type: PlatformAppEvent.CustomEvent,\n payload: {\n ...payload,\n type,\n },\n });\n }\n\n /**\n * TODO: we should use same interface for all events\n * (subscribe vs addEventListener)\n */\n public addEventListener<EventType extends AllowedEvents>(\n eventType: EventType,\n fn: (payload: AppEventPayload<EventType>) => void,\n ) {\n return this.events.subscribe(async (event) => {\n const isAppMatch =\n event.meta?.appDefinitionId === this.appDefinitionId ||\n event.meta?.appDefinitionId === null;\n\n const transformPayload = () =>\n transformEventPayload<EventType>(event.payload, this.privateAPI);\n\n // as an exception to skip autocomplete\n if ((eventType as string) === '*') {\n fn(await transformPayload());\n /**\n * We need to check for app match here to not listen app's own events\n */\n } else if (event.type === PlatformAppEvent.CustomEvent) {\n if (eventType === event.payload?.type && !isAppMatch) {\n fn(await transformPayload());\n }\n } else if (event.type === PlatformAppEvent.HostEvent) {\n if (eventType === event.payload?.type && isAppMatch) {\n fn(await transformPayload());\n }\n }\n });\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nconst WAIT_INJECTED_TIMEOUT = 200;\nconst WAIT_INJECTED_RETRY_COUNT = 50;\n\nexport class ContextInjectionStatus {\n injectionUUID: string;\n injectionUUID_Deprecated: string;\n\n constructor(uuid: string) {\n this.injectionUUID_Deprecated = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY`;\n this.injectionUUID = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY#0.1`;\n\n const promise = this.#getGlobalInjectionPromise();\n\n if (!promise) {\n this.#createGlobalInjectionPromise();\n }\n }\n\n #getGlobalInjectionPromise() {\n // @ts-expect-error xxx\n const ref = globalThis[this.injectionUUID];\n return ref?.promise;\n }\n\n #createGlobalInjectionPromise() {\n let _resolve;\n\n const promise = new Promise<void>((resolve) => {\n _resolve = resolve;\n });\n\n // @ts-expect-error xxx\n globalThis[this.injectionUUID] = {\n promise,\n resolve: _resolve,\n };\n\n /**\n * as soon as new latest-version promise is created\n * override existing deprecated promise and resolve it\n * as soon as latest is resolved\n */\n // @ts-expect-error xxx\n globalThis[this.injectionUUID_Deprecated] = new Promise((resolve) => {\n promise.then(resolve);\n });\n }\n\n resolveInjected() {\n // @ts-expect-error xxx\n globalThis[this.injectionUUID]?.resolve();\n }\n\n waitInjected() {\n return new Promise<void>((resolve, reject) => {\n let injected = false;\n let timeoutId: ReturnType<typeof setTimeout>;\n let retryCount = 0;\n\n const timeout = () => {\n if (injected) {\n return;\n }\n\n timeoutId = setTimeout(() => {\n retryCount++;\n\n if (retryCount < WAIT_INJECTED_RETRY_COUNT) {\n /**\n * just log that we are re-trying to connect (each 2 sec+-)\n */\n if (retryCount % 10 === 0) {\n console.log(\n createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, still re-trying',\n ).withMessage(`try number ${retryCount}`).message,\n );\n }\n\n timeout();\n\n return;\n }\n\n if (!injected) {\n const error = createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, threw by timeout',\n );\n\n reject(error);\n }\n }, WAIT_INJECTED_TIMEOUT);\n };\n\n timeout();\n\n this.#getGlobalInjectionPromise()?.then(() => {\n injected = true;\n clearTimeout(timeoutId);\n resolve();\n });\n });\n }\n}\n","import { PlatformAppEventEmitter } from '@wix/public-editor-platform-events';\nimport { WithPromiseFunctions } from '@wix/editor-platform-transport';\nimport {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport type IPrivateAPIFixMe = any; // TODO: replace with the real type\n\nexport const ENVIRONMENT_CONTEXT_KEY = '__ENVIRONMENT_CONTEXT_KEY';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __ENVIRONMENT_CONTEXT_KEY: EnvironmentContext;\n}\n\nexport enum PlatformEnvironment {\n Worker = 'Worker',\n Frame = 'Frame',\n // TODO - rename to MainThread\n ComponentPanel = 'ComponentPanel',\n}\n\nexport interface IEnvironmentContext {\n environment: PlatformEnvironment;\n privateApi: WithPromiseFunctions<IPrivateAPIFixMe>;\n events: PlatformAppEventEmitter;\n /**\n * Probably, we need to rename this prop\n */\n applicationAPIs?: Record<string, any>;\n}\n\nexport class EnvironmentContext {\n private static status = new ContextInjectionStatus('environment');\n\n static async inject(context: IEnvironmentContext) {\n if (globalThis[ENVIRONMENT_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Environment context already exists and should not be overridden',\n );\n }\n\n globalThis[ENVIRONMENT_CONTEXT_KEY] = new EnvironmentContext(context);\n this.status.resolveInjected();\n }\n\n static async getInstance(): Promise<EnvironmentContext> {\n await this.status.waitInjected();\n return globalThis[ENVIRONMENT_CONTEXT_KEY];\n }\n\n constructor(private environmentContext: IEnvironmentContext) {}\n\n getPrivateAPI() {\n return this.environmentContext.privateApi;\n }\n\n getEvents() {\n return this.environmentContext.events;\n }\n\n getApplicationAPIs() {\n return this.environmentContext.applicationAPIs ?? {};\n }\n\n getEnvironment() {\n return this.environmentContext.environment;\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nimport { ApplicationBoundEvents } from '../ApplicationBoundEvents';\nimport { EnvironmentContext, PlatformEnvironment } from './EnvironmentContext';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport const APPLICATION_CONTEXT_KEY = '__APPLICATION_CONTEXT_KEY';\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_CONTEXT_KEY: ApplicationContext<IApplicationContext>;\n}\n\nexport type IEditorApplicationContext = {\n appDefinitionId: string;\n};\n\nexport type IAddonContext = {\n appDefinitionId: string;\n appDefinitionName: string;\n data: {\n toolPanelConfig: {\n url: string;\n width: string;\n height: string;\n initialPosition: {\n x: string;\n y: string;\n };\n };\n };\n};\n\nexport type IApplicationContext = IEditorApplicationContext | IAddonContext;\n\nexport class ApplicationContext<TContext extends IApplicationContext> {\n private static status = new ContextInjectionStatus('application');\n\n /**\n * TODO: use generics for context type\n * - application\n * - editor\n */\n static async inject<TContext extends IApplicationContext>(context: TContext) {\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() !== PlatformEnvironment.Frame) {\n // throw createEditorPlatformContextError(\n // EditorPlatformContextErrorCode.IncorrectEnvironment,\n // 'Application context can be injected only in frame environment',\n // );\n // }\n\n if (globalThis[APPLICATION_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Application context already exists and should not be overridden',\n );\n }\n\n globalThis[APPLICATION_CONTEXT_KEY] = new ApplicationContext(\n context,\n await EnvironmentContext.getInstance(),\n );\n\n this.status.resolveInjected();\n }\n\n static async getInstance<TContext extends IApplicationContext>() {\n if (typeof __APPLICATION_CONTEXT_KEY !== 'undefined') {\n /**\n * NOTE it is taken not from global\n * __APPLICATION_CONTEXT_KEY is the variable which set during\n * application bundle execution using new Function() approach\n */\n return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n }\n\n await this.status.waitInjected();\n\n return globalThis[APPLICATION_CONTEXT_KEY] as ApplicationContext<TContext>;\n\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() === PlatformEnvironment.Frame) {\n // await this.status.waitInjected();\n // return globalThis[\n // APPLICATION_CONTEXT_KEY\n // ] as ApplicationContext<TContext>;\n // } else {\n // /**\n // * NOTE it is taken not from global\n // * __APPLICATION_CONTEXT_KEY is the variable which set during\n // * application bundle execution using new Function() approach\n // */\n // return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n // }\n }\n\n private events: ApplicationBoundEvents;\n\n constructor(\n private applicationContext: TContext,\n private environment: EnvironmentContext,\n ) {\n this.events = new ApplicationBoundEvents(\n this.applicationContext.appDefinitionId,\n this.environment.getEvents(),\n this.environment.getPrivateAPI(),\n );\n }\n\n getAppDefinitionId() {\n return this.applicationContext.appDefinitionId;\n }\n\n getBindings() {\n return this.applicationContext;\n }\n\n getEvents() {\n return this.events;\n }\n\n getEnvironmentContext() {\n return this.environment;\n }\n\n getPrivateAPI() {\n return this.environment.getPrivateAPI();\n }\n\n getPrivateApplicationAPI() {\n const appDefinitionId = this.getAppDefinitionId();\n\n if (!appDefinitionId) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'appDefinitionId is not available',\n );\n }\n\n return this.environment.getApplicationAPIs()[appDefinitionId];\n }\n}\n"],"names":["EditorPlatformContextErrorCode","BaseError","createErrorBuilder","PlatformAppEvent","PlatformEnvironment"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/errors.ts","../../src/ApplicationBoundEvents/transformEventPayload.ts","../../src/ApplicationBoundEvents/ApplicationBoundEvents.ts","../../src/contexts/ContextInjectionStatus.ts","../../src/contexts/EnvironmentContext.ts","../../src/contexts/ApplicationContext.ts"],"sourcesContent":["import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformContextErrorCode {\n IncorrectEnvironment = 'IncorrectEnvironment',\n}\n\nclass EditorPlatformContextError extends BaseError<EditorPlatformContextErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformContextErrorCode) {\n super(message, code, 'EP Context 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\nexport const createEditorPlatformContextError = createErrorBuilder<\n EditorPlatformContextErrorCode,\n EditorPlatformContextError\n>(EditorPlatformContextError);\n","import type { ComponentRef } from '@wix/public-editor-platform-interfaces';\nimport { AllowedEvents, AppEventPayload, PrivateAPIFixMe } from './types';\nimport { IElement } from '@wix/public-editor-platform-interfaces';\n\n// TODO: remove events shape and remove payload transformations\nexport async function transformEventPayload<T extends AllowedEvents>(\n eventPayload: Record<string, string>,\n privateAPI: PrivateAPIFixMe,\n): Promise<AppEventPayload<T>> {\n if (!eventPayload?.type) {\n return eventPayload as AppEventPayload<T>;\n }\n\n switch (eventPayload.type) {\n case 'componentSelectionChanged':\n const componentRefs = (eventPayload.componentRefs ||\n []) as unknown as ComponentRef[];\n\n const components = (await Promise.all(\n componentRefs.map((ref) => {\n return privateAPI.components.getComponent(ref);\n }),\n )) as IElement[];\n\n return {\n type: eventPayload.type,\n components,\n } as AppEventPayload<T>;\n\n default:\n return eventPayload as AppEventPayload<T>;\n }\n}\n","import {\n PlatformAppEvent,\n PlatformAppEventEmitter,\n IPlatformAppEvent,\n} from '@wix/public-editor-platform-events';\nimport { AllowedEvents, AppEventPayload, PrivateAPIFixMe } from './types';\nimport { transformEventPayload } from './transformEventPayload';\n\nexport type OmitEventMeta<T> = T extends { meta: any } ? Omit<T, 'meta'> : T;\n\n/**\n * TODO: should not be in this package\n */\nexport class ApplicationBoundEvents {\n private events: PlatformAppEventEmitter;\n public subscribe;\n public commit;\n public startTransaction;\n public silent;\n\n constructor(\n private appDefinitionId: string,\n events: PlatformAppEventEmitter,\n private privateAPI: PrivateAPIFixMe,\n ) {\n this.events = events;\n this.subscribe = events.subscribe.bind(events);\n this.commit = events.commit.bind(events);\n this.startTransaction = events.startTransaction.bind(events);\n this.silent = events.silent.bind(events);\n }\n\n public notify(event: OmitEventMeta<IPlatformAppEvent>) {\n this.events.notify({\n type: event.type,\n payload: event.payload,\n meta: {\n appDefinitionId: this.appDefinitionId,\n },\n } as IPlatformAppEvent);\n }\n\n notifyCustomEvent(type: string, payload: Record<string, string>) {\n this.notify({\n type: PlatformAppEvent.CustomEvent,\n payload: {\n ...payload,\n type,\n },\n });\n }\n\n /**\n * TODO: we should use same interface for all events\n * (subscribe vs addEventListener)\n */\n public addEventListener<EventType extends AllowedEvents>(\n eventType: EventType,\n fn: (payload: AppEventPayload<EventType>) => void,\n ) {\n return this.events.subscribe(async (event) => {\n const isAppMatch =\n event.meta?.appDefinitionId === this.appDefinitionId ||\n event.meta?.appDefinitionId === null;\n\n const transformPayload = () =>\n transformEventPayload<EventType>(event.payload, this.privateAPI);\n\n // as an exception to skip autocomplete\n if ((eventType as string) === '*') {\n fn(await transformPayload());\n /**\n * We need to check for app match here to not listen app's own events\n */\n } else if (event.type === PlatformAppEvent.CustomEvent) {\n if (eventType === event.payload?.type && !isAppMatch) {\n fn(await transformPayload());\n }\n } else if (event.type === PlatformAppEvent.HostEvent) {\n if (eventType === event.payload?.type && isAppMatch) {\n fn(await transformPayload());\n }\n }\n });\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nconst WAIT_INJECTED_TIMEOUT = 200;\nconst WAIT_INJECTED_RETRY_COUNT = 50;\n\nexport class ContextInjectionStatus {\n injectionUUID: string;\n injectionUUID_Deprecated: string;\n\n constructor(uuid: string) {\n this.injectionUUID_Deprecated = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY`;\n this.injectionUUID = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY#0.1`;\n\n const promise = this.#getGlobalInjectionPromise();\n\n if (!promise) {\n this.#createGlobalInjectionPromise();\n }\n }\n\n #getGlobalInjectionPromise() {\n // @ts-expect-error xxx\n const ref = globalThis[this.injectionUUID];\n return ref?.promise;\n }\n\n #createGlobalInjectionPromise() {\n let _resolve;\n\n const promise = new Promise<void>((resolve) => {\n _resolve = resolve;\n });\n\n // @ts-expect-error xxx\n globalThis[this.injectionUUID] = {\n promise,\n resolve: _resolve,\n };\n\n /**\n * as soon as new latest-version promise is created\n * override existing deprecated promise and resolve it\n * as soon as latest is resolved\n */\n // @ts-expect-error xxx\n globalThis[this.injectionUUID_Deprecated] = new Promise((resolve) => {\n promise.then(resolve);\n });\n }\n\n resolveInjected() {\n // @ts-expect-error xxx\n globalThis[this.injectionUUID]?.resolve();\n }\n\n waitInjected() {\n return new Promise<void>((resolve, reject) => {\n let injected = false;\n let timeoutId: ReturnType<typeof setTimeout>;\n let retryCount = 0;\n\n const timeout = () => {\n if (injected) {\n return;\n }\n\n timeoutId = setTimeout(() => {\n retryCount++;\n\n if (retryCount < WAIT_INJECTED_RETRY_COUNT) {\n /**\n * just log that we are re-trying to connect (each 2 sec+-)\n */\n if (retryCount % 10 === 0) {\n console.log(\n createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, still re-trying',\n ).withMessage(`try number ${retryCount}`).message,\n );\n }\n\n timeout();\n\n return;\n }\n\n if (!injected) {\n const error = createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, threw by timeout',\n );\n\n reject(error);\n }\n }, WAIT_INJECTED_TIMEOUT);\n };\n\n timeout();\n\n this.#getGlobalInjectionPromise()?.then(() => {\n injected = true;\n clearTimeout(timeoutId);\n resolve();\n });\n });\n }\n}\n","import { PlatformAppEventEmitter } from '@wix/public-editor-platform-events';\nimport { WithPromiseFunctions } from '@wix/editor-platform-transport';\nimport {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport type IPrivateAPIFixMe = any; // TODO: replace with the real type\n\nexport const ENVIRONMENT_CONTEXT_KEY = '__ENVIRONMENT_CONTEXT_KEY';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __ENVIRONMENT_CONTEXT_KEY: EnvironmentContext;\n}\n\nexport enum PlatformEnvironment {\n Worker = 'Worker',\n Frame = 'Frame',\n // TODO - rename to MainThread\n ComponentPanel = 'ComponentPanel',\n}\n\nexport interface IEnvironmentContext {\n environment: PlatformEnvironment;\n privateApi: WithPromiseFunctions<IPrivateAPIFixMe>;\n events: PlatformAppEventEmitter;\n /**\n * Probably, we need to rename this prop\n */\n applicationAPIs?: Record<string, any>;\n}\n\nexport class EnvironmentContext {\n private static status = new ContextInjectionStatus('environment');\n\n static async inject(context: IEnvironmentContext) {\n if (globalThis[ENVIRONMENT_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Environment context already exists and should not be overridden',\n );\n }\n\n globalThis[ENVIRONMENT_CONTEXT_KEY] = new EnvironmentContext(context);\n this.status.resolveInjected();\n }\n\n static async getInstance(): Promise<EnvironmentContext> {\n await this.status.waitInjected();\n return globalThis[ENVIRONMENT_CONTEXT_KEY];\n }\n\n constructor(private environmentContext: IEnvironmentContext) {}\n\n getPrivateAPI() {\n return this.environmentContext.privateApi;\n }\n\n getEvents() {\n return this.environmentContext.events;\n }\n\n getApplicationAPIs() {\n return this.environmentContext.applicationAPIs ?? {};\n }\n\n getEnvironment() {\n return this.environmentContext.environment;\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nimport { ApplicationBoundEvents } from '../ApplicationBoundEvents';\nimport { EnvironmentContext, PlatformEnvironment } from './EnvironmentContext';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport const APPLICATION_CONTEXT_KEY = '__APPLICATION_CONTEXT_KEY';\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_CONTEXT_KEY: ApplicationContext<IApplicationContext>;\n}\n\nexport type IEditorApplicationContext = {\n appDefinitionId: string;\n};\n\nexport type IAddonContext = {\n appDefinitionId: string;\n appDefinitionName: string;\n data: {\n toolPanelConfig: {\n url: string;\n width: string;\n height: string;\n initialPosition: {\n x: string;\n y: string;\n };\n };\n };\n};\n\nexport type IApplicationContext = IEditorApplicationContext | IAddonContext;\n\nexport class ApplicationContext<TContext extends IApplicationContext> {\n private static status = new ContextInjectionStatus('application');\n\n /**\n * TODO: use generics for context type\n * - application\n * - editor\n */\n static async inject<TContext extends IApplicationContext>(context: TContext) {\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() !== PlatformEnvironment.Frame) {\n // throw createEditorPlatformContextError(\n // EditorPlatformContextErrorCode.IncorrectEnvironment,\n // 'Application context can be injected only in frame environment',\n // );\n // }\n\n if (globalThis[APPLICATION_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Application context already exists and should not be overridden',\n );\n }\n\n globalThis[APPLICATION_CONTEXT_KEY] = new ApplicationContext(\n context,\n await EnvironmentContext.getInstance(),\n );\n\n this.status.resolveInjected();\n }\n\n static async getInstance<TContext extends IApplicationContext>() {\n if (typeof __APPLICATION_CONTEXT_KEY !== 'undefined') {\n /**\n * NOTE it is taken not from global\n * __APPLICATION_CONTEXT_KEY is the variable which set during\n * application bundle execution using new Function() approach\n */\n return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n }\n\n await this.status.waitInjected();\n\n return globalThis[APPLICATION_CONTEXT_KEY] as ApplicationContext<TContext>;\n\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() === PlatformEnvironment.Frame) {\n // await this.status.waitInjected();\n // return globalThis[\n // APPLICATION_CONTEXT_KEY\n // ] as ApplicationContext<TContext>;\n // } else {\n // /**\n // * NOTE it is taken not from global\n // * __APPLICATION_CONTEXT_KEY is the variable which set during\n // * application bundle execution using new Function() approach\n // */\n // return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n // }\n }\n\n private events: ApplicationBoundEvents;\n\n constructor(\n private applicationContext: TContext,\n private environment: EnvironmentContext,\n ) {\n this.events = new ApplicationBoundEvents(\n this.applicationContext.appDefinitionId,\n this.environment.getEvents(),\n this.environment.getPrivateAPI(),\n );\n }\n\n getAppDefinitionId() {\n return this.applicationContext.appDefinitionId;\n }\n\n getBindings() {\n return this.applicationContext;\n }\n\n getEvents() {\n return this.events;\n }\n\n getEnvironmentContext() {\n return this.environment;\n }\n\n getPrivateAPI() {\n return this.environment.getPrivateAPI();\n }\n\n getPrivateApplicationAPI() {\n const appDefinitionId = this.getAppDefinitionId();\n\n if (!appDefinitionId) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'appDefinitionId is not available',\n );\n }\n\n return this.environment.getApplicationAPIs()[appDefinitionId];\n }\n}\n"],"names":["EditorPlatformContextErrorCode","BaseError","createErrorBuilder","PlatformAppEvent","PlatformEnvironment"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/errors.ts","../../src/ApplicationBoundEvents/transformEventPayload.ts","../../src/ApplicationBoundEvents/ApplicationBoundEvents.ts","../../src/contexts/ContextInjectionStatus.ts","../../src/contexts/EnvironmentContext.ts","../../src/contexts/ApplicationContext.ts"],"sourcesContent":["import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformContextErrorCode {\n IncorrectEnvironment = 'IncorrectEnvironment',\n}\n\nclass EditorPlatformContextError extends BaseError<EditorPlatformContextErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformContextErrorCode) {\n super(message, code, 'EP Context 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\nexport const createEditorPlatformContextError = createErrorBuilder<\n EditorPlatformContextErrorCode,\n EditorPlatformContextError\n>(EditorPlatformContextError);\n","import type { ComponentRef } from '@wix/public-editor-platform-interfaces';\nimport {\n AllowedEvents,\n AppEventPayload,\n IComponent,\n PrivateAPIFixMe,\n} from './types';\n\nexport async function transformEventPayload<T extends AllowedEvents>(\n eventPayload: Record<string, string>,\n privateAPI: PrivateAPIFixMe,\n): Promise<AppEventPayload<T>> {\n if (!eventPayload?.type) {\n return eventPayload as AppEventPayload<T>;\n }\n\n switch (eventPayload.type) {\n case 'componentSelectionChanged':\n const componentRefs = (eventPayload.componentRefs ||\n []) as unknown as ComponentRef[];\n\n const components = (await Promise.all(\n componentRefs.map((ref) => {\n return privateAPI.components.getComponent(ref);\n }),\n )) as IComponent[];\n\n return {\n type: eventPayload.type,\n components,\n } as AppEventPayload<T>;\n\n default:\n return eventPayload as AppEventPayload<T>;\n }\n}\n","import {\n PlatformAppEvent,\n PlatformAppEventEmitter,\n IPlatformAppEvent,\n} from '@wix/public-editor-platform-events';\nimport { AllowedEvents, AppEventPayload, PrivateAPIFixMe } from './types';\nimport { transformEventPayload } from './transformEventPayload';\n\nexport type OmitEventMeta<T> = T extends { meta: any } ? Omit<T, 'meta'> : T;\n\n/**\n * TODO: should not be in this package\n */\nexport class ApplicationBoundEvents {\n private events: PlatformAppEventEmitter;\n public subscribe;\n public commit;\n public startTransaction;\n public silent;\n\n constructor(\n private appDefinitionId: string,\n events: PlatformAppEventEmitter,\n private privateAPI: PrivateAPIFixMe,\n ) {\n this.events = events;\n this.subscribe = events.subscribe.bind(events);\n this.commit = events.commit.bind(events);\n this.startTransaction = events.startTransaction.bind(events);\n this.silent = events.silent.bind(events);\n }\n\n public notify(event: OmitEventMeta<IPlatformAppEvent>) {\n this.events.notify({\n type: event.type,\n payload: event.payload,\n meta: {\n appDefinitionId: this.appDefinitionId,\n },\n } as IPlatformAppEvent);\n }\n\n notifyCustomEvent(type: string, payload: Record<string, string>) {\n this.notify({\n type: PlatformAppEvent.CustomEvent,\n payload: {\n ...payload,\n type,\n },\n });\n }\n\n /**\n * TODO: we should use same interface for all events\n * (subscribe vs addEventListener)\n */\n public addEventListener<EventType extends AllowedEvents>(\n eventType: EventType,\n fn: (payload: AppEventPayload<EventType>) => void,\n ) {\n return this.events.subscribe(async (event) => {\n const isAppMatch =\n event.meta?.appDefinitionId === this.appDefinitionId ||\n event.meta?.appDefinitionId === null;\n\n const transformPayload = () =>\n transformEventPayload<EventType>(event.payload, this.privateAPI);\n\n // as an exception to skip autocomplete\n if ((eventType as string) === '*') {\n fn(await transformPayload());\n /**\n * We need to check for app match here to not listen app's own events\n */\n } else if (event.type === PlatformAppEvent.CustomEvent) {\n if (eventType === event.payload?.type && !isAppMatch) {\n fn(await transformPayload());\n }\n } else if (event.type === PlatformAppEvent.HostEvent) {\n if (eventType === event.payload?.type && isAppMatch) {\n fn(await transformPayload());\n }\n }\n });\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nconst WAIT_INJECTED_TIMEOUT = 200;\nconst WAIT_INJECTED_RETRY_COUNT = 50;\n\nexport class ContextInjectionStatus {\n injectionUUID: string;\n injectionUUID_Deprecated: string;\n\n constructor(uuid: string) {\n this.injectionUUID_Deprecated = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY`;\n this.injectionUUID = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY#0.1`;\n\n const promise = this.#getGlobalInjectionPromise();\n\n if (!promise) {\n this.#createGlobalInjectionPromise();\n }\n }\n\n #getGlobalInjectionPromise() {\n // @ts-expect-error xxx\n const ref = globalThis[this.injectionUUID];\n return ref?.promise;\n }\n\n #createGlobalInjectionPromise() {\n let _resolve;\n\n const promise = new Promise<void>((resolve) => {\n _resolve = resolve;\n });\n\n // @ts-expect-error xxx\n globalThis[this.injectionUUID] = {\n promise,\n resolve: _resolve,\n };\n\n /**\n * as soon as new latest-version promise is created\n * override existing deprecated promise and resolve it\n * as soon as latest is resolved\n */\n // @ts-expect-error xxx\n globalThis[this.injectionUUID_Deprecated] = new Promise((resolve) => {\n promise.then(resolve);\n });\n }\n\n resolveInjected() {\n // @ts-expect-error xxx\n globalThis[this.injectionUUID]?.resolve();\n }\n\n waitInjected() {\n return new Promise<void>((resolve, reject) => {\n let injected = false;\n let timeoutId: ReturnType<typeof setTimeout>;\n let retryCount = 0;\n\n const timeout = () => {\n if (injected) {\n return;\n }\n\n timeoutId = setTimeout(() => {\n retryCount++;\n\n if (retryCount < WAIT_INJECTED_RETRY_COUNT) {\n /**\n * just log that we are re-trying to connect (each 2 sec+-)\n */\n if (retryCount % 10 === 0) {\n console.log(\n createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, still re-trying',\n ).withMessage(`try number ${retryCount}`).message,\n );\n }\n\n timeout();\n\n return;\n }\n\n if (!injected) {\n const error = createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, threw by timeout',\n );\n\n reject(error);\n }\n }, WAIT_INJECTED_TIMEOUT);\n };\n\n timeout();\n\n this.#getGlobalInjectionPromise()?.then(() => {\n injected = true;\n clearTimeout(timeoutId);\n resolve();\n });\n });\n }\n}\n","import { PlatformAppEventEmitter } from '@wix/public-editor-platform-events';\nimport { WithPromiseFunctions } from '@wix/editor-platform-transport';\nimport {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport type IPrivateAPIFixMe = any; // TODO: replace with the real type\n\nexport const ENVIRONMENT_CONTEXT_KEY = '__ENVIRONMENT_CONTEXT_KEY';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __ENVIRONMENT_CONTEXT_KEY: EnvironmentContext;\n}\n\nexport enum PlatformEnvironment {\n Worker = 'Worker',\n Frame = 'Frame',\n // TODO - rename to MainThread\n ComponentPanel = 'ComponentPanel',\n}\n\nexport interface IEnvironmentContext {\n environment: PlatformEnvironment;\n privateApi: WithPromiseFunctions<IPrivateAPIFixMe>;\n events: PlatformAppEventEmitter;\n /**\n * Probably, we need to rename this prop\n */\n applicationAPIs?: Record<string, any>;\n}\n\nexport class EnvironmentContext {\n private static status = new ContextInjectionStatus('environment');\n\n static async inject(context: IEnvironmentContext) {\n if (globalThis[ENVIRONMENT_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Environment context already exists and should not be overridden',\n );\n }\n\n globalThis[ENVIRONMENT_CONTEXT_KEY] = new EnvironmentContext(context);\n this.status.resolveInjected();\n }\n\n static async getInstance(): Promise<EnvironmentContext> {\n await this.status.waitInjected();\n return globalThis[ENVIRONMENT_CONTEXT_KEY];\n }\n\n constructor(private environmentContext: IEnvironmentContext) {}\n\n getPrivateAPI() {\n return this.environmentContext.privateApi;\n }\n\n getEvents() {\n return this.environmentContext.events;\n }\n\n getApplicationAPIs() {\n return this.environmentContext.applicationAPIs ?? {};\n }\n\n getEnvironment() {\n return this.environmentContext.environment;\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nimport { ApplicationBoundEvents } from '../ApplicationBoundEvents';\nimport { EnvironmentContext, PlatformEnvironment } from './EnvironmentContext';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport const APPLICATION_CONTEXT_KEY = '__APPLICATION_CONTEXT_KEY';\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_CONTEXT_KEY: ApplicationContext<IApplicationContext>;\n}\n\nexport type IEditorApplicationContext = {\n appDefinitionId: string;\n};\n\nexport type IAddonContext = {\n appDefinitionId: string;\n appDefinitionName: string;\n data: {\n toolPanelConfig: {\n url: string;\n width: string;\n height: string;\n initialPosition: {\n x: string;\n y: string;\n };\n };\n };\n};\n\nexport type IApplicationContext = IEditorApplicationContext | IAddonContext;\n\nexport class ApplicationContext<TContext extends IApplicationContext> {\n private static status = new ContextInjectionStatus('application');\n\n /**\n * TODO: use generics for context type\n * - application\n * - editor\n */\n static async inject<TContext extends IApplicationContext>(context: TContext) {\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() !== PlatformEnvironment.Frame) {\n // throw createEditorPlatformContextError(\n // EditorPlatformContextErrorCode.IncorrectEnvironment,\n // 'Application context can be injected only in frame environment',\n // );\n // }\n\n if (globalThis[APPLICATION_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Application context already exists and should not be overridden',\n );\n }\n\n globalThis[APPLICATION_CONTEXT_KEY] = new ApplicationContext(\n context,\n await EnvironmentContext.getInstance(),\n );\n\n this.status.resolveInjected();\n }\n\n static async getInstance<TContext extends IApplicationContext>() {\n if (typeof __APPLICATION_CONTEXT_KEY !== 'undefined') {\n /**\n * NOTE it is taken not from global\n * __APPLICATION_CONTEXT_KEY is the variable which set during\n * application bundle execution using new Function() approach\n */\n return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n }\n\n await this.status.waitInjected();\n\n return globalThis[APPLICATION_CONTEXT_KEY] as ApplicationContext<TContext>;\n\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() === PlatformEnvironment.Frame) {\n // await this.status.waitInjected();\n // return globalThis[\n // APPLICATION_CONTEXT_KEY\n // ] as ApplicationContext<TContext>;\n // } else {\n // /**\n // * NOTE it is taken not from global\n // * __APPLICATION_CONTEXT_KEY is the variable which set during\n // * application bundle execution using new Function() approach\n // */\n // return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n // }\n }\n\n private events: ApplicationBoundEvents;\n\n constructor(\n private applicationContext: TContext,\n private environment: EnvironmentContext,\n ) {\n this.events = new ApplicationBoundEvents(\n this.applicationContext.appDefinitionId,\n this.environment.getEvents(),\n this.environment.getPrivateAPI(),\n );\n }\n\n getAppDefinitionId() {\n return this.applicationContext.appDefinitionId;\n }\n\n getBindings() {\n return this.applicationContext;\n }\n\n getEvents() {\n return this.events;\n }\n\n getEnvironmentContext() {\n return this.environment;\n }\n\n getPrivateAPI() {\n return this.environment.getPrivateAPI();\n }\n\n getPrivateApplicationAPI() {\n const appDefinitionId = this.getAppDefinitionId();\n\n if (!appDefinitionId) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'appDefinitionId is not available',\n );\n }\n\n return this.environment.getApplicationAPIs()[appDefinitionId];\n }\n}\n"],"names":["EditorPlatformContextErrorCode","PlatformEnvironment"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/errors.ts","../../src/ApplicationBoundEvents/transformEventPayload.ts","../../src/ApplicationBoundEvents/ApplicationBoundEvents.ts","../../src/contexts/ContextInjectionStatus.ts","../../src/contexts/EnvironmentContext.ts","../../src/contexts/ApplicationContext.ts"],"sourcesContent":["import {\n BaseError,\n createErrorBuilder,\n} from '@wix/public-editor-platform-errors';\n\nexport enum EditorPlatformContextErrorCode {\n IncorrectEnvironment = 'IncorrectEnvironment',\n}\n\nclass EditorPlatformContextError extends BaseError<EditorPlatformContextErrorCode> {\n state: Partial<{\n url: string;\n appDefinitionId: string;\n }> = {};\n\n constructor(message: string, code: EditorPlatformContextErrorCode) {\n super(message, code, 'EP Context 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\nexport const createEditorPlatformContextError = createErrorBuilder<\n EditorPlatformContextErrorCode,\n EditorPlatformContextError\n>(EditorPlatformContextError);\n","import type { ComponentRef } from '@wix/public-editor-platform-interfaces';\nimport { AllowedEvents, AppEventPayload, PrivateAPIFixMe } from './types';\nimport { IElement } from '@wix/public-editor-platform-interfaces';\n\n// TODO: remove events shape and remove payload transformations\nexport async function transformEventPayload<T extends AllowedEvents>(\n eventPayload: Record<string, string>,\n privateAPI: PrivateAPIFixMe,\n): Promise<AppEventPayload<T>> {\n if (!eventPayload?.type) {\n return eventPayload as AppEventPayload<T>;\n }\n\n switch (eventPayload.type) {\n case 'componentSelectionChanged':\n const componentRefs = (eventPayload.componentRefs ||\n []) as unknown as ComponentRef[];\n\n const components = (await Promise.all(\n componentRefs.map((ref) => {\n return privateAPI.components.getComponent(ref);\n }),\n )) as IElement[];\n\n return {\n type: eventPayload.type,\n components,\n } as AppEventPayload<T>;\n\n default:\n return eventPayload as AppEventPayload<T>;\n }\n}\n","import {\n PlatformAppEvent,\n PlatformAppEventEmitter,\n IPlatformAppEvent,\n} from '@wix/public-editor-platform-events';\nimport { AllowedEvents, AppEventPayload, PrivateAPIFixMe } from './types';\nimport { transformEventPayload } from './transformEventPayload';\n\nexport type OmitEventMeta<T> = T extends { meta: any } ? Omit<T, 'meta'> : T;\n\n/**\n * TODO: should not be in this package\n */\nexport class ApplicationBoundEvents {\n private events: PlatformAppEventEmitter;\n public subscribe;\n public commit;\n public startTransaction;\n public silent;\n\n constructor(\n private appDefinitionId: string,\n events: PlatformAppEventEmitter,\n private privateAPI: PrivateAPIFixMe,\n ) {\n this.events = events;\n this.subscribe = events.subscribe.bind(events);\n this.commit = events.commit.bind(events);\n this.startTransaction = events.startTransaction.bind(events);\n this.silent = events.silent.bind(events);\n }\n\n public notify(event: OmitEventMeta<IPlatformAppEvent>) {\n this.events.notify({\n type: event.type,\n payload: event.payload,\n meta: {\n appDefinitionId: this.appDefinitionId,\n },\n } as IPlatformAppEvent);\n }\n\n notifyCustomEvent(type: string, payload: Record<string, string>) {\n this.notify({\n type: PlatformAppEvent.CustomEvent,\n payload: {\n ...payload,\n type,\n },\n });\n }\n\n /**\n * TODO: we should use same interface for all events\n * (subscribe vs addEventListener)\n */\n public addEventListener<EventType extends AllowedEvents>(\n eventType: EventType,\n fn: (payload: AppEventPayload<EventType>) => void,\n ) {\n return this.events.subscribe(async (event) => {\n const isAppMatch =\n event.meta?.appDefinitionId === this.appDefinitionId ||\n event.meta?.appDefinitionId === null;\n\n const transformPayload = () =>\n transformEventPayload<EventType>(event.payload, this.privateAPI);\n\n // as an exception to skip autocomplete\n if ((eventType as string) === '*') {\n fn(await transformPayload());\n /**\n * We need to check for app match here to not listen app's own events\n */\n } else if (event.type === PlatformAppEvent.CustomEvent) {\n if (eventType === event.payload?.type && !isAppMatch) {\n fn(await transformPayload());\n }\n } else if (event.type === PlatformAppEvent.HostEvent) {\n if (eventType === event.payload?.type && isAppMatch) {\n fn(await transformPayload());\n }\n }\n });\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nconst WAIT_INJECTED_TIMEOUT = 200;\nconst WAIT_INJECTED_RETRY_COUNT = 50;\n\nexport class ContextInjectionStatus {\n injectionUUID: string;\n injectionUUID_Deprecated: string;\n\n constructor(uuid: string) {\n this.injectionUUID_Deprecated = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY`;\n this.injectionUUID = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY#0.1`;\n\n const promise = this.#getGlobalInjectionPromise();\n\n if (!promise) {\n this.#createGlobalInjectionPromise();\n }\n }\n\n #getGlobalInjectionPromise() {\n // @ts-expect-error xxx\n const ref = globalThis[this.injectionUUID];\n return ref?.promise;\n }\n\n #createGlobalInjectionPromise() {\n let _resolve;\n\n const promise = new Promise<void>((resolve) => {\n _resolve = resolve;\n });\n\n // @ts-expect-error xxx\n globalThis[this.injectionUUID] = {\n promise,\n resolve: _resolve,\n };\n\n /**\n * as soon as new latest-version promise is created\n * override existing deprecated promise and resolve it\n * as soon as latest is resolved\n */\n // @ts-expect-error xxx\n globalThis[this.injectionUUID_Deprecated] = new Promise((resolve) => {\n promise.then(resolve);\n });\n }\n\n resolveInjected() {\n // @ts-expect-error xxx\n globalThis[this.injectionUUID]?.resolve();\n }\n\n waitInjected() {\n return new Promise<void>((resolve, reject) => {\n let injected = false;\n let timeoutId: ReturnType<typeof setTimeout>;\n let retryCount = 0;\n\n const timeout = () => {\n if (injected) {\n return;\n }\n\n timeoutId = setTimeout(() => {\n retryCount++;\n\n if (retryCount < WAIT_INJECTED_RETRY_COUNT) {\n /**\n * just log that we are re-trying to connect (each 2 sec+-)\n */\n if (retryCount % 10 === 0) {\n console.log(\n createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, still re-trying',\n ).withMessage(`try number ${retryCount}`).message,\n );\n }\n\n timeout();\n\n return;\n }\n\n if (!injected) {\n const error = createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'contexts are not resolved, threw by timeout',\n );\n\n reject(error);\n }\n }, WAIT_INJECTED_TIMEOUT);\n };\n\n timeout();\n\n this.#getGlobalInjectionPromise()?.then(() => {\n injected = true;\n clearTimeout(timeoutId);\n resolve();\n });\n });\n }\n}\n","import { PlatformAppEventEmitter } from '@wix/public-editor-platform-events';\nimport { WithPromiseFunctions } from '@wix/editor-platform-transport';\nimport {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport type IPrivateAPIFixMe = any; // TODO: replace with the real type\n\nexport const ENVIRONMENT_CONTEXT_KEY = '__ENVIRONMENT_CONTEXT_KEY';\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __ENVIRONMENT_CONTEXT_KEY: EnvironmentContext;\n}\n\nexport enum PlatformEnvironment {\n Worker = 'Worker',\n Frame = 'Frame',\n // TODO - rename to MainThread\n ComponentPanel = 'ComponentPanel',\n}\n\nexport interface IEnvironmentContext {\n environment: PlatformEnvironment;\n privateApi: WithPromiseFunctions<IPrivateAPIFixMe>;\n events: PlatformAppEventEmitter;\n /**\n * Probably, we need to rename this prop\n */\n applicationAPIs?: Record<string, any>;\n}\n\nexport class EnvironmentContext {\n private static status = new ContextInjectionStatus('environment');\n\n static async inject(context: IEnvironmentContext) {\n if (globalThis[ENVIRONMENT_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Environment context already exists and should not be overridden',\n );\n }\n\n globalThis[ENVIRONMENT_CONTEXT_KEY] = new EnvironmentContext(context);\n this.status.resolveInjected();\n }\n\n static async getInstance(): Promise<EnvironmentContext> {\n await this.status.waitInjected();\n return globalThis[ENVIRONMENT_CONTEXT_KEY];\n }\n\n constructor(private environmentContext: IEnvironmentContext) {}\n\n getPrivateAPI() {\n return this.environmentContext.privateApi;\n }\n\n getEvents() {\n return this.environmentContext.events;\n }\n\n getApplicationAPIs() {\n return this.environmentContext.applicationAPIs ?? {};\n }\n\n getEnvironment() {\n return this.environmentContext.environment;\n }\n}\n","import {\n createEditorPlatformContextError,\n EditorPlatformContextErrorCode,\n} from '../errors';\n\nimport { ApplicationBoundEvents } from '../ApplicationBoundEvents';\nimport { EnvironmentContext, PlatformEnvironment } from './EnvironmentContext';\nimport { ContextInjectionStatus } from './ContextInjectionStatus';\n\nexport const APPLICATION_CONTEXT_KEY = '__APPLICATION_CONTEXT_KEY';\ndeclare global {\n // eslint-disable-next-line no-var\n var __APPLICATION_CONTEXT_KEY: ApplicationContext<IApplicationContext>;\n}\n\nexport type IEditorApplicationContext = {\n appDefinitionId: string;\n};\n\nexport type IAddonContext = {\n appDefinitionId: string;\n appDefinitionName: string;\n data: {\n toolPanelConfig: {\n url: string;\n width: string;\n height: string;\n initialPosition: {\n x: string;\n y: string;\n };\n };\n };\n};\n\nexport type IApplicationContext = IEditorApplicationContext | IAddonContext;\n\nexport class ApplicationContext<TContext extends IApplicationContext> {\n private static status = new ContextInjectionStatus('application');\n\n /**\n * TODO: use generics for context type\n * - application\n * - editor\n */\n static async inject<TContext extends IApplicationContext>(context: TContext) {\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() !== PlatformEnvironment.Frame) {\n // throw createEditorPlatformContextError(\n // EditorPlatformContextErrorCode.IncorrectEnvironment,\n // 'Application context can be injected only in frame environment',\n // );\n // }\n\n if (globalThis[APPLICATION_CONTEXT_KEY]) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'Application context already exists and should not be overridden',\n );\n }\n\n globalThis[APPLICATION_CONTEXT_KEY] = new ApplicationContext(\n context,\n await EnvironmentContext.getInstance(),\n );\n\n this.status.resolveInjected();\n }\n\n static async getInstance<TContext extends IApplicationContext>() {\n if (typeof __APPLICATION_CONTEXT_KEY !== 'undefined') {\n /**\n * NOTE it is taken not from global\n * __APPLICATION_CONTEXT_KEY is the variable which set during\n * application bundle execution using new Function() approach\n */\n return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n }\n\n await this.status.waitInjected();\n\n return globalThis[APPLICATION_CONTEXT_KEY] as ApplicationContext<TContext>;\n\n // const environment = await EnvironmentContext.getInstance();\n\n // if (environment.getEnvironment() === PlatformEnvironment.Frame) {\n // await this.status.waitInjected();\n // return globalThis[\n // APPLICATION_CONTEXT_KEY\n // ] as ApplicationContext<TContext>;\n // } else {\n // /**\n // * NOTE it is taken not from global\n // * __APPLICATION_CONTEXT_KEY is the variable which set during\n // * application bundle execution using new Function() approach\n // */\n // return __APPLICATION_CONTEXT_KEY as ApplicationContext<TContext>;\n // }\n }\n\n private events: ApplicationBoundEvents;\n\n constructor(\n private applicationContext: TContext,\n private environment: EnvironmentContext,\n ) {\n this.events = new ApplicationBoundEvents(\n this.applicationContext.appDefinitionId,\n this.environment.getEvents(),\n this.environment.getPrivateAPI(),\n );\n }\n\n getAppDefinitionId() {\n return this.applicationContext.appDefinitionId;\n }\n\n getBindings() {\n return this.applicationContext;\n }\n\n getEvents() {\n return this.events;\n }\n\n getEnvironmentContext() {\n return this.environment;\n }\n\n getPrivateAPI() {\n return this.environment.getPrivateAPI();\n }\n\n getPrivateApplicationAPI() {\n const appDefinitionId = this.getAppDefinitionId();\n\n if (!appDefinitionId) {\n throw createEditorPlatformContextError(\n EditorPlatformContextErrorCode.IncorrectEnvironment,\n 'appDefinitionId is not available',\n );\n }\n\n return this.environment.getApplicationAPIs()[appDefinitionId];\n }\n}\n"],"names":["EditorPlatformContextErrorCode","PlatformEnvironment"],"mappings":"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"}
@@ -1,28 +1,14 @@
1
1
  import * as _wix_editor_platform_transport from '@wix/editor-platform-transport';
2
2
  import { WithPromiseFunctions } from '@wix/editor-platform-transport';
3
3
  import { IPlatformAppEvent, PlatformAppEventEmitter } from '@wix/public-editor-platform-events';
4
- import { ComponentRef } from '@wix/public-editor-platform-interfaces';
4
+ import { IElement } from '@wix/public-editor-platform-interfaces';
5
5
 
6
6
  type PrivateAPIFixMe = any;
7
- interface Component<TComponentType extends string> {
8
- compRef: ComponentRef;
9
- type: TComponentType;
10
- }
11
- interface TextComponent extends Component<'text'> {
12
- text(): Promise<string>;
13
- text(content: string): Promise<void>;
14
- }
15
- interface ImageComponent extends Component<'image'> {
16
- src(src?: string): Promise<void>;
17
- }
18
- interface UnknownComponent extends Component<'unknown'> {
19
- }
20
- type IComponent = TextComponent | ImageComponent | UnknownComponent;
21
7
  type EventsToAutocomplete = 'componentSelectionChanged';
22
8
  type AllowedEvents = Omit<string, EventsToAutocomplete> | EventsToAutocomplete;
23
9
  type AppEventPayload<EventType extends AllowedEvents> = EventType extends 'componentSelectionChanged' ? {
24
10
  type: EventType;
25
- components: IComponent[];
11
+ components: IElement[];
26
12
  } : Record<string, string>;
27
13
 
28
14
  type OmitEventMeta<T> = T extends {
@@ -124,5 +110,5 @@ declare class ApplicationContext<TContext extends IApplicationContext> {
124
110
  getPrivateApplicationAPI(): any;
125
111
  }
126
112
 
127
- export { APPLICATION_CONTEXT_KEY, type AllowedEvents, type AppEventPayload, ApplicationBoundEvents, ApplicationContext, ENVIRONMENT_CONTEXT_KEY, EnvironmentContext, type IAddonContext, type IApplicationContext, type IComponent, type IEditorApplicationContext, type IEnvironmentContext, type IPrivateAPIFixMe, type OmitEventMeta, PlatformEnvironment, type PrivateAPIFixMe };
113
+ export { APPLICATION_CONTEXT_KEY, type AllowedEvents, type AppEventPayload, ApplicationBoundEvents, ApplicationContext, ENVIRONMENT_CONTEXT_KEY, EnvironmentContext, type IAddonContext, type IApplicationContext, type IEditorApplicationContext, type IEnvironmentContext, type IPrivateAPIFixMe, type OmitEventMeta, PlatformEnvironment, type PrivateAPIFixMe };
128
114
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/editor-platform-contexts",
3
- "version": "1.19.0",
3
+ "version": "1.20.0",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -36,8 +36,8 @@
36
36
  "dependencies": {
37
37
  "@wix/editor-platform-transport": "1.13.0",
38
38
  "@wix/public-editor-platform-errors": "1.8.0",
39
- "@wix/public-editor-platform-events": "1.306.0",
40
- "@wix/public-editor-platform-interfaces": "1.17.0"
39
+ "@wix/public-editor-platform-events": "1.307.0",
40
+ "@wix/public-editor-platform-interfaces": "1.18.0"
41
41
  },
42
42
  "publishConfig": {
43
43
  "registry": "https://registry.npmjs.org/",
@@ -61,5 +61,5 @@
61
61
  ]
62
62
  }
63
63
  },
64
- "falconPackageHash": "a90a500095e392b14e738b535edbc7f6ff106203eb38d9f014b3e58a"
64
+ "falconPackageHash": "5c01fceea736a7134c16b4ba6e3980648ac5fb149bdd66ff1db63d17"
65
65
  }