@myop/sdk 0.0.1 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/bundled-declarations.d.ts +96 -82
  2. package/dist/cjs/_IframeSDK.09ec9f1b.min.js +1 -0
  3. package/dist/cjs/{_IframeSDK.c5a563b1.js → _IframeSDK.56815070.js} +123 -2
  4. package/dist/cjs/{_IframeSDK.c5a563b1.js.map → _IframeSDK.56815070.js.map} +3 -3
  5. package/dist/cjs/{_MyopHelpers.24c3f801.js → _MyopHelpers.98cae3f9.js} +1 -1
  6. package/dist/cjs/_MyopHelpers.98cae3f9.js.map +7 -0
  7. package/dist/cjs/_MyopHelpers.f3e207e0.min.js +1 -0
  8. package/dist/cjs/{_MyopMessages.de6876c1.js → _MyopMessages.1fdd2452.js} +1 -1
  9. package/dist/cjs/_MyopMessages.1fdd2452.js.map +7 -0
  10. package/dist/cjs/_MyopMessages.71dc535d.min.js +1 -0
  11. package/dist/cjs/{_WebComponentSDK.c1dbe840.js → _WebComponentSDK.285151df.js} +123 -2
  12. package/dist/cjs/{_WebComponentSDK.c1dbe840.js.map → _WebComponentSDK.285151df.js.map} +3 -3
  13. package/dist/cjs/_WebComponentSDK.c0cd7c5f.min.js +1 -0
  14. package/dist/cjs/_hostSDK.0bd6ebc8.min.js +1 -0
  15. package/dist/cjs/{_hostSDK.411032df.js → _hostSDK.397d0006.js} +123 -2
  16. package/dist/cjs/{_hostSDK.411032df.js.map → _hostSDK.397d0006.js.map} +3 -3
  17. package/dist/cjs/myop_sdk.js +17 -17
  18. package/dist/cjs/myop_sdk.js.map +1 -1
  19. package/dist/cjs/myop_sdk.min.js +1 -1
  20. package/dist/module/Iframe/index.js +130 -3
  21. package/dist/module/Iframe/index.js.map +3 -3
  22. package/dist/module/SDK.js +475 -393
  23. package/dist/module/SDK.js.map +4 -4
  24. package/dist/module/common/index.js +2 -2
  25. package/dist/module/common/index.js.map +3 -3
  26. package/dist/module/common/utils/serialization.d.ts +2 -1
  27. package/dist/module/helpers/index.js +2 -2
  28. package/dist/module/helpers/index.js.map +3 -3
  29. package/dist/module/host/componentCore.d.ts +1 -1
  30. package/dist/module/host/hostSDK.d.ts +2 -2
  31. package/dist/module/host/index.js +130 -3
  32. package/dist/module/host/index.js.map +3 -3
  33. package/dist/module/host/myopOverride.d.ts +2 -0
  34. package/dist/module/messages/index.js +2 -2
  35. package/dist/module/messages/index.js.map +3 -3
  36. package/dist/module/utils/utils.d.ts +1 -1
  37. package/dist/module/utils/uuid.d.ts +7 -0
  38. package/dist/module/webcomponent/index.js +130 -3
  39. package/dist/module/webcomponent/index.js.map +3 -3
  40. package/package.json +2 -2
  41. package/dist/cjs/_IframeSDK.13abd0a4.min.js +0 -1
  42. package/dist/cjs/_MyopHelpers.24c3f801.js.map +0 -7
  43. package/dist/cjs/_MyopHelpers.a734fddc.min.js +0 -1
  44. package/dist/cjs/_MyopMessages.c2dba3be.min.js +0 -1
  45. package/dist/cjs/_MyopMessages.de6876c1.js.map +0 -7
  46. package/dist/cjs/_WebComponentSDK.16d30aae.min.js +0 -1
  47. package/dist/cjs/_hostSDK.bb1d87e3.min.js +0 -1
@@ -48,7 +48,7 @@ __export(helpers_exports, {
48
48
  removeClass: () => removeClass
49
49
  });
50
50
 
