@next-core/runtime 1.17.8 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/internal/Renderer.js +1 -0
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +4 -0
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js +5 -0
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/data/resolveData.js +19 -3
- package/dist/cjs/internal/data/resolveData.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/cjs/internal/mount.js +4 -0
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +33 -0
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/Renderer.js +1 -0
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/Runtime.js +4 -0
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +10 -2
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/data/resolveData.js +19 -3
- package/dist/esm/internal/data/resolveData.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/esm/internal/mount.js +4 -0
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +31 -1
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/types/internal/Runtime.d.ts +2 -1
- package/dist/types/internal/data/DataStore.d.ts +1 -0
- package/dist/types/internal/interfaces.d.ts +3 -0
- package/dist/types/internal/secret_internals.d.ts +5 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","changeEventType","getValue","name","_this$data$get","data","get","value","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","map","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","Object","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","pendingResult","handleAsyncAfterMount","async","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref","options","_x","apply","arguments","lazy","newData","EventTarget","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","has","set","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /** After mount, dispatch the change event when an async data is loaded */\n handleAsyncAfterMount() {\n this.data.forEach((item) => {\n if (item.async) {\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\") &&\n hasOwnProperty(asyncHostProperties, dataConf.name)\n ) {\n value = await asyncHostProperties[dataConf.name];\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","eventCallbackFactory","listenerFactory","asyncCheckIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","_defineProperty","Map","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","detail","callback","callbackRuntimeContext","concat","load","promise","loaded","Promise","resolve","loading","_objectSpread","cache","then","val","err","error","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostProperties","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","pendingResult","handleAsyncAfterMount","async","_this3","expose","resolvePolicy","undefined","resolveConf","transform","_ref2","options","_x","apply","arguments","lazy","newData","EventTarget","trigger","_this3$rendererContex","registerArbitraryLifeCycle","track","dep","batchAddListener","has","set","contextConf","event"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncProperties,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n value: unknown;\n eventTarget: EventTarget;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n deps: string[];\n}\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<ReturnType<typeof resolveDataStore>> =\n [];\n public readonly hostBrick?: RuntimeBrick;\n public batchUpdate = false;\n public batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.load) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which has no resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n if (!promise) {\n promise = item.loading = item.load({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n item.loaded = true;\n item.value = val;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n },\n (err) => {\n // Let users override error handling.\n if (!callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n callbackFactory(\"error\")(err);\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(dataConf, runtimeContext, asyncHostProperties),\n this.type\n );\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /** After mount, dispatch the change event when an async data is loaded */\n handleAsyncAfterMount() {\n this.data.forEach((item) => {\n if (item.async) {\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostProperties?: AsyncProperties\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostProperties &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\") &&\n hasOwnProperty(asyncHostProperties, dataConf.name)\n ) {\n value = await asyncHostProperties[dataConf.name];\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" = \"eager\";\n if (value === undefined) {\n if (dataConf.resolve) {\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n if (await asyncCheckIf(dataConf.resolve, runtimeContext)) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, options)) as {\n value: unknown;\n }\n ).value;\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load();\n } else if (resolvePolicy === \"async\") {\n loading = load();\n }\n } else if (!hasOwnProperty(dataConf, \"value\")) {\n return false;\n }\n }\n if (\n (!load || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n const newData: DataStoreItem = {\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n load ? dataConf.resolve : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n if (load) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n this.data.set(dataConf.name, newData);\n\n return true;\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -3,6 +3,9 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
|
3
3
|
import { asyncComputeRealValue } from "../compute/computeRealValue.js";
|
|
4
4
|
import { getProviderBrick } from "./getProviderBrick.js";
|
|
5
5
|
import { hooks } from "../Runtime.js";
|
|
6
|
+
import { markAsComputed } from "../compute/markAsComputed.js";
|
|
7
|
+
import { get } from "lodash";
|
|
8
|
+
import { isStrictMode, warnAboutStrictMode } from "../../isStrictMode.js";
|
|
6
9
|
var cache = new Map();
|
|
7
10
|
export function resolveData(_x, _x2, _x3) {
|
|
8
11
|
return _resolveData.apply(this, arguments);
|
|
@@ -15,10 +18,22 @@ function _resolveData() {
|
|
|
15
18
|
args = [],
|
|
16
19
|
onReject
|
|
17
20
|
} = resolveConf;
|
|
18
|
-
var
|
|
21
|
+
var {
|
|
22
|
+
provider: legacyProvider,
|
|
23
|
+
field: legacyField
|
|
24
|
+
} = resolveConf;
|
|
19
25
|
if (legacyProvider && !useProvider) {
|
|
20
26
|
throw new Error("You're using \"provider: ".concat(legacyProvider, "\" which is dropped in v3, please use \"useProvider\" instead"));
|
|
21
27
|
}
|
|
28
|
+
var hasLegacyField = legacyField !== null && legacyField !== undefined;
|
|
29
|
+
if (hasLegacyField) {
|
|
30
|
+
var strict = isStrictMode();
|
|
31
|
+
warnAboutStrictMode(strict, "`resolve.field`");
|
|
32
|
+
// istanbul ignore next
|
|
33
|
+
if (strict) {
|
|
34
|
+
throw new Error("Using deprecated `resolve.field`");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
22
37
|
var [providerBrick, actualArgs] = yield Promise.all([getProviderBrick(useProvider), asyncComputeRealValue(args, runtimeContext)]);
|
|
23
38
|
var promise = resolveByProvider(providerBrick, useProvider, method, actualArgs, options, args);
|
|
24
39
|
var {
|
|
@@ -26,9 +41,10 @@ function _resolveData() {
|
|
|
26
41
|
} = resolveConf;
|
|
27
42
|
var data;
|
|
28
43
|
try {
|
|
29
|
-
|
|
44
|
+
var value = yield promise;
|
|
45
|
+
data = hasLegacyField ? get(value, legacyField) : value;
|
|
30
46
|
// The fetched data and its inner objects should never be *injected* again.
|
|
31
|
-
|
|
47
|
+
markAsComputed(data);
|
|
32
48
|
} catch (error) {
|
|
33
49
|
if (isHandleRejectByTransform(onReject)) {
|
|
34
50
|
transform = onReject.transform;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveData.js","names":["asyncComputeRealValue","getProviderBrick","hooks","cache","Map","resolveData","_x","_x2","_x3","_resolveData","apply","arguments","_asyncToGenerator","resolveConf","runtimeContext","options","useProvider","method","args","onReject","legacyProvider","
|
|
1
|
+
{"version":3,"file":"resolveData.js","names":["asyncComputeRealValue","getProviderBrick","hooks","markAsComputed","get","isStrictMode","warnAboutStrictMode","cache","Map","resolveData","_x","_x2","_x3","_resolveData","apply","arguments","_asyncToGenerator","resolveConf","runtimeContext","options","useProvider","method","args","onReject","provider","legacyProvider","field","legacyField","Error","concat","hasLegacyField","undefined","strict","providerBrick","actualArgs","Promise","all","promise","resolveByProvider","transform","data","value","error","isHandleRejectByTransform","_objectSpread","clearResolveCache","clear","_x4","_x5","_x6","_x7","_x8","_x9","_resolveByProvider","brick","originalArgs","cacheKey","JSON","stringify","e","_hooks$flowApi","finalArgs","flowApi","isFlowApiProvider","getArgsOfFlowApi","resolve","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n} from \"@next-core/types\";\nimport { asyncComputeRealValue } from \"../compute/computeRealValue.js\";\nimport { getProviderBrick } from \"./getProviderBrick.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { hooks } from \"../Runtime.js\";\nimport { markAsComputed } from \"../compute/markAsComputed.js\";\nimport { get } from \"lodash\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\n\nconst cache = new Map<string, Promise<unknown>>();\n\nexport interface ResolveOptions {\n /**\n * Cache mode of resolve.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n *\n * - `default`: Looks for a matching cache.\n * - `reload`: Without looking for a matching cache.\n */\n cache?: \"default\" | \"reload\";\n}\n\nexport async function resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext,\n options?: ResolveOptions\n) {\n const { useProvider, method = \"resolve\", args = [], onReject } = resolveConf;\n\n const { provider: legacyProvider, field: legacyField } = resolveConf as {\n provider?: string;\n field?: string | string[];\n };\n if (legacyProvider && !useProvider) {\n throw new Error(\n `You're using \"provider: ${legacyProvider}\" which is dropped in v3, please use \"useProvider\" instead`\n );\n }\n\n const hasLegacyField = legacyField !== null && legacyField !== undefined;\n if (hasLegacyField) {\n const strict = isStrictMode();\n warnAboutStrictMode(strict, \"`resolve.field`\");\n // istanbul ignore next\n if (strict) {\n throw new Error(\"Using deprecated `resolve.field`\");\n }\n }\n\n const [providerBrick, actualArgs] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<unknown[]>,\n ]);\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualArgs,\n options,\n args\n );\n\n let { transform } = resolveConf;\n let data: unknown;\n\n try {\n const value = await promise;\n data = hasLegacyField ? get(value, legacyField) : value;\n // The fetched data and its inner objects should never be *injected* again.\n markAsComputed(data);\n } catch (error) {\n if (isHandleRejectByTransform(onReject)) {\n transform = onReject.transform;\n data = error;\n } else {\n throw error;\n }\n }\n\n if (!transform) {\n return data;\n }\n\n // Keep backward compatibility of string transform.\n if (typeof transform === \"string\") {\n return { [transform]: data };\n }\n\n return asyncComputeRealValue(transform, { ...runtimeContext, data });\n}\n\nexport function clearResolveCache() {\n cache.clear();\n}\n\nexport async function resolveByProvider(\n brick: Record<string, Function>,\n useProvider: string,\n method: string,\n args: unknown[],\n options?: ResolveOptions,\n originalArgs?: unknown[]\n) {\n let cacheKey: string;\n try {\n // `args` may contain circular references, which makes\n // JSON stringify failed, thus we fallback to original args.\n cacheKey = JSON.stringify({\n useProvider,\n method,\n args,\n });\n } catch (e) {\n if (!originalArgs) {\n throw e;\n }\n cacheKey = JSON.stringify({\n useProvider,\n method,\n originalArgs,\n });\n }\n\n let promise: Promise<unknown> | undefined;\n if (options?.cache !== \"reload\") {\n promise = cache.get(cacheKey);\n }\n if (!promise) {\n promise = (async () => {\n const finalArgs = hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method)\n : args;\n return brick.resolve(...finalArgs);\n })();\n\n cache.set(cacheKey, promise);\n }\n\n return promise;\n}\n\nfunction isHandleRejectByTransform(\n onReject: HandleReject | undefined\n): onReject is HandleRejectByTransform {\n return !!(onReject as HandleRejectByTransform)?.transform;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncComputedProperties = Promise<Record<string, unknown>>;\n\nexport type AsyncProperties = Record<string, Promise<unknown>>;\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostProperties: AsyncProperties;\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n}\n\nexport type AsyncComputedProperties = Promise<Record<string, unknown>>;\n\nexport type AsyncProperties = Record<string, Promise<unknown>>;\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderBrick;\n sibling?: RenderBrick;\n return?: RenderNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostProperties: AsyncProperties;\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n}\n"],"mappings":""}
|
|
@@ -10,6 +10,7 @@ export function mountTree(root, initializedElement) {
|
|
|
10
10
|
var current = root.child;
|
|
11
11
|
var portalElements = [];
|
|
12
12
|
while (current) {
|
|
13
|
+
var _current$tplHostMetad;
|
|
13
14
|
var tagName = current.type;
|
|
14
15
|
if (tagName.includes("-") && !customElements.get(tagName)) {
|
|
15
16
|
// eslint-disable-next-line no-console
|
|
@@ -29,6 +30,9 @@ export function mountTree(root, initializedElement) {
|
|
|
29
30
|
if (current.iid) {
|
|
30
31
|
element.dataset.iid = current.iid;
|
|
31
32
|
}
|
|
33
|
+
if ((_current$tplHostMetad = current.tplHostMetadata) !== null && _current$tplHostMetad !== void 0 && _current$tplHostMetad.tplStateStoreId) {
|
|
34
|
+
element.dataset.tplStateStoreId = current.tplHostMetadata.tplStateStoreId;
|
|
35
|
+
}
|
|
32
36
|
setRealProperties(element, current.properties);
|
|
33
37
|
bindListeners(element, current.events, current.runtimeContext);
|
|
34
38
|
if (current.tplHostMetadata) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","names":["bindTemplateProxy","getTplStateStore","bindListeners","setRealProperties","RenderTag","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","current","child","portalElements","tagName","type","includes","customElements","get","console","error","concat","warn","element","document","createElement","slotId","setAttribute","iid","dataset","
|
|
1
|
+
{"version":3,"file":"mount.js","names":["bindTemplateProxy","getTplStateStore","bindListeners","setRealProperties","RenderTag","unmountTree","mountPoint","replaceChildren","mountTree","root","initializedElement","current","child","portalElements","_current$tplHostMetad","tagName","type","includes","customElements","get","console","error","concat","warn","element","document","createElement","slotId","setAttribute","iid","dataset","tplHostMetadata","tplStateStoreId","properties","events","runtimeContext","$$tplStateStore","tplStateStoreMap","portal","push","return","childElements","sibling","_currentReturn","currentReturn","tag","ROOT","_currentReturn$contai","container","append","undefined","length","createPortal"],"sources":["../../../src/internal/mount.ts"],"sourcesContent":["import { bindTemplateProxy } from \"./CustomTemplates/bindTemplateProxy.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\nimport { bindListeners } from \"./bindListeners.js\";\nimport { setRealProperties } from \"./compute/setRealProperties.js\";\nimport { RenderTag } from \"./enums.js\";\nimport type {\n RenderNode,\n RenderRoot,\n RuntimeBrickElement,\n} from \"./interfaces.js\";\n\nexport function unmountTree(mountPoint: HTMLElement | DocumentFragment) {\n mountPoint.replaceChildren();\n}\n\nexport function mountTree(\n root: RenderRoot,\n initializedElement?: RuntimeBrickElement\n): void {\n let current = root.child;\n const portalElements: RuntimeBrickElement[] = [];\n while (current) {\n const tagName = current.type;\n\n if (tagName.includes(\"-\") && !customElements.get(tagName)) {\n // eslint-disable-next-line no-console\n console.error(`Undefined custom element: ${tagName}`);\n }\n\n // istanbul ignore if\n if (tagName === \"basic-bricks.script-brick\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"`basic-bricks.script-brick` is deprecated, please take caution when using it\"\n );\n }\n\n const element: RuntimeBrickElement =\n initializedElement && current === root.child\n ? initializedElement\n : document.createElement(tagName);\n current.element = element;\n\n if (current.slotId) {\n element.setAttribute(\"slot\", current.slotId);\n }\n if (current.iid) {\n element.dataset.iid = current.iid;\n }\n if (current.tplHostMetadata?.tplStateStoreId) {\n element.dataset.tplStateStoreId = current.tplHostMetadata.tplStateStoreId;\n }\n setRealProperties(element, current.properties);\n bindListeners(element, current.events, current.runtimeContext);\n if (current.tplHostMetadata) {\n // 先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n element.$$tplStateStore = getTplStateStore(\n {\n tplStateStoreId: current.tplHostMetadata.tplStateStoreId,\n tplStateStoreMap: current.runtimeContext.tplStateStoreMap,\n },\n \"mount\"\n );\n }\n bindTemplateProxy(current);\n\n if (current.portal) {\n portalElements.push(element);\n } else if (current.return) {\n if (!current.return.childElements) {\n current.return.childElements = [];\n }\n current.return.childElements.push(element);\n }\n\n if (current.child) {\n current = current.child;\n } else if (current.sibling) {\n current = current.sibling;\n } else {\n let currentReturn: RenderNode | null | undefined = current.return;\n while (currentReturn) {\n // Append elements inside out\n if (currentReturn.childElements) {\n if (currentReturn.tag === RenderTag.ROOT) {\n currentReturn.container?.append(...currentReturn.childElements);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currentReturn.element!.append(...currentReturn.childElements);\n }\n currentReturn.childElements = undefined;\n }\n\n if (currentReturn.tag === RenderTag.ROOT && portalElements.length > 0) {\n const portal =\n typeof currentReturn.createPortal === \"function\"\n ? currentReturn.createPortal()\n : currentReturn.createPortal;\n portal.append(...portalElements);\n }\n\n if (currentReturn.sibling) {\n break;\n }\n currentReturn = currentReturn.return;\n }\n current = currentReturn?.sibling;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
|
2
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
3
|
import { flushStableLoadBricks } from "@next-core/loader";
|
|
4
4
|
import { pick } from "lodash";
|
|
5
|
-
import { _internalApiGetRuntimeContext, _internalApiGetStoryboardInBootstrapData } from "./Runtime.js";
|
|
5
|
+
import { _internalApiGetRuntimeContext, _internalApiGetStoryboardInBootstrapData, getBrickPackages } from "./Runtime.js";
|
|
6
6
|
import { renderBrick } from "./Renderer.js";
|
|
7
7
|
import { RendererContext } from "./RendererContext.js";
|
|
8
8
|
import { mountTree, unmountTree } from "./mount.js";
|
|
@@ -11,6 +11,7 @@ import { computeRealValue } from "./compute/computeRealValue.js";
|
|
|
11
11
|
import { isStrictMode, warnAboutStrictMode } from "../isStrictMode.js";
|
|
12
12
|
import { customTemplates } from "../CustomTemplates.js";
|
|
13
13
|
import { registerAppI18n } from "./registerAppI18n.js";
|
|
14
|
+
import { getTplStateStore } from "./CustomTemplates/utils.js";
|
|
14
15
|
export function renderUseBrick(_x, _x2) {
|
|
15
16
|
return _renderUseBrick.apply(this, arguments);
|
|
16
17
|
}
|
|
@@ -182,4 +183,33 @@ function _updatePreviewSettings(appId, path, bricks) {
|
|
|
182
183
|
routes.splice(previewRouteIndex, 1, newPreviewRoute);
|
|
183
184
|
}
|
|
184
185
|
}
|
|
186
|
+
export function getContextValue(name, _ref3) {
|
|
187
|
+
var {
|
|
188
|
+
tplStateStoreId
|
|
189
|
+
} = _ref3;
|
|
190
|
+
var runtimeContext = _internalApiGetRuntimeContext();
|
|
191
|
+
if (tplStateStoreId) {
|
|
192
|
+
var tplStateStore = getTplStateStore(_objectSpread(_objectSpread({}, runtimeContext), {}, {
|
|
193
|
+
tplStateStoreId
|
|
194
|
+
}), "STATE");
|
|
195
|
+
return tplStateStore.getValue(name);
|
|
196
|
+
}
|
|
197
|
+
return runtimeContext.ctxStore.getValue(name);
|
|
198
|
+
}
|
|
199
|
+
export function getAllContextValues(_ref4) {
|
|
200
|
+
var {
|
|
201
|
+
tplStateStoreId
|
|
202
|
+
} = _ref4;
|
|
203
|
+
var runtimeContext = _internalApiGetRuntimeContext();
|
|
204
|
+
if (tplStateStoreId) {
|
|
205
|
+
var tplStateStore = getTplStateStore(_objectSpread(_objectSpread({}, runtimeContext), {}, {
|
|
206
|
+
tplStateStoreId
|
|
207
|
+
}), "STATE");
|
|
208
|
+
return tplStateStore.getAllValues();
|
|
209
|
+
}
|
|
210
|
+
return runtimeContext.ctxStore.getAllValues();
|
|
211
|
+
}
|
|
212
|
+
export function getBrickPackagesById(id) {
|
|
213
|
+
return getBrickPackages().find(pkg => pkg.id ? pkg.id === id : pkg.filePath.startsWith(id));
|
|
214
|
+
}
|
|
185
215
|
//# sourceMappingURL=secret_internals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret_internals.js","names":["flushStableLoadBricks","pick","_internalApiGetRuntimeContext","_internalApiGetStoryboardInBootstrapData","renderBrick","RendererContext","mountTree","unmountTree","RenderTag","computeRealValue","isStrictMode","warnAboutStrictMode","customTemplates","registerAppI18n","renderUseBrick","_x","_x2","_renderUseBrick","apply","arguments","_asyncToGenerator","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_objectSpread","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","renderRoot","tag","ROOT","createPortal","transform","strict","output","properties","scopedStores","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","_ref","element","portalRoot","document","querySelector","createElement","appendChild","handleAsyncAfterMount","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","_ref2","mountResult","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","noInject","updateStoryboard","appId","storyboardPatch","storyboard","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","updateStoryboardByRoute","newRoute","match","getKey","route","concat","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","previewRouteIndex","findIndex","newPreviewRoute","menu","splice"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport type { RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n const scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...scopedStores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n for (const store of scopedStores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetData.snippetId}`,\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secret_internals.js","names":["flushStableLoadBricks","pick","_internalApiGetRuntimeContext","_internalApiGetStoryboardInBootstrapData","getBrickPackages","renderBrick","RendererContext","mountTree","unmountTree","RenderTag","computeRealValue","isStrictMode","warnAboutStrictMode","customTemplates","registerAppI18n","getTplStateStore","renderUseBrick","_x","_x2","_renderUseBrick","apply","arguments","_asyncToGenerator","useBrick","data","_runtimeContext$tplSt","_runtimeContext$formS","_output$node","tplStateStoreScope","formStateStoreScope","runtimeContext","_objectSpread","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","rendererContext","renderRoot","tag","ROOT","createPortal","transform","strict","output","properties","scopedStores","Promise","all","blockingList","map","store","waitForAll","node","portal","Error","child","tagName","type","mountUseBrick","_ref","element","portalRoot","document","querySelector","createElement","appendChild","handleAsyncAfterMount","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmountUseBrick","_ref2","mountResult","remove","dispatchOnUnmount","dispose","legacyDoTransform","to","options","noInject","updateStoryboard","appId","storyboardPatch","storyboard","Object","assign","$$fulfilling","$$fulfilled","$$registerCustomTemplateProcessed","updateStoryboardByRoute","newRoute","match","getKey","route","concat","path","exact","replaceRoute","routes","key","routeKey","unshift","updateStoryboardByTemplate","newTemplate","settings","tplName","name","define","bricks","proxy","state","updateTemplatePreviewSettings","templateId","_updatePreviewSettings","brick","updateStoryboardBySnippet","snippetData","_snippetData$bricks","snippetId","length","updateSnippetPreviewSettings","previewRouteIndex","findIndex","newPreviewRoute","menu","splice","getContextValue","_ref3","tplStateStoreId","tplStateStore","getValue","ctxStore","getAllContextValues","_ref4","getAllValues","getBrickPackagesById","id","find","pkg","filePath","startsWith"],"sources":["../../../src/internal/secret_internals.ts"],"sourcesContent":["import type {\n BrickConf,\n CustomTemplate,\n RouteConf,\n Storyboard,\n UseSingleBrickConf,\n} from \"@next-core/types\";\nimport { flushStableLoadBricks } from \"@next-core/loader\";\nimport { pick } from \"lodash\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n} from \"./Runtime.js\";\nimport { renderBrick } from \"./Renderer.js\";\nimport { RendererContext } from \"./RendererContext.js\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport type {\n DataValueOption,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../isStrictMode.js\";\nimport { customTemplates } from \"../CustomTemplates.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\nimport { getTplStateStore } from \"./CustomTemplates/utils.js\";\n\nexport type { DataValueOption, RuntimeContext } from \"./interfaces.js\";\n\nexport interface RenderUseBrickResult {\n tagName: string | null;\n renderRoot: RenderRoot;\n rendererContext: RendererContext;\n scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[];\n}\n\nexport async function renderUseBrick(\n useBrick: UseSingleBrickConf,\n data: unknown\n): Promise<RenderUseBrickResult> {\n const tplStateStoreScope: DataStore<\"STATE\">[] = [];\n const formStateStoreScope: DataStore<\"FORM_STATE\">[] = [];\n const runtimeContext: RuntimeContext = {\n ..._internalApiGetRuntimeContext()!,\n data,\n pendingPermissionsPreCheck: [],\n tplStateStoreScope,\n formStateStoreScope,\n };\n\n runtimeContext.tplStateStoreMap ??= new Map();\n runtimeContext.formStateStoreMap ??= new Map();\n\n const rendererContext = new RendererContext(\"fragment\");\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n // Will set during `mountUseBrick`\n createPortal: null!,\n };\n\n const transform = (useBrick as { transform?: Record<string, unknown> })\n .transform;\n const strict = isStrictMode();\n if (transform) {\n warnAboutStrictMode(\n strict,\n \"`useBrick.transform`\",\n 'please use \"properties\" instead, check your useBrick:',\n useBrick\n );\n }\n\n const output = await renderBrick(\n renderRoot,\n strict\n ? useBrick\n : {\n ...useBrick,\n properties: {\n ...useBrick.properties,\n ...transform,\n },\n },\n runtimeContext,\n rendererContext\n );\n\n flushStableLoadBricks();\n\n const scopedStores: DataStore<\"STATE\" | \"FORM_STATE\">[] = [\n ...tplStateStoreScope,\n ...formStateStoreScope,\n ];\n\n await Promise.all([\n ...output.blockingList,\n // Wait for local tpl state stores belong to current `useBrick` only.\n ...scopedStores.map((store) => store.waitForAll()),\n ...runtimeContext.pendingPermissionsPreCheck,\n ]);\n\n if (output.node?.portal) {\n throw new Error(\"The root brick of useBrick cannot be a portal brick\");\n }\n\n renderRoot.child = output.node;\n\n const tagName = output.node ? output.node.type : null;\n\n return { tagName, renderRoot, rendererContext, scopedStores };\n}\n\nexport interface MountUseBrickResult {\n portal?: HTMLElement;\n}\n\nexport function mountUseBrick(\n { renderRoot, rendererContext, scopedStores }: RenderUseBrickResult,\n element: HTMLElement\n): MountUseBrickResult {\n let portal: HTMLElement | undefined;\n renderRoot.createPortal = () => {\n const portalRoot = document.querySelector(\n \"#portal-mount-point\"\n ) as HTMLElement;\n portal = document.createElement(\"div\");\n portalRoot.appendChild(portal);\n return portal;\n };\n\n mountTree(renderRoot, element);\n\n for (const store of scopedStores) {\n store.handleAsyncAfterMount();\n }\n\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n return {\n portal,\n };\n}\n\nexport function unmountUseBrick(\n { rendererContext }: RenderUseBrickResult,\n mountResult: MountUseBrickResult\n): void {\n // if (mountResult.mainBrick) {\n // mountResult.mainBrick.unmount();\n // }\n if (mountResult.portal) {\n unmountTree(mountResult.portal);\n mountResult.portal.remove();\n }\n rendererContext.dispatchOnUnmount();\n rendererContext.dispose();\n}\n\n/** For v2 compatibility of `doTransform` from brick-kit. */\nexport function legacyDoTransform(\n data: unknown,\n to: unknown,\n options?: unknown\n) {\n if (options) {\n throw new Error(\"Legacy doTransform does not support options in v3\");\n }\n return computeRealValue(\n to,\n {\n ..._internalApiGetRuntimeContext()!,\n data,\n },\n {\n noInject: true,\n }\n );\n}\n\nexport function updateStoryboard(\n appId: string,\n storyboardPatch: Partial<Storyboard>\n): void {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n Object.assign(storyboard, {\n ...storyboardPatch,\n $$fulfilling: null,\n $$fulfilled: true,\n $$registerCustomTemplateProcessed: false,\n });\n registerAppI18n(storyboard);\n}\n\nexport function updateStoryboardByRoute(appId: string, newRoute: RouteConf) {\n const storyboard = _internalApiGetStoryboardInBootstrapData(appId)!;\n let match = false;\n const getKey = (route: RouteConf): string => `${route.path}.${route.exact}`;\n const replaceRoute = (routes: RouteConf[], key: string): RouteConf[] => {\n return routes.map((route) => {\n const routeKey = getKey(route);\n if (route.type === \"routes\") {\n route.routes = replaceRoute(route.routes, key);\n return route;\n } else if (routeKey === key) {\n match = true;\n return newRoute;\n } else {\n return route;\n }\n });\n };\n storyboard.routes = replaceRoute(storyboard.routes, getKey(newRoute));\n if (!match) {\n storyboard.routes.unshift(newRoute);\n }\n}\n\nexport function updateStoryboardByTemplate(\n appId: string,\n newTemplate: CustomTemplate,\n settings: unknown\n): void {\n const tplName = `${appId}.${newTemplate.name}`;\n // customTemplateRegistry.delete(tplName);\n customTemplates.define(tplName, {\n bricks: newTemplate.bricks,\n proxy: newTemplate.proxy,\n state: newTemplate.state,\n });\n updateTemplatePreviewSettings(appId, newTemplate.name, settings);\n}\n\nexport function updateTemplatePreviewSettings(\n appId: string,\n templateId: string,\n settings?: unknown\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/template-preview/${templateId}`,\n [\n {\n brick: templateId,\n ...pick(settings, \"properties\", \"events\", \"lifeCycle\", \"context\"),\n },\n ]\n );\n}\n\nexport function updateStoryboardBySnippet(\n appId: string,\n snippetData: {\n snippetId: string;\n bricks?: BrickConf[];\n }\n): void {\n _updatePreviewSettings(\n appId,\n `\\${APP.homepage}/_dev_only_/snippet-preview/${snippetData.snippetId}`,\n snippetData.bricks?.length ? snippetData.bricks : [{ brick: \"span\" }]\n );\n}\n\nexport const updateSnippetPreviewSettings = updateStoryboardBySnippet;\n\nfunction _updatePreviewSettings(\n appId: string,\n path: string,\n bricks: BrickConf[]\n) {\n const { routes } = _internalApiGetStoryboardInBootstrapData(appId)!;\n const previewRouteIndex = routes.findIndex((route) => route.path === path);\n const newPreviewRoute: RouteConf = {\n path,\n bricks,\n menu: false,\n exact: true,\n };\n if (previewRouteIndex === -1) {\n routes.unshift(newPreviewRoute);\n } else {\n routes.splice(previewRouteIndex, 1, newPreviewRoute);\n }\n}\n\nexport function getContextValue(\n name: string,\n { tplStateStoreId }: DataValueOption\n): unknown {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getValue(name);\n }\n\n return runtimeContext.ctxStore.getValue(name);\n}\n\nexport function getAllContextValues({\n tplStateStoreId,\n}: DataValueOption): Record<string, unknown> {\n const runtimeContext = _internalApiGetRuntimeContext()!;\n\n if (tplStateStoreId) {\n const tplStateStore = getTplStateStore(\n {\n ...runtimeContext,\n tplStateStoreId,\n },\n \"STATE\"\n );\n return tplStateStore.getAllValues();\n }\n\n return runtimeContext.ctxStore.getAllValues();\n}\n\nexport function getBrickPackagesById(id: string) {\n return getBrickPackages().find((pkg) =>\n pkg.id ? pkg.id === id : pkg.filePath.startsWith(id)\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RuntimeStoryboard, FeatureFlags, BootstrapData, Contract, Storyboard, BrickConf, RouteConf, ResolveConf, BrickPackage } from "@next-core/types";
|
|
2
2
|
import type { PermissionApi_validatePermissions } from "@next-api-sdk/micro-app-sdk";
|
|
3
3
|
import "moment/locale/zh-cn.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type AppForCheck } from "./hasInstalledApp.js";
|
|
5
5
|
import type { RuntimeContext } from "./interfaces.js";
|
|
6
6
|
export interface RuntimeOptions {
|
|
7
7
|
hooks?: RuntimeHooks;
|
|
@@ -70,6 +70,7 @@ export declare class Runtime {
|
|
|
70
70
|
bootstrap(data?: BootstrapData): Promise<void>;
|
|
71
71
|
getRecentApps(): {};
|
|
72
72
|
getCurrentApp(): import("@next-core/types").MicroApp | undefined;
|
|
73
|
+
hasInstalledApp(appId: string, matchVersion?: string): boolean;
|
|
73
74
|
getFeatureFlags(): FeatureFlags;
|
|
74
75
|
getMiscSettings(): {
|
|
75
76
|
[x: string]: unknown;
|
|
@@ -22,6 +22,7 @@ export declare class DataStore<T extends DataStoreType = "CTX"> {
|
|
|
22
22
|
batchUpdateContextsNames: string[];
|
|
23
23
|
private readonly rendererContext?;
|
|
24
24
|
constructor(type: T, hostBrick?: RuntimeBrick, rendererContext?: RendererContext);
|
|
25
|
+
getAllValues(): Record<string, unknown>;
|
|
25
26
|
getValue(name: string): unknown;
|
|
26
27
|
private getAffectListByContext;
|
|
27
28
|
updateValues(values: BatchUpdateContextItem[], method: "assign" | "replace", argsFactory: (arg: unknown[]) => BatchUpdateContextItem): void;
|
|
@@ -97,4 +97,7 @@ interface ReversedSlotProxy {
|
|
|
97
97
|
to: CustomTemplateProxySlot;
|
|
98
98
|
}
|
|
99
99
|
export type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols & RuntimeBrickConfOfFormSymbols;
|
|
100
|
+
export interface DataValueOption {
|
|
101
|
+
tplStateStoreId?: string;
|
|
102
|
+
}
|
|
100
103
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { BrickConf, CustomTemplate, RouteConf, Storyboard, UseSingleBrickConf } from "@next-core/types";
|
|
2
2
|
import { RendererContext } from "./RendererContext.js";
|
|
3
3
|
import type { DataStore } from "./data/DataStore.js";
|
|
4
|
-
import type { RenderRoot } from "./interfaces.js";
|
|
5
|
-
export type { RuntimeContext } from "./interfaces.js";
|
|
4
|
+
import type { DataValueOption, RenderRoot } from "./interfaces.js";
|
|
5
|
+
export type { DataValueOption, RuntimeContext } from "./interfaces.js";
|
|
6
6
|
export interface RenderUseBrickResult {
|
|
7
7
|
tagName: string | null;
|
|
8
8
|
renderRoot: RenderRoot;
|
|
@@ -26,3 +26,6 @@ export declare function updateStoryboardBySnippet(appId: string, snippetData: {
|
|
|
26
26
|
bricks?: BrickConf[];
|
|
27
27
|
}): void;
|
|
28
28
|
export declare const updateSnippetPreviewSettings: typeof updateStoryboardBySnippet;
|
|
29
|
+
export declare function getContextValue(name: string, { tplStateStoreId }: DataValueOption): unknown;
|
|
30
|
+
export declare function getAllContextValues({ tplStateStoreId, }: DataValueOption): Record<string, unknown>;
|
|
31
|
+
export declare function getBrickPackagesById(id: string): import("@next-core/types").BrickPackage | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.0",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"@next-core/build-next-libs": "^1.0.6",
|
|
66
66
|
"@next-core/test-next": "^1.0.8"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "9956d190df18fe803ae1100ac69ab4936c7e5774"
|
|
69
69
|
}
|