@kdesigner/core 0.0.0-alpha.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["parseUrlParams","match","System","shallowRef","toRaw","LRUCache","cloneDeep","isString","isNumber","isInteger","isBoolean","isPlainObject","isArray","parseUrlParams","debug","ref","supportDebug","omit","isPromise","isArray","isObject","isString","isPlainObject","isString","isArray","Nexo"],"sources":["../src/adapter/link.ts","../src/adapter/index.ts","../../../node_modules/.pnpm/systemjs@6.15.1/node_modules/systemjs/dist/system.js","../src/loader/module.ts","../src/shared/constants.ts","../src/shared/utils.ts","../src/shared/cache.ts","../src/shared/index.ts","../src/api/cache.ts","../src/graphql/gql.ts","../src/ajax/attachmentAdpator.ts","../src/ajax/ajax.ts","../src/debug/debug.ts","../src/api/page-api.ts","../src/api/user-api.ts","../src/page/processor.ts","../src/page/action.ts","../src/page/registry.ts","../src/page/transform.ts","../src/page/page.ts","../src/scope.ts","../src/schema-type.ts","../src/lib.ts","../src/index.ts"],"sourcesContent":["import { parseUrlParams } from '@kdesigner/shared'\nimport { match } from 'path-to-regexp'\nimport qs from 'qs'\nimport type { Router } from 'vue-router'\n\nexport function default_jumpTo(router: Router, to: string) {\n if (to.startsWith('open://')) {\n openWindow(to.substring('open://'.length))\n return\n }\n\n if (to == '__forward') {\n router.forward()\n return\n }\n\n if (to == '__back') {\n router.back()\n return\n }\n\n function go(to: any, replace: boolean) {\n if (replace) {\n router.push(to)\n } else {\n router.replace(to)\n }\n }\n\n const replace = to.startsWith('replace://')\n if (replace) {\n to = to.substring('replace://'.length)\n }\n if (isPageUrl(to)) {\n const pos = to.indexOf('?')\n const query = pos > 0 ? to.substring(pos + 1) : null\n const data = query ? parseUrlParams(query) : null\n const page = { name: 'jsonPage', params: { path: to, data } }\n go(page as any, replace)\n } else {\n go(to, replace)\n }\n}\n\nexport function openWindow(\n url: string,\n opt?: { target?: string; noopener?: boolean; noreferrer?: boolean }\n) {\n const { target = '__blank', noopener = true, noreferrer = true } = opt || {}\n const feature: string[] = []\n\n if (noopener) feature.push('noopener=yes')\n if (noreferrer) feature.push('noreferrer=yes')\n\n window.open(url, target, feature.join(','))\n}\n\nexport function isPageUrl(url: string) {\n const pos = url.indexOf('?')\n if (pos > 0) url = url.substring(0, pos)\n\n return url.endsWith('.page.json5') || url.endsWith('.page.yaml') || url.endsWith('.page.json')\n}\n\nfunction normalizeLink(to: string) {\n if (to.startsWith('/api/')) {\n return to\n }\n to = to || ''\n const location = window.location\n if (to && to[0] === '#') {\n to = location.pathname + location.search + to\n } else if (to && to[0] === '?') {\n to = location.pathname + to\n }\n const idx = to.indexOf('?')\n const idx2 = to.indexOf('#')\n let pathname = ~idx ? to.substring(0, idx) : ~idx2 ? to.substring(0, idx2) : to\n const search = ~idx ? to.substring(idx, ~idx2 ? idx2 : undefined) : ''\n const hash = ~idx2 ? to.substring(idx2) : ''\n if (!pathname) {\n pathname = location.pathname\n } else if (pathname[0] != '/' && !/^https?:\\/\\//.test(pathname)) {\n const relativeBase = location.pathname\n const paths = relativeBase.split('/')\n paths.pop()\n let m\n while ((m = /^\\.\\.?\\//.exec(pathname))) {\n if (m[0] === '../') {\n paths.pop()\n }\n pathname = pathname.substring(m[0].length)\n }\n pathname = paths.concat(pathname).join('/')\n }\n return pathname + search + hash\n}\n\nexport function default_updateLocation(to: any, replace: boolean) {\n if (to === 'goBack') {\n return window.history.back()\n }\n\n if (replace && window.history.replaceState) {\n window.history.replaceState('', document.title, to)\n return\n }\n\n location.href = normalizeLink(to)\n}\n\nexport function default_isCurrentUrl(to: string, ctx?: any) {\n const link = normalizeLink(to)\n const location = window.location\n let pathname = link\n let search = ''\n const idx = link.indexOf('?')\n if (~idx) {\n pathname = link.substring(0, idx)\n search = link.substring(idx)\n }\n\n if (search) {\n if (pathname !== location.pathname || !location.search) {\n return false\n }\n\n const query = qs.parse(search.substring(1))\n const currentQuery = qs.parse(location.search.substring(1))\n\n return Object.keys(query).every((key) => query[key] === currentQuery[key])\n } else if (pathname === location.pathname) {\n return true\n } else if (!~pathname.indexOf('http') && ~pathname.indexOf(':')) {\n return match(link, {\n decode: decodeURIComponent,\n strict: ctx?.strict ?? true\n } as any)(location.pathname)\n }\n\n return false\n}\n","import type { Pinia, Store } from 'pinia'\nimport type { Router } from 'vue-router'\n\nimport type { FetcherResult, FetcherRequest } from '@/types'\n\nimport { default_jumpTo, default_isCurrentUrl, default_updateLocation } from './link'\n\nexport * from './link'\n\nexport interface Settings {\n apiUrl: string\n}\n\nexport interface I18nOperation {\n t(msg: string): string\n}\n\nexport type ToastLevel = 'info' | 'success' | 'error' | 'warning'\nexport interface ToastConf {\n position?:\n | 'top-right'\n | 'top-center'\n | 'top-left'\n | 'bottom-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'center'\n closeButton: boolean\n showIcon?: boolean\n timeout?: number\n errorTimeout?: number\n className?: string\n items?: any[]\n useMobileUI?: boolean\n}\n\ninterface PlainObject {\n [propsName: string]: any\n}\n\n/**\n * nop-chaos对外部框架的依赖都集中在adapter对象中\n */\nconst adapter = {\n globalVersion: 'v3' as string,\n\n // 如果存放在localStorage中的数据需要升级,这里的版本号需要增加。\n // 从localStorage中读取缓存数据时会检查版本号,如果版本不一致,会调用configUpgrade函数来升级,缺省会丢弃原有配置\n configUpgrade(_configName: string, _version: number, _prevVersion: number, _config: any): any {\n return undefined\n },\n\n /**\n * 返回当前的locale\n */\n useLocale(): string {\n throw new Error('not-impl')\n },\n\n useI18n(): I18nOperation {\n throw new Error('not-impl')\n },\n\n usePinia(): Pinia {\n throw new Error('not-impl')\n },\n\n /**\n * 返回指定的Store\n */\n useStore(_name: string): Store {\n throw new Error('not-impl')\n },\n\n useRouter(): Router {\n throw new Error('not-impl')\n },\n\n useSettings(): Settings {\n return {\n apiUrl: ''\n }\n },\n\n /**\n * 返回当前的认证token\n */\n useAuthToken(): string {\n throw new Error('not-impl')\n },\n\n setAuthToken(_token?: string) {},\n\n isUserInRole(_role: string): boolean {\n throw new Error('not-impl')\n },\n\n useTenantId(): string {\n throw new Error('not-impl')\n },\n\n useAppId(): string {\n return 'nop-chaos'\n },\n\n /**\n * 自动退出时执行的回调\n */\n logout(_reason: string): void {\n throw new Error('not-impl')\n },\n\n /**\n * 根据组件名加载Vue组件\n */\n resolveVueComponent(_name: string): any {\n throw new Error('not-impl')\n },\n\n processRequest(request: any) {\n return request\n },\n\n processResponse(response: any) {\n return response\n },\n\n compileFunction(code: string, page: any): Function {\n return new Function('page', 'return ' + code).call(null, page)\n },\n\n jumpTo(to: string, _action?: any, _ctx?: object) {\n const router = adapter.useRouter()\n return default_jumpTo(router, to)\n },\n\n isCurrentUrl: default_isCurrentUrl,\n\n updateLocation: default_updateLocation,\n\n notify(_type: ToastLevel, _msg: any, _conf?: ToastConf): void {\n throw new Error('not-impl')\n },\n\n alert(_msg: string, _title?: string): Promise<void> {\n throw new Error('not-impl')\n },\n\n confirm(_msg: string, _title?: string): Promise<boolean> {\n throw new Error('not-impl')\n },\n\n dataMapping(\n _to: any,\n _from: PlainObject = {},\n _ignoreFunction: boolean | ((key: string, value: any) => boolean) = false,\n _convertKeyToPath?: boolean,\n _ignoreIfNotMatch = false\n ): any {\n throw new Error('not-impl')\n },\n\n fetchDict(_dictName: string, _options: FetcherRequest): Promise<FetcherResult> {\n throw new Error('not-impl')\n },\n\n fetchPageAndTransform(_pageName: string, _options: FetcherRequest): Promise<FetcherResult> {\n throw new Error('not-impl')\n },\n\n getPage(_pageUrl: string): Promise<any> {\n throw new Error('not-impl')\n }\n}\n\nexport function registerAdapter(data: Partial<typeof adapter>) {\n Object.assign(adapter, data)\n}\n\nexport function useAdapter() {\n return adapter\n}\n\nexport type AdapterType = typeof adapter\n","/*!\r\n * SystemJS 6.15.1\r\n */\r\n(function () {\r\n\r\n function errMsg(errCode, msg) {\r\n return (msg || \"\") + \" (SystemJS Error#\" + errCode + \" \" + \"https://github.com/systemjs/systemjs/blob/main/docs/errors.md#\" + errCode + \")\";\r\n }\r\n\r\n var hasSymbol = typeof Symbol !== 'undefined';\r\n var hasSelf = typeof self !== 'undefined';\r\n var hasDocument = typeof document !== 'undefined';\r\n\r\n var envGlobal = hasSelf ? self : global;\r\n\r\n var baseUrl;\r\n\r\n if (hasDocument) {\r\n var baseEl = document.querySelector('base[href]');\r\n if (baseEl)\r\n baseUrl = baseEl.href;\r\n }\r\n\r\n if (!baseUrl && typeof location !== 'undefined') {\r\n baseUrl = location.href.split('#')[0].split('?')[0];\r\n var lastSepIndex = baseUrl.lastIndexOf('/');\r\n if (lastSepIndex !== -1)\r\n baseUrl = baseUrl.slice(0, lastSepIndex + 1);\r\n }\r\n\r\n var backslashRegEx = /\\\\/g;\r\n function resolveIfNotPlainOrUrl (relUrl, parentUrl) {\r\n if (relUrl.indexOf('\\\\') !== -1)\r\n relUrl = relUrl.replace(backslashRegEx, '/');\r\n // protocol-relative\r\n if (relUrl[0] === '/' && relUrl[1] === '/') {\r\n return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl;\r\n }\r\n // relative-url\r\n else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) ||\r\n relUrl.length === 1 && (relUrl += '/')) ||\r\n relUrl[0] === '/') {\r\n var parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);\r\n // Disabled, but these cases will give inconsistent results for deep backtracking\r\n //if (parentUrl[parentProtocol.length] !== '/')\r\n // throw Error('Cannot resolve');\r\n // read pathname from parent URL\r\n // pathname taken to be part after leading \"/\"\r\n var pathname;\r\n if (parentUrl[parentProtocol.length + 1] === '/') {\r\n // resolving to a :// so we need to read out the auth and host\r\n if (parentProtocol !== 'file:') {\r\n pathname = parentUrl.slice(parentProtocol.length + 2);\r\n pathname = pathname.slice(pathname.indexOf('/') + 1);\r\n }\r\n else {\r\n pathname = parentUrl.slice(8);\r\n }\r\n }\r\n else {\r\n // resolving to :/ so pathname is the /... part\r\n pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/'));\r\n }\r\n\r\n if (relUrl[0] === '/')\r\n return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;\r\n\r\n // join together and split for removal of .. and . segments\r\n // looping the string instead of anything fancy for perf reasons\r\n // '../../../../../z' resolved to 'x/y' is just 'z'\r\n var segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;\r\n\r\n var output = [];\r\n var segmentIndex = -1;\r\n for (var i = 0; i < segmented.length; i++) {\r\n // busy reading a segment - only terminate on '/'\r\n if (segmentIndex !== -1) {\r\n if (segmented[i] === '/') {\r\n output.push(segmented.slice(segmentIndex, i + 1));\r\n segmentIndex = -1;\r\n }\r\n }\r\n\r\n // new segment - check if it is relative\r\n else if (segmented[i] === '.') {\r\n // ../ segment\r\n if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) {\r\n output.pop();\r\n i += 2;\r\n }\r\n // ./ segment\r\n else if (segmented[i + 1] === '/' || i + 1 === segmented.length) {\r\n i += 1;\r\n }\r\n else {\r\n // the start of a new segment as below\r\n segmentIndex = i;\r\n }\r\n }\r\n // it is the start of a new segment\r\n else {\r\n segmentIndex = i;\r\n }\r\n }\r\n // finish reading out the last segment\r\n if (segmentIndex !== -1)\r\n output.push(segmented.slice(segmentIndex));\r\n return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join('');\r\n }\r\n }\r\n\r\n /*\r\n * Import maps implementation\r\n *\r\n * To make lookups fast we pre-resolve the entire import map\r\n * and then match based on backtracked hash lookups\r\n *\r\n */\r\n\r\n function resolveUrl (relUrl, parentUrl) {\r\n return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (relUrl.indexOf(':') !== -1 ? relUrl : resolveIfNotPlainOrUrl('./' + relUrl, parentUrl));\r\n }\r\n\r\n function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap, parentUrl) {\r\n for (var p in packages) {\r\n var resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;\r\n var rhs = packages[p];\r\n // package fallbacks not currently supported\r\n if (typeof rhs !== 'string')\r\n continue;\r\n var mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(rhs, baseUrl) || rhs, parentUrl);\r\n if (!mapped) {\r\n targetWarning('W1', p, rhs, 'bare specifier did not resolve');\r\n }\r\n else\r\n outPackages[resolvedLhs] = mapped;\r\n }\r\n }\r\n\r\n function resolveAndComposeImportMap (json, baseUrl, outMap) {\r\n if (json.imports)\r\n resolveAndComposePackages(json.imports, outMap.imports, baseUrl, outMap, null);\r\n\r\n var u;\r\n for (u in json.scopes || {}) {\r\n var resolvedScope = resolveUrl(u, baseUrl);\r\n resolveAndComposePackages(json.scopes[u], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, outMap, resolvedScope);\r\n }\r\n\r\n for (u in json.depcache || {})\r\n outMap.depcache[resolveUrl(u, baseUrl)] = json.depcache[u];\r\n \r\n for (u in json.integrity || {})\r\n outMap.integrity[resolveUrl(u, baseUrl)] = json.integrity[u];\r\n }\r\n\r\n function getMatch (path, matchObj) {\r\n if (matchObj[path])\r\n return path;\r\n var sepIndex = path.length;\r\n do {\r\n var segment = path.slice(0, sepIndex + 1);\r\n if (segment in matchObj)\r\n return segment;\r\n } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1)\r\n }\r\n\r\n function applyPackages (id, packages) {\r\n var pkgName = getMatch(id, packages);\r\n if (pkgName) {\r\n var pkg = packages[pkgName];\r\n if (pkg === null) return;\r\n if (id.length > pkgName.length && pkg[pkg.length - 1] !== '/') {\r\n targetWarning('W2', pkgName, pkg, \"should have a trailing '/'\");\r\n }\r\n else\r\n return pkg + id.slice(pkgName.length);\r\n }\r\n }\r\n\r\n function targetWarning (code, match, target, msg) {\r\n console.warn(errMsg(code, \"Package target \" + msg + \", resolving target '\" + target + \"' for \" + match));\r\n }\r\n\r\n function resolveImportMap (importMap, resolvedOrPlain, parentUrl) {\r\n var scopes = importMap.scopes;\r\n var scopeUrl = parentUrl && getMatch(parentUrl, scopes);\r\n while (scopeUrl) {\r\n var packageResolution = applyPackages(resolvedOrPlain, scopes[scopeUrl]);\r\n if (packageResolution)\r\n return packageResolution;\r\n scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), scopes);\r\n }\r\n return applyPackages(resolvedOrPlain, importMap.imports) || resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain;\r\n }\r\n\r\n /*\r\n * SystemJS Core\r\n *\r\n * Provides\r\n * - System.import\r\n * - System.register support for\r\n * live bindings, function hoisting through circular references,\r\n * reexports, dynamic import, import.meta.url, top-level await\r\n * - System.getRegister to get the registration\r\n * - Symbol.toStringTag support in Module objects\r\n * - Hookable System.createContext to customize import.meta\r\n * - System.onload(err, id, deps) handler for tracing / hot-reloading\r\n *\r\n * Core comes with no System.prototype.resolve or\r\n * System.prototype.instantiate implementations\r\n */\r\n\r\n var toStringTag$1 = hasSymbol && Symbol.toStringTag;\r\n var REGISTRY = hasSymbol ? Symbol() : '@';\r\n\r\n function SystemJS () {\r\n this[REGISTRY] = {};\r\n }\r\n\r\n var systemJSPrototype = SystemJS.prototype;\r\n\r\n systemJSPrototype.import = function (id, parentUrl, meta) {\r\n var loader = this;\r\n (parentUrl && typeof parentUrl === 'object') && (meta = parentUrl, parentUrl = undefined);\r\n return Promise.resolve(loader.prepareImport())\r\n .then(function() {\r\n return loader.resolve(id, parentUrl, meta);\r\n })\r\n .then(function (id) {\r\n var load = getOrCreateLoad(loader, id, undefined, meta);\r\n return load.C || topLevelLoad(loader, load);\r\n });\r\n };\r\n\r\n // Hookable createContext function -> allowing eg custom import meta\r\n systemJSPrototype.createContext = function (parentId) {\r\n var loader = this;\r\n return {\r\n url: parentId,\r\n resolve: function (id, parentUrl) {\r\n return Promise.resolve(loader.resolve(id, parentUrl || parentId));\r\n }\r\n };\r\n };\r\n\r\n // onLoad(err, id, deps) provided for tracing / hot-reloading\r\n systemJSPrototype.onload = function () {};\r\n function loadToId (load) {\r\n return load.id;\r\n }\r\n function triggerOnload (loader, load, err, isErrSource) {\r\n loader.onload(err, load.id, load.d && load.d.map(loadToId), !!isErrSource);\r\n if (err)\r\n throw err;\r\n }\r\n\r\n var lastRegister;\r\n systemJSPrototype.register = function (deps, declare, metas) {\r\n lastRegister = [deps, declare, metas];\r\n };\r\n\r\n /*\r\n * getRegister provides the last anonymous System.register call\r\n */\r\n systemJSPrototype.getRegister = function () {\r\n var _lastRegister = lastRegister;\r\n lastRegister = undefined;\r\n return _lastRegister;\r\n };\r\n\r\n function getOrCreateLoad (loader, id, firstParentUrl, meta) {\r\n var load = loader[REGISTRY][id];\r\n if (load)\r\n return load;\r\n\r\n var importerSetters = [];\r\n var ns = Object.create(null);\r\n if (toStringTag$1)\r\n Object.defineProperty(ns, toStringTag$1, { value: 'Module' });\r\n\r\n var instantiatePromise = Promise.resolve()\r\n .then(function () {\r\n return loader.instantiate(id, firstParentUrl, meta);\r\n })\r\n .then(function (registration) {\r\n if (!registration)\r\n throw Error(errMsg(2, 'Module ' + id + ' did not instantiate'));\r\n function _export (name, value) {\r\n // note if we have hoisted exports (including reexports)\r\n load.h = true;\r\n var changed = false;\r\n if (typeof name === 'string') {\r\n if (!(name in ns) || ns[name] !== value) {\r\n ns[name] = value;\r\n changed = true;\r\n }\r\n }\r\n else {\r\n for (var p in name) {\r\n var value = name[p];\r\n if (!(p in ns) || ns[p] !== value) {\r\n ns[p] = value;\r\n changed = true;\r\n }\r\n }\r\n\r\n if (name && name.__esModule) {\r\n ns.__esModule = name.__esModule;\r\n }\r\n }\r\n if (changed)\r\n for (var i = 0; i < importerSetters.length; i++) {\r\n var setter = importerSetters[i];\r\n if (setter) setter(ns);\r\n }\r\n return value;\r\n }\r\n var declared = registration[1](_export, registration[1].length === 2 ? {\r\n import: function (importId, meta) {\r\n return loader.import(importId, id, meta);\r\n },\r\n meta: loader.createContext(id)\r\n } : undefined);\r\n load.e = declared.execute || function () {};\r\n return [registration[0], declared.setters || [], registration[2] || []];\r\n }, function (err) {\r\n load.e = null;\r\n load.er = err;\r\n triggerOnload(loader, load, err, true);\r\n throw err;\r\n });\r\n\r\n var linkPromise = instantiatePromise\r\n .then(function (instantiation) {\r\n return Promise.all(instantiation[0].map(function (dep, i) {\r\n var setter = instantiation[1][i];\r\n var meta = instantiation[2][i];\r\n return Promise.resolve(loader.resolve(dep, id))\r\n .then(function (depId) {\r\n var depLoad = getOrCreateLoad(loader, depId, id, meta);\r\n // depLoad.I may be undefined for already-evaluated\r\n return Promise.resolve(depLoad.I)\r\n .then(function () {\r\n if (setter) {\r\n depLoad.i.push(setter);\r\n // only run early setters when there are hoisted exports of that module\r\n // the timing works here as pending hoisted export calls will trigger through importerSetters\r\n if (depLoad.h || !depLoad.I)\r\n setter(depLoad.n);\r\n }\r\n return depLoad;\r\n });\r\n });\r\n }))\r\n .then(function (depLoads) {\r\n load.d = depLoads;\r\n });\r\n });\r\n\r\n // Capital letter = a promise function\r\n return load = loader[REGISTRY][id] = {\r\n id: id,\r\n // importerSetters, the setters functions registered to this dependency\r\n // we retain this to add more later\r\n i: importerSetters,\r\n // module namespace object\r\n n: ns,\r\n // extra module information for import assertion\r\n // shape like: { assert: { type: 'xyz' } }\r\n m: meta,\r\n\r\n // instantiate\r\n I: instantiatePromise,\r\n // link\r\n L: linkPromise,\r\n // whether it has hoisted exports\r\n h: false,\r\n\r\n // On instantiate completion we have populated:\r\n // dependency load records\r\n d: undefined,\r\n // execution function\r\n e: undefined,\r\n\r\n // On execution we have populated:\r\n // the execution error if any\r\n er: undefined,\r\n // in the case of TLA, the execution promise\r\n E: undefined,\r\n\r\n // On execution, L, I, E cleared\r\n\r\n // Promise for top-level completion\r\n C: undefined,\r\n\r\n // parent instantiator / executor\r\n p: undefined\r\n };\r\n }\r\n\r\n function instantiateAll (loader, load, parent, loaded) {\r\n if (!loaded[load.id]) {\r\n loaded[load.id] = true;\r\n // load.L may be undefined for already-instantiated\r\n return Promise.resolve(load.L)\r\n .then(function () {\r\n if (!load.p || load.p.e === null)\r\n load.p = parent;\r\n return Promise.all(load.d.map(function (dep) {\r\n return instantiateAll(loader, dep, parent, loaded);\r\n }));\r\n })\r\n .catch(function (err) {\r\n if (load.er)\r\n throw err;\r\n load.e = null;\r\n triggerOnload(loader, load, err, false);\r\n throw err;\r\n });\r\n }\r\n }\r\n\r\n function topLevelLoad (loader, load) {\r\n return load.C = instantiateAll(loader, load, load, {})\r\n .then(function () {\r\n return postOrderExec(loader, load, {});\r\n })\r\n .then(function () {\r\n return load.n;\r\n });\r\n }\r\n\r\n // the closest we can get to call(undefined)\r\n var nullContext = Object.freeze(Object.create(null));\r\n\r\n // returns a promise if and only if a top-level await subgraph\r\n // throws on sync errors\r\n function postOrderExec (loader, load, seen) {\r\n if (seen[load.id])\r\n return;\r\n seen[load.id] = true;\r\n\r\n if (!load.e) {\r\n if (load.er)\r\n throw load.er;\r\n if (load.E)\r\n return load.E;\r\n return;\r\n }\r\n\r\n // From here we're about to execute the load.\r\n // Because the execution may be async, we pop the `load.e` first.\r\n // So `load.e === null` always means the load has been executed or is executing.\r\n // To inspect the state:\r\n // - If `load.er` is truthy, the execution has threw or has been rejected;\r\n // - otherwise, either the `load.E` is a promise, means it's under async execution, or\r\n // - the `load.E` is null, means the load has completed the execution or has been async resolved.\r\n var exec = load.e;\r\n load.e = null;\r\n\r\n // deps execute first, unless circular\r\n var depLoadPromises;\r\n load.d.forEach(function (depLoad) {\r\n try {\r\n var depLoadPromise = postOrderExec(loader, depLoad, seen);\r\n if (depLoadPromise)\r\n (depLoadPromises = depLoadPromises || []).push(depLoadPromise);\r\n }\r\n catch (err) {\r\n load.er = err;\r\n triggerOnload(loader, load, err, false);\r\n throw err;\r\n }\r\n });\r\n if (depLoadPromises)\r\n return Promise.all(depLoadPromises).then(doExec);\r\n\r\n return doExec();\r\n\r\n function doExec () {\r\n try {\r\n var execPromise = exec.call(nullContext);\r\n if (execPromise) {\r\n execPromise = execPromise.then(function () {\r\n load.C = load.n;\r\n load.E = null; // indicates completion\r\n if (!false) triggerOnload(loader, load, null, true);\r\n }, function (err) {\r\n load.er = err;\r\n load.E = null;\r\n if (!false) triggerOnload(loader, load, err, true);\r\n throw err;\r\n });\r\n return load.E = execPromise;\r\n }\r\n // (should be a promise, but a minify optimization to leave out Promise.resolve)\r\n load.C = load.n;\r\n load.L = load.I = undefined;\r\n }\r\n catch (err) {\r\n load.er = err;\r\n throw err;\r\n }\r\n finally {\r\n triggerOnload(loader, load, load.er, true);\r\n }\r\n }\r\n }\r\n\r\n envGlobal.System = new SystemJS();\r\n\r\n /*\r\n * SystemJS browser attachments for script and import map processing\r\n */\r\n\r\n var importMapPromise = Promise.resolve();\r\n var importMap = { imports: {}, scopes: {}, depcache: {}, integrity: {} };\r\n\r\n // Scripts are processed immediately, on the first System.import, and on DOMReady.\r\n // Import map scripts are processed only once (by being marked) and in order for each phase.\r\n // This is to avoid using DOM mutation observers in core, although that would be an alternative.\r\n var processFirst = hasDocument;\r\n systemJSPrototype.prepareImport = function (doProcessScripts) {\r\n if (processFirst || doProcessScripts) {\r\n processScripts();\r\n processFirst = false;\r\n }\r\n return importMapPromise;\r\n };\r\n\r\n systemJSPrototype.getImportMap = function () {\r\n return JSON.parse(JSON.stringify(importMap));\r\n };\r\n\r\n if (hasDocument) {\r\n processScripts();\r\n window.addEventListener('DOMContentLoaded', processScripts);\r\n }\r\n systemJSPrototype.addImportMap = function (newMap, mapBase) {\r\n resolveAndComposeImportMap(newMap, mapBase || baseUrl, importMap);\r\n };\r\n\r\n function processScripts () {\r\n [].forEach.call(document.querySelectorAll('script'), function (script) {\r\n if (script.sp) // sp marker = systemjs processed\r\n return;\r\n // TODO: deprecate systemjs-module in next major now that we have auto import\r\n if (script.type === 'systemjs-module') {\r\n script.sp = true;\r\n if (!script.src)\r\n return;\r\n System.import(script.src.slice(0, 7) === 'import:' ? script.src.slice(7) : resolveUrl(script.src, baseUrl)).catch(function (e) {\r\n // if there is a script load error, dispatch an \"error\" event\r\n // on the script tag.\r\n if (e.message.indexOf('https://github.com/systemjs/systemjs/blob/main/docs/errors.md#3') > -1) {\r\n var event = document.createEvent('Event');\r\n event.initEvent('error', false, false);\r\n script.dispatchEvent(event);\r\n }\r\n return Promise.reject(e);\r\n });\r\n }\r\n else if (script.type === 'systemjs-importmap') {\r\n script.sp = true;\r\n // The passThrough property is for letting the module types fetch implementation know that this is not a SystemJS module.\r\n var fetchPromise = script.src ? (System.fetch || fetch)(script.src, { integrity: script.integrity, priority: script.fetchPriority, passThrough: true }).then(function (res) {\r\n if (!res.ok)\r\n throw Error('Invalid status code: ' + res.status);\r\n return res.text();\r\n }).catch(function (err) {\r\n err.message = errMsg('W4', 'Error fetching systemjs-import map ' + script.src) + '\\n' + err.message;\r\n console.warn(err);\r\n if (typeof script.onerror === 'function') {\r\n script.onerror();\r\n }\r\n return '{}';\r\n }) : script.innerHTML;\r\n importMapPromise = importMapPromise.then(function () {\r\n return fetchPromise;\r\n }).then(function (text) {\r\n extendImportMap(importMap, text, script.src || baseUrl);\r\n });\r\n }\r\n });\r\n }\r\n\r\n function extendImportMap (importMap, newMapText, newMapUrl) {\r\n var newMap = {};\r\n try {\r\n newMap = JSON.parse(newMapText);\r\n } catch (err) {\r\n console.warn(Error((errMsg('W5', \"systemjs-importmap contains invalid JSON\") + '\\n\\n' + newMapText + '\\n' )));\r\n }\r\n resolveAndComposeImportMap(newMap, newMapUrl, importMap);\r\n }\r\n\r\n /*\r\n * Script instantiation loading\r\n */\r\n\r\n if (hasDocument) {\r\n window.addEventListener('error', function (evt) {\r\n lastWindowErrorUrl = evt.filename;\r\n lastWindowError = evt.error;\r\n });\r\n var baseOrigin = location.origin;\r\n }\r\n\r\n systemJSPrototype.createScript = function (url) {\r\n var script = document.createElement('script');\r\n script.async = true;\r\n // Only add cross origin for actual cross origin\r\n // this is because Safari triggers for all\r\n // - https://bugs.webkit.org/show_bug.cgi?id=171566\r\n if (url.indexOf(baseOrigin + '/'))\r\n script.crossOrigin = 'anonymous';\r\n var integrity = importMap.integrity[url];\r\n if (integrity)\r\n script.integrity = integrity;\r\n script.src = url;\r\n return script;\r\n };\r\n\r\n // Auto imports -> script tags can be inlined directly for load phase\r\n var lastAutoImportDeps, lastAutoImportTimeout;\r\n var autoImportCandidates = {};\r\n var systemRegister = systemJSPrototype.register;\r\n systemJSPrototype.register = function (deps, declare) {\r\n if (hasDocument && document.readyState === 'loading' && typeof deps !== 'string') {\r\n var scripts = document.querySelectorAll('script[src]');\r\n var lastScript = scripts[scripts.length - 1];\r\n if (lastScript) {\r\n lastScript.src;\r\n lastAutoImportDeps = deps;\r\n // if this is already a System load, then the instantiate has already begun\r\n // so this re-import has no consequence\r\n var loader = this;\r\n lastAutoImportTimeout = setTimeout(function () {\r\n autoImportCandidates[lastScript.src] = [deps, declare];\r\n loader.import(lastScript.src);\r\n });\r\n }\r\n }\r\n else {\r\n lastAutoImportDeps = undefined;\r\n }\r\n return systemRegister.call(this, deps, declare);\r\n };\r\n\r\n var lastWindowErrorUrl, lastWindowError;\r\n systemJSPrototype.instantiate = function (url, firstParentUrl) {\r\n var autoImportRegistration = autoImportCandidates[url];\r\n if (autoImportRegistration) {\r\n delete autoImportCandidates[url];\r\n return autoImportRegistration;\r\n }\r\n var loader = this;\r\n return Promise.resolve(systemJSPrototype.createScript(url)).then(function (script) {\r\n return new Promise(function (resolve, reject) {\r\n script.addEventListener('error', function () {\r\n reject(Error(errMsg(3, 'Error loading ' + url + (firstParentUrl ? ' from ' + firstParentUrl : ''))));\r\n });\r\n script.addEventListener('load', function () {\r\n document.head.removeChild(script);\r\n // Note that if an error occurs that isn't caught by this if statement,\r\n // that getRegister will return null and a \"did not instantiate\" error will be thrown.\r\n if (lastWindowErrorUrl === url) {\r\n reject(lastWindowError);\r\n }\r\n else {\r\n var register = loader.getRegister(url);\r\n // Clear any auto import registration for dynamic import scripts during load\r\n if (register && register[0] === lastAutoImportDeps)\r\n clearTimeout(lastAutoImportTimeout);\r\n resolve(register);\r\n }\r\n });\r\n document.head.appendChild(script);\r\n });\r\n });\r\n };\r\n\r\n /*\r\n * Fetch loader, sets up shouldFetch and fetch hooks\r\n */\r\n systemJSPrototype.shouldFetch = function () {\r\n return false;\r\n };\r\n if (typeof fetch !== 'undefined')\r\n systemJSPrototype.fetch = fetch;\r\n\r\n var instantiate = systemJSPrototype.instantiate;\r\n var jsContentTypeRegEx = /^(text|application)\\/(x-)?javascript(;|$)/;\r\n systemJSPrototype.instantiate = function (url, parent, meta) {\r\n var loader = this;\r\n if (!this.shouldFetch(url, parent, meta))\r\n return instantiate.apply(this, arguments);\r\n return this.fetch(url, {\r\n credentials: 'same-origin',\r\n integrity: importMap.integrity[url],\r\n meta: meta,\r\n })\r\n .then(function (res) {\r\n if (!res.ok)\r\n throw Error(errMsg(7, res.status + ' ' + res.statusText + ', loading ' + url + (parent ? ' from ' + parent : '')));\r\n var contentType = res.headers.get('content-type');\r\n if (!contentType || !jsContentTypeRegEx.test(contentType))\r\n throw Error(errMsg(4, 'Unknown Content-Type \"' + contentType + '\", loading ' + url + (parent ? ' from ' + parent : '')));\r\n return res.text().then(function (source) {\r\n if (source.indexOf('//# sourceURL=') < 0)\r\n source += '\\n//# sourceURL=' + url;\r\n (0, eval)(source);\r\n return loader.getRegister(url);\r\n });\r\n });\r\n };\r\n\r\n systemJSPrototype.resolve = function (id, parentUrl) {\r\n parentUrl = parentUrl || !true || baseUrl;\r\n return resolveImportMap((importMap), resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) || throwUnresolved(id, parentUrl);\r\n };\r\n\r\n function throwUnresolved (id, parentUrl) {\r\n throw Error(errMsg(8, \"Unable to resolve bare specifier '\" + id + (parentUrl ? \"' from \" + parentUrl : \"'\")));\r\n }\r\n\r\n var systemInstantiate = systemJSPrototype.instantiate;\r\n systemJSPrototype.instantiate = function (url, firstParentUrl, meta) {\r\n var preloads = (importMap).depcache[url];\r\n if (preloads) {\r\n for (var i = 0; i < preloads.length; i++)\r\n getOrCreateLoad(this, this.resolve(preloads[i], url), url);\r\n }\r\n return systemInstantiate.call(this, url, firstParentUrl, meta);\r\n };\r\n\r\n /*\r\n * Supports loading System.register in workers\r\n */\r\n\r\n if (hasSelf && typeof importScripts === 'function')\r\n systemJSPrototype.instantiate = function (url) {\r\n var loader = this;\r\n return Promise.resolve().then(function () {\r\n importScripts(url);\r\n return loader.getRegister(url);\r\n });\r\n };\r\n\r\n /*\r\n * SystemJS global script loading support\r\n * Extra for the s.js build only\r\n * (Included by default in system.js build)\r\n */\r\n (function (global) {\r\n var systemJSPrototype = global.System.constructor.prototype;\r\n\r\n // safari unpredictably lists some new globals first or second in object order\r\n var firstGlobalProp, secondGlobalProp, lastGlobalProp;\r\n function getGlobalProp (useFirstGlobalProp) {\r\n var cnt = 0;\r\n var foundLastProp, result;\r\n for (var p in global) {\r\n // do not check frames cause it could be removed during import\r\n if (shouldSkipProperty(p))\r\n continue;\r\n if (cnt === 0 && p !== firstGlobalProp || cnt === 1 && p !== secondGlobalProp)\r\n return p;\r\n if (foundLastProp) {\r\n lastGlobalProp = p;\r\n result = useFirstGlobalProp && result || p;\r\n }\r\n else {\r\n foundLastProp = p === lastGlobalProp;\r\n }\r\n cnt++;\r\n }\r\n return result;\r\n }\r\n\r\n function noteGlobalProps () {\r\n // alternatively Object.keys(global).pop()\r\n // but this may be faster (pending benchmarks)\r\n firstGlobalProp = secondGlobalProp = undefined;\r\n for (var p in global) {\r\n // do not check frames cause it could be removed during import\r\n if (shouldSkipProperty(p))\r\n continue;\r\n if (!firstGlobalProp)\r\n firstGlobalProp = p;\r\n else if (!secondGlobalProp)\r\n secondGlobalProp = p;\r\n lastGlobalProp = p;\r\n }\r\n return lastGlobalProp;\r\n }\r\n\r\n var impt = systemJSPrototype.import;\r\n systemJSPrototype.import = function (id, parentUrl, meta) {\r\n noteGlobalProps();\r\n return impt.call(this, id, parentUrl, meta);\r\n };\r\n\r\n var emptyInstantiation = [[], function () { return {} }];\r\n\r\n var getRegister = systemJSPrototype.getRegister;\r\n systemJSPrototype.getRegister = function () {\r\n var lastRegister = getRegister.call(this);\r\n if (lastRegister)\r\n return lastRegister;\r\n\r\n // no registration -> attempt a global detection as difference from snapshot\r\n // when multiple globals, we take the global value to be the last defined new global object property\r\n // for performance, this will not support multi-version / global collisions as previous SystemJS versions did\r\n // note in Edge, deleting and re-adding a global does not change its ordering\r\n var globalProp = getGlobalProp(this.firstGlobalProp);\r\n if (!globalProp)\r\n return emptyInstantiation;\r\n\r\n var globalExport;\r\n try {\r\n globalExport = global[globalProp];\r\n }\r\n catch (e) {\r\n return emptyInstantiation;\r\n }\r\n\r\n return [[], function (_export) {\r\n return {\r\n execute: function () {\r\n _export(globalExport);\r\n _export({ default: globalExport, __useDefault: true });\r\n }\r\n };\r\n }];\r\n };\r\n\r\n var isIE11 = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Trident') !== -1;\r\n\r\n function shouldSkipProperty(p) {\r\n return !global.hasOwnProperty(p)\r\n || !isNaN(p) && p < global.length\r\n || isIE11 && global[p] && typeof window !== 'undefined' && global[p].parent === window;\r\n }\r\n })(typeof self !== 'undefined' ? self : global);\r\n\r\n /*\r\n * Loads JSON, CSS, Wasm module types based on file extension\r\n * filters and content type verifications\r\n */\r\n (function(global) {\r\n var systemJSPrototype = global.System.constructor.prototype;\r\n\r\n var moduleTypesRegEx = /^[^#?]+\\.(css|html|json|wasm)([?#].*)?$/;\r\n var _shouldFetch = systemJSPrototype.shouldFetch.bind(systemJSPrototype);\r\n systemJSPrototype.shouldFetch = function (url) {\r\n return _shouldFetch(url) || moduleTypesRegEx.test(url);\r\n };\r\n\r\n var jsonContentType = /^application\\/json(;|$)/;\r\n var cssContentType = /^text\\/css(;|$)/;\r\n var wasmContentType = /^application\\/wasm(;|$)/;\r\n\r\n var fetch = systemJSPrototype.fetch;\r\n systemJSPrototype.fetch = function (url, options) {\r\n return fetch(url, options)\r\n .then(function (res) {\r\n if (options.passThrough)\r\n return res;\r\n\r\n if (!res.ok)\r\n return res;\r\n var contentType = res.headers.get('content-type');\r\n if (jsonContentType.test(contentType))\r\n return res.json()\r\n .then(function (json) {\r\n return new Response(new Blob([\r\n 'System.register([],function(e){return{execute:function(){e(\"default\",' + JSON.stringify(json) + ')}}})'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n });\r\n if (cssContentType.test(contentType))\r\n return res.text()\r\n .then(function (source) {\r\n source = source.replace(/url\\(\\s*(?:([\"'])((?:\\\\.|[^\\n\\\\\"'])+)\\1|((?:\\\\.|[^\\s,\"'()\\\\])+))\\s*\\)/g, function (match, quotes, relUrl1, relUrl2) {\r\n return ['url(', quotes, resolveUrl(relUrl1 || relUrl2, url), quotes, ')'].join('');\r\n });\r\n return new Response(new Blob([\r\n 'System.register([],function(e){return{execute:function(){var s=new CSSStyleSheet();s.replaceSync(' + JSON.stringify(source) + ');e(\"default\",s)}}})'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n });\r\n if (wasmContentType.test(contentType))\r\n return (WebAssembly.compileStreaming ? WebAssembly.compileStreaming(res) : res.arrayBuffer().then(WebAssembly.compile))\r\n .then(function (module) {\r\n if (!global.System.wasmModules)\r\n global.System.wasmModules = Object.create(null);\r\n global.System.wasmModules[url] = module;\r\n // we can only set imports if supported (eg early Safari doesnt support)\r\n var deps = [];\r\n var setterSources = [];\r\n if (WebAssembly.Module.imports)\r\n WebAssembly.Module.imports(module).forEach(function (impt) {\r\n var key = JSON.stringify(impt.module);\r\n if (deps.indexOf(key) === -1) {\r\n deps.push(key);\r\n setterSources.push('function(m){i[' + key + ']=m}');\r\n }\r\n });\r\n return new Response(new Blob([\r\n 'System.register([' + deps.join(',') + '],function(e){var i={};return{setters:[' + setterSources.join(',') +\r\n '],execute:function(){return WebAssembly.instantiate(System.wasmModules[' + JSON.stringify(url) +\r\n '],i).then(function(m){e(m.exports)})}}})'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n });\r\n return res;\r\n });\r\n };\r\n })(typeof self !== 'undefined' ? self : global);\r\n\r\n var toStringTag = typeof Symbol !== 'undefined' && Symbol.toStringTag;\r\n\r\n systemJSPrototype.get = function (id) {\r\n var load = this[REGISTRY][id];\r\n if (load && load.e === null && !load.E) {\r\n if (load.er)\r\n return null;\r\n return load.n;\r\n }\r\n };\r\n\r\n systemJSPrototype.set = function (id, module) {\r\n {\r\n try {\r\n // No page-relative URLs allowed\r\n new URL(id);\r\n } catch (err) {\r\n console.warn(Error(errMsg('W3', '\"' + id + '\" is not a valid URL to set in the module registry')));\r\n }\r\n }\r\n var ns;\r\n if (toStringTag && module[toStringTag] === 'Module') {\r\n ns = module;\r\n }\r\n else {\r\n ns = Object.assign(Object.create(null), module);\r\n if (toStringTag)\r\n Object.defineProperty(ns, toStringTag, { value: 'Module' });\r\n }\r\n\r\n var done = Promise.resolve(ns);\r\n\r\n var load = this[REGISTRY][id] || (this[REGISTRY][id] = {\r\n id: id,\r\n i: [],\r\n h: false,\r\n d: [],\r\n e: null,\r\n er: undefined,\r\n E: undefined\r\n });\r\n\r\n if (load.e || load.E)\r\n return false;\r\n \r\n Object.assign(load, {\r\n n: ns,\r\n I: undefined,\r\n L: undefined,\r\n C: done\r\n });\r\n return ns;\r\n };\r\n\r\n systemJSPrototype.has = function (id) {\r\n var load = this[REGISTRY][id];\r\n return !!load;\r\n };\r\n\r\n // Delete function provided for hot-reloading use cases\r\n systemJSPrototype.delete = function (id) {\r\n var registry = this[REGISTRY];\r\n var load = registry[id];\r\n // in future we can support load.E case by failing load first\r\n // but that will require TLA callbacks to be implemented\r\n if (!load || (load.p && load.p.e !== null) || load.E)\r\n return false;\r\n\r\n var importerSetters = load.i;\r\n // remove from importerSetters\r\n // (release for gc)\r\n if (load.d)\r\n load.d.forEach(function (depLoad) {\r\n var importerIndex = depLoad.i.indexOf(load);\r\n if (importerIndex !== -1)\r\n depLoad.i.splice(importerIndex, 1);\r\n });\r\n delete registry[id];\r\n return function () {\r\n var load = registry[id];\r\n if (!load || !importerSetters || load.e !== null || load.E)\r\n return false;\r\n // add back the old setters\r\n importerSetters.forEach(function (setter) {\r\n load.i.push(setter);\r\n setter(load.n);\r\n });\r\n importerSetters = null;\r\n };\r\n };\r\n\r\n var iterator = typeof Symbol !== 'undefined' && Symbol.iterator;\r\n\r\n systemJSPrototype.entries = function () {\r\n var loader = this, keys = Object.keys(loader[REGISTRY]);\r\n var index = 0, ns, key;\r\n var result = {\r\n next: function () {\r\n while (\r\n (key = keys[index++]) !== undefined && \r\n (ns = loader.get(key)) === undefined\r\n );\r\n return {\r\n done: key === undefined,\r\n value: key !== undefined && [key, ns]\r\n };\r\n }\r\n };\r\n\r\n result[iterator] = function() { return this };\r\n\r\n return result;\r\n };\r\n\r\n})();\r\n","import 'systemjs/dist/system.js'\n\ndeclare let global: any\n\nconst System = (typeof self !== 'undefined' ? self : global).System\n\n/**\n * 动态加载js文件\n * @param path js文件路径\n * @returns\n */\nexport function importModule(path: string) {\n if (path.endsWith('.lib.js') && path.startsWith('/') && !path.startsWith('/p/')) {\n path = '/p/SystemJsProvider__getJs?path=' + encodeURIComponent(path)\n }\n const url = System.resolve(path)\n return System.import(/* @vite-ignore*/ url)\n}\n\nexport function deleteDynamicModules() {\n for (const module of System.entries()) {\n const moduleId = module[0]\n if (moduleId.endsWith('.lib.js')) System.delete(moduleId)\n }\n}\n\nexport function registerModule(name: string, lib: any) {\n let libPath = name\n if (name.startsWith('./')) {\n libPath = System.resolve(name)\n } else if (name.startsWith('@nop/')) {\n libPath = System.resolve('./nop/' + name.substring('@nop/'.length) + '.js')\n } else {\n libPath = System.resolve('./nop/' + name + '.js')\n System.addImportMap({\n imports: {\n [name]: libPath\n }\n })\n }\n System.set(libPath, lib)\n}\n\nexport function addSystemImportMap(imports: Record<string, string>) {\n System.addImportMap({\n imports\n })\n}\n","export const HEADER_TENANT_ID = 'x-tenant-id'\n\nexport const HEADER_ACCESS_TOKEN = 'x-access-token'\n\nexport const HEADER_TIMESTAMP = 'x-timestamp'\n\nexport const HEADER_APP_ID = 'nop-app-id'\n\nexport const HEADER_VERSION = 'x-version'\n","function normalizeArray(parts: string[], allowAboveRoot: boolean) {\n const res: string[] = []\n for (let i = 0; i < parts.length; i++) {\n const p2 = parts[i]\n if (!p2 || p2 === '.') continue\n if (p2 === '..') {\n if (res.length && res[res.length - 1] !== '..') {\n res.pop()\n } else if (allowAboveRoot) {\n res.push('..')\n }\n } else {\n res.push(p2)\n }\n }\n return res\n}\n\nexport function absolutePath(path: string, basePath: string) {\n if (path.indexOf(':') > 0) return path\n\n let resolvedPath = path\n if (basePath && !resolvedPath.startsWith('/')) {\n resolvedPath = basePath + '/../' + path\n }\n resolvedPath = normalizeArray(resolvedPath.split('/'), false).join('/')\n return '/' + resolvedPath\n}\n\ntype ResolveFunction = (name: string) => any\n\nexport function format(\n msg: string,\n placeholderStart: string,\n placeholdeEnd: string,\n resolver: ResolveFunction\n) {\n let pos = msg.indexOf(placeholderStart)\n if (pos < 0) return msg\n\n let ret = msg.substring(0, pos)\n\n do {\n pos += placeholderStart.length\n let pos2 = msg.indexOf(placeholdeEnd, pos)\n if (pos2 < 0) {\n ret += msg.substring(pos)\n break\n } else {\n const name = msg.substring(pos, pos2).trim()\n const value = resolver(name)\n if (value != null) {\n ret += String(value)\n }\n pos2 += placeholdeEnd.length\n pos = msg.indexOf(placeholderStart, pos2)\n if (pos < 0) {\n ret += msg.substring(pos2)\n } else {\n ret += msg.substring(pos2, pos)\n }\n }\n } while (pos > 0)\n\n return ret\n}\n\n/**\n * 从后台的TreeBean转换为前台Condition\n * @param node\n */\nexport function treeToCondition(node: any) {\n if (node.$type === 'and' || node.$type == 'or' || node.$type == 'not') {\n return {\n condjunction: node.$type,\n children: (node.$body || []).map(treeToCondition)\n }\n } else {\n return {\n op: node.$type,\n left: {\n type: 'field',\n field: node.name\n },\n right: node.value\n }\n }\n}\n\nexport function conditionToTree(cond: any) {\n if (cond.conjuction) {\n return {\n $type: cond.conjuction,\n $body: (cond.children || []).map(conditionToTree)\n }\n } else {\n return {\n $type: cond.op,\n name: cond.left.field,\n value: cond.right\n }\n }\n}\n\nimport { shallowRef, toRaw } from 'vue'\n\nexport interface ValueHolder<T> {\n getRaw(): T | undefined\n get(): T | undefined\n set(value: T): void\n}\n\nexport function refHolder<T>(): ValueHolder<T> {\n const value = shallowRef<T>()\n return {\n getRaw() {\n return toRaw(value).value\n },\n get() {\n return value.value\n },\n set(t: T) {\n value.value = t\n }\n }\n}\n","import { cloneDeep } from 'lodash-es'\nimport LRUCache from 'lru-cache'\nimport type { Options } from 'lru-cache'\n\nexport type AsyncCacheLoader<T> = (key: string) => Promise<T>\n\nexport interface AsyncCache<T> {\n get(key: string, loader: AsyncCacheLoader<T>): Promise<T>\n delete(key: string): void\n clear(): void\n}\n\nexport type AsyncCacheOptions<T> = Options<string, T>\n\nexport function createAsyncCache<T>(options: AsyncCacheOptions<any>): AsyncCache<T> {\n const cache = new LRUCache<string, Promise<T>>(options)\n return {\n get(key, loader) {\n let promise = cache.get(key)\n if (promise) {\n return promise.then((v) => v && cloneDeep(v))\n }\n promise = loader(key)\n cache.set(key, promise)\n return promise\n .then((v) => v && cloneDeep(v))\n .catch((e) => {\n cache.delete(key)\n throw e\n })\n },\n\n delete(key) {\n cache.delete(key)\n },\n\n clear() {\n cache.clear()\n }\n }\n}\n","export * as CONSTANTS from './constants'\n\nexport * from './utils'\n\nexport * from './cache'\n\nexport function splitPrefixUrl(url: string) {\n if (url.startsWith('@')) {\n const pos = url.indexOf(':')\n if (pos < 0) {\n return\n }\n return [url.substring(1, pos), url.substring(pos + 1).trim()]\n }\n const pos = url.indexOf('://')\n if (pos < 0) return\n return [url.substring(0, pos), url.substring(pos + 3)]\n}\n","import { useAdapter } from '../adapter'\nimport { deleteDynamicModules } from '../loader'\nimport { createAsyncCache } from '../shared'\n\nconst pageCache = createAsyncCache({ max: 50 })\n\nconst dictCache = createAsyncCache({ max: 100 })\n\nfunction buildLocaleKey(name: string) {\n const { useLocale } = useAdapter()\n return useLocale() + '|' + name\n}\n\nexport function clearLocalCache() {\n pageCache.clear()\n dictCache.clear()\n deleteDynamicModules()\n}\n\nexport function clearPageCache() {\n pageCache.clear()\n}\n\nexport function clearDictCache() {\n dictCache.clear()\n}\n\nexport function deletePageCache(path: string) {\n const key = buildLocaleKey(path)\n pageCache.delete(key)\n}\n\nexport function withPageCache(path: string, fn: () => Promise<any>): Promise<any> {\n const key = buildLocaleKey(path)\n return pageCache.get(key, fn)\n}\n\nexport function withDictCache(dictName: string, fn: () => Promise<any>): Promise<any> {\n const key = buildLocaleKey(dictName)\n\n return dictCache.get(key, () => {\n return fn().then((res) => {\n // 如果不是static的,则下次ajax调用会获取到新的值。\n // 如果一个界面上多个控件用到同一个字典,并发进行ajax调用, 则实际也只会调用后台一次\n if (!res.static) {\n dictCache.delete(key)\n }\n return res\n })\n })\n}\n","import { isArray, isPlainObject, isString, isBoolean, isInteger, isNumber } from '@kdesigner/shared'\nimport type { AxiosRequestConfig } from 'axios'\n\nimport { splitPrefixUrl } from '@/shared'\nimport type { FetcherRequest, OrderFieldBean, QueryBean, TreeBean } from '@/types'\n\nexport type OperationType = 'query' | 'mutation' | 'subscription'\n\nexport interface OperationDefinition {\n arguments: ArgumentDefinition[]\n}\n\nexport interface ArgumentDefinition {\n name: string\n type: string\n builder?: (data: any, arg: ArgumentDefinition, options: FetcherRequest) => any\n}\n\nexport function handleGraphQL(\n config: AxiosRequestConfig<any>,\n graphqlUrl: string,\n options: FetcherRequest\n) {\n const url = config.url!\n const [type, path] = splitPrefixUrl(url) || []\n if (type == 'query' || type == 'mutation' || type == 'subscription') {\n normalizeData(config)\n config.method = 'post'\n handleGraphQLUrl(type, path, config, graphqlUrl, options)\n return true\n } else if (url.endsWith('/graphql') || url.indexOf('/graphql?') >= 0) {\n normalizeData(config)\n config.transformResponse = transformGraphQLResponse\n config.method = 'post'\n return true\n } else {\n return false\n }\n}\n\nfunction transformGraphQLResponse(data: any) {\n // console.info(\"graphql response\",data)\n data = JSON.parse(data)\n\n // status/msg/data是amis的要求。 message/result/code/success是jceeboot前端框架的要求\n if (data.errors?.length > 0) {\n data.status = parseInt(data.extensions?.['nop-status'] || -1)\n data.msg = data.errors[0].message\n } else {\n data.status = 0\n data.msg = data.extensions?.['nop-msg']\n }\n return data\n}\n\nfunction handleGraphQLUrl(\n opType: OperationType,\n url: string,\n config: AxiosRequestConfig<any>,\n graphql: string,\n options: FetcherRequest\n) {\n const pos = url.indexOf('?')\n if (pos > 0) {\n url = url.substring(0, pos)\n }\n\n const pos2 = url.indexOf('/')\n\n const action = pos2 > 0 ? url.substring(0, pos2) : url\n let selection = pos2 > 0 ? url.substring(pos2 + 1) : undefined\n if (selection) {\n selection = selection.replace(/%20/g, ' ')\n selection = selection.replace(/%0A/g, '\\n')\n }\n if (!selection) {\n selection = options['gql:selection']\n }\n\n let stdAction = action\n // 例如NopAuthUser__findPage或者NopAuthUser__admin_findPage,返回方法名findPage\n const pos3 = action.lastIndexOf('_')\n if (pos3 > 0) {\n stdAction = action.substring(pos3 + 1)\n }\n\n let data = config.data || {}\n\n // @hack 针对AMIS的picker控件做特殊处理。picker控件的source会在初始化时作为loadOptions函数被调用\n if (stdAction === 'findPage') {\n if (data.op === 'loadOptions') {\n const values = toArray(data.value, options.delimiter)\n data = {\n ['filter_' + options.valueField! + '__in']: values\n }\n selection = 'items{' + (options.valueField || 'id') + ',' + (options.labelField || 'id') + '}'\n }\n }\n\n let def = operationRegistry[stdAction]\n if (!def) {\n def = guessDefinition(config.data)\n }\n\n // 对于__findPage等调用,除了预定义的query等参数之外,可以通过v_XXX这种参数名来增加额外的参数\n const args = [...def.arguments, ...guessExtArgDefinitions(config.data)]\n\n let query = opType + ' ' + action\n if (args.length > 0) {\n query += '('\n query += args.map((arg) => '$' + arg.name + ':' + arg.type).join(',')\n query += ')'\n }\n query += '{\\n'\n query += action + '('\n if (args.length > 0) {\n query += args.map((arg) => arg.name + ':$' + arg.name).join(',')\n }\n query += ')'\n if (selection) {\n query += '{\\n'\n query += selection\n query += '\\n}'\n }\n query += '\\n}'\n\n const variables: Record<string, any> = {}\n args.forEach((arg) => {\n const builder = arg.builder || defaultArgBuilders[arg.type] || argValue\n variables[arg.name] = builder(data, arg, options)\n })\n\n config.transformResponse = [\n transformGraphQLResponse,\n (res) => {\n if (res.data) {\n res.data = res.data[action]\n }\n return res\n }\n ]\n\n config.method = 'post'\n config.url = graphql\n config.data = {\n query,\n variables\n }\n}\n\nfunction toArray(value: any, delimiter?: string) {\n if (isString(value)) {\n value = value.split(delimiter || ',')\n }\n return value\n}\n\nfunction normalizeData(config: AxiosRequestConfig) {\n const { data, params } = splitData(config.params)\n config.data = { ...filterData(config.data), ...data }\n config.params = params\n}\n\nfunction filterData(data: any) {\n if (!data) return {}\n const ret: any = {}\n for (const k in data) {\n if (k.startsWith('__')) continue\n ret[k] = data[k]\n }\n return ret\n}\n\nfunction splitData(data: any) {\n if (!data) {\n return {}\n }\n\n const body: any = {}\n const params: any = {}\n\n for (const k in data) {\n // 以__为前缀的变量不提交到后台\n if (k.startsWith('__')) continue\n\n if (k.charAt(0) == '@' || k.charAt(0) == '_') {\n params[k] = data[k]\n } else {\n body[k] = data[k]\n }\n }\n return {\n data: body,\n params\n }\n}\n\nfunction guessDefinition(data: any): OperationDefinition {\n const args: ArgumentDefinition[] = []\n if (data) {\n for (const k in data) {\n if (isSpecialVarName(k)) continue\n args.push({ name: k, type: guessType(data[k]) })\n }\n }\n return { arguments: args }\n}\n\nfunction guessExtArgDefinitions(data: any): ArgumentDefinition[] {\n const args: ArgumentDefinition[] = []\n if (data) {\n for (const k in data) {\n if (k.startsWith('v_')) {\n args.push({ name: k, type: guessType(data[k]) })\n }\n }\n }\n return args\n}\n\nfunction isSpecialVarName(name: string) {\n return name.startsWith('__') || name.startsWith('@') || name.startsWith('v_')\n}\n\nfunction guessType(value: any) {\n if (isString(value)) return 'String'\n if (isNumber(value)) {\n if (isInteger(value)) return 'Int'\n return 'Float'\n }\n if (isBoolean(value)) return 'Boolean'\n\n if (isPlainObject(value)) return 'Map'\n if (isArray(value)) return '[String]'\n return 'String'\n}\n\nexport function registerOperation(name: string, op: OperationDefinition) {\n operationRegistry[name] = op\n}\n\n/**\n * 缺省注册了CRUD操作所对应的GraphQL类型\n */\nconst operationRegistry: Record<string, OperationDefinition> = {\n get: {\n // operation: 'query',\n arguments: [\n {\n name: 'id',\n type: 'String',\n builder: argString\n },\n {\n name: 'ignoreUnknown',\n type: 'Boolean',\n builder: argBoolean\n }\n ]\n },\n findPage: {\n // operation: 'query',\n arguments: [\n {\n name: 'query',\n type: 'QueryBeanInput',\n builder: argQuery\n }\n ]\n },\n\n findList: {\n // operation: 'query',\n arguments: [\n {\n name: 'query',\n type: 'QueryBeanInput',\n builder: argQuery\n }\n ]\n },\n\n findFirst: {\n // operation: 'query',\n arguments: [\n {\n name: 'query',\n type: 'QueryBeanInput',\n builder: argQuery\n }\n ]\n },\n\n update: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'data',\n type: 'Map',\n builder: argDataMap\n }\n ]\n },\n\n save: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'data',\n type: 'Map',\n builder: argDataMap\n }\n ]\n },\n\n saveOrUpdate: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'data',\n type: 'Map',\n builder: argDataMap\n }\n ]\n },\n\n upsert: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'data',\n type: 'Map',\n builder: argDataMap\n }\n ]\n },\n\n copyForNew: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'data',\n type: 'Map',\n builder: argDataMap\n }\n ]\n },\n\n delete: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'id',\n type: 'String',\n builder: argString\n }\n ]\n },\n\n batchGet: {\n arguments: [\n {\n name: 'ids',\n type: '[String]',\n builder: argStringList\n }\n ]\n },\n\n batchDelete: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'ids',\n type: '[String]',\n builder: argStringList\n }\n ]\n },\n\n batchModify: {\n // operation: 'mutation',\n arguments: [\n {\n name: 'data',\n type: '[Map]',\n builder: argMapList\n },\n {\n name: 'delIds',\n type: '[String]',\n builder: argStringList\n }\n ]\n }\n}\n\nconst defaultArgBuilders: Record<string, any> = {\n String: argString,\n Boolean: argBoolean,\n Int: argInt,\n Float: argFloat,\n Map: argMap,\n '[String]': argStringList,\n '[Map]': argMapList,\n QueryBeanInput: argQuery\n}\n\nfunction argString(data: any, arg: ArgumentDefinition) {\n const v = data[arg.name]\n if (v == null) return null\n return String(v)\n}\n\nfunction argBoolean(data: any, arg: ArgumentDefinition) {\n const v = data[arg.name]\n if (v == null) return null\n if (v == 'false' || v == 'n' || v == '0' || v == 'N') return false\n return !!v\n}\n\nfunction argInt(data: any, arg: ArgumentDefinition) {\n const v = data[arg.name]\n if (v == null) return null\n return parseInt(v, 10)\n}\n\nfunction argFloat(data: any, arg: ArgumentDefinition) {\n const v = data[arg.name]\n if (v == null) return null\n return parseFloat(v)\n}\n\n/**\n * 通过 filter_XX__ge=3来表达 <ge name=\"XX\" value=\"3\" />这种过滤条件\n */\nfunction argQuery(data: any, _arg: ArgumentDefinition, options: FetcherRequest) {\n const query: QueryBean = {}\n query.limit = data.limit ?? data.pageSize ?? data.perPage ?? 0\n query.offset = data.offset ?? query.limit! * ((data.page || 0) - 1)\n query.orderBy = toOrderBy(data.orderBy ?? data.orderField, data.orderDir)\n query.filter = toFilter(data)\n query.cursor = data.cursor\n query.timeout = data.timeout\n\n return query\n\n function toOrderBy(v: any, orderDir: any) {\n if (v == null) return\n if (isString(v)) {\n if (v.length == 0) return\n // 字典表显示时会替换成label字段。例如status在列表上实际显示status_label,排序需要按照status进行\n if (v.endsWith('_label')) v = v.substring(0, v.length - '_label'.length)\n return [{ name: v, desc: orderDir == 'desc' }]\n }\n if (isArray(v)) return v as OrderFieldBean[]\n return [v as OrderFieldBean]\n }\n\n function toFilter(data: any) {\n const filter: TreeBean = {\n $type: 'and',\n $body: []\n }\n for (const k in data) {\n if (k.startsWith('filter_')) {\n let [name, op] = k.substring('filter_'.length).split('__')\n op = op || 'eq'\n let value = data[k]\n\n // 不提交空的查询条件\n if (value == null || value == '') continue\n\n // 如果传入字符串__empty,则实际提交的是空字符串\n if (value == '__empty') {\n value = ''\n } else if (value == '__null') {\n value = null\n }\n\n let min = undefined\n let max = undefined\n\n if (op.startsWith('between') && value != null) {\n const ary = toArray(value)\n min = ary[0]\n max = ary[1]\n value = undefined\n }\n filter.$body.push({ $type: op, name, value, min, max })\n }\n }\n\n if (options.filter) {\n if (\n options.filter.$type == 'and' ||\n options.filter.$type == '_' ||\n options.filter.$type == 'filter'\n ) {\n filter.$body = filter.$body.concat(options.filter.$body || [])\n } else {\n filter.$body.push(options.filter)\n }\n }\n\n if (filter.$body.length == 0) return\n return filter\n }\n}\n\nfunction argDataMap(data: any, _arg: ArgumentDefinition) {\n if (data == null) return null\n const ret: any = {}\n for (const k in data) {\n if (isSpecialVarName(k)) continue\n ret[k] = data[k]\n }\n return ret\n}\n\nfunction argMap(data: any, arg: ArgumentDefinition) {\n return data[arg.name]\n}\n\nfunction argStringList(data: any, arg: ArgumentDefinition) {\n const v = data[arg.name]\n if (v == null) return null\n if (isString(v)) return v.split(',')\n return v\n}\n\nfunction argMapList(data: any, arg: ArgumentDefinition) {\n return data[arg.name]\n}\n\nfunction argValue(data: any, arg: ArgumentDefinition) {\n return data[arg.name]\n}\n","/**\n * HTTP响应对象接口\n */\ninterface HttpResponse {\n data: any\n headers: Record<string, string>\n status: number\n}\n\n/**\n * API响应数据接口\n */\ninterface ApiResponseData {\n status: number\n msg: string\n data?: any\n}\n\n/**\n * 处理接口返回附件的情况,好几个地方用\n * @param response HTTP响应对象\n * @param __ 国际化翻译函数\n * @returns 处理后的响应对象或Promise\n */\nexport function attachmentAdpator(\n response: HttpResponse,\n __: (key: string) => string\n): HttpResponse | Promise<HttpResponse> {\n if (response && response.headers && response.headers['content-disposition']) {\n const disposition = response.headers['content-disposition']\n let filename = ''\n\n if (disposition && disposition.indexOf('attachment') !== -1) {\n // disposition 有可能是 attachment; filename=\"??.xlsx\"; filename*=UTF-8''%E4%B8%AD%E6%96%87.xlsx\n // 这种情况下最后一个才是正确的文件名\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/\n\n const matches = disposition.match(filenameRegex)\n if (matches && matches.length) {\n filename = matches[1].replace(\"UTF-8''\", '').replace(/['\"]/g, '')\n }\n\n // 很可能是中文被 url-encode 了\n if (filename && filename.replace(/[^%]/g, '').length > 2) {\n filename = decodeURIComponent(filename)\n }\n\n const contentType = response.headers['content-type'] || 'application/octet-stream'\n const blob =\n response.data instanceof Blob\n ? response.data\n : new Blob([response.data], { type: contentType })\n // 检查是否为IE浏览器并使用msSaveBlob\n const navigator = window.navigator as any\n if (typeof navigator.msSaveBlob !== 'undefined') {\n // IE浏览器的特殊处理\n navigator.msSaveBlob(blob, filename)\n } else {\n const URL = window.URL || (window as any).webkitURL\n const downloadUrl = URL.createObjectURL(blob)\n if (filename) {\n // use HTML5 a[download] attribute to specify filename\n const anchor = document.createElement('a')\n // safari doesn't support this yet\n if (typeof anchor.download === 'undefined') {\n // Safari浏览器不支持download属性的处理\n window.location.href = downloadUrl\n } else {\n anchor.href = downloadUrl\n anchor.download = filename\n anchor.style.display = 'none'\n document.body.appendChild(anchor)\n anchor.click()\n document.body.removeChild(anchor)\n }\n } else {\n window.location.href = downloadUrl\n }\n // 延迟清理URL对象,避免下载中断\n setTimeout(() => {\n URL.revokeObjectURL(downloadUrl)\n }, 100)\n }\n\n return {\n ...response,\n data: {\n status: 0,\n msg: __('sys.api.downloading')\n } as ApiResponseData\n }\n }\n } else if (response.data instanceof Blob) {\n // 处理Blob类型的响应数据\n return new Promise<HttpResponse>((resolve, reject) => {\n const reader = new FileReader()\n\n reader.addEventListener('loadend', () => {\n const text = reader.result as string\n\n try {\n const parsedData = JSON.parse(text)\n resolve({\n ...response,\n data: {\n ...parsedData\n }\n })\n } catch (error) {\n reject(\n new Error(`解析响应数据失败: ${error instanceof Error ? error.message : String(error)}`)\n )\n }\n })\n\n reader.addEventListener('error', () => {\n reject(new Error('读取Blob数据失败'))\n })\n\n reader.readAsText(response.data)\n })\n }\n\n return response\n}\n\nexport default attachmentAdpator\n","import { parseUrlParams } from '@kdesigner/shared'\nimport type { AxiosRequestConfig } from 'axios'\nimport axios from 'axios'\n\nimport { handleGraphQL } from '@/graphql/gql'\nimport { splitPrefixUrl } from '@/shared'\nimport {\n HEADER_ACCESS_TOKEN,\n HEADER_APP_ID,\n HEADER_TENANT_ID,\n HEADER_TIMESTAMP,\n HEADER_VERSION\n} from '@/shared/constants'\nimport type { ApiResponse, FetcherRequest, FetcherResult } from '@/types'\n\nimport { useAdapter } from '../adapter'\nimport attachmentAdpator from './attachmentAdpator'\n\nconst GRAPHQL_URL = '/graphql'\n\nexport const ajax = axios.create({})\n\najax.interceptors.response.use((res) => {\n const token = res.headers[HEADER_ACCESS_TOKEN]\n if (token) {\n useAdapter().setAuthToken(token)\n }\n return res\n})\n\nexport const isCancel = axios.isCancel\n\nexport function createCancelToken(cancelExecutor: any) {\n return new axios.CancelToken(cancelExecutor)\n}\n\nexport function fetcherOk(data: any): FetcherResult {\n return {\n status: 200,\n headers: {},\n data: {\n status: 0,\n msg: '',\n data: data\n }\n }\n}\n\nexport function responseOk(data: any): ApiResponse {\n return {\n status: 0,\n msg: '',\n data\n }\n}\n\nexport function ajaxRequest(options: FetcherRequest): Promise<any> {\n const { notify, alert } = useAdapter()\n\n return ajaxFetch(options).then((d) => {\n // 401 会走 doLogout 跳转登录;多请求并发时若再 toast 会重复弹出\n const isUnauthorized = d.status == 401 || d.data?.status == 401\n if (!options.silent && !isUnauthorized) {\n if (d.data?.msg) {\n if (options.config?.useAlert) {\n alert(d.data.msg)\n } else {\n notify(d.data?.status == 0 ? 'info' : 'error', d.data.msg)\n }\n }\n }\n if (d.data?.status != 0)\n throw new Error(\n d.data?.msg || 'ajax-fail:\\ncode=' + d.data?.code + ',status=' + d.data?.status\n )\n return d.data!.data\n })\n}\n\n/**\n * 提供的对外接口符合amis框架的要求\n */\nexport function ajaxFetch(options: FetcherRequest): Promise<FetcherResult> {\n options.config = options.config || {}\n\n let url = options.url\n\n // 验证URL是否有效\n if (!url || typeof url !== 'string') {\n return Promise.resolve({\n status: 500,\n data: {\n status: -1,\n msg: 'sys.api.errMsg500'\n }\n } as FetcherResult)\n }\n\n let query = options.query || {}\n const pos = url.indexOf('?')\n if (pos > 0) {\n query = { ...query, ...parseUrlParams(url.substring(pos + 1)) }\n url = url.substring(0, pos)\n }\n options.query = query\n\n const [type, path] = splitPrefixUrl(url) || []\n\n if (type == 'action') {\n const actionName = path\n const action = options._page?.getAction(actionName)\n if (!action) {\n return Promise.reject(new Error('nop.err.unknown-action:' + actionName))\n }\n\n try {\n const result = action(options)\n return Promise.resolve(result).then((res) => {\n if (res == null) return fetcherOk(res)\n return res as any\n })\n } catch (e: any) {\n return Promise.reject(e)\n }\n } else if (type == 'dict') {\n return useAdapter().fetchDict(path, options)\n } else if (type == 'page') {\n return useAdapter().fetchPageAndTransform(path, options)\n }\n\n const globSetting = useAdapter().useSettings()\n\n if (globSetting.apiUrl && options.config.useApiUrl !== false) {\n url = `${globSetting.apiUrl}${url}`\n }\n\n function normalizeData(data: any) {\n if (!data) return data\n if (data instanceof FormData || data instanceof ArrayBuffer) return data\n return Object.assign({}, data)\n }\n\n const data = normalizeData(options.data)\n\n const config: AxiosRequestConfig<any> = {\n withCredentials: options.config.withCredentials ?? true,\n url: url,\n method: (options.method as any) || 'post',\n headers: options.headers || {},\n data: data,\n params: query,\n responseType: options.responseType\n }\n\n if (options.config?.cancelExecutor) {\n const controller = new AbortController()\n options.config.cancelExecutor(() => {\n controller.abort()\n })\n config.signal = controller.signal\n }\n\n const opts: ExtOptions = {\n withToken: options.config.withToken\n }\n\n prepareHeaders(config, opts)\n\n handleGraphQL(config, GRAPHQL_URL, options)\n\n if (config.method?.toLowerCase() == 'get') {\n config.params = { ...config.data, ...query }\n config.data = null\n }\n\n const { useI18n, processRequest, processResponse } = useAdapter()\n\n const res = ajax\n .request(processRequest(config))\n .then((res) => {\n if (res.status == 200 && options.config?.rawResponse) {\n res.data = responseOk(res.data)\n }\n return res\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n throw error\n }\n const { t } = useI18n()\n const { response } = error || {}\n if (!response?.status) {\n // return '[HTTP] Request has no return value';\n throw new Error(t('sys.api.apiRequestFailed'))\n }\n\n const err: string = error.toString()\n let errMessage = normalizeErrMessage(response.status, '')\n if (!errMessage && err?.includes('Network Error')) {\n errMessage = t('sys.api.networkExceptionMsg')\n }\n\n if (response.data?.status == null) {\n return {\n status: response.status,\n data: {\n status: -1,\n msg: errMessage\n }\n }\n }\n return response\n })\n .then((response) => {\n if (options.responseType == 'blob') {\n if (response.status == 401) {\n // 退出接口自身的 401 不再二次触发 logout,避免死循环\n if (!isLogoutRequest(options)) {\n doLogout('401')\n }\n return response\n }\n\n const __ = useI18n().t\n return attachmentAdpator(response, __)\n // return response\n }\n let data = response.data || {}\n if (response.status == 401 || data.status == 401) {\n if (!isLogoutRequest(options)) {\n doLogout('401')\n }\n } else if (data.status == 0 || data.status == 200) {\n if (options.responseKey) {\n data = { [options.responseKey]: data.data }\n }\n }\n\n response.data = data\n return response\n })\n\n return processResponse(res)\n}\n\ninterface ExtOptions {\n withToken?: boolean\n}\n\nfunction prepareHeaders(config: AxiosRequestConfig, opts: ExtOptions) {\n const { useAuthToken, useTenantId, useLocale, useAppId, globalVersion } = useAdapter()\n\n // 请求之前处理config\n const token = useAuthToken()\n let tenantid = useTenantId()\n config.headers = config.headers || {}\n config.headers['nop-locale'] = useLocale()?.replace('_', '-')\n config.headers['x-requested-with'] = 'XMLHttpRequest'\n\n if (token && opts.withToken !== false) {\n // jwt token\n // config.headers.Authorization = `${options.authenticationScheme} ${token}` : token;\n config.headers.Authorization = `Bearer ${token}`\n // config.headers[ConfigEnum.TOKEN] = token;\n // --update-begin--author:liusq---date:20210831---for:将签名和时间戳,添加在请求接口 Header\n\n // update-begin--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯\n config.headers[HEADER_TIMESTAMP] = new Date().getTime()\n // update-end--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯\n\n // config.headers[ConfigEnum.Sign] = signMd5Utils.getSign(config.url, config.params);\n // --update-end--author:liusq---date:20210831---for:将签名和时间戳,添加在请求接口 Header\n // --update-begin--author:liusq---date:20211105---for: for:将多租户id,添加在请求接口 Header\n if (!tenantid) {\n tenantid = '0'\n }\n config.headers[HEADER_TENANT_ID] = tenantid\n // --update-begin--author:liusq---date:20220325---for: 增加vue3标记\n config.headers[HEADER_VERSION] = globalVersion\n // --update-end--author:liusq---date:20220325---for:增加vue3标记\n // --update-end--author:liusq---date:20211105---for:将多租户id,添加在请求接口 Header\n\n // ========================================================================================\n // update-begin--author:sunjianlei---date:20220624--for: 添加低代码应用ID\n const appId = useAppId()\n if (appId) {\n config.headers[HEADER_APP_ID] = appId\n }\n // update-end--author:sunjianlei---date:20220624--for: 添加低代码应用ID\n // ========================================================================================\n }\n}\n\nfunction normalizeErrMessage(status: number, msg: string) {\n const { t } = useAdapter().useI18n()\n\n let errMessage = ''\n switch (status) {\n // 401: Not logged in\n // Jump to the login page if not logged in, and carry the path of the current page\n // Return to the current page after successful login. This step needs to be operated on the login page.\n case 401:\n errMessage = msg || t('sys.api.errMsg401')\n break\n case 403:\n errMessage = t('sys.api.errMsg403')\n break\n // 404请求不存在\n case 404:\n errMessage = t('sys.api.errMsg404')\n break\n case 405:\n errMessage = t('sys.api.errMsg405')\n break\n case 408:\n errMessage = t('sys.api.errMsg408')\n break\n case 500:\n errMessage = t('sys.api.errMsg500')\n break\n case 501:\n errMessage = t('sys.api.errMsg501')\n break\n case 502:\n errMessage = t('sys.api.errMsg502')\n break\n case 503:\n errMessage = t('sys.api.errMsg503')\n break\n case 504:\n errMessage = t('sys.api.errMsg504')\n break\n case 505:\n errMessage = t('sys.api.errMsg505')\n break\n default:\n }\n return errMessage\n}\n\n/** 是否为退出登录请求(其 401 不应再触发 logout) */\nfunction isLogoutRequest(options: FetcherRequest): boolean {\n return typeof options.url === 'string' && options.url.includes('LoginApi__logout')\n}\n\n/** 防止并发 401 / logout 回调再次发请求导致死循环 */\nlet loggingOut = false\n\nfunction doLogout(reason: string) {\n if (loggingOut) return\n loggingOut = true\n try {\n const { setAuthToken, logout } = useAdapter()\n setAuthToken(undefined)\n logout(reason)\n } finally {\n // 等本轮同步回调与微任务结束后再放开,避免同批 401 重入\n queueMicrotask(() => {\n loggingOut = false\n })\n }\n}\n","import { ref } from 'vue'\n\nconst debug = ref(false)\n\nconst supportDebug = ref(false)\n\nfunction toggleDebug() {\n setDebug(!debug.value)\n}\n\nfunction setDebug(b: boolean) {\n debug.value = b\n}\n\n/**\n * 是否进入开发调试状态。调试状态下显示在线编辑器按钮,并设置amisDebug=1,启用AMIS内置的调试器。\n * 根据后台返回的SiteMap.supportDebug属性进行初始化\n */\nexport function useDebug() {\n return {\n debug,\n supportDebug,\n toggleDebug,\n setDebug\n }\n}\n","import { omit } from 'lodash-es'\n\nimport { ajaxRequest } from '../ajax'\nimport { useDebug } from '../debug'\nimport { deletePageCache, withDictCache, withPageCache } from './cache'\n\nexport const PageApis = {\n DevTool__clearComponentCache,\n PageProvider__getPage,\n PageProvider__getPageSource,\n PageProvider__rollbackPageSource,\n PageProvider__savePageSource,\n DictProvider__getDict\n}\n\nfunction DevTool__clearComponentCache() {\n const { debug } = useDebug()\n if (debug) {\n return ajaxRequest({\n method: 'post',\n url: '@mutation:DevTool__clearComponentCache'\n })\n }\n return Promise.resolve({})\n}\n\nfunction PageProvider__getPage(path: string) {\n if (import.meta.env.VITE_USE_MOCK)\n return ajaxRequest({\n method: 'get',\n url: `/mock${path}`,\n config: { rawResponse: true }\n })\n\n if (path.startsWith('/p/'))\n return withPageCache(path, () => {\n return ajaxRequest({\n method: 'get',\n url: path\n })\n })\n return withPageCache(path, () => {\n return ajaxRequest({\n method: 'post',\n url: '@query:PageProvider__getPage',\n data: {\n path\n }\n })\n })\n}\n\nfunction PageProvider__getPageSource(path: string, silent?: boolean) {\n return ajaxRequest({\n method: 'post',\n url: '@query:PageProvider__getPageSource',\n data: {\n path\n },\n silent\n }).then((page) => {\n page.__baseUrl = path\n return page\n })\n}\n\nfunction PageProvider__rollbackPageSource(path: string, silent?: boolean) {\n return ajaxRequest({\n method: 'post',\n url: '@mutation:PageProvider__rollbackPageSource',\n data: {\n path\n },\n silent\n })\n}\n\nfunction PageProvider__savePageSource(path: string, data: any, silent?: boolean) {\n deletePageCache(path)\n\n return ajaxRequest({\n method: 'post',\n url: '@mutation:PageProvider__savePageSource',\n data: {\n path,\n data: omit(data, '__baseUrl')\n },\n silent\n })\n}\n\nfunction DictProvider__getDict(dictName: string, silent: boolean) {\n return withDictCache(dictName, () => {\n return ajaxRequest({\n method: 'post',\n url: '@query:DictProvider__getDict/static,options{value,label}',\n data: {\n dictName\n },\n silent\n })\n })\n}\n","import { ajaxRequest } from '@/ajax'\n\nimport { useAdapter } from '../adapter'\nimport { useDebug } from '../debug'\n\nconst { supportDebug, debug } = useDebug()\n\nexport const UserApis = {\n SiteMapApi__getSiteMap,\n LoginApi__login,\n LoginApi__getLoginUserInfo,\n LoginApi__logout,\n LoginApi__generateVerifyCode,\n CommonApi__getGlobalData\n}\n\n/** @deprecated 此功能已废弃,将在后续版本中移除 */\nasync function CommonApi__getGlobalData(): Promise<{\n roles: string[]\n configInfo: { [key: string]: string }\n}> {\n const resp = await ajaxRequest({\n url: '/r/GlobalConfigBizModel__findGlobalConfigList',\n data: {}\n }).catch(() => {\n return {}\n })\n return {\n ...resp\n }\n}\n\nfunction SiteMapApi__getSiteMap() {\n return ajaxRequest({\n url: '/r/SiteMapApi__getSiteMap',\n data: {\n siteId: 'main'\n }\n }).then((data) => {\n supportDebug.value = data.supportDebug\n debug.value = data.supportDebug\n\n return data\n })\n}\n\nexport type LoginRequest = {\n loginType: number\n principalId: string\n principalSecret: string\n verifyCode?: string\n verifySecret?: string\n}\n\nfunction LoginApi__login(req: LoginRequest) {\n return ajaxRequest({\n url: `/r/LoginApi__login?@selection=token:accessToken`,\n data: req,\n // 登录页面发现异常时会自己弹出错误提示信息,这里禁用ajaxRequest内部的提示框\n silent: true\n })\n}\n\nfunction LoginApi__getLoginUserInfo() {\n const { useAuthToken } = useAdapter()\n\n return ajaxRequest({\n url: '@query:LoginApi__getLoginUserInfo/userId,username:userName,realname:nickName',\n data: {\n accessToken: useAuthToken()\n }\n })\n}\n\nfunction LoginApi__logout() {\n const { useAuthToken } = useAdapter()\n\n return ajaxRequest({\n url: '@mutation:LoginApi__logout',\n data: {\n accessToken: useAuthToken()\n },\n // 退出失败不应弹 toast / 触发二次错误处理\n silent: true\n })\n}\n\nfunction LoginApi__generateVerifyCode(verifySecret: string) {\n return ajaxRequest({\n url: '/r/LoginApi__generateVerifyCode',\n method: 'get',\n data: {\n verifySecret\n }\n })\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isObject, isArray, isString } from '@kdesigner/shared'\nimport { isPromise } from '@kdesigner/shared'\n\n/**\n * 如果返回undefined,表示该节点需要被删除\n */\nexport type XuiDirectiveProcessor = (\n type: string, // 类型信息\n json: any, // 节点数据\n processProps: (json: any) => any // 递归处理子节点时可以使用的帮助函数\n) => any\n\n/**\n * 查找所有具有typeProp指定的属性的节点,并调用processor进行处理,返回结果将会替换原节点。\n * 例如识别xui:roles属性,自动删除没有对应权限的节点\n *\n * @param json json对象\n * @param typeProp 类型字段名\n * @param processor 处理器\n * @returns 经过处理替换后得到的节点\n */\nexport async function processXuiDirective(\n json: any,\n typeProp: string,\n processor: XuiDirectiveProcessor\n) {\n const futures: Array<Promise<any>> = []\n const ret = _processXuiDirective(json, typeProp, processor, futures)\n await Promise.all(futures)\n return ret\n}\n\nfunction _processXuiDirective(\n json: any,\n typeProp: string,\n processor: XuiDirectiveProcessor,\n futures: Array<Promise<any>>\n) {\n if (!json) return json\n\n function processProps(json: any) {\n for (const key in json) {\n let v = json[key]\n v = _processXuiDirective(v, typeProp, processor, futures)\n if (v === undefined) {\n delete json[key]\n } else if (v != json[key]) {\n json[key] = v\n\n // 更新异步返回的结果\n if (isPromise(v)) {\n v.then((ret) => {\n if (ret === undefined) {\n delete json[key]\n } else {\n json[key] = ret\n }\n })\n json[key] = v\n futures.push(v as Promise<any>)\n }\n }\n }\n return json\n }\n\n if (isArray(json)) {\n for (let i = 0, n = json.length; i < n; i++) {\n const child = _processXuiDirective(json[i], typeProp, processor, futures)\n if (child === undefined) {\n json.splice(i, 1)\n i--\n n--\n } else if (child != json[i]) {\n json[i] = child\n\n // 更新异步返回的结果\n if (isPromise(child)) {\n child.then((ret) => {\n const idx = json.indexOf(child)\n if (idx < 0) return\n if (ret == undefined) {\n json.splice(idx, 1)\n } else {\n json[idx] = ret\n }\n })\n }\n }\n }\n } else if (isObject(json)) {\n // 转换组件\n const type = json[typeProp]\n if (type) {\n return (processor as Function)(type, json, processProps)\n }\n\n processProps(json)\n }\n return json\n}\n\nexport type XuiValueProcessor = (value: string, key: any, o: any) => any\n\n/**\n * 对json对象中的字符串值调用processor来处理\n * @param json 待处理的对象\n * @param processor 处理器\n * @returns\n */\nexport function processXuiValue(json: any, processor: XuiValueProcessor) {\n if (!json) return json\n\n function processProps(json: any) {\n for (const key in json) {\n let v = json[key]\n\n if (isString(v)) {\n v = processor(v, key, json)\n if (v === undefined) {\n delete json[key]\n } else if (v != json[key]) {\n json[key] = v\n }\n } else {\n processXuiValue(v, processor)\n }\n }\n return json\n }\n\n if (isArray(json)) {\n for (let i = 0, n = json.length; i < n; i++) {\n const child = json[i]\n if (isString(child)) {\n const v = processor(child, i, json)\n if (v === undefined) {\n delete json[i]\n i--\n n--\n } else if (v != json[i]) {\n json[i] = v\n }\n } else {\n processXuiValue(child, processor)\n }\n }\n } else if (isObject(json)) {\n processProps(json)\n }\n return json\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isArray, isPlainObject, isString } from '@kdesigner/shared'\n\nimport { splitPrefixUrl } from '@/shared'\nimport type { BasePage } from '@/types'\n\nimport { useAdapter } from '../adapter'\nimport { importModule } from '../loader'\nimport { absolutePath } from '../shared'\nimport { processXuiDirective } from './processor'\n\ninterface FnScope {\n standalone: boolean\n libs: Record<string, object>\n}\n\n/**\n * 通过xui:import可以引入SystemJs格式的js模块,通过@action:xxx,@fn:(a,b)=>expr这种形式可以调用js模块中的函数\n *\n * 例如 {\n * \"xui:import\": \"a.lib\"\n * \"page\": {\n * dialog: {\n * \"xui:import\": \"b.lib\"\n * api: \"@action:a.f1\"\n * }\n * }\n * }\n *\n * 上面的例子中@action:a.f1首先向上查找最近的xui:import引入的js库,如果没有找到,则继续向上查找直到顶层的节点。\n *\n * @action:xxx与 @fn:(a,b)=> expr的区别在于 @action:xxx对应函数名,@fn:(a,b)=>expr则是直接定义匿名函数实现\n *\n * @param json json schema\n */\nexport async function bindActions(pageUrl: string, json: any, page: BasePage) {\n if (!json) return\n\n page.resetActions()\n\n const promises: Array<Promise<any>> = []\n const fnStack: FnScope[] = []\n\n // 收集所有的xui:import,异步加载脚本库\n processXuiDirective(json, 'xui:import', (modulePaths, obj, processProps) => {\n // standalone表示不会向上查找action\n const standalone = obj['xui:standalone']\n const fnScope = { standalone, libs: {} }\n fnStack.push(fnScope)\n fetchModules(pageUrl, modulePaths, promises, fnScope)\n processProps(obj)\n return obj\n })\n\n // 等待所有脚本库加载完毕\n await Promise.all(promises)\n\n let stackIndex = -1\n\n function process(json: any) {\n if (!isPlainObject(json)) return\n\n const modulePaths = json['xui:import']\n if (modulePaths) {\n stackIndex++\n }\n\n for (const key in json) {\n const v = json[key]\n if (!v) continue\n\n if (isString(v)) {\n json[key] = processValue(key, v)\n } else if (isArray(v)) {\n for (let i = 0, n = v.length; i < n; i++) {\n process(v[i])\n }\n } else {\n process(v)\n }\n }\n\n if (modulePaths) {\n stackIndex--\n }\n }\n\n function processValue(_key: string, v: string) {\n // amis的新版本要求url必须满足URL格式,必须是schema://path形式\n const [type, path] = splitPrefixUrl(v) || []\n if (!type) return v\n if (['query', 'mutation', 'graphql', 'dict', 'page'].includes(type)) {\n return type + '://' + path\n } else if (type == 'action') {\n const fnName = path.split('-')[0]\n const action = findAction(fnName, fnStack, stackIndex, page)\n for (let i = 0; i < 1000; i++) {\n const actionName = i == 0 ? fnName : fnName + '-' + i\n const existed = page.getAction(actionName)\n if (!existed) {\n page.registerAction(actionName, action)\n return 'action://' + actionName\n } else if (existed == action) {\n return 'action://' + actionName\n }\n }\n throw new Error('nop.err.action-name-conflict:' + v)\n } else if (type == 'fn') {\n const fn = buildFunction(path, page)\n return wrapFunc(fn, v)\n }\n return v\n }\n\n process(json)\n}\n\n// export function splitPrefixUrl(url: string) {\n// if (url.startsWith('@')) {\n// const pos = url.indexOf(':')\n// if (pos < 0) {\n// return\n// }\n// return [url.substring(1, pos), url.substring(pos + 1).trim()]\n// }\n// const pos = url.indexOf('://')\n// if (pos < 0) return\n// return [url.substring(0, pos), url.substring(pos + 3)]\n// }\n\nfunction buildFunction(fn: string, page: BasePage) {\n return useAdapter().compileFunction(fn, page)\n}\n\nfunction fetchModules(\n pageUrl: string,\n modulePaths: any,\n promises: Array<Promise<any>>,\n fnScope: FnScope\n) {\n if (isString(modulePaths)) {\n modulePaths = modulePaths.split(',').reduce(\n (m, p) => {\n m[getPathName(p)] = p\n return m\n },\n {} as Record<string, string>\n )\n }\n\n for (const moduleName in modulePaths) {\n const path = absolutePath(modulePaths[moduleName], pageUrl)\n const promise = importModule(path).then((mod: any) => {\n fnScope.libs[moduleName] = mod\n })\n promises.push(promise)\n }\n}\n\nfunction getPathName(path: string) {\n const pos = path.lastIndexOf('/')\n if (pos >= 0) path = path.substring(pos + 1)\n const pos2 = path.indexOf('.')\n if (pos2 > 0) return path.substring(0, pos2)\n return path\n}\n\nfunction findAction(fnName: string, fnStack: FnScope[], stackIndex: number, page: BasePage) {\n const pos = fnName.indexOf('.')\n if (pos < 0) {\n const api = page.getAction(fnName)\n if (!api) throw new Error('nop.err.unknown-action:' + fnName)\n return api\n }\n\n const libName = fnName.substring(0, pos)\n const methodName = fnName.substring(pos + 1)\n\n for (let i = stackIndex; i >= 0; i--) {\n const fnScope = fnStack[i]\n\n if (fnScope.standalone) break\n\n const lib = fnScope.libs[libName] as any\n if (lib?.[methodName]) {\n return lib[methodName]\n }\n }\n throw new Error('nop.err.unknown-action:' + fnName)\n}\n\n/**\n * 将函数的JSON序列化结果固化为指定值\n */\nfunction wrapFunc(fn: Function, text: string) {\n const ret = (...args: any[]) => fn(...args)\n ret.toJSON = () => text\n return ret\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// xui:component实际上对应于一个转换函数,它负责根据json数据动态生成新的json数据。允许异步生成\nexport type XuiComponent = (json: any) => any | Promise<any>\n\nconst g_components: Record<string, XuiComponent> = {}\n\nexport function registerXuiComponent(type: string, component: XuiComponent) {\n g_components[type] = component\n}\n\nexport function unregisterXuiComponent(type: string) {\n delete g_components[type]\n}\n\nexport function resolveXuiComponent(type: string, json: any): any {\n const comp = g_components[type]\n if (!comp) throw new Error('nop.err.xui.unknown-component:' + type)\n return comp(json)\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useAdapter } from '../adapter'\nimport { processXuiDirective } from './processor'\nimport { resolveXuiComponent } from './registry'\n\nexport async function transformPageJson(pageUrl: string, json: any) {\n json.__baseUrl = pageUrl\n // fixPage(json)\n json = await processXuiDirective(json, 'xui:roles', filterByAuth)\n json = await processXuiDirective(json, 'xui:component', resolveXuiComponent)\n return json\n}\n\nfunction filterByAuth(roles: string, json: any) {\n const { isUserInRole } = useAdapter()\n\n if (!isUserInRole(roles)) return\n return json\n}\n\n/*\nfunction fixPage(json:any){\n if(isArray(json)){\n for(let i=0,n=json.length;i<n;i++){\n fixPage(json[i])\n }\n }else if(isObject(json)){\n // 为dialog和drawer增加amis类,从而限制css作用范围\n const dlg = json['dialog']\n if(isObject(dlg)){\n addClassName(dlg,\"bodyClassName\",\"nop-page\")\n }\n\n const drawer = json['drawer']\n if(isObject(drawer)){\n addClassName(drawer,\"className\",\"nop-page\")\n }\n\n if(json['type'] == 'group'){\n const body = json['body']\n // group的body必须是Array类型。如果是Map,则不显示\n if(isObject(body)){\n json['body'] = [body]\n }\n }\n\n for(let key in json){\n fixPage(json[key])\n }\n }\n}\n\nfunction addClassName(map:any, classNameKey:string, className:string) {\n let value = map[classNameKey];\n if (!value) {\n value = className;\n } else if(value.indexOf(className) < 0) {\n value = className + \" \" + value;\n }\n map[classNameKey] = value;\n}*/\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { BasePage, FetcherRequest, FetcherResult } from '@/types'\n\n/**\n * scoped对应当前amis的scope。只有page/crud/service/form/等少数组件才具有scope\n */\nexport type PageAction = (\n page: PageObject,\n scoped: any,\n options: FetcherRequest\n) => Promise<FetcherResult>\n\nexport type OnOkCallback = (value?: any) => Promise<boolean | void> | boolean | void\nexport type OnCancelCallback = () => void\nexport type OnChangeCallback = (value: any) => void\n\nexport type RegisterPage = (page: PageObject) => void\n\n/**\n * 在action函数中可以访问到的页面对象,包括router, amis的store和pinia store等\n */\nexport type PageObject = BasePage & {\n id: string\n\n getScopedStore(name: string): any\n\n getComponent(name: string): any\n\n getState(name: string): any\n\n setState(name: string, value: any): void\n}\n\nexport interface PageOptions {\n /**\n * 获取amis的component\n */\n getComponent(name: string): any\n\n getScopedStore(name: string): any\n\n getState(name: string): any\n\n setState(name: string, value: any): void\n\n actions?: Record<string, Function>\n}\n\nlet g_nextIndex = 0\n\nexport function createPage(options: PageOptions): PageObject {\n let actions: Record<string, Function> = { ...options.actions }\n\n const page: PageObject = {\n id: 'page_' + String(g_nextIndex++),\n\n getAction(name: string) {\n return actions[name]\n },\n\n registerAction(name: string, fn: Function) {\n actions[name] = fn\n },\n\n resetActions() {\n actions = { ...options.actions }\n },\n\n getComponent: options.getComponent,\n\n getScopedStore: options.getScopedStore,\n\n getState: options.getState,\n\n setState: options.setState\n }\n return page\n}\n","import type { PageObject } from './page'\n\nlet s_page: PageObject | undefined\n\nexport function usePage() {\n return s_page\n}\n\nexport function providePage(page: PageObject) {\n s_page = page\n}\n\nlet s_scoped: any\n\nexport function useScoped() {\n return s_scoped\n}\n\nexport function provideScoped(scoped: any) {\n s_scoped = scoped\n}\n\nlet s_scopedStore: any\n\nexport function useScopedStore() {\n return s_scopedStore\n}\n\nexport function provideScopedStore(store: any) {\n s_scopedStore = store\n}\n\nexport function clearScoped() {\n s_page = undefined\n s_scoped = undefined\n s_scopedStore = undefined\n}\n","import type { Component } from 'vue'\n\nexport interface SchemaProcessorType {\n componentType: Component\n editorComponentType: Component\n transformSchemaIn?(schema: any): any\n transformSchemaOut?(schema: any): any\n}\n\nconst schemaProcessorTypes: Record<string, SchemaProcessorType> = {}\n\nexport function registerSchemaProcessorType(\n typeName: string,\n schemaProcessorType: SchemaProcessorType\n) {\n schemaProcessorTypes[typeName] = schemaProcessorType\n}\n\nexport function getSchemaProcessorType(typeName: string) {\n return schemaProcessorTypes[typeName]\n}\n","export * from './adapter'\n\nexport * from './api'\n\nexport * from './page'\n\nexport * from './ajax'\n\nexport * from './graphql'\n\nexport * from './loader'\n\nexport * from './debug'\n\nexport * from './shared'\n\nexport * from './scope'\n\nexport * from './schema-type'\n\nexport * from './renderer/types'\n","export * from './lib'\nexport type { FetcherRequest, FetcherResult } from './types'\n\nimport { registerAdapter } from './adapter'\nimport { fetcherOk } from './ajax'\nimport { PageApis } from './api'\nimport * as Nexo from './lib'\nimport { registerModule } from './loader'\nimport { transformPageJson, bindActions } from './page'\nimport type { FetcherRequest } from './types'\n\nregisterModule('@kdesigner/core', Nexo)\n\nregisterAdapter({\n fetchDict(dictName: string, options: FetcherRequest) {\n return PageApis.DictProvider__getDict(dictName, options.silent || false).then((res) =>\n fetcherOk(res)\n )\n },\n\n fetchPageAndTransform(pagePath: string, options: FetcherRequest) {\n return PageApis.PageProvider__getPage(pagePath).then(async (pageData) => {\n pageData = await transformPageJson(pagePath, pageData)\n if (options._page) {\n bindActions(pagePath, pageData, options._page)\n }\n return fetcherOk(pageData)\n })\n },\n\n getPage(pageUrl: string) {\n return PageApis.PageProvider__getPage(pageUrl)\n }\n})\n"],"x_google_ignoreList":[2],"mappings":"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"}