51
- // src/utils/utils.ts
51
+ // src/utils/uuid.ts
52
52
  var uuidv4 = () => {
53
53
  return "10000000-1000-4000-8000-100000000000".replace(
54
54
  /[018]/g,
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/dynamicImport/defineDynamicImport.ts", "../../src/helpers/index.ts", "../../src/utils/uuid.ts", "../../src/messages/BaseMessage.ts", "../../src/messages/ExecuteScriptMessage.ts", "../../src/messages/CustomRefMessage.ts", "../../src/helpers/applyStylesheet.ts", "../../src/helpers/iframeSkinUrlTokenizer.ts", "../../src/helpers/classList.ts", "../../src/helpers/configBuilder.ts", "../../src/helpers/CloudRepository.ts", "../../src/helpers/exec.ts", "../../src/helpers/MyopHelpers.ts"],
4
+ "sourcesContent": ["export const __federation__ = \"__federation__\"\nexport const onLoadKey = \"onLoad\"\nexport const moduleInstanceKey = \"moduleInstance\"\n\nexport const defineDynamicImport = (globalName: string, module: any) => {\n // @ts-ignore\n if (window[__federation__] && window[__federation__][globalName] && window[__federation__][globalName][onLoadKey]) {\n // @ts-ignore\n window[__federation__][globalName][onLoadKey]({[globalName]: module})\n } else {\n //console.log('__federation__ loader not defined for module', module);\n }\n}", "export * from \"./applyStylesheet\";\nexport * from \"./iframeSkinUrlTokenizer\";\nexport * from \"./classList\";\nexport * from \"./configBuilder\";\nexport * from \"./CloudRepository\";\nexport * from \"./exec\";\n", "//TODO : reuse from one place.\n// needs to be used in myop-sdk, myop-dashbaord, myop-server, myop-cli ..\n\nexport const uuidv4 = () => {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c =>\n (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)\n );\n}\n\n// Convert UUID string to bytes\nexport const uuidToBytes = (uuid: string): Uint8Array => {\n return Uint8Array.from(\n uuid.replace(/-/g, '').match(/.{1,2}/g)!.map(byte => parseInt(byte, 16))\n );\n};\n\n// Convert bytes to UUID string\nexport const bytesToUuid = (bytes: Uint8Array): string => {\n const hex = [...bytes].map(b => b.toString(16).padStart(2, '0')).join('');\n return [\n hex.slice(0, 8),\n hex.slice(8, 12),\n hex.slice(12, 16),\n hex.slice(16, 20),\n hex.slice(20)\n ].join('-');\n};\n\n// Base64 URL-safe encode\nexport const base64UrlEncode = (bytes: Uint8Array): string => {\n const base64 = btoa(String.fromCharCode(...bytes));\n return base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n};\n\n// Base64 URL-safe decode\nexport const base64UrlDecode = (str: string): Uint8Array => {\n let base64 = str.replace(/-/g, '+').replace(/_/g, '/');\n while (base64.length % 4) base64 += '=';\n const binary = atob(base64);\n return Uint8Array.from(binary, char => char.charCodeAt(0));\n};\n\n// Compress an array of UUIDs into a short URL-safe string\nexport const compressUUIDs = (uuids: string[]): string => {\n const allBytes = uuids.flatMap(uuid => Array.from(uuidToBytes(uuid)));\n return base64UrlEncode(new Uint8Array(allBytes));\n};\n\n// Decompress from URL-safe string back to an array of UUIDs\nexport const decompressUUIDs = (encoded: string): string[] => {\n const bytes = base64UrlDecode(encoded);\n if (bytes.length % 16 !== 0) throw new Error('Invalid input length');\n\n const uuids: string[] = [];\n for (let i = 0; i < bytes.length; i += 16) {\n uuids.push(bytesToUuid(bytes.slice(i, i + 16)));\n }\n return uuids;\n};\n", "import {MyopMessageKey} from \"../common/MyopMessages\";\nimport {uuidv4} from \"../utils/utils\";\nimport {IMyopComponent} from \"../host\";\nimport {IRefConfig} from \"../common\";\n\nexport class MessageDirection {\n static down = 'down' as const\n static up = 'up' as const\n}\n\nexport type MessageDirectionOption = 'up' | 'down';\n\nexport abstract class BaseMyopMessage<T = any> {\n id = uuidv4()\n\n static create<T, U extends new (...args: ConstructorParameters<U>) => T = typeof this>(\n this: U,\n ...args: ConstructorParameters<U>\n ): InstanceType<typeof this> {\n // @ts-ignore\n return new this(...args);\n }\n\n constructor() {\n //console.log('meesage id created', this.id, document.location.href);\n }\n\n myop = true\n\n abstract messageType: MyopMessageKey | string;\n\n content?: T\n\n // TODO : cant be optional \n source?: string\n destination?: string\n\n route?: string[]\n\n ref?: Ref\n\n direction?: MessageDirectionOption\n\n cleanable: boolean = false\n\n isTypeof(msg: BaseMyopMessage): boolean {\n return msg.messageType === this.messageType\n }\n}\n\nexport abstract class MyopElementMessage<T = any> extends BaseMyopMessage<T> {\n constructor(public ref: Ref) {\n super()\n }\n}\n\nexport abstract class MyopBindReplayMessage<T = any> extends BaseMyopMessage<T> {\n constructor(public replayToHandler?: string) {\n super();\n }\n}\n\nexport abstract class MyopBindMessage<T = any, R extends MyopBindReplayMessage = any> extends BaseMyopMessage<T> {\n\n public abstract replyMessageKey: MyopMessageKey;\n\n public handlerUniqueId = uuidv4()\n\n constructor(public handler: (message: R) => void) {\n super()\n }\n}\n\nexport class Ref {\n public myop = true;\n\n public __nonProxied?: Ref;\n\n static create(selector: string, refConfig?: IRefConfig, component?: IMyopComponent) {\n let _refConfig = refConfig;\n if (!_refConfig) {\n _refConfig = {\n id: '',\n name: '',\n description: '',\n selectorType: 'id-attribute',\n selector: selector,\n behavior: {\n type: 'code'\n }\n } as IRefConfig\n }\n return new Ref(_refConfig, component);\n }\n\n constructor(public refConfig: IRefConfig, public component?: IMyopComponent) {\n this.__nonProxied = {\n ...this,\n component: null // in order to be serializable\n }\n }\n}\n", "import {MyopBindMessage, MyopBindReplayMessage} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\nimport {RootRef} from \"../common\";\nimport {makeSerializable} from \"../common/utils/serialization.ts\";\n\nconst ReplayMessageKey = 'ExecuteScriptReplyMessage'\n\nconst functionBodyRegex = /(?:function\\s*\\w*\\s*\\([^)]*\\)\\s*\\{([\\s\\S]*?)\\}|(\\([^)]*\\)\\s*=>\\s*\\{([\\s\\S]*?)\\}))\\s*$/;\nconst expressionBodyRegex = /\\(\\s*[^)]+\\s*\\)\\s*=>\\s*(.+)/;\n\nexport const stripFunction = (content: string) => {\n let match = content.match(functionBodyRegex);\n if (match) {\n return match[1] || match[3];\n } else {\n let match = content.match(expressionBodyRegex);\n if (match)\n return match[1].trim();\n }\n}\n\nexport type scriptInputs = {\n [key: string]: string | number | boolean\n} | {};\n\nexport type scriptVars<T> = {\n send: (data: T) => void;\n // completeStream: () => void;\n rootRef: RootRef;\n makeSerializable: typeof makeSerializable\n}\n\nexport type extendedScriptVars<T, I> = {\n [K in keyof I]: I[K];\n} & scriptVars<T>\n\nexport class ExecuteScriptMessage<T = any, I extends scriptInputs = any> extends MyopBindMessage<string, ExecuteScriptReplyMessage<T>> {\n\n replyMessageKey: MyopMessageKey = ReplayMessageKey;\n messageType = 'ExecuteScriptMessage';\n script: string = ''\n\n static replierKey = 'send';\n static completeStreamKey = 'completeStream';\n\n constructor(script: (vars: extendedScriptVars<T, I>) => T, handler: (message: ExecuteScriptReplyMessage<T>) => void = () => {\n }, public scriptInputs?: I) {\n super(handler);\n this.script = script.toString();\n\n //TODO: can be remove\n this.content = script.toString()\n this.content = stripFunction(this.content);\n }\n}\n\nexport class ExecuteScriptReplyMessage<T = any> extends MyopBindReplayMessage<T> {\n\n messageType = ReplayMessageKey;\n\n constructor(public replayToHandler: string, public content: T) {\n super(replayToHandler);\n }\n}\n", "import {\n ExecuteScriptMessage,\n ExecuteScriptReplyMessage,\n extendedScriptVars,\n scriptInputs, stripFunction\n} from \"./ExecuteScriptMessage.ts\";\n\nexport type customRefScriptInputs = {\n elementId: string,\n ref?: HTMLElement,\n _script?: string,\n __scriptInputs?: Object\n};\n\nexport class CustomRefMessage<T = any, I extends scriptInputs = customRefScriptInputs> extends ExecuteScriptMessage<T, I & customRefScriptInputs> {\n\n constructor(script: (vars: extendedScriptVars<T, I & customRefScriptInputs>) => T,\n public scriptInputs: I & customRefScriptInputs,\n handler: (message: ExecuteScriptReplyMessage<T>) => void = () => {\n }) {\n\n //mock vars\n // let rootRef, elementId, _script, __scriptInputs;\n super(({rootRef, elementId, _script, __scriptInputs}) => {\n const refs = (rootRef.shadowRoot || rootRef.container).querySelectorAll(`[${'myop-id'}='${elementId}']`);\n if (refs.length) {\n // const ref = refs[0];\n\n //TODO : think about exposing \"refs\" and not only \"ref\"\n //for cases where the Ref has multiplate implementations\n\n // @ts-ignore\n __scriptInputs.ref = refs[0];\n\n const dynamicFunction = new Function(`return (${_script})(...arguments)`);\n return dynamicFunction(__scriptInputs);\n\n // @ts-ignore\n //return Function('ref', 'rootRef', ...Object.keys(__scriptInputs), _script!)(ref, rootRef, ...Object.values(__scriptInputs))\n }\n return null as T;\n }, handler);\n\n this.scriptInputs = {\n ...scriptInputs,\n //_script: stripFunction(script.toString()),\n _script: script.toString()\n };\n }\n}\n", "import type * as CSS from \"csstype\";\nimport {IMyopComponent} from \"../host\";\nimport {uuidv4} from \"../utils/utils.ts\";\nimport {ExecuteScriptMessage} from \"../messages\";\n\n// ignoring documentation\n/** @ignore */\nexport interface CSSProperties extends CSS.Properties<string | number> {\n}\n\nexport type StylesheetDefinition = { [key: string]: CSSProperties };\n\nexport const applyStylesheet = (component: IMyopComponent, stylesheet: StylesheetDefinition, css?: string) => {\n const tagId = `myop-css-${uuidv4()}`;\n component.send(new ExecuteScriptMessage(({rootRef, _stylesheet, _tagId, _css}) => {\n const styleTag = document.createElement('style');\n styleTag.type = 'text/css';\n\n // Build the CSS string from the styles object\n let cssString = _css;\n\n for (const selector in _stylesheet) {\n cssString += `${selector} { `;\n const properties = _stylesheet[selector];\n for (const property in properties) {\n cssString += `${property}: ${properties[property]}; `;\n }\n cssString += '} ';\n }\n\n // Set the CSS string as the content of the <style> element\n styleTag.appendChild(document.createTextNode(cssString));\n styleTag.id = _tagId;\n // Append the <style> element\n (rootRef.shadowRoot || rootRef.container).appendChild(styleTag);\n\n }, () => {\n }, {\n _stylesheet: stylesheet,\n _css : css ? css : '',\n _tagId: tagId\n }));\n\n return () => {\n component.send(new ExecuteScriptMessage(({rootRef, _tagId}) => {\n const element = (rootRef.shadowRoot || document).getElementById(_tagId);\n if (element) {\n element.remove();\n }\n }, () => {\n }, {\n _tagId: tagId\n }))\n }\n}\n\nexport const applyStylesheetLink = (component: IMyopComponent, link: string) => {\n const tagId = `myop-css-${uuidv4()}`;\n component.send(new ExecuteScriptMessage(({rootRef, _tagId, _link}) => {\n const linkElement = document.createElement('link');\n linkElement.id = _tagId;\n linkElement.rel = 'stylesheet';\n linkElement.href = _link;\n document.head.appendChild(linkElement);\n\n // Append the <style> element\n (rootRef.shadowRoot || rootRef.container).appendChild(linkElement);\n }, () => {\n }, {\n _link : link,\n _tagId: tagId\n }));\n\n return () => {\n component.send(new ExecuteScriptMessage(({rootRef, _tagId}) => {\n const element = (rootRef.shadowRoot || document).getElementById(_tagId);\n if (element) {\n element.remove();\n }\n }, () => {\n }, {\n _tagId: tagId\n }))\n }\n}\n", "import {IIframeLoaderConfig, ISkinConfig} from \"../common\";\n\nexport type TokenMap = Record<string, string| number>\n\nconst replaceTokens = (input: string, tokenMap: TokenMap): string => {\n // Create a regex pattern from the keys of the tokenMap\n const pattern = new RegExp(Object.keys(tokenMap).join('|'), 'g');\n\n // Replace tokens in the input string using the regex\n return input.replace(pattern, (matched) => {\n // Return the replacement value from the tokenMap\n return (tokenMap[matched] || matched).toString();\n });\n}\n\nexport const createIframeSkinByTokenizer = (selectedSkin: ISkinConfig, tokenMap: TokenMap) => {\n const typedSkinConfig = (selectedSkin.loader as IIframeLoaderConfig)\n if (typedSkinConfig.type !== 'IframeLoader') {\n throw new Error(`iframeSkinUrlTokenizer received skin with loader type \"${typedSkinConfig.type}\", currently only \"IframeLoader\" is supported`)\n }\n\n selectedSkin.loader = {\n ...selectedSkin.loader\n }\n\n selectedSkin.loader.url = replaceTokens(selectedSkin.loader.url, tokenMap);\n\n return selectedSkin;\n}\n\nexport const changeSkinUrlByTokenizer = (tokenMap: TokenMap) => {\n return async (selectedSkin: ISkinConfig) => {\n return createIframeSkinByTokenizer(selectedSkin, tokenMap);\n }\n}", "import {CustomRefMessage} from \"../messages\";\nimport {IMyopComponent} from \"../host\";\n\n// const space = ' ';\n// export const getClasses = async (connectedRef: Ref): Promise<string[]> => (await exec(actAs<HTMLDivElement>(connectedRef).classList)).value.split(space);\n// export const addClass = async (connectedRef: Ref, className: string) => {\n// const classes = await getClasses(connectedRef);\n// classes.includes(className) || classes.push(className);\n// // @ts-ignore\n// connectedRef.classList = classes.join(space);\n// }\n// export const removeClass = async (connectedRef: Ref, className: string,) => {\n// let classes = await getClasses(connectedRef);\n// // @ts-ignore\n// connectedRef.classList = classes.filter(c => c !== className).join(space);\n// }\n//\n//\n\nexport const addClass = (component: IMyopComponent, className: string, myopId: string) => {\n component.send(new CustomRefMessage(({ref, _className}) => {\n ref?.classList.add(_className);\n }, {\n elementId: myopId,\n _className: className\n }));\n}\n\nexport const removeClass = (component: IMyopComponent, className: string, myopId: string) => {\n component.send(new CustomRefMessage(({ref, _className}) => {\n ref?.classList.remove(_className);\n }, {\n elementId: myopId,\n _className: className\n }));\n}", "import {\n IComponentConfig,\n IComponentDefinitionConfig,\n IComponentInstanceConfig, IHTMLLoaderConfig, IRefConfig,\n ISkinLoaderConfig,\n ISkinSelectorConfig,\n IDedicatedSkinConfig, ISkinConfig\n} from \"../common\";\nimport {uuidv4} from \"../utils/utils.ts\";\n\nexport class SkinConfig implements ISkinConfig {\n _runTimeInstanceId = 'runtime-instance-id-' + uuidv4();\n _runTimeId = 'runtime-id-' + uuidv4();\n _runTimeName = 'runtime-name-' + uuidv4();\n\n static create = () => {\n return new SkinConfig();\n }\n\n id = this._runTimeId;\n name = this._runTimeName;\n description = '';\n loader = null as unknown as ISkinLoaderConfig;\n\n withLoader = (loader: ISkinLoaderConfig) => {\n this.loader = loader;\n return this;\n }\n\n withHTMLLoader = (loader: Omit<IHTMLLoaderConfig, 'type'>) => {\n loader.type = 'HTMLLoader';\n this.loader = loader as IHTMLLoaderConfig;\n return this;\n }\n\n build = () => {\n return this;\n }\n}\n\nexport class ComponentConfig implements IComponentConfig {\n _runTimeInstanceId = 'runtime-instance-id-' + uuidv4();\n _runTimeId = 'runtime-id-' + uuidv4();\n _runTimeName = 'runtime-name-' + uuidv4();\n\n static create = () => {\n return new ComponentConfig();\n }\n\n instance = {\n id: this._runTimeInstanceId,\n componentId: this._runTimeId,\n componentName: this._runTimeName,\n skinSelector: null as unknown as ISkinSelectorConfig\n } as IComponentInstanceConfig;\n\n name = this._runTimeName\n type = {\n id: this._runTimeId,\n name: this._runTimeName,\n description: '',\n props: [],\n refs: [],\n skins: [],\n defaultSkin: 0\n } as IComponentDefinitionConfig\n\n withInstance = (instance: IComponentInstanceConfig) => {\n this.instance = instance;\n return this;\n }\n\n withType = (type: IComponentDefinitionConfig) => {\n this.type = type;\n return this;\n }\n\n withName = (name: string) => {\n this.name = name;\n return this;\n }\n\n withDefaultSkin = (defaultSkin: ISkinConfig) => {\n this.type.skins.push(defaultSkin);\n this.type.defaultSkin = this.type.skins.length - 1;\n this.instance.skinSelector = {\n type: 'Dedicated',\n skin: {\n id: defaultSkin.id\n }\n } as IDedicatedSkinConfig\n\n return this;\n }\n\n withRef = (ref: IRefConfig) => {\n this.type.refs.push(ref);\n return this;\n }\n\n withBasicRef = (refSelector: string) => {\n const newBasicRef = {\n id: '',\n name: refSelector,\n description: '',\n selectorType: 'id-attribute',\n selector: refSelector,\n behavior: {\n type: 'code'\n }\n } as IRefConfig\n\n this.type.refs.push(newBasicRef);\n return this;\n }\n\n build = () => {\n return JSON.parse(JSON.stringify(this))\n }\n}\n", "import {IUserFlow} from \"../common\";\n\n/**\n *\n * ## Overview\n *\n * The `CloudRepository` class serves as a centralized data access layer for retrieving user flows and components from the Myop.dev cloud service. It implements a singleton pattern and provides caching mechanisms to optimize API calls and improve performance.\n *\n * ## Class Structure\n *\n * ### Constructor\n *\n * ```typescript\n * constructor(private _baseUrl = 'https://cloud.myop.dev')\n * ```\n *\n * **Parameters:**\n * - `_baseUrl` (optional): The base URL for the Myop.dev cloud API. Defaults to `'https://cloud.myop.dev'`\n *\n * ### Static Properties\n *\n * #### Main\n * ```typescript\n * static Main = new CloudRepository();\n * ```\n *\n * A singleton instance of the `CloudRepository` class that can be used throughout the application without creating multiple instances.\n *\n * ### Private Properties\n *\n * #### userFlows\n * ```typescript\n * private userFlows: Record<string, Promise<IUserFlow>> = {};\n * ```\n *\n * A cache object that stores promises for user flows, indexed by flow ID. This prevents duplicate API calls for the same flow and ensures consistent data retrieval.\n *\n * #### _baseUrl\n * ```typescript\n * private _baseUrl: string\n * ```\n *\n * The base URL for the cloud API endpoints, set during construction.\n *\n * ## Methods\n *\n * ### fetchFlow(flowId: string)\n *\n * Retrieves a complete user flow from the cloud repository, including all resolved components.\n *\n * **Parameters:**\n * - `flowId`: The unique identifier for the user flow to retrieve\n *\n * **Returns:**\n * - `Promise<IUserFlow>`: A promise that resolves to the complete user flow object\n *\n * **Behavior:**\n * - Implements request caching to avoid duplicate API calls for the same flow ID\n * - Makes a GET request to `/flow?id={flowId}&resolve=components`\n * - Automatically resolves component references within the flow\n * - Stores the promise in the cache for future use\n *\n * **Example Usage:**\n * ```typescript\n * const flow = await CloudRepository.Main.fetchFlow('my-flow-id');\n * console.log(flow.components);\n * ```\n *\n * ### fetchComponent(componentId: string, flowId: string)\n *\n * Retrieves a specific component from within a user flow.\n *\n * **Parameters:**\n * - `componentId`: The unique identifier for the component to retrieve\n * - `flowId`: The unique identifier for the user flow containing the component\n *\n * **Returns:**\n * - `Promise<Component | undefined>`: A promise that resolves to the component object if found, or undefined if not found\n *\n * **Behavior:**\n * - First fetches the complete flow using `fetchFlow()`\n * - Searches through the flow's components array to find the matching component\n * - Uses the component's `type.id` property for matching\n *\n * **Example Usage:**\n * ```typescript\n * const component = await CloudRepository.Main.fetchComponent('button-component', 'my-flow-id');\n * if (component) {\n * console.log('Component found:', component);\n * } else {\n * console.log('Component not found in flow');\n * }\n * ```\n *\n * ## API Integration\n *\n * ### Endpoint Structure\n *\n * The class integrates with the following Myop.dev cloud API endpoint:\n *\n * ```\n * GET {baseUrl}/flow?id={flowId}&resolve=components\n * ```\n *\n * **Query Parameters:**\n * - `id`: The flow identifier\n * - `resolve=components`: Instructs the API to include resolved component data in the response\n *\n * ### Response Format\n *\n * The API is expected to return a JSON response with the following structure:\n *\n * ```json\n * {\n * \"item\": {\n * // IUserFlow object with resolved components\n * \"components\": [\n * {\n * \"type\": {\n * \"id\": \"component-id\"\n * }\n * // ... other component properties\n * }\n * ]\n * // ... other flow properties\n * }\n * }\n * ```\n *\n * ## Caching Strategy\n *\n * The `CloudRepository` implements a promise-based caching mechanism:\n *\n * 1. **Cache Key**: Flow ID is used as the cache key\n * 2. **Cache Value**: Promises are cached rather than resolved values to handle concurrent requests\n * 3. **Cache Duration**: Cache persists for the lifetime of the repository instance\n * 4. **Cache Invalidation**: No automatic cache invalidation is implemented\n *\n * ## Error Handling\n *\n * - Network errors and API failures are propagated through promise rejection\n * - No specific error handling or retry logic is implemented at the repository level\n * - Consumers should implement appropriate error handling when calling repository methods\n *\n * ## Usage Patterns\n *\n * ### Singleton Access\n * ```typescript\n * import { CloudRepository } from './path/to/CloudRepository';\n *\n * // Use the singleton instance\n * const flow = await CloudRepository.Main.fetchFlow('flow-id');\n * ```\n *\n * ### Custom Instance\n * ```typescript\n * // Create a custom instance with different base URL\n * const customRepo = new CloudRepository('https://custom-api.example.com');\n * const flow = await customRepo.fetchFlow('flow-id');\n * ```\n *\n * ### Component Retrieval\n * ```typescript\n * // Get a specific component from a flow\n * const component = await CloudRepository.Main.fetchComponent('component-id', 'flow-id');\n * ```\n *\n * ## Dependencies\n *\n * - **IUserFlow**: Interface imported from `../common` that defines the structure of user flow objects\n * - **Fetch API**: Uses the native `fetch` function for HTTP requests\n *\n * ## Performance Considerations\n *\n * - **Caching**: Prevents duplicate API calls for the same flow ID\n * - **Promise Caching**: Handles concurrent requests efficiently by caching promises\n * - **Component Resolution**: The `resolve=components` parameter ensures components are fully resolved in a single API call\n *\n * ## Future Enhancements\n *\n * The class structure suggests planned functionality that could be implemented:\n *\n * - **Component Caching**: The commented `components` property indicates potential individual component caching\n * - **Cache Invalidation**: Methods to clear or refresh cached data\n * - **Error Retry Logic**: Automatic retry mechanisms for failed requests\n * - **Batch Operations**: Methods to fetch multiple flows or components in a single request\n *\n */\nexport class CloudRepository {\n static Main = new CloudRepository();\n\n private userFlows: Record<string, Promise<IUserFlow>> = {};\n\n // private components: Record<string, Promise<IUserFlow>> = {};\n\n constructor(private _baseUrl = 'https://cloud.myop.dev') {\n }\n\n async fetchComponent(componentId: string, flowId?: string) {\n if (flowId) {\n const flow = await this.fetchFlow(flowId);\n return flow.components.find(c => c.type.id === componentId);\n }else{\n const flow = await this.fetchAutoFlow(componentId);\n return flow.components[0];\n }\n }\n\n async fetchAutoFlow(componentId: string) {\n if (!this.userFlows[componentId]) {\n // eslint-disable-next-line no-async-promise-executor\n this.userFlows[componentId] = new Promise(\n async (resolve, reject) => {\n try {\n const res = await fetch(\n `${this._baseUrl}/flow?id=${componentId}&auto=true`\n );\n const json = await res.json();\n resolve(json.item);\n } catch (e) {\n reject(e);\n }\n }\n );\n }\n\n return await this.userFlows[componentId];\n }\n\n\n async fetchFlow(flowId: string) {\n if (!this.userFlows[flowId]) {\n // eslint-disable-next-line no-async-promise-executor\n this.userFlows[flowId] = new Promise(\n async (resolve, reject) => {\n try {\n const res = await fetch(\n `${this._baseUrl}/flow?id=${flowId}&resolve=components`\n );\n const json = await res.json();\n resolve(json.item);\n } catch (e) {\n reject(e);\n }\n }\n );\n }\n\n return await this.userFlows[flowId];\n }\n}\n", "export const exec = async (getter: any) => {\n return await getter()\n}\n", "import {defineDynamicImport} from \"../dynamicImport/defineDynamicImport.ts\";\nimport * as MyopHelpers from \"./index.ts\";\n\nexport * from \"./index.ts\";\n\ndefineDynamicImport('MyopHelpers', MyopHelpers);\n"],
5
+ "mappings": "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",
6
+ "names": ["match", "scriptInputs", "scriptInputs"]
7
+ }
@@ -0,0 +1 @@
1
+ var _=Object.defineProperty,D=Object.defineProperties;var z=Object.getOwnPropertyDescriptors;var E=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var R=(s,e,r)=>e in s?_(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r,d=(s,e)=>{for(var r in e||(e={}))A.call(e,r)&&R(s,r,e[r]);if(E)for(var r of E(e))N.call(e,r)&&R(s,r,e[r]);return s},C=(s,e)=>D(s,z(e));var V=(s,e)=>{for(var r in e)_(s,r,{get:e[r],enumerable:!0})};var t=(s,e,r)=>R(s,typeof e!="symbol"?e+"":e,r);var M="__federation__",L="onLoad";var U=(s,e)=>{window[M]&&window[M][s]&&window[M][s][L]&&window[M][s][L]({[s]:e})};var v={};V(v,{CloudRepository:()=>k,ComponentConfig:()=>S,SkinConfig:()=>w,addClass:()=>Q,applyStylesheet:()=>O,applyStylesheetLink:()=>q,changeSkinUrlByTokenizer:()=>J,createIframeSkinByTokenizer:()=>F,exec:()=>X,removeClass:()=>W});var a=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,s=>(+s^crypto.getRandomValues(new Uint8Array(1))[0]&15>>+s/4).toString(16));var c=class{constructor(){t(this,"id",a());t(this,"myop",!0);t(this,"content");t(this,"source");t(this,"destination");t(this,"route");t(this,"ref");t(this,"direction");t(this,"cleanable",!1)}static create(...e){return new this(...e)}isTypeof(e){return e.messageType===this.messageType}};var m=class extends c{constructor(r){super();this.handler=r;t(this,"handlerUniqueId",a())}};var $="ExecuteScriptReplyMessage",H=/(?:function\s*\w*\s*\([^)]*\)\s*\{([\s\S]*?)\}|(\([^)]*\)\s*=>\s*\{([\s\S]*?)\}))\s*$/,P=/\(\s*[^)]+\s*\)\s*=>\s*(.+)/,j=s=>{let e=s.match(H);if(e)return e[1]||e[3];{let r=s.match(P);if(r)return r[1].trim()}},l=class extends m{constructor(r,o=()=>{},n){super(o);this.scriptInputs=n;t(this,"replyMessageKey",$);t(this,"messageType","ExecuteScriptMessage");t(this,"script","");this.script=r.toString(),this.content=r.toString(),this.content=j(this.content)}};t(l,"replierKey","send"),t(l,"completeStreamKey","completeStream");var f=class extends l{constructor(r,o,n=()=>{}){super(({rootRef:i,elementId:p,_script:I,__scriptInputs:y})=>{let u=(i.shadowRoot||i.container).querySelectorAll("[myop-id='".concat(p,"']"));return u.length?(y.ref=u[0],new Function("return (".concat(I,")(...arguments)"))(y)):null},n);this.scriptInputs=o;this.scriptInputs=C(d({},o),{_script:r.toString()})}};var O=(s,e,r)=>{let o="myop-css-".concat(a());return s.send(new l(({rootRef:n,_stylesheet:i,_tagId:p,_css:I})=>{let y=document.createElement("style");y.type="text/css";let u=I;for(let b in i){u+="".concat(b," { ");let K=i[b];for(let B in K)u+="".concat(B,": ").concat(K[B],"; ");u+="} "}y.appendChild(document.createTextNode(u)),y.id=p,(n.shadowRoot||n.container).appendChild(y)},()=>{},{_stylesheet:e,_css:r||"",_tagId:o})),()=>{s.send(new l(({rootRef:n,_tagId:i})=>{let p=(n.shadowRoot||document).getElementById(i);p&&p.remove()},()=>{},{_tagId:o}))}},q=(s,e)=>{let r="myop-css-".concat(a());return s.send(new l(({rootRef:o,_tagId:n,_link:i})=>{let p=document.createElement("link");p.id=n,p.rel="stylesheet",p.href=i,document.head.appendChild(p),(o.shadowRoot||o.container).appendChild(p)},()=>{},{_link:e,_tagId:r})),()=>{s.send(new l(({rootRef:o,_tagId:n})=>{let i=(o.shadowRoot||document).getElementById(n);i&&i.remove()},()=>{},{_tagId:r}))}};var G=(s,e)=>{let r=new RegExp(Object.keys(e).join("|"),"g");return s.replace(r,o=>(e[o]||o).toString())},F=(s,e)=>{let r=s.loader;if(r.type!=="IframeLoader")throw new Error('iframeSkinUrlTokenizer received skin with loader type "'.concat(r.type,'", currently only "IframeLoader" is supported'));return s.loader=d({},s.loader),s.loader.url=G(s.loader.url,e),s},J=s=>async e=>F(e,s);var Q=(s,e,r)=>{s.send(new f(({ref:o,_className:n})=>{o==null||o.classList.add(n)},{elementId:r,_className:e}))},W=(s,e,r)=>{s.send(new f(({ref:o,_className:n})=>{o==null||o.classList.remove(n)},{elementId:r,_className:e}))};var x=class x{constructor(){t(this,"_runTimeInstanceId","runtime-instance-id-"+a());t(this,"_runTimeId","runtime-id-"+a());t(this,"_runTimeName","runtime-name-"+a());t(this,"id",this._runTimeId);t(this,"name",this._runTimeName);t(this,"description","");t(this,"loader",null);t(this,"withLoader",e=>(this.loader=e,this));t(this,"withHTMLLoader",e=>(e.type="HTMLLoader",this.loader=e,this));t(this,"build",()=>this)}};t(x,"create",()=>new x);var w=x,h=class h{constructor(){t(this,"_runTimeInstanceId","runtime-instance-id-"+a());t(this,"_runTimeId","runtime-id-"+a());t(this,"_runTimeName","runtime-name-"+a());t(this,"instance",{id:this._runTimeInstanceId,componentId:this._runTimeId,componentName:this._runTimeName,skinSelector:null});t(this,"name",this._runTimeName);t(this,"type",{id:this._runTimeId,name:this._runTimeName,description:"",props:[],refs:[],skins:[],defaultSkin:0});t(this,"withInstance",e=>(this.instance=e,this));t(this,"withType",e=>(this.type=e,this));t(this,"withName",e=>(this.name=e,this));t(this,"withDefaultSkin",e=>(this.type.skins.push(e),this.type.defaultSkin=this.type.skins.length-1,this.instance.skinSelector={type:"Dedicated",skin:{id:e.id}},this));t(this,"withRef",e=>(this.type.refs.push(e),this));t(this,"withBasicRef",e=>{let r={id:"",name:e,description:"",selectorType:"id-attribute",selector:e,behavior:{type:"code"}};return this.type.refs.push(r),this});t(this,"build",()=>JSON.parse(JSON.stringify(this)))}};t(h,"create",()=>new h);var S=h;var T=class T{constructor(e="https://cloud.myop.dev"){this._baseUrl=e;t(this,"userFlows",{})}async fetchComponent(e,r){return r?(await this.fetchFlow(r)).components.find(n=>n.type.id===e):(await this.fetchAutoFlow(e)).components[0]}async fetchAutoFlow(e){return this.userFlows[e]||(this.userFlows[e]=new Promise(async(r,o)=>{try{let i=await(await fetch("".concat(this._baseUrl,"/flow?id=").concat(e,"&auto=true"))).json();r(i.item)}catch(n){o(n)}})),await this.userFlows[e]}async fetchFlow(e){return this.userFlows[e]||(this.userFlows[e]=new Promise(async(r,o)=>{try{let i=await(await fetch("".concat(this._baseUrl,"/flow?id=").concat(e,"&resolve=components"))).json();r(i.item)}catch(n){o(n)}})),await this.userFlows[e]}};t(T,"Main",new T);var k=T;var X=async s=>await s();U("MyopHelpers",v);export{k as CloudRepository,S as ComponentConfig,w as SkinConfig,Q as addClass,O as applyStylesheet,q as applyStylesheetLink,J as changeSkinUrlByTokenizer,F as createIframeSkinByTokenizer,X as exec,W as removeClass};
@@ -65,7 +65,7 @@ __export(messages_exports, {
65
65
  stripFunction: () => stripFunction
66
66
  });
