{"version":3,"file":"lowcode-utils.mjs","sources":["../src/misc.ts","../src/check.ts","../src/build-components.ts","../src/build-utils.ts","../../../node_modules/.pnpm/@alilc+lowcode-types@1.1.10/node_modules/@alilc/lowcode-types/es/assets.js","../src/create-defer.ts","../src/script.ts","../src/asset.ts","../src/setup-environment.ts","../src/string.ts","../../../node_modules/.pnpm/@alilc+lowcode-types@1.1.10/node_modules/@alilc/lowcode-types/lib/shell/enum/transform-stage.js","../src/schema.ts"],"sourcesContent":["import { isArray, isFunction, isString } from './check';\n\nexport const noop: (...args: any[]) => any = () => void 0;\n\nexport function fromPairs<E extends Iterable<unknown>>(\n  entries: E,\n): E extends Iterable<infer T>\n  ? T extends [infer K, infer V]\n    ? K extends string\n      ? Record<K, V>\n      : Record<string, unknown>\n    : Record<string, unknown>\n  : Record<string, unknown> {\n  const result: any = {};\n  for (const val of entries) {\n    if (isArray(val) && val.length >= 2) {\n      result[val[0]] = val[1];\n    }\n  }\n  return result;\n}\n\nexport function debounce<T extends () => unknown>(fn: T, ms?: number): () => void {\n  let timerId: any = null;\n\n  if (!ms) {\n    return function (this: unknown) {\n      if (!timerId) {\n        timerId = setTimeout(() => {\n          timerId = null;\n          fn.apply(this);\n        });\n      }\n    };\n  } else {\n    return function (this: unknown) {\n      if (timerId) {\n        clearTimeout(timerId);\n      }\n      timerId = setTimeout(() => {\n        timerId = null;\n        fn.apply(this);\n      }, ms);\n    };\n  }\n}\n\nexport const toString = (o: unknown) => Object.prototype.toString.call(o);\n\nexport function sleep(ms?: number) {\n  return new Promise<void>((resolve) => {\n    return setTimeout(resolve, ms);\n  });\n}\n\nexport const createObjectSplitter = (\n  specialProps: string | string[] | ((prop: string) => boolean),\n) => {\n  const propsSet = new Set(\n    isString(specialProps)\n      ? specialProps.split(',')\n      : isArray(specialProps)\n      ? specialProps\n      : [],\n  );\n\n  const has = isFunction(specialProps)\n    ? specialProps\n    : (prop: string) => propsSet.has(prop);\n\n  return <T>(o: Record<string, T>): [Record<string, T>, Record<string, T>, number] => {\n    const keys = Object.keys(o);\n    if (keys.every((k) => !has(k))) return [{}, o, 0];\n\n    let count = 0;\n    const left: Record<string, T> = {};\n    const right: Record<string, T> = {};\n\n    for (const key of keys) {\n      if (has(key)) {\n        left[key] = o[key];\n        count++;\n      } else {\n        right[key] = o[key];\n      }\n    }\n\n    return [left, right, count];\n  };\n};\n\nexport const cached = <R>(fn: (param: string) => R): ((param: string) => R) => {\n  const cacheStore: Record<string, any> = {};\n  return function (this: unknown, param: string) {\n    return param in cacheStore\n      ? cacheStore[param]\n      : (cacheStore[param] = fn.call(this, param));\n  };\n};\n","import type {\n  IPublicTypeJSExpression,\n  IPublicTypeJSFunction,\n  IPublicTypeJSSlot,\n  IPublicTypeI18nData,\n  IPublicTypeNodeSchema,\n  IPublicTypeSlotSchema,\n  IPublicTypeComponentSchema,\n  IPublicTypeContainerSchema,\n} from '@alilc/lowcode-types';\nimport { toString } from './misc';\n\nexport type ESModule = {\n  __esModule: true;\n  default: any;\n};\n\nexport function isNil<T>(val: T | null | undefined): val is null | undefined {\n  return val === null || val === undefined;\n}\n\nexport function isUndefined(val: unknown): val is undefined {\n  return val === undefined;\n}\n\nexport function isString(val: unknown): val is string {\n  return typeof val === 'string';\n}\n\nexport function isObject(val: unknown): val is Record<string, unknown> {\n  return !isNil(val) && typeof val === 'object';\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n  return typeof value === 'boolean';\n}\n\nexport function isArray(val: any): val is any[] {\n  return Array.isArray(val);\n}\n\nexport function isFunction(val: unknown): val is (...args: any[]) => any {\n  return typeof val === 'function';\n}\n\nexport function isPromise(val: unknown): val is Promise<unknown> {\n  return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n}\n\nexport function isPlainObject(val: unknown): val is Record<string, unknown> {\n  return !isNil(val) && toString(val) === '[object Object]';\n}\n\nexport function isESModule<T>(obj: T | { default: T }): obj is ESModule {\n  return (\n    obj &&\n    (Reflect.get(obj, '__esModule') || Reflect.get(obj, Symbol.toStringTag) === 'Module')\n  );\n}\n\nexport function isCSSUrl(url: string): boolean {\n  return /\\.css$/.test(url);\n}\n\nexport function isElement(node: unknown): node is Element {\n  return isObject(node) && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function isJSFunction(val: unknown): val is IPublicTypeJSFunction {\n  return val\n    ? isObject(val) && (val.type === 'JSFunction' || val.extType === 'function')\n    : false;\n}\n\nexport function isJSSlot(val: unknown): val is IPublicTypeJSSlot {\n  return isObject(val) && val.type === 'JSSlot';\n}\n\nexport function isJSExpression(val: unknown): val is IPublicTypeJSExpression {\n  return isObject(val) && val.type === 'JSExpression' && val.extType !== 'function';\n}\n\nexport function isI18nData(val: unknown): val is IPublicTypeI18nData {\n  return isObject(val) && val.type === 'i18n';\n}\n\nexport function isDOMText(val: unknown): val is string {\n  return isString(val);\n}\n\nexport function isNodeSchema(data: any): data is IPublicTypeNodeSchema {\n  return data && data.componentName;\n}\n\nexport function isSlotSchema(data: any): data is IPublicTypeSlotSchema {\n  return isNodeSchema(data) && data.componentName === 'Slot';\n}\n\nexport function isComponentSchema(val: unknown): val is IPublicTypeComponentSchema {\n  return isObject(val) && val.componentName === 'Component';\n}\n\nexport function isContainerSchema(val: unknown): val is IPublicTypeContainerSchema {\n  return (\n    isNodeSchema(val) &&\n    (val.componentName === 'Block' ||\n      val.componentName === 'Page' ||\n      val.componentName === 'Component')\n  );\n}\n","import type {\n  IPublicTypeNpmInfo,\n  IPublicTypeComponentSchema,\n} from '@alilc/lowcode-types';\nimport { Component, DefineComponent, defineComponent, h } from 'vue';\nimport { isComponentSchema, isESModule, isFunction, isObject } from './check';\nimport { cached } from './misc';\n\nfunction isVueComponent(val: unknown): val is Component | DefineComponent {\n  if (isFunction(val)) return true;\n  if (isObject(val) && ('render' in val || 'setup' in val || 'template' in val)) {\n    return true;\n  }\n  return false;\n}\n\nconst generateHtmlComp = cached((library: string) => {\n  if (/^[a-z-]+$/.test(library)) {\n    return defineComponent((_, { attrs, slots }) => {\n      return () => h(library, attrs, slots);\n    });\n  }\n});\n\nexport function accessLibrary(library: string | Record<string, unknown>) {\n  if (typeof library !== 'string') {\n    return library;\n  }\n\n  return (window as any)[library] || generateHtmlComp(library);\n}\n\nexport function getSubComponent(library: any, paths: string[]) {\n  const l = paths.length;\n  if (l < 1 || !library) {\n    return library;\n  }\n  let i = 0;\n  let component: any;\n  while (i < l) {\n    const key = paths[i]!;\n    let ex: any;\n    try {\n      component = library[key];\n    } catch (e) {\n      ex = e;\n      component = null;\n    }\n    if (i === 0 && component == null && key === 'default') {\n      if (ex) {\n        return l === 1 ? library : null;\n      }\n      component = library;\n    } else if (component == null) {\n      return null;\n    }\n    library = component;\n    i++;\n  }\n  return component;\n}\n\nexport function findComponent(\n  libraryMap: Record<string, string>,\n  componentName: string,\n  npm?: IPublicTypeNpmInfo,\n) {\n  if (!npm) {\n    return accessLibrary(componentName);\n  }\n  const exportName = npm.exportName || npm.componentName || componentName;\n  const libraryName = libraryMap[npm.package] || exportName;\n  const library = accessLibrary(libraryName);\n  const paths = npm.exportName && npm.subName ? npm.subName.split('.') : [];\n  if (npm.destructuring) {\n    paths.unshift(exportName);\n  } else if (isESModule(library)) {\n    paths.unshift('default');\n  }\n  return getSubComponent(library, paths);\n}\n\nexport function buildComponents(\n  libraryMap: Record<string, string>,\n  componentsMap: Record<\n    string,\n    IPublicTypeNpmInfo | IPublicTypeComponentSchema | unknown\n  >,\n  createComponent?: (schema: IPublicTypeComponentSchema) => any,\n) {\n  const components: any = {};\n  Object.keys(componentsMap).forEach((componentName) => {\n    let component = componentsMap[componentName];\n    if (isComponentSchema(component)) {\n      if (createComponent) {\n        components[componentName] = createComponent(\n          component as IPublicTypeComponentSchema,\n        );\n      }\n    } else if (isVueComponent(component)) {\n      components[componentName] = component;\n    } else {\n      component = findComponent(\n        libraryMap,\n        componentName,\n        component as IPublicTypeNpmInfo,\n      );\n      if (component) {\n        components[componentName] = component;\n      }\n    }\n  });\n  return components;\n}\n","import type { IPublicTypeNpmInfo } from '@alilc/lowcode-types';\nimport { accessLibrary } from './build-components';\nimport { isJSFunction } from './check';\n\nexport interface UtilsNpmMetadata {\n  name: string;\n  type: 'npm';\n  content: IPublicTypeNpmInfo;\n}\n\nexport interface UtilsFunctionMetadata {\n  name: string;\n  type: 'function';\n  content: IPublicTypeNpmInfo | CallableFunction;\n}\n\nexport type UtilsMetadata = UtilsNpmMetadata | UtilsFunctionMetadata;\n\nexport function buildUtils(\n  libraryMap: Record<string, string>,\n  utilsMetadata: UtilsMetadata[],\n): Record<string, unknown> {\n  return utilsMetadata\n    .filter((meta) => meta && meta.name)\n    .reduce(\n      (utils, meta) => {\n        const { name, content, type } = meta;\n        if (type === 'npm') {\n          const { package: pkg, exportName, destructuring } = content ?? {};\n          if (libraryMap[pkg]) {\n            const library = accessLibrary(libraryMap[pkg]);\n            if (library) {\n              utils[name] = destructuring && exportName ? library[exportName] : library;\n            }\n          }\n        } else if (type === 'function') {\n          utils[name] = isJSFunction(content)\n            ? new Function(`return ${content.value}`)()\n            : meta.content;\n        }\n        return utils;\n      },\n      {} as Record<string, unknown>,\n    );\n}\n","export var AssetLevel = /*#__PURE__*/function (AssetLevel) {\n  AssetLevel[AssetLevel[\"Environment\"] = 1] = \"Environment\";\n  AssetLevel[AssetLevel[\"Library\"] = 2] = \"Library\";\n  AssetLevel[AssetLevel[\"Theme\"] = 3] = \"Theme\";\n  AssetLevel[AssetLevel[\"Runtime\"] = 4] = \"Runtime\";\n  AssetLevel[AssetLevel[\"Components\"] = 5] = \"Components\";\n  AssetLevel[AssetLevel[\"App\"] = 6] = \"App\";\n  return AssetLevel;\n}({});\nexport var AssetLevels = [AssetLevel.Environment, AssetLevel.Library, AssetLevel.Theme, AssetLevel.Runtime, AssetLevel.Components, AssetLevel.App];\nexport var AssetType = /*#__PURE__*/function (AssetType) {\n  AssetType[\"JSUrl\"] = \"jsUrl\";\n  AssetType[\"CSSUrl\"] = \"cssUrl\";\n  AssetType[\"CSSText\"] = \"cssText\";\n  AssetType[\"JSText\"] = \"jsText\";\n  AssetType[\"Bundle\"] = \"bundle\";\n  return AssetType;\n}({});","export interface Defer<T = unknown> {\n  resolve(value?: T | PromiseLike<T>): void;\n  reject(reason?: any): void;\n  promise(): Promise<T>;\n}\n\nexport function createDefer<T = unknown>(): Defer<T> {\n  const r: any = {};\n  const promise = new Promise<T>((resolve, reject) => {\n    r.resolve = resolve;\n    r.reject = reject;\n  });\n\n  r.promise = () => promise;\n\n  return r;\n}\n","import { createDefer } from './create-defer';\n\nexport function evaluate(script: string) {\n  const scriptEl = document.createElement('script');\n  scriptEl.text = script;\n  document.head.appendChild(scriptEl);\n  document.head.removeChild(scriptEl);\n}\n\nexport function load(url: string) {\n  const node: any = document.createElement('script');\n\n  node.onload = onload;\n  node.onerror = onload;\n\n  const i = createDefer();\n\n  function onload(e: any) {\n    node.onload = null;\n    node.onerror = null;\n    if (e.type === 'load') {\n      i.resolve();\n    } else {\n      i.reject();\n    }\n  }\n\n  node.src = url;\n  node.async = false;\n\n  document.head.appendChild(node);\n\n  return i.promise();\n}\n\nexport function evaluateExpression(expr: string) {\n  return new Function(expr)();\n}\n\nexport function newFunction(args: string, code: string) {\n  try {\n    return new Function(args, code);\n  } catch (e) {\n    console.warn('Caught error, Cant init func');\n    return null;\n  }\n}\n","/**\n * copy from https://github.com/alibaba/lowcode-engine/blob/main/packages/utils/src/asset.ts\n */\nimport type { Asset, AssetBundle, AssetItem, AssetList } from '@alilc/lowcode-types';\nimport { AssetLevel, AssetLevels, AssetType } from '@alilc/lowcode-types/es/assets';\nimport { isArray, isCSSUrl } from './check';\nimport { createDefer } from './create-defer';\nimport { evaluate, load } from './script';\n\nexport { AssetLevel, AssetLevels, AssetType };\n\nexport function isAssetItem(obj: any): obj is AssetItem {\n  return obj && !!obj.type;\n}\n\nexport function isAssetBundle(obj: any): obj is AssetBundle {\n  return obj && obj.type === AssetType.Bundle;\n}\n\nexport function assetItem(\n  type: AssetType,\n  content?: string | null,\n  level?: AssetLevel,\n  id?: string,\n): AssetItem | null {\n  return content ? { type, content, level, id } : null;\n}\n\nfunction parseAssetList(\n  scripts: any,\n  styles: any,\n  assets: AssetList,\n  level?: AssetLevel,\n) {\n  for (const asset of assets) {\n    parseAsset(scripts, styles, asset, level);\n  }\n}\n\nfunction parseAsset(\n  scripts: any,\n  styles: any,\n  asset: Asset | undefined | null,\n  level?: AssetLevel,\n) {\n  if (!asset) {\n    return;\n  }\n  if (isArray(asset)) {\n    return parseAssetList(scripts, styles, asset, level);\n  }\n\n  if (isAssetBundle(asset)) {\n    if (asset.assets) {\n      if (isArray(asset.assets)) {\n        parseAssetList(scripts, styles, asset.assets, asset.level || level);\n      } else {\n        parseAsset(scripts, styles, asset.assets, asset.level || level);\n      }\n      return;\n    }\n    return;\n  }\n\n  if (!isAssetItem(asset)) {\n    asset = assetItem(\n      isCSSUrl(asset) ? AssetType.CSSUrl : AssetType.JSUrl,\n      asset,\n      level,\n    )!;\n  }\n\n  let lv = asset.level || level;\n\n  if (!lv || AssetLevel[lv] == null) {\n    lv = AssetLevel.App;\n  }\n\n  asset.level = lv;\n  if (asset.type === AssetType.CSSUrl || asset.type == AssetType.CSSText) {\n    styles[lv].push(asset);\n  } else {\n    scripts[lv].push(asset);\n  }\n}\n\nexport class StylePoint {\n  private lastContent: string | undefined;\n\n  private lastUrl: string | undefined;\n\n  private placeholder: Node;\n\n  constructor(\n    public readonly level: number,\n    public readonly id?: string,\n  ) {\n    let placeholder: Node | null = null;\n    if (id) {\n      placeholder = document.head.querySelector(`style[data-id=\"${id}\"]`);\n    }\n    if (!placeholder) {\n      placeholder = document.createTextNode('');\n      const meta = document.head.querySelector(`meta[level=\"${level}\"]`);\n      if (meta) {\n        document.head.insertBefore(placeholder, meta);\n      } else {\n        document.head.appendChild(placeholder);\n      }\n    }\n    this.placeholder = placeholder;\n  }\n\n  applyText(content: string) {\n    if (this.lastContent === content) {\n      return;\n    }\n    this.lastContent = content;\n    this.lastUrl = undefined;\n    const element = document.createElement('style');\n    element.setAttribute('type', 'text/css');\n    if (this.id) {\n      element.setAttribute('data-id', this.id);\n    }\n    element.appendChild(document.createTextNode(content));\n    document.head.insertBefore(\n      element,\n      this.placeholder.parentNode === document.head ? this.placeholder.nextSibling : null,\n    );\n    document.head.removeChild(this.placeholder);\n    this.placeholder = element;\n  }\n\n  applyUrl(url: string) {\n    if (this.lastUrl === url) {\n      return;\n    }\n    this.lastContent = undefined;\n    this.lastUrl = url;\n    const element = document.createElement('link');\n    element.onload = onload;\n    element.onerror = onload;\n\n    const i = createDefer();\n    function onload(e: any) {\n      element.onload = null;\n      element.onerror = null;\n      if (e.type === 'load') {\n        i.resolve();\n      } else {\n        i.reject();\n      }\n    }\n\n    element.href = url;\n    element.rel = 'stylesheet';\n    if (this.id) {\n      element.setAttribute('data-id', this.id);\n    }\n    document.head.insertBefore(\n      element,\n      this.placeholder.parentNode === document.head ? this.placeholder.nextSibling : null,\n    );\n    document.head.removeChild(this.placeholder);\n    this.placeholder = element;\n    return i.promise();\n  }\n}\n\nexport class AssetLoader {\n  async load(asset: Asset) {\n    const styles: any = {};\n    const scripts: any = {};\n    AssetLevels.forEach((lv) => {\n      styles[lv] = [];\n      scripts[lv] = [];\n    });\n    parseAsset(scripts, styles, asset);\n    const styleQueue: AssetItem[] = styles[AssetLevel.Environment].concat(\n      styles[AssetLevel.Library],\n      styles[AssetLevel.Theme],\n      styles[AssetLevel.Runtime],\n      styles[AssetLevel.App],\n    );\n    const scriptQueue: AssetItem[] = scripts[AssetLevel.Environment].concat(\n      scripts[AssetLevel.Library],\n      scripts[AssetLevel.Theme],\n      scripts[AssetLevel.Runtime],\n      scripts[AssetLevel.App],\n    );\n    await Promise.all(\n      styleQueue.map(({ content, level, type, id }) =>\n        this.loadStyle(content, level!, type === AssetType.CSSUrl, id),\n      ),\n    );\n    await Promise.all(\n      scriptQueue.map(({ content, type }) =>\n        this.loadScript(content, type === AssetType.JSUrl),\n      ),\n    );\n  }\n\n  private stylePoints = new Map<string, StylePoint>();\n\n  private loadStyle(\n    content: string | undefined | null,\n    level: AssetLevel,\n    isUrl?: boolean,\n    id?: string,\n  ) {\n    if (!content) {\n      return;\n    }\n    let point: StylePoint | undefined;\n    if (id) {\n      point = this.stylePoints.get(id);\n      if (!point) {\n        point = new StylePoint(level, id);\n        this.stylePoints.set(id, point);\n      }\n    } else {\n      point = new StylePoint(level);\n    }\n    return isUrl ? point.applyUrl(content) : point.applyText(content);\n  }\n\n  private loadScript(content: string | undefined | null, isUrl?: boolean) {\n    if (!content) {\n      return;\n    }\n    return isUrl ? load(content) : evaluate(content);\n  }\n\n  async loadAsyncLibrary(asyncLibraryMap: Record<string, any>) {\n    const promiseList: any[] = [];\n    const libraryKeyList: any[] = [];\n    for (const key in asyncLibraryMap) {\n      if (asyncLibraryMap[key].async) {\n        promiseList.push(window[asyncLibraryMap[key].library]);\n        libraryKeyList.push(asyncLibraryMap[key].library);\n      }\n    }\n    await Promise.all(promiseList).then((mods) => {\n      if (mods.length > 0) {\n        mods.map((item, index) => {\n          window[libraryKeyList[index]] = item;\n          return item;\n        });\n      }\n    });\n  }\n}\n","import type { IPublicApiProject } from '@alilc/lowcode-types';\nimport { assetItem, AssetType } from './asset';\n\nexport function setupHostEnvironment(\n  project: IPublicApiProject,\n  vueRuntimeUrl: string,\n): void {\n  project.onSimulatorHostReady((host) => {\n    host.set('environment', [\n      assetItem(\n        AssetType.JSText,\n        'window.__is_simulator_env__=true;window.__VUE_DEVTOOLS_GLOBAL_HOOK__=window.parent.__VUE_DEVTOOLS_GLOBAL_HOOK__;',\n      ),\n      assetItem(AssetType.JSUrl, vueRuntimeUrl, undefined, 'vue'),\n    ]);\n  });\n}\n","/**\n * 将驼峰命名法的字符串转化为中划线连接的字符串\n *\n * @example\n *\n * const res = kebabCase('userName'); // user-name\n *\n * @param str - 被转换的字符串\n */\nexport function kebabCase(str: string): string {\n  if (!str) return str;\n  return str.replace(/[A-Z]/g, (c, i) => {\n    const suf = i > 0 ? '-' : '';\n    return suf + c.toLocaleLowerCase();\n  });\n}\n\n/**\n * 将中划线连接的字符串转化为小驼峰命名法\n *\n * @example\n *\n * const res = camelCase('user-name'); // userName\n *\n * @param str - 被转换的字符串\n */\nexport function camelCase(str: string): string {\n  if (!str) return str;\n  return str.replace(/-[a-zA-Z]/g, (c) => {\n    return c.charAt(1).toLocaleUpperCase();\n  });\n}\n\n/**\n * 将中划线连接的字符串转化为大驼峰命名法\n *\n * @example\n *\n * const res = pascalCase('user-name'); // UserName\n *\n * @param str - 被转换的字符串\n */\nexport function pascalCase(str: string): string {\n  const res = camelCase(str);\n  return res && res.charAt(0).toLocaleUpperCase() + res.slice(1);\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.TransformStage = exports.IPublicEnumTransformStage = void 0;\nvar IPublicEnumTransformStage = /*#__PURE__*/function (IPublicEnumTransformStage) {\n  IPublicEnumTransformStage[\"Render\"] = \"render\";\n  IPublicEnumTransformStage[\"Serilize\"] = \"serilize\";\n  IPublicEnumTransformStage[\"Save\"] = \"save\";\n  IPublicEnumTransformStage[\"Clone\"] = \"clone\";\n  IPublicEnumTransformStage[\"Init\"] = \"init\";\n  IPublicEnumTransformStage[\"Upgrade\"] = \"upgrade\";\n  return IPublicEnumTransformStage;\n}({});\n/**\n * @deprecated use IPublicEnumTransformStage instead\n */\nexports.IPublicEnumTransformStage = IPublicEnumTransformStage;\nvar TransformStage = /*#__PURE__*/function (TransformStage) {\n  TransformStage[\"Render\"] = \"render\";\n  TransformStage[\"Serilize\"] = \"serilize\";\n  TransformStage[\"Save\"] = \"save\";\n  TransformStage[\"Clone\"] = \"clone\";\n  TransformStage[\"Init\"] = \"init\";\n  TransformStage[\"Upgrade\"] = \"upgrade\";\n  return TransformStage;\n}({});\nexports.TransformStage = TransformStage;","import type { IPublicTypeNodeSchema } from '@alilc/lowcode-types';\nimport { IPublicEnumTransformStage } from '@alilc/lowcode-types/lib/shell/enum/transform-stage';\nimport { isFunction, isObject } from './check';\n\nexport function exportSchema<T extends IPublicTypeNodeSchema>(node: unknown): T {\n  if (isObject(node)) {\n    if (isFunction(node.export)) {\n      return node.export(IPublicEnumTransformStage.Render);\n    } else if (isFunction(node.exportSchema)) {\n      return node.exportSchema(IPublicEnumTransformStage.Render);\n    }\n  }\n  return null as unknown as T;\n}\n"],"names":["AssetLevel","AssetType","IPublicEnumTransformStage"],"mappings":"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","x_google_ignoreList":[4,10]}