67
67
 
68
- // src/utils/utils.ts
68
+ // src/utils/uuid.ts
69
69
  var uuidv4 = () => {
70
70
  return "10000000-1000-4000-8000-100000000000".replace(
71
71
  /[018]/g,
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/messages/index.ts", "../../src/utils/uuid.ts", "../../src/messages/BaseMessage.ts", "../../src/messages/BindClickMessage.ts", "../../src/messages/ChangeTextMessage.ts", "../../src/messages/ExecuteScriptMessage.ts", "../../src/messages/CustomRefMessage.ts", "../../src/messages/AddEventListenerMessage.ts", "../../src/messages/SetAttributeMessage.ts", "../../src/messages/GetElementValueMessage.ts", "../../src/messages/SetInnerHtml.ts", "../../src/messages/InitMessage.ts", "../../src/messages/CreateRefComponentMessage.ts", "../../src/messages/EnvelopedMessage.ts", "../../src/messages/DetectMyopRefsMessage.ts", "../../src/messages/GetAttributeMessage.ts", "../../src/messages/componentMessages/ExecuteComponentMethod.ts", "../../src/messages/componentMessages/SetMutationObserverMessage.ts", "../../src/messages/CleanupMessage.ts", "../../src/messages/DisposeMessage.ts", "../../src/messages/componentMessages/SetResizeObserverMessage.ts", "../../src/dynamicImport/defineDynamicImport.ts", "../../src/messages/MyopMessages.ts"],
4
+ "sourcesContent": ["export * from './BaseMessage';\n\n//user's messages\nexport * from './BindClickMessage';\nexport * from './ChangeTextMessage';\nexport * from './ExecuteScriptMessage';\nexport * from './CustomRefMessage';\nexport * from './AddEventListenerMessage';\nexport * from './SetAttributeMessage';\nexport * from './GetElementValueMessage';\nexport * from './SetInnerHtml';\n\n//system messages\nexport * from './InitMessage';\nexport * from './CreateRefComponentMessage';\nexport * from './EnvelopedMessage';\nexport * from './DetectMyopRefsMessage';\nexport * from './GetElementValueMessage';\nexport * from './GetAttributeMessage';\n\nexport * from './componentMessages/ExecuteComponentMethod';\nexport * from './componentMessages/SetMutationObserverMessage';\nexport * from './CleanupMessage';\nexport * from './DisposeMessage';\nexport * from './componentMessages/SetResizeObserverMessage';", "//TODO : reuse from one place.\n// needs to be used in myop-sdk, myop-dashbaord, myop-server, myop-cli ..\n\nexport const uuidv4 = () => {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c =>\n (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)\n );\n}\n\n// Convert UUID string to bytes\nexport const uuidToBytes = (uuid: string): Uint8Array => {\n return Uint8Array.from(\n uuid.replace(/-/g, '').match(/.{1,2}/g)!.map(byte => parseInt(byte, 16))\n );\n};\n\n// Convert bytes to UUID string\nexport const bytesToUuid = (bytes: Uint8Array): string => {\n const hex = [...bytes].map(b => b.toString(16).padStart(2, '0')).join('');\n return [\n hex.slice(0, 8),\n hex.slice(8, 12),\n hex.slice(12, 16),\n hex.slice(16, 20),\n hex.slice(20)\n ].join('-');\n};\n\n// Base64 URL-safe encode\nexport const base64UrlEncode = (bytes: Uint8Array): string => {\n const base64 = btoa(String.fromCharCode(...bytes));\n return base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n};\n\n// Base64 URL-safe decode\nexport const base64UrlDecode = (str: string): Uint8Array => {\n let base64 = str.replace(/-/g, '+').replace(/_/g, '/');\n while (base64.length % 4) base64 += '=';\n const binary = atob(base64);\n return Uint8Array.from(binary, char => char.charCodeAt(0));\n};\n\n// Compress an array of UUIDs into a short URL-safe string\nexport const compressUUIDs = (uuids: string[]): string => {\n const allBytes = uuids.flatMap(uuid => Array.from(uuidToBytes(uuid)));\n return base64UrlEncode(new Uint8Array(allBytes));\n};\n\n// Decompress from URL-safe string back to an array of UUIDs\nexport const decompressUUIDs = (encoded: string): string[] => {\n const bytes = base64UrlDecode(encoded);\n if (bytes.length % 16 !== 0) throw new Error('Invalid input length');\n\n const uuids: string[] = [];\n for (let i = 0; i < bytes.length; i += 16) {\n uuids.push(bytesToUuid(bytes.slice(i, i + 16)));\n }\n return uuids;\n};\n", "import {MyopMessageKey} from \"../common/MyopMessages\";\nimport {uuidv4} from \"../utils/utils\";\nimport {IMyopComponent} from \"../host\";\nimport {IRefConfig} from \"../common\";\n\nexport class MessageDirection {\n static down = 'down' as const\n static up = 'up' as const\n}\n\nexport type MessageDirectionOption = 'up' | 'down';\n\nexport abstract class BaseMyopMessage<T = any> {\n id = uuidv4()\n\n static create<T, U extends new (...args: ConstructorParameters<U>) => T = typeof this>(\n this: U,\n ...args: ConstructorParameters<U>\n ): InstanceType<typeof this> {\n // @ts-ignore\n return new this(...args);\n }\n\n constructor() {\n //console.log('meesage id created', this.id, document.location.href);\n }\n\n myop = true\n\n abstract messageType: MyopMessageKey | string;\n\n content?: T\n\n // TODO : cant be optional \n source?: string\n destination?: string\n\n route?: string[]\n\n ref?: Ref\n\n direction?: MessageDirectionOption\n\n cleanable: boolean = false\n\n isTypeof(msg: BaseMyopMessage): boolean {\n return msg.messageType === this.messageType\n }\n}\n\nexport abstract class MyopElementMessage<T = any> extends BaseMyopMessage<T> {\n constructor(public ref: Ref) {\n super()\n }\n}\n\nexport abstract class MyopBindReplayMessage<T = any> extends BaseMyopMessage<T> {\n constructor(public replayToHandler?: string) {\n super();\n }\n}\n\nexport abstract class MyopBindMessage<T = any, R extends MyopBindReplayMessage = any> extends BaseMyopMessage<T> {\n\n public abstract replyMessageKey: MyopMessageKey;\n\n public handlerUniqueId = uuidv4()\n\n constructor(public handler: (message: R) => void) {\n super()\n }\n}\n\nexport class Ref {\n public myop = true;\n\n public __nonProxied?: Ref;\n\n static create(selector: string, refConfig?: IRefConfig, component?: IMyopComponent) {\n let _refConfig = refConfig;\n if (!_refConfig) {\n _refConfig = {\n id: '',\n name: '',\n description: '',\n selectorType: 'id-attribute',\n selector: selector,\n behavior: {\n type: 'code'\n }\n } as IRefConfig\n }\n return new Ref(_refConfig, component);\n }\n\n constructor(public refConfig: IRefConfig, public component?: IMyopComponent) {\n this.__nonProxied = {\n ...this,\n component: null // in order to be serializable\n }\n }\n}\n", "import {MyopBindMessage, MyopBindReplayMessage, Ref} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\n\nconst ReplayMessageKey = 'ClickReplayMessage'\n\nexport class BindClickMessage extends MyopBindMessage<void, ClickReplayMessage> {\n replyMessageKey: MyopMessageKey = ReplayMessageKey\n messageType = 'BindClickMessage';\n cleanable = true;\n\n constructor(public ref: Ref, handler: (message: ClickReplayMessage) => void) {\n super(handler);\n }\n}\n\nexport class ClickReplayMessage extends MyopBindReplayMessage {\n messageType = ReplayMessageKey\n}\n\n", "import {BaseMyopMessage, Ref} from \"./BaseMessage\";\n\nexport class ChangeTextMessage extends BaseMyopMessage<string> {\n\n messageType = 'ChangeTextMessage';\n\n constructor(public ref: Ref, text: string) {\n super();\n this.content = text\n }\n}", "import {MyopBindMessage, MyopBindReplayMessage} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\nimport {RootRef} from \"../common\";\nimport {makeSerializable} from \"../common/utils/serialization.ts\";\n\nconst ReplayMessageKey = 'ExecuteScriptReplyMessage'\n\nconst functionBodyRegex = /(?:function\\s*\\w*\\s*\\([^)]*\\)\\s*\\{([\\s\\S]*?)\\}|(\\([^)]*\\)\\s*=>\\s*\\{([\\s\\S]*?)\\}))\\s*$/;\nconst expressionBodyRegex = /\\(\\s*[^)]+\\s*\\)\\s*=>\\s*(.+)/;\n\nexport const stripFunction = (content: string) => {\n let match = content.match(functionBodyRegex);\n if (match) {\n return match[1] || match[3];\n } else {\n let match = content.match(expressionBodyRegex);\n if (match)\n return match[1].trim();\n }\n}\n\nexport type scriptInputs = {\n [key: string]: string | number | boolean\n} | {};\n\nexport type scriptVars<T> = {\n send: (data: T) => void;\n // completeStream: () => void;\n rootRef: RootRef;\n makeSerializable: typeof makeSerializable\n}\n\nexport type extendedScriptVars<T, I> = {\n [K in keyof I]: I[K];\n} & scriptVars<T>\n\nexport class ExecuteScriptMessage<T = any, I extends scriptInputs = any> extends MyopBindMessage<string, ExecuteScriptReplyMessage<T>> {\n\n replyMessageKey: MyopMessageKey = ReplayMessageKey;\n messageType = 'ExecuteScriptMessage';\n script: string = ''\n\n static replierKey = 'send';\n static completeStreamKey = 'completeStream';\n\n constructor(script: (vars: extendedScriptVars<T, I>) => T, handler: (message: ExecuteScriptReplyMessage<T>) => void = () => {\n }, public scriptInputs?: I) {\n super(handler);\n this.script = script.toString();\n\n //TODO: can be remove\n this.content = script.toString()\n this.content = stripFunction(this.content);\n }\n}\n\nexport class ExecuteScriptReplyMessage<T = any> extends MyopBindReplayMessage<T> {\n\n messageType = ReplayMessageKey;\n\n constructor(public replayToHandler: string, public content: T) {\n super(replayToHandler);\n }\n}\n", "import {\n ExecuteScriptMessage,\n ExecuteScriptReplyMessage,\n extendedScriptVars,\n scriptInputs, stripFunction\n} from \"./ExecuteScriptMessage.ts\";\n\nexport type customRefScriptInputs = {\n elementId: string,\n ref?: HTMLElement,\n _script?: string,\n __scriptInputs?: Object\n};\n\nexport class CustomRefMessage<T = any, I extends scriptInputs = customRefScriptInputs> extends ExecuteScriptMessage<T, I & customRefScriptInputs> {\n\n constructor(script: (vars: extendedScriptVars<T, I & customRefScriptInputs>) => T,\n public scriptInputs: I & customRefScriptInputs,\n handler: (message: ExecuteScriptReplyMessage<T>) => void = () => {\n }) {\n\n //mock vars\n // let rootRef, elementId, _script, __scriptInputs;\n super(({rootRef, elementId, _script, __scriptInputs}) => {\n const refs = (rootRef.shadowRoot || rootRef.container).querySelectorAll(`[${'myop-id'}='${elementId}']`);\n if (refs.length) {\n // const ref = refs[0];\n\n //TODO : think about exposing \"refs\" and not only \"ref\"\n //for cases where the Ref has multiplate implementations\n\n // @ts-ignore\n __scriptInputs.ref = refs[0];\n\n const dynamicFunction = new Function(`return (${_script})(...arguments)`);\n return dynamicFunction(__scriptInputs);\n\n // @ts-ignore\n //return Function('ref', 'rootRef', ...Object.keys(__scriptInputs), _script!)(ref, rootRef, ...Object.values(__scriptInputs))\n }\n return null as T;\n }, handler);\n\n this.scriptInputs = {\n ...scriptInputs,\n //_script: stripFunction(script.toString()),\n _script: script.toString()\n };\n }\n}\n", "import {MyopBindMessage, MyopBindReplayMessage, Ref} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\nimport {Serializable, SerializableSkeleton} from \"../common/utils/serialization.ts\";\n\nconst ReplayMessageKey = 'EventListenerCallbackMessage'\n\nexport class AddEventListenerMessage<T extends keyof HTMLElementEventMap = keyof HTMLElementEventMap> extends MyopBindMessage {\n\n replyMessageKey: MyopMessageKey = ReplayMessageKey;\n messageType = 'AddEventListenerMessage';\n cleanable = true;\n serializableSkeleton: SerializableSkeleton<HTMLElementEventMap[T]> = false // {} // empty\n\n constructor(public ref: Ref, public type: T, public handler: (message: EventListenerCallbackMessage) => void) {\n super(handler)\n }\n\n withSerializableSkeleton(serializableSkeleton: SerializableSkeleton<HTMLElementEventMap[T]>) {\n this.serializableSkeleton = serializableSkeleton;\n return this;\n }\n}\n\nexport class EventListenerCallbackMessage extends MyopBindReplayMessage {\n messageType = ReplayMessageKey;\n\n constructor(public replayToHandler: string, public e: Serializable<Event>) {\n super(replayToHandler);\n this.content = {\n e\n }\n }\n}\n", "import {BaseMyopMessage, Ref,} from \"./BaseMessage\";\n\n\nexport class SetAttributeMessage extends BaseMyopMessage {\n\n messageType = 'SetAttributeMessage';\n\n constructor(public ref: Ref, public name: string, public value: string) {\n super()\n }\n}\n", "import {MyopBindMessage, MyopBindReplayMessage, Ref} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\nimport {Serializable} from \"../common/utils/serialization.ts\";\n\nconst ReplayMessageKey = 'ElementValueReplayMessage'\n\nexport class GetElementValueMessage extends MyopBindMessage<void, ElementValueReplayMessage> {\n replyMessageKey: MyopMessageKey = ReplayMessageKey\n messageType = 'GetElementValueMessage';\n\n constructor(public ref: Ref, handler: (message: ElementValueReplayMessage) => void) {\n super(handler);\n }\n}\n\nexport type FormDataEntry = {\n id?: string,\n name?: string,\n value?: InputElementValue,\n required?: boolean,\n validity?: Serializable<ValidityState>,\n myopId?: string\n}\n\nexport type InputElementFormValue = {\n formData?: { [key: string]: FormDataEntry }\n unmappedData?: FormDataEntry[]\n};\n\nexport type InputElementValue = string | InputElementFormValue | null | undefined\n\nexport class ElementValueReplayMessage extends MyopBindReplayMessage {\n messageType = ReplayMessageKey\n\n constructor(public content: InputElementValue) {\n super();\n }\n}\n\n", "import {BaseMyopMessage, Ref} from \"./BaseMessage.ts\";\n\nexport class SetInnerHtml extends BaseMyopMessage<string> {\n\n messageType = 'SetInnerHtml';\n\n constructor(public ref: Ref, innerHtml: string) {\n super();\n this.content = innerHtml\n }\n}", "import { BaseMyopMessage } from \"./BaseMessage\";\n\n// sent by host to components, contains thier id \nexport class InitMessage extends BaseMyopMessage<{ id: string }> {\n messageType = 'InitMessage';\n\n constructor(id: string) {\n super()\n this.content = { id }\n }\n\n isTypeof(msg: BaseMyopMessage): boolean {\n return msg.messageType === this.messageType\n }\n}\n\n// component notify host the it was initated \nexport class InitResponse extends InitMessage {\n messageType = 'InitResponse';\n}\n\n// component ask to host to get initated \nexport class InitRequest extends BaseMyopMessage {\n messageType = 'InitRequest';\n}\n", "import {MyopBindMessage, MyopBindReplayMessage} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\nimport {IComponentConfig, IRefConfig} from \"../common\";\nimport {loaderOptions} from \"../host/hostSDK.ts\";\n\nconst ReplayMessageKey = 'RefComponentCreatedMessage'\n\nexport class CreateRefComponentMessage extends MyopBindMessage<void, RefComponentCreatedMessage> {\n replyMessageKey: MyopMessageKey = ReplayMessageKey\n messageType = 'CreateRefComponentMessage';\n\n constructor(public refConfig: IRefConfig,\n public nestedComponentConfig: IComponentConfig,\n public options: loaderOptions,\n handler: (message: RefComponentCreatedMessage) => void,\n ) {\n super(handler);\n\n }\n}\n\nexport type NestedRef = {\n refName: string,\n componentDefinitionId: string\n}\n\nexport class RefComponentCreatedMessage extends MyopBindReplayMessage {\n messageType = ReplayMessageKey\n\n constructor(public replayToHandler: string, public nestedRefs: NestedRef[], public failed?: boolean) {\n super(replayToHandler);\n }\n}\n", "import {BaseMyopMessage} from \"./BaseMessage\";\n\nexport class EnvelopedMessage extends BaseMyopMessage {\n messageType = 'EnvelopedMessage';\n\n constructor(public destination: string, public message: BaseMyopMessage) {\n super();\n\n const innerEnvelopedMessage = (message as EnvelopedMessage);\n this.route = [destination, ...innerEnvelopedMessage.route ? innerEnvelopedMessage.route : []];\n }\n}\n", "import {BaseMyopMessage, MyopBindMessage, MyopBindReplayMessage} from \"./BaseMessage\";\nimport {IElementRef} from \"../common\";\n\nconst ReplayMessageKey = 'DetectedMyopRefsMessage'\n\nexport class DetectMyopRefsMessage extends MyopBindMessage<any, DetectedMyopRefsMessage> {\n messageType = 'DetectMyopRefsMessage'\n replyMessageKey = ReplayMessageKey;\n}\n\nexport class DetectedMyopRefsMessage extends MyopBindReplayMessage<IElementRef[]> {\n\n messageType = ReplayMessageKey;\n\n constructor(public replayToHandler: string, myopElementRefs: IElementRef[]) {\n super(replayToHandler)\n this.content = myopElementRefs;\n }\n\n isTypeof(msg: BaseMyopMessage<any>): boolean {\n return msg.messageType === this.messageType\n }\n}\n", "import {MyopBindMessage, MyopBindReplayMessage, Ref} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\n\nconst ReplayMessageKey = 'GetAttributeReplayMessage'\n\nexport class GetAttributeMessage extends MyopBindMessage<void, GetAttributeReplayMessage> {\n replyMessageKey: MyopMessageKey = ReplayMessageKey\n messageType = 'GetAttributeMessage';\n\n constructor(public ref: Ref, public name: string, handler: (message: GetAttributeReplayMessage) => void) {\n super(handler);\n }\n}\n\nexport class GetAttributeReplayMessage extends MyopBindReplayMessage {\n messageType = ReplayMessageKey\n\n constructor(public content: string | null) {\n super();\n }\n}\n\n", "import {BaseMyopMessage} from \"../BaseMessage\";\nimport {IMyopComponent} from \"../../host\";\n\ntype MethodNames<T> = {\n // [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;\n [K in keyof T]: T[K] extends () => void ? K : never;\n}[keyof T];\n\n// Define a type that allows only strings corresponding to the method names of T\ntype MethodString<T> = MethodNames<T> extends infer M ? M extends string ? M : never : never;\n\n\nexport class ExecuteComponentMethod extends BaseMyopMessage {\n messageType = 'ExecuteComponentMethod';\n\n constructor(public method: MethodString<IMyopComponent>) {\n super();\n }\n}\n", "import {BaseMyopMessage} from \"../BaseMessage\";\n\nexport class SetMutationObserverMessage extends BaseMyopMessage {\n messageType = 'SetMutationObserverMessage';\n}\n\nexport class MutationObserverMessage extends BaseMyopMessage {\n messageType = 'MutationObserverMessage';\n}", "import {MyopBindMessage, MyopBindReplayMessage} from \"./BaseMessage\";\nimport {MyopMessageKey} from \"../common/MyopMessages\";\n\nconst ReplayMessageKey = 'CleanupReplayMessage'\n\nexport class CleanupMessage extends MyopBindMessage<void, CleanupReplayMessage> {\n replyMessageKey: MyopMessageKey = ReplayMessageKey\n messageType = 'CleanupMessage';\n\n constructor(public cleanupForMessageId: string, handler: (message: CleanupReplayMessage) => void) {\n super(handler);\n }\n}\n\nexport class CleanupReplayMessage extends MyopBindReplayMessage {\n messageType = ReplayMessageKey\n\n constructor(public customCleanup: boolean) {\n super();\n }\n}\n", "import {BaseMyopMessage} from \"./BaseMessage\";\n\nexport class DisposeMessage extends BaseMyopMessage {\n messageType = 'DisposeMessage';\n}\n", "import {BaseMyopMessage} from \"../BaseMessage\";\n\nexport class SetResizeObserverMessage extends BaseMyopMessage {\n cleanable = true;\n messageType = 'SetResizeObserverMessage';\n}\n\nexport class ResizeObserverMessage extends BaseMyopMessage {\n messageType = 'ResizeObserverMessage';\n}", "export const __federation__ = \"__federation__\"\nexport const onLoadKey = \"onLoad\"\nexport const moduleInstanceKey = \"moduleInstance\"\n\nexport const defineDynamicImport = (globalName: string, module: any) => {\n // @ts-ignore\n if (window[__federation__] && window[__federation__][globalName] && window[__federation__][globalName][onLoadKey]) {\n // @ts-ignore\n window[__federation__][globalName][onLoadKey]({[globalName]: module})\n } else {\n //console.log('__federation__ loader not defined for module', module);\n }\n}", "import * as all from './index'\nimport {defineDynamicImport} from \"../dynamicImport/defineDynamicImport\";\n\nconst MyopMessages = {\n ...all\n}\n\ndefineDynamicImport('MyopMessages', MyopMessages);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,SAAS,MAAM;AACxB,SAAO,uCAAuC;AAAA,IAAQ;AAAA,IAAU,QAC3D,CAAC,IAAI,OAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE;AAAA,EAClF;AACJ;;;ACFO,IAAM,mBAAN,MAAuB;AAG9B;AAFI,cADS,kBACF,QAAO;AACd,cAFS,kBAEF,MAAK;AAKT,IAAe,kBAAf,MAAwC;AAAA,EAW3C,cAAc;AAVd,8BAAK,OAAO;AAcZ,gCAAO;AAIP;AAGA;AAAA;AACA;AAEA;AAEA;AAEA;AAEA,qCAAqB;AAAA,EAlBrB;AAAA,EAVA,OAAO,UAEA,MACsB;AAEzB,WAAO,IAAI,KAAK,GAAG,IAAI;AAAA,EAC3B;AAAA,EAwBA,SAAS,KAA+B;AACpC,WAAO,IAAI,gBAAgB,KAAK;AAAA,EACpC;AACJ;AAEO,IAAe,qBAAf,cAAmD,gBAAmB;AAAA,EACzE,YAAmB,KAAU;AACzB,UAAM;AADS;AAAA,EAEnB;AACJ;AAEO,IAAe,wBAAf,cAAsD,gBAAmB;AAAA,EAC5E,YAAmB,iBAA0B;AACzC,UAAM;AADS;AAAA,EAEnB;AACJ;AAEO,IAAe,kBAAf,cAAuF,gBAAmB;AAAA,EAM7G,YAAmB,SAA+B;AAC9C,UAAM;AADS;AAFnB,wBAAO,mBAAkB,OAAO;AAAA,EAIhC;AACJ;AAEO,IAAM,MAAN,MAAM,KAAI;AAAA,EAsBb,YAAmB,WAA8B,WAA4B;AAA1D;AAA8B;AArBjD,wBAAO,QAAO;AAEd,wBAAO;AAoBH,SAAK,eAAe,iCACb,OADa;AAAA,MAEhB,WAAW;AAAA;AAAA,IACf;AAAA,EACJ;AAAA,EAtBA,OAAO,OAAO,UAAkB,WAAwB,WAA4B;AAChF,QAAI,aAAa;AACjB,QAAI,CAAC,YAAY;AACb,mBAAa;AAAA,QACT,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,aAAa;AAAA,QACb,cAAc;AAAA,QACd;AAAA,QACA,UAAU;AAAA,UACN,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,IAAI,KAAI,YAAY,SAAS;AAAA,EACxC;AAQJ;;;AClGA,IAAM,mBAAmB;AAElB,IAAM,mBAAN,cAA+B,gBAA0C;AAAA,EAK5E,YAAmB,KAAU,SAAgD;AACzE,UAAM,OAAO;AADE;AAJnB,2CAAkC;AAClC,uCAAc;AACd,qCAAY;AAAA,EAIZ;AACJ;AAEO,IAAM,qBAAN,cAAiC,sBAAsB;AAAA,EAAvD;AAAA;AACH,uCAAc;AAAA;AAClB;;;ACfO,IAAM,oBAAN,cAAgC,gBAAwB;AAAA,EAI3D,YAAmB,KAAU,MAAc;AACvC,UAAM;AADS;AAFnB,uCAAc;AAIV,SAAK,UAAU;AAAA,EACnB;AACJ;;;ACLA,IAAMA,oBAAmB;AAEzB,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;AAErB,IAAM,gBAAgB,CAAC,YAAoB;AAC9C,MAAI,QAAQ,QAAQ,MAAM,iBAAiB;AAC3C,MAAI,OAAO;AACP,WAAO,MAAM,CAAC,KAAK,MAAM,CAAC;AAAA,EAC9B,OAAO;AACH,QAAIC,SAAQ,QAAQ,MAAM,mBAAmB;AAC7C,QAAIA;AACA,aAAOA,OAAM,CAAC,EAAE,KAAK;AAAA,EAC7B;AACJ;AAiBO,IAAM,uBAAN,cAA0E,gBAAsD;AAAA,EASnI,YAAY,QAA+C,UAA2D,MAAM;AAAA,EAC5H,GAAUC,eAAkB;AACxB,UAAM,OAAO;AADP,wBAAAA;AARV,2CAAkCF;AAClC,uCAAc;AACd,kCAAiB;AAQb,SAAK,SAAS,OAAO,SAAS;AAG9B,SAAK,UAAU,OAAO,SAAS;AAC/B,SAAK,UAAU,cAAc,KAAK,OAAO;AAAA,EAC7C;AACJ;AAZI,cANS,sBAMF,cAAa;AACpB,cAPS,sBAOF,qBAAoB;AAaxB,IAAM,4BAAN,cAAiD,sBAAyB;AAAA,EAI7E,YAAmB,iBAAgC,SAAY;AAC3D,UAAM,eAAe;AADN;AAAgC;AAFnD,uCAAcA;AAAA,EAId;AACJ;;;ACjDO,IAAM,mBAAN,cAAwF,qBAAmD;AAAA,EAE9I,YAAY,QACOG,eACP,UAA2D,MAAM;AAAA,EACjE,GAAG;AAIX,UAAM,CAAC,EAAC,SAAS,WAAW,SAAS,eAAc,MAAM;AACrD,YAAM,QAAQ,QAAQ,cAAc,QAAQ,WAAW,iBAAiB,IAAI,kBAAS,MAAK,kBAAS,KAAI;AACvG,UAAI,KAAK,QAAQ;AAOb,uBAAe,MAAM,KAAK,CAAC;AAE3B,cAAM,kBAAkB,IAAI,SAAS,WAAW,gBAAO,kBAAiB;AACxE,eAAO,gBAAgB,cAAc;AAAA,MAIzC;AACA,aAAO;AAAA,IACX,GAAG,OAAO;AAxBK,wBAAAA;AA0Bf,SAAK,eAAe,iCACbA,gBADa;AAAA;AAAA,MAGhB,SAAS,OAAO,SAAS;AAAA,IAC7B;AAAA,EACJ;AACJ;;;AC7CA,IAAMC,oBAAmB;AAElB,IAAM,0BAAN,cAAuG,gBAAgB;AAAA;AAAA,EAO1H,YAAmB,KAAiB,MAAgB,SAA0D;AAC1G,UAAM,OAAO;AADE;AAAiB;AAAgB;AALpD,2CAAkCA;AAClC,uCAAc;AACd,qCAAY;AACZ,gDAAqE;AAAA,EAIrE;AAAA,EAEA,yBAAyB,sBAAoE;AACzF,SAAK,uBAAuB;AAC5B,WAAO;AAAA,EACX;AACJ;AAEO,IAAM,+BAAN,cAA2C,sBAAsB;AAAA,EAGpE,YAAmB,iBAAgC,GAAwB;AACvE,UAAM,eAAe;AADN;AAAgC;AAFnD,uCAAcA;AAIV,SAAK,UAAU;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACJ;;;AC7BO,IAAM,sBAAN,cAAkC,gBAAgB;AAAA,EAIrD,YAAmB,KAAiB,MAAqB,OAAe;AACpE,UAAM;AADS;AAAiB;AAAqB;AAFzD,uCAAc;AAAA,EAId;AACJ;;;ACNA,IAAMC,oBAAmB;AAElB,IAAM,yBAAN,cAAqC,gBAAiD;AAAA,EAIzF,YAAmB,KAAU,SAAuD;AAChF,UAAM,OAAO;AADE;AAHnB,2CAAkCA;AAClC,uCAAc;AAAA,EAId;AACJ;AAkBO,IAAM,4BAAN,cAAwC,sBAAsB;AAAA,EAGjE,YAAmB,SAA4B;AAC3C,UAAM;AADS;AAFnB,uCAAcA;AAAA,EAId;AACJ;;;ACnCO,IAAM,eAAN,cAA2B,gBAAwB;AAAA,EAItD,YAAmB,KAAU,WAAmB;AAC5C,UAAM;AADS;AAFnB,uCAAc;AAIV,SAAK,UAAU;AAAA,EACnB;AACJ;;;ACPO,IAAM,cAAN,cAA0B,gBAAgC;AAAA,EAG7D,YAAY,IAAY;AACpB,UAAM;AAHV,uCAAc;AAIV,SAAK,UAAU,EAAE,GAAG;AAAA,EACxB;AAAA,EAEA,SAAS,KAA+B;AACpC,WAAO,IAAI,gBAAgB,KAAK;AAAA,EACpC;AACJ;AAGO,IAAM,eAAN,cAA2B,YAAY;AAAA,EAAvC;AAAA;AACH,uCAAc;AAAA;AAClB;AAGO,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAA1C;AAAA;AACH,uCAAc;AAAA;AAClB;;;ACnBA,IAAMC,oBAAmB;AAElB,IAAM,4BAAN,cAAwC,gBAAkD;AAAA,EAI7F,YAAmB,WACA,uBACA,SACP,SACV;AACE,UAAM,OAAO;AALE;AACA;AACA;AALnB,2CAAkCA;AAClC,uCAAc;AAAA,EASd;AACJ;AAOO,IAAM,6BAAN,cAAyC,sBAAsB;AAAA,EAGlE,YAAmB,iBAAgC,YAAgC,QAAkB;AACjG,UAAM,eAAe;AADN;AAAgC;AAAgC;AAFnF,uCAAcA;AAAA,EAId;AACJ;;;AC9BO,IAAM,mBAAN,cAA+B,gBAAgB;AAAA,EAGlD,YAAmB,aAA4B,SAA0B;AACrE,UAAM;AADS;AAA4B;AAF/C,uCAAc;AAKV,UAAM,wBAAyB;AAC/B,SAAK,QAAQ,CAAC,aAAa,GAAG,sBAAsB,QAAQ,sBAAsB,QAAQ,CAAC,CAAC;AAAA,EAChG;AACJ;;;ACRA,IAAMC,oBAAmB;AAElB,IAAM,wBAAN,cAAoC,gBAA8C;AAAA,EAAlF;AAAA;AACH,uCAAc;AACd,2CAAkBA;AAAA;AACtB;AAEO,IAAM,0BAAN,cAAsC,sBAAqC;AAAA,EAI9E,YAAmB,iBAAyB,iBAAgC;AACxE,UAAM,eAAe;AADN;AAFnB,uCAAcA;AAIV,SAAK,UAAU;AAAA,EACnB;AAAA,EAEA,SAAS,KAAoC;AACzC,WAAO,IAAI,gBAAgB,KAAK;AAAA,EACpC;AACJ;;;ACnBA,IAAMC,oBAAmB;AAElB,IAAM,sBAAN,cAAkC,gBAAiD;AAAA,EAItF,YAAmB,KAAiB,MAAc,SAAuD;AACrG,UAAM,OAAO;AADE;AAAiB;AAHpC,2CAAkCA;AAClC,uCAAc;AAAA,EAId;AACJ;AAEO,IAAM,4BAAN,cAAwC,sBAAsB;AAAA,EAGjE,YAAmB,SAAwB;AACvC,UAAM;AADS;AAFnB,uCAAcA;AAAA,EAId;AACJ;;;ACRO,IAAM,yBAAN,cAAqC,gBAAgB;AAAA,EAGxD,YAAmB,QAAsC;AACrD,UAAM;AADS;AAFnB,uCAAc;AAAA,EAId;AACJ;;;AChBO,IAAM,6BAAN,cAAyC,gBAAgB;AAAA,EAAzD;AAAA;AACH,uCAAc;AAAA;AAClB;AAEO,IAAM,0BAAN,cAAsC,gBAAgB;AAAA,EAAtD;AAAA;AACH,uCAAc;AAAA;AAClB;;;ACLA,IAAMC,oBAAmB;AAElB,IAAM,iBAAN,cAA6B,gBAA4C;AAAA,EAI5E,YAAmB,qBAA6B,SAAkD;AAC9F,UAAM,OAAO;AADE;AAHnB,2CAAkCA;AAClC,uCAAc;AAAA,EAId;AACJ;AAEO,IAAM,uBAAN,cAAmC,sBAAsB;AAAA,EAG5D,YAAmB,eAAwB;AACvC,UAAM;AADS;AAFnB,uCAAcA;AAAA,EAId;AACJ;;;AClBO,IAAM,iBAAN,cAA6B,gBAAgB;AAAA,EAA7C;AAAA;AACH,uCAAc;AAAA;AAClB;;;ACFO,IAAM,2BAAN,cAAuC,gBAAgB;AAAA,EAAvD;AAAA;AACH,qCAAY;AACZ,uCAAc;AAAA;AAClB;AAEO,IAAM,wBAAN,cAAoC,gBAAgB;AAAA,EAApD;AAAA;AACH,uCAAc;AAAA;AAClB;;;ACTO,IAAM,iBAAiB;AACvB,IAAM,YAAY;AAGlB,IAAM,sBAAsB,CAAC,YAAoB,WAAgB;AAEpE,MAAI,OAAO,cAAc,KAAK,OAAO,cAAc,EAAE,UAAU,KAAK,OAAO,cAAc,EAAE,UAAU,EAAE,SAAS,GAAG;AAE/G,WAAO,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,EAAC,CAAC,UAAU,GAAG,OAAM,CAAC;AAAA,EACxE,OAAO;AAAA,EAEP;AACJ;;;ACTA,IAAM,eAAe,mBACd;AAGP,oBAAoB,gBAAgB,YAAY;",
6
+ "names": ["ReplayMessageKey", "match", "scriptInputs", "scriptInputs", "ReplayMessageKey", "ReplayMessageKey", "ReplayMessageKey", "ReplayMessageKey", "ReplayMessageKey", "ReplayMessageKey"]
7
+ }
@@ -0,0 +1 @@
1
+ var Y=Object.defineProperty,me=Object.defineProperties;var ge=Object.getOwnPropertyDescriptors;var X=Object.getOwnPropertySymbols;var ue=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable;var d=(t,s,r)=>s in t?Y(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r,l=(t,s)=>{for(var r in s||(s={}))ue.call(s,r)&&d(t,r,s[r]);if(X)for(var r of X(s))fe.call(s,r)&&d(t,r,s[r]);return t},g=(t,s)=>me(t,ge(s));var de=(t,s)=>{for(var r in s)Y(t,r,{get:s[r],enumerable:!0})};var e=(t,s,r)=>d(t,typeof s!="symbol"?s+"":s,r);var J={};de(J,{AddEventListenerMessage:()=>K,BaseMyopMessage:()=>n,BindClickMessage:()=>b,ChangeTextMessage:()=>I,CleanupMessage:()=>$,CleanupReplayMessage:()=>j,ClickReplayMessage:()=>R,CreateRefComponentMessage:()=>_,CustomRefMessage:()=>S,DetectMyopRefsMessage:()=>A,DetectedMyopRefsMessage:()=>D,DisposeMessage:()=>q,ElementValueReplayMessage:()=>E,EnvelopedMessage:()=>z,EventListenerCallbackMessage:()=>v,ExecuteComponentMethod:()=>H,ExecuteScriptMessage:()=>c,ExecuteScriptReplyMessage:()=>h,GetAttributeMessage:()=>F,GetAttributeReplayMessage:()=>L,GetElementValueMessage:()=>B,InitMessage:()=>u,InitRequest:()=>k,InitResponse:()=>U,MessageDirection:()=>y,MutationObserverMessage:()=>P,MyopBindMessage:()=>a,MyopBindReplayMessage:()=>p,MyopElementMessage:()=>x,Ref:()=>T,RefComponentCreatedMessage:()=>V,ResizeObserverMessage:()=>N,SetAttributeMessage:()=>C,SetInnerHtml:()=>w,SetMutationObserverMessage:()=>O,SetResizeObserverMessage:()=>G,stripFunction:()=>se});var M=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,t=>(+t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>+t/4).toString(16));var y=class{};e(y,"down","down"),e(y,"up","up");var n=class{constructor(){e(this,"id",M());e(this,"myop",!0);e(this,"content");e(this,"source");e(this,"destination");e(this,"route");e(this,"ref");e(this,"direction");e(this,"cleanable",!1)}static create(...s){return new this(...s)}isTypeof(s){return s.messageType===this.messageType}},x=class extends n{constructor(r){super();this.ref=r}},p=class extends n{constructor(r){super();this.replayToHandler=r}},a=class extends n{constructor(r){super();this.handler=r;e(this,"handlerUniqueId",M())}},T=class t{constructor(s,r){this.refConfig=s;this.component=r;e(this,"myop",!0);e(this,"__nonProxied");this.__nonProxied=g(l({},this),{component:null})}static create(s,r,o){let i=r;return i||(i={id:"",name:"",description:"",selectorType:"id-attribute",selector:s,behavior:{type:"code"}}),new t(i,o)}};var Z="ClickReplayMessage",b=class extends a{constructor(r,o){super(o);this.ref=r;e(this,"replyMessageKey",Z);e(this,"messageType","BindClickMessage");e(this,"cleanable",!0)}},R=class extends p{constructor(){super(...arguments);e(this,"messageType",Z)}};var I=class extends n{constructor(r,o){super();this.ref=r;e(this,"messageType","ChangeTextMessage");this.content=o}};var ee="ExecuteScriptReplyMessage",Me=/(?:function\s*\w*\s*\([^)]*\)\s*\{([\s\S]*?)\}|(\([^)]*\)\s*=>\s*\{([\s\S]*?)\}))\s*$/,xe=/\(\s*[^)]+\s*\)\s*=>\s*(.+)/,se=t=>{let s=t.match(Me);if(s)return s[1]||s[3];{let r=t.match(xe);if(r)return r[1].trim()}},c=class extends a{constructor(r,o=()=>{},i){super(o);this.scriptInputs=i;e(this,"replyMessageKey",ee);e(this,"messageType","ExecuteScriptMessage");e(this,"script","");this.script=r.toString(),this.content=r.toString(),this.content=se(this.content)}};e(c,"replierKey","send"),e(c,"completeStreamKey","completeStream");var h=class extends p{constructor(r,o){super(r);this.replayToHandler=r;this.content=o;e(this,"messageType",ee)}};var S=class extends c{constructor(r,o,i=()=>{}){super(({rootRef:m,elementId:le,_script:ye,__scriptInputs:Q})=>{let W=(m.shadowRoot||m.container).querySelectorAll("[myop-id='".concat(le,"']"));return W.length?(Q.ref=W[0],new Function("return (".concat(ye,")(...arguments)"))(Q)):null},i);this.scriptInputs=o;this.scriptInputs=g(l({},o),{_script:r.toString()})}};var te="EventListenerCallbackMessage",K=class extends a{constructor(r,o,i){super(i);this.ref=r;this.type=o;this.handler=i;e(this,"replyMessageKey",te);e(this,"messageType","AddEventListenerMessage");e(this,"cleanable",!0);e(this,"serializableSkeleton",!1)}withSerializableSkeleton(r){return this.serializableSkeleton=r,this}},v=class extends p{constructor(r,o){super(r);this.replayToHandler=r;this.e=o;e(this,"messageType",te);this.content={e:o}}};var C=class extends n{constructor(r,o,i){super();this.ref=r;this.name=o;this.value=i;e(this,"messageType","SetAttributeMessage")}};var re="ElementValueReplayMessage",B=class extends a{constructor(r,o){super(o);this.ref=r;e(this,"replyMessageKey",re);e(this,"messageType","GetElementValueMessage")}},E=class extends p{constructor(r){super();this.content=r;e(this,"messageType",re)}};var w=class extends n{constructor(r,o){super();this.ref=r;e(this,"messageType","SetInnerHtml");this.content=o}};var u=class extends n{constructor(r){super();e(this,"messageType","InitMessage");this.content={id:r}}isTypeof(r){return r.messageType===this.messageType}},U=class extends u{constructor(){super(...arguments);e(this,"messageType","InitResponse")}},k=class extends n{constructor(){super(...arguments);e(this,"messageType","InitRequest")}};var oe="RefComponentCreatedMessage",_=class extends a{constructor(r,o,i,m){super(m);this.refConfig=r;this.nestedComponentConfig=o;this.options=i;e(this,"replyMessageKey",oe);e(this,"messageType","CreateRefComponentMessage")}},V=class extends p{constructor(r,o,i){super(r);this.replayToHandler=r;this.nestedRefs=o;this.failed=i;e(this,"messageType",oe)}};var z=class extends n{constructor(r,o){super();this.destination=r;this.message=o;e(this,"messageType","EnvelopedMessage");let i=o;this.route=[r,...i.route?i.route:[]]}};var ne="DetectedMyopRefsMessage",A=class extends a{constructor(){super(...arguments);e(this,"messageType","DetectMyopRefsMessage");e(this,"replyMessageKey",ne)}},D=class extends p{constructor(r,o){super(r);this.replayToHandler=r;e(this,"messageType",ne);this.content=o}isTypeof(r){return r.messageType===this.messageType}};var pe="GetAttributeReplayMessage",F=class extends a{constructor(r,o,i){super(i);this.ref=r;this.name=o;e(this,"replyMessageKey",pe);e(this,"messageType","GetAttributeMessage")}},L=class extends p{constructor(r){super();this.content=r;e(this,"messageType",pe)}};var H=class extends n{constructor(r){super();this.method=r;e(this,"messageType","ExecuteComponentMethod")}};var O=class extends n{constructor(){super(...arguments);e(this,"messageType","SetMutationObserverMessage")}},P=class extends n{constructor(){super(...arguments);e(this,"messageType","MutationObserverMessage")}};var ae="CleanupReplayMessage",$=class extends a{constructor(r,o){super(o);this.cleanupForMessageId=r;e(this,"replyMessageKey",ae);e(this,"messageType","CleanupMessage")}},j=class extends p{constructor(r){super();this.customCleanup=r;e(this,"messageType",ae)}};var q=class extends n{constructor(){super(...arguments);e(this,"messageType","DisposeMessage")}};var G=class extends n{constructor(){super(...arguments);e(this,"cleanable",!0);e(this,"messageType","SetResizeObserverMessage")}},N=class extends n{constructor(){super(...arguments);e(this,"messageType","ResizeObserverMessage")}};var f="__federation__",ie="onLoad";var ce=(t,s)=>{window[f]&&window[f][t]&&window[f][t][ie]&&window[f][t][ie]({[t]:s})};var Te=l({},J);ce("MyopMessages",Te);
@@ -141,13 +141,40 @@ __export(messages_exports, {
141
141
  stripFunction: () => stripFunction
142
142
  });
143
143
 
144
- // src/utils/utils.ts
144
+ // src/utils/uuid.ts
145
145
  var uuidv4 = () => {
146
146
  return "10000000-1000-4000-8000-100000000000".replace(
147
147
  /[018]/g,
148
148
  (c) => (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)
149
149
  );
150
150
  };
151
+ var bytesToUuid = (bytes) => {
152
+ const hex = [...bytes].map((b) => b.toString(16).padStart(2, "0")).join("");
153
+ return [
154
+ hex.slice(0, 8),
155
+ hex.slice(8, 12),
156
+ hex.slice(12, 16),
157
+ hex.slice(16, 20),
158
+ hex.slice(20)
159
+ ].join("-");
160
+ };
161
+ var base64UrlDecode = (str) => {
162
+ let base64 = str.replace(/-/g, "+").replace(/_/g, "/");
163
+ while (base64.length % 4) base64 += "=";
164
+ const binary = atob(base64);
165
+ return Uint8Array.from(binary, (char) => char.charCodeAt(0));
166
+ };
167
+ var decompressUUIDs = (encoded) => {
168
+ const bytes = base64UrlDecode(encoded);
169
+ if (bytes.length % 16 !== 0) throw new Error("Invalid input length");
170
+ const uuids = [];
171
+ for (let i = 0; i < bytes.length; i += 16) {
172
+ uuids.push(bytesToUuid(bytes.slice(i, i + 16)));
173
+ }
174
+ return uuids;
175
+ };
176
+
177
+ // src/utils/utils.ts
151
178
  var wait = (ms) => {
152
179
  return new Promise((resolve) => setTimeout(resolve, ms));
153
180
  };
@@ -1655,7 +1682,7 @@ var WebcomponentLoader = class extends BaseMyopLoader {
1655
1682
  };
1656
1683
 
1657
1684
  // version:myop-sdk-version
1658
- var myop_sdk_version_default = "0.1.36";
1685
+ var myop_sdk_version_default = "0.1.41";
1659
1686
 
1660
1687
  // src/host/loaders/HTMLComponentLoader.ts
1661
1688
  var seen2 = [];
@@ -1757,6 +1784,94 @@ var HTMLComponentLoader = class extends BaseMyopLoader {
1757
1784
  }
1758
1785
  };
1759
1786
 
1787
+ // src/helpers/CloudRepository.ts
1788
+ var _CloudRepository = class _CloudRepository {
1789
+ // private components: Record<string, Promise<IUserFlow>> = {};
1790
+ constructor(_baseUrl = "https://cloud.myop.dev") {
1791
+ this._baseUrl = _baseUrl;
1792
+ __publicField(this, "userFlows", {});
1793
+ }
1794
+ async fetchComponent(componentId, flowId) {
1795
+ if (flowId) {
1796
+ const flow = await this.fetchFlow(flowId);
1797
+ return flow.components.find((c) => c.type.id === componentId);
1798
+ } else {
1799
+ const flow = await this.fetchAutoFlow(componentId);
1800
+ return flow.components[0];
1801
+ }
1802
+ }
1803
+ async fetchAutoFlow(componentId) {
1804
+ if (!this.userFlows[componentId]) {
1805
+ this.userFlows[componentId] = new Promise(
1806
+ async (resolve, reject) => {
1807
+ try {
1808
+ const res = await fetch(
1809
+ "".concat(this._baseUrl, "/flow?id=").concat(componentId, "&auto=true")
1810
+ );
1811
+ const json = await res.json();
1812
+ resolve(json.item);
1813
+ } catch (e) {
1814
+ reject(e);
1815
+ }
1816
+ }
1817
+ );
1818
+ }
1819
+ return await this.userFlows[componentId];
1820
+ }
1821
+ async fetchFlow(flowId) {
1822
+ if (!this.userFlows[flowId]) {
1823
+ this.userFlows[flowId] = new Promise(
1824
+ async (resolve, reject) => {
1825
+ try {
1826
+ const res = await fetch(
1827
+ "".concat(this._baseUrl, "/flow?id=").concat(flowId, "&resolve=components")
1828
+ );
1829
+ const json = await res.json();
1830
+ resolve(json.item);
1831
+ } catch (e) {
1832
+ reject(e);
1833
+ }
1834
+ }
1835
+ );
1836
+ }
1837
+ return await this.userFlows[flowId];
1838
+ }
1839
+ };
1840
+ __publicField(_CloudRepository, "Main", new _CloudRepository());
1841
+ var CloudRepository = _CloudRepository;
1842
+
1843
+ // src/host/myopOverride.ts
1844
+ var checkMyopOverride = async (componentConfig) => {
1845
+ try {
1846
+ const url = new URL(window.location.href);
1847
+ const params = new URLSearchParams(url.search);
1848
+ const myopOverride = params.get("myopOverride");
1849
+ if (myopOverride) {
1850
+ const [flowId, experimentId] = decompressUUIDs(myopOverride);
1851
+ const flow = await CloudRepository.Main.fetchFlow(flowId);
1852
+ const componentToOverride = flow.components.find((c) => c.type.id === componentConfig.type.id);
1853
+ if (componentToOverride) {
1854
+ if (componentToOverride.instance.skinSelector.type === SkinSelectorTypes.Segmented) {
1855
+ if (componentToOverride.instance.resolvedExperiences) {
1856
+ const resolvedExperience = componentToOverride.instance.resolvedExperiences.find((e) => e.id === experimentId);
1857
+ if ((resolvedExperience == null ? void 0 : resolvedExperience.type) === ExperienceTypes.Segment) {
1858
+ const typedResolvedExperience = resolvedExperience;
1859
+ const typedSkinSelector = componentToOverride.instance.skinSelector;
1860
+ const segment = typedSkinSelector.segments.find((s) => s.segmentId === typedResolvedExperience.segment.id);
1861
+ if (segment) {
1862
+ componentToOverride.instance.skinSelector = segment == null ? void 0 : segment.skinSelector;
1863
+ return componentToOverride;
1864
+ }
1865
+ }
1866
+ }
1867
+ }
1868
+ }
1869
+ }
1870
+ } finally {
1871
+ return null;
1872
+ }
1873
+ };
1874
+
1760
1875
  // src/host/hostSDK.ts
1761
1876
  var __ROOT_SDK_PUBLIC_URL__ = "https://cdn.myop.dev/sdk/next/myop_sdk.min.js";
1762
1877
  var HostSDK = class {
@@ -1898,7 +2013,9 @@ var HostSDK = class {
1898
2013
  return void 0;
1899
2014
  }
1900
2015
  switch (skinSelector.type) {
2016
+ // @ts-ignore
1901
2017
  case "DedicatedSkin":
2018
+ //backward compatibility
1902
2019
  case SkinSelectorTypes.Dedicated:
1903
2020
  {
1904
2021
  let selectedSkinId = ((_a = skinSelector.skin) == null ? void 0 : _a.id) || skinSelector.skins[0].id;
@@ -1956,6 +2073,10 @@ var HostSDK = class {
1956
2073
  debugger;
1957
2074
  throw new Error("no container was found for this component");
1958
2075
  }
2076
+ const overriddenConfig = await checkMyopOverride(componentConfig);
2077
+ if (overriddenConfig) {
2078
+ componentConfig = overriddenConfig;
2079
+ }
1959
2080
  const ref = container;
1960
2081
  if (ref.myop) {
1961
2082
  if (ref.component) {