@next-core/easyops-runtime 0.6.58 → 0.6.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/flowApi/FlowApi.js +2 -1
- package/dist/cjs/flowApi/FlowApi.js.map +1 -1
- package/dist/cjs/menu/loadDynamicMenuItems.js +7 -7
- package/dist/cjs/menu/loadDynamicMenuItems.js.map +1 -1
- package/dist/esm/flowApi/FlowApi.js +2 -1
- package/dist/esm/flowApi/FlowApi.js.map +1 -1
- package/dist/esm/menu/loadDynamicMenuItems.js +6 -6
- package/dist/esm/menu/loadDynamicMenuItems.js.map +1 -1
- package/package.json +3 -3
|
@@ -39,7 +39,8 @@ function getApiArgsFromApiProfile({
|
|
|
39
39
|
isFileType,
|
|
40
40
|
request
|
|
41
41
|
}, originalArgs, method) {
|
|
42
|
-
|
|
42
|
+
// `saveAs` requires the first argument to be the filename.
|
|
43
|
+
const isDownload = method === "saveAs";
|
|
43
44
|
let fileName;
|
|
44
45
|
if (isDownload) {
|
|
45
46
|
fileName = originalArgs.shift();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowApi.js","names":["_jsYaml","_interopRequireDefault","require","_apiGatewaySdk","_CollectContracts","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","originalArgs","method","Error","apiDefinition","fetchFlowApiDefinition","FlowApiNotFoundError","apiProfile","getApiProfileFromApiDefinition","getApiArgsFromApiProfile","uri","apiMethod","ext_fields","name","namespace","serviceName","responseWrapper","version","isFileType","request","isDownload","fileName","shift","url","args","getTransformedUriAndRestArgs","originalUri","prefix","restArgs","slice","transformedUri","replace","api","_contract$endpoint","_contract$response","contract","yaml","safeLoad","schema","JSON_SCHEMA","json","endpoint","response","wrapper","toLowerCase","type","namespaceName","nameWithVersion","split","getContract","namespaceId","promise","get","fetchFlowApiDefinitionFromRemote","set","_contractData$namespa","contractData","ContractApi_searchSingleContract","contractName","constructor","message","captureStackTrace"],"sources":["../../../src/flowApi/FlowApi.ts"],"sourcesContent":["import yaml from \"js-yaml\";\nimport { ContractApi_searchSingleContract } from \"@next-api-sdk/api-gateway-sdk\";\nimport { ContractRequest, ContractResponse, ExtField } from \"@next-core/types\";\nimport { getContract } from \"./CollectContracts.js\";\n\nconst remoteContractCache = new Map<\n string,\n Promise<CustomApiDefinition | null>\n>();\n\n// Legacy Custom API: `${namespace}@${name}`\n// Flow API: `${namespace}@${name}:${version}`\nexport function isFlowApiProvider(provider: string): boolean {\n return provider.includes(\"@\");\n}\n\nexport async function getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string\n): Promise<unknown[]> {\n if (!provider.includes(\":\")) {\n throw new Error(\n `You're using legacy Custom API \"${provider}\" which is dropped in v3, please use Flow API instead`\n );\n }\n\n const apiDefinition = await fetchFlowApiDefinition(provider);\n\n if (!apiDefinition) {\n throw new FlowApiNotFoundError(`Flow API not found: \"${provider}\"`);\n }\n\n const apiProfile = getApiProfileFromApiDefinition(provider, apiDefinition);\n\n return getApiArgsFromApiProfile(apiProfile, originalArgs, method);\n}\n\nfunction getApiArgsFromApiProfile(\n {\n uri,\n method: apiMethod,\n ext_fields,\n name,\n namespace,\n serviceName,\n responseWrapper,\n version,\n isFileType,\n request,\n }: CustomApiProfile,\n originalArgs: unknown[],\n method?: string\n): unknown[] {\n const isDownload = isFileType && method === \"saveAs\";\n let fileName: string | undefined;\n if (isDownload) {\n fileName = originalArgs.shift() as string;\n }\n\n const { url, args } = getTransformedUriAndRestArgs(\n uri,\n originalArgs,\n name,\n namespace,\n serviceName,\n version\n );\n\n return [\n ...(isDownload ? [fileName] : []),\n {\n url,\n originalUri: uri,\n method: apiMethod,\n ext_fields,\n responseWrapper,\n request,\n isFileType,\n },\n ...args,\n ];\n}\n\nfunction getTransformedUriAndRestArgs(\n uri: string,\n originalArgs: unknown[],\n name: string,\n namespace: string,\n serviceName: string | undefined,\n version?: string\n): { url: string; args: unknown[] } {\n const prefix = version\n ? serviceName\n ? `api/gateway/${serviceName}`\n : `api/gateway/${namespace}.${name}@${version}`\n : `api/gateway/api_service.${namespace}.${name}`;\n const restArgs = originalArgs.slice();\n const transformedUri = uri.replace(\n /:([^/]+)/g,\n () => restArgs.shift() as string\n );\n return {\n url: prefix + transformedUri,\n args: restArgs,\n };\n}\n\nfunction getApiProfileFromApiDefinition(\n provider: string,\n api: CustomApiDefinition\n): CustomApiProfile {\n const contract: CustomApiDefinition[\"contract\"] =\n typeof api.contract === \"string\"\n ? (yaml.safeLoad(api.contract, {\n schema: yaml.JSON_SCHEMA,\n json: true,\n }) as CustomApiDefinition[\"contract\"])\n : api.contract;\n const { uri, method = \"GET\", ext_fields } = contract?.endpoint ?? {};\n const responseWrapper = contract?.response\n ? contract.response.wrapper !== false\n : false;\n if (!uri) {\n throw new Error(\n `Missing endpoint.uri in contract of provider \"${provider}\"`\n );\n }\n return {\n uri,\n method: method.toLowerCase() === \"list\" ? \"get\" : method,\n ext_fields,\n name: api.name,\n namespace: api.namespace,\n serviceName: api.serviceName,\n version: api.version,\n isFileType: contract?.response?.type === \"file\",\n responseWrapper,\n request: contract?.request,\n };\n}\n\nasync function fetchFlowApiDefinition(\n provider: string\n): Promise<CustomApiDefinition | null> {\n const [namespaceName, nameWithVersion] = provider.split(\"@\");\n const [name, version] = nameWithVersion.split(\":\");\n\n // Do not cache the result of `geContract`, which will lead to no contract\n // will be found when render twice immediately.\n const contract = getContract(`${namespaceName}.${name}`);\n if (contract) {\n return {\n name: contract.name,\n namespace: contract.namespaceId,\n serviceName: contract.serviceName,\n version: contract.version,\n contract: {\n endpoint: contract.endpoint,\n response: contract.response,\n request: contract.request,\n },\n };\n }\n let promise = remoteContractCache.get(provider);\n if (!promise) {\n promise = fetchFlowApiDefinitionFromRemote(namespaceName, name, version);\n remoteContractCache.set(provider, promise);\n }\n return promise;\n}\n\nasync function fetchFlowApiDefinitionFromRemote(\n namespace: string,\n name: string,\n version: string\n): Promise<CustomApiDefinition | null> {\n const { contractData } = await ContractApi_searchSingleContract({\n contractName: `${namespace}.${name}`,\n version,\n });\n\n // return undefined if don't found contract\n return contractData\n ? {\n name: contractData.name,\n namespace: contractData.namespace?.[0]?.name,\n serviceName: contractData.serviceName,\n version: contractData.version,\n contract: {\n endpoint: contractData.endpoint,\n response: contractData.response,\n request: contractData.request,\n },\n }\n : null;\n}\n\nexport interface CustomApiDefinition {\n name: string;\n namespace: string;\n version?: string;\n serviceName?: string;\n contract?: {\n endpoint: {\n ext_fields?: ExtField[];\n uri: string;\n method:\n | \"POST\"\n | \"post\"\n | \"PUT\"\n | \"put\"\n | \"GET\"\n | \"get\"\n | \"DELETE\"\n | \"delete\"\n | \"LIST\"\n | \"list\"\n | \"PATCH\"\n | \"patch\"\n | \"HEAD\"\n | \"head\";\n };\n request?: ContractRequest;\n response?: ContractResponse;\n };\n}\n\nexport interface CustomApiProfile {\n uri: string;\n method: string;\n name: string;\n namespace: string;\n serviceName?: string;\n responseWrapper: boolean;\n version?: string;\n isFileType?: boolean;\n ext_fields?: ExtField[];\n request?: ContractRequest;\n}\n\nclass FlowApiNotFoundError extends Error {\n constructor(message: string) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(message);\n\n this.name = \"FlowApiNotFoundError\";\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // istanbul ignore else\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FlowApiNotFoundError);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FlowApi.js","names":["_jsYaml","_interopRequireDefault","require","_apiGatewaySdk","_CollectContracts","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","originalArgs","method","Error","apiDefinition","fetchFlowApiDefinition","FlowApiNotFoundError","apiProfile","getApiProfileFromApiDefinition","getApiArgsFromApiProfile","uri","apiMethod","ext_fields","name","namespace","serviceName","responseWrapper","version","isFileType","request","isDownload","fileName","shift","url","args","getTransformedUriAndRestArgs","originalUri","prefix","restArgs","slice","transformedUri","replace","api","_contract$endpoint","_contract$response","contract","yaml","safeLoad","schema","JSON_SCHEMA","json","endpoint","response","wrapper","toLowerCase","type","namespaceName","nameWithVersion","split","getContract","namespaceId","promise","get","fetchFlowApiDefinitionFromRemote","set","_contractData$namespa","contractData","ContractApi_searchSingleContract","contractName","constructor","message","captureStackTrace"],"sources":["../../../src/flowApi/FlowApi.ts"],"sourcesContent":["import yaml from \"js-yaml\";\nimport { ContractApi_searchSingleContract } from \"@next-api-sdk/api-gateway-sdk\";\nimport { ContractRequest, ContractResponse, ExtField } from \"@next-core/types\";\nimport { getContract } from \"./CollectContracts.js\";\n\nconst remoteContractCache = new Map<\n string,\n Promise<CustomApiDefinition | null>\n>();\n\n// Legacy Custom API: `${namespace}@${name}`\n// Flow API: `${namespace}@${name}:${version}`\nexport function isFlowApiProvider(provider: string): boolean {\n return provider.includes(\"@\");\n}\n\nexport async function getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string\n): Promise<unknown[]> {\n if (!provider.includes(\":\")) {\n throw new Error(\n `You're using legacy Custom API \"${provider}\" which is dropped in v3, please use Flow API instead`\n );\n }\n\n const apiDefinition = await fetchFlowApiDefinition(provider);\n\n if (!apiDefinition) {\n throw new FlowApiNotFoundError(`Flow API not found: \"${provider}\"`);\n }\n\n const apiProfile = getApiProfileFromApiDefinition(provider, apiDefinition);\n\n return getApiArgsFromApiProfile(apiProfile, originalArgs, method);\n}\n\nfunction getApiArgsFromApiProfile(\n {\n uri,\n method: apiMethod,\n ext_fields,\n name,\n namespace,\n serviceName,\n responseWrapper,\n version,\n isFileType,\n request,\n }: CustomApiProfile,\n originalArgs: unknown[],\n method?: string\n): unknown[] {\n // `saveAs` requires the first argument to be the filename.\n const isDownload = method === \"saveAs\";\n let fileName: string | undefined;\n if (isDownload) {\n fileName = originalArgs.shift() as string;\n }\n\n const { url, args } = getTransformedUriAndRestArgs(\n uri,\n originalArgs,\n name,\n namespace,\n serviceName,\n version\n );\n\n return [\n ...(isDownload ? [fileName] : []),\n {\n url,\n originalUri: uri,\n method: apiMethod,\n ext_fields,\n responseWrapper,\n request,\n isFileType,\n },\n ...args,\n ];\n}\n\nfunction getTransformedUriAndRestArgs(\n uri: string,\n originalArgs: unknown[],\n name: string,\n namespace: string,\n serviceName: string | undefined,\n version?: string\n): { url: string; args: unknown[] } {\n const prefix = version\n ? serviceName\n ? `api/gateway/${serviceName}`\n : `api/gateway/${namespace}.${name}@${version}`\n : `api/gateway/api_service.${namespace}.${name}`;\n const restArgs = originalArgs.slice();\n const transformedUri = uri.replace(\n /:([^/]+)/g,\n () => restArgs.shift() as string\n );\n return {\n url: prefix + transformedUri,\n args: restArgs,\n };\n}\n\nfunction getApiProfileFromApiDefinition(\n provider: string,\n api: CustomApiDefinition\n): CustomApiProfile {\n const contract: CustomApiDefinition[\"contract\"] =\n typeof api.contract === \"string\"\n ? (yaml.safeLoad(api.contract, {\n schema: yaml.JSON_SCHEMA,\n json: true,\n }) as CustomApiDefinition[\"contract\"])\n : api.contract;\n const { uri, method = \"GET\", ext_fields } = contract?.endpoint ?? {};\n const responseWrapper = contract?.response\n ? contract.response.wrapper !== false\n : false;\n if (!uri) {\n throw new Error(\n `Missing endpoint.uri in contract of provider \"${provider}\"`\n );\n }\n return {\n uri,\n method: method.toLowerCase() === \"list\" ? \"get\" : method,\n ext_fields,\n name: api.name,\n namespace: api.namespace,\n serviceName: api.serviceName,\n version: api.version,\n isFileType: contract?.response?.type === \"file\",\n responseWrapper,\n request: contract?.request,\n };\n}\n\nasync function fetchFlowApiDefinition(\n provider: string\n): Promise<CustomApiDefinition | null> {\n const [namespaceName, nameWithVersion] = provider.split(\"@\");\n const [name, version] = nameWithVersion.split(\":\");\n\n // Do not cache the result of `geContract`, which will lead to no contract\n // will be found when render twice immediately.\n const contract = getContract(`${namespaceName}.${name}`);\n if (contract) {\n return {\n name: contract.name,\n namespace: contract.namespaceId,\n serviceName: contract.serviceName,\n version: contract.version,\n contract: {\n endpoint: contract.endpoint,\n response: contract.response,\n request: contract.request,\n },\n };\n }\n let promise = remoteContractCache.get(provider);\n if (!promise) {\n promise = fetchFlowApiDefinitionFromRemote(namespaceName, name, version);\n remoteContractCache.set(provider, promise);\n }\n return promise;\n}\n\nasync function fetchFlowApiDefinitionFromRemote(\n namespace: string,\n name: string,\n version: string\n): Promise<CustomApiDefinition | null> {\n const { contractData } = await ContractApi_searchSingleContract({\n contractName: `${namespace}.${name}`,\n version,\n });\n\n // return undefined if don't found contract\n return contractData\n ? {\n name: contractData.name,\n namespace: contractData.namespace?.[0]?.name,\n serviceName: contractData.serviceName,\n version: contractData.version,\n contract: {\n endpoint: contractData.endpoint,\n response: contractData.response,\n request: contractData.request,\n },\n }\n : null;\n}\n\nexport interface CustomApiDefinition {\n name: string;\n namespace: string;\n version?: string;\n serviceName?: string;\n contract?: {\n endpoint: {\n ext_fields?: ExtField[];\n uri: string;\n method:\n | \"POST\"\n | \"post\"\n | \"PUT\"\n | \"put\"\n | \"GET\"\n | \"get\"\n | \"DELETE\"\n | \"delete\"\n | \"LIST\"\n | \"list\"\n | \"PATCH\"\n | \"patch\"\n | \"HEAD\"\n | \"head\";\n };\n request?: ContractRequest;\n response?: ContractResponse;\n };\n}\n\nexport interface CustomApiProfile {\n uri: string;\n method: string;\n name: string;\n namespace: string;\n serviceName?: string;\n responseWrapper: boolean;\n version?: string;\n isFileType?: boolean;\n ext_fields?: ExtField[];\n request?: ContractRequest;\n}\n\nclass FlowApiNotFoundError extends Error {\n constructor(message: string) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(message);\n\n this.name = \"FlowApiNotFoundError\";\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // istanbul ignore else\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FlowApiNotFoundError);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,18 +4,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.loadDynamicMenuItems = loadDynamicMenuItems;
|
|
7
|
+
var _checkPermissions = require("../checkPermissions.js");
|
|
7
8
|
async function loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers) {
|
|
8
9
|
if (menu.dynamicItems && menu.itemsResolve) {
|
|
9
10
|
const overrideAppId = menu.app[0].appId;
|
|
10
|
-
|
|
11
|
+
const newRuntimeContext = {
|
|
12
|
+
...runtimeContext,
|
|
13
|
+
pendingPermissionsPreCheck: [...runtimeContext.pendingPermissionsPreCheck, (0, _checkPermissions.preCheckPermissionsForAny)(menu.itemsResolve)]
|
|
14
|
+
};
|
|
11
15
|
if (overrideAppId !== runtimeContext.app.id) {
|
|
12
16
|
var _helpers$getStoryboar;
|
|
13
|
-
|
|
14
|
-
newRuntimeContext =
|
|
15
|
-
...runtimeContext,
|
|
16
|
-
overrideApp,
|
|
17
|
-
appendI18nNamespace: menuWithI18n.get(menu)
|
|
18
|
-
};
|
|
17
|
+
newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS ? menu.overrideApp : (_helpers$getStoryboar = helpers.getStoryboardByAppId(overrideAppId)) === null || _helpers$getStoryboar === void 0 ? void 0 : _helpers$getStoryboar.app;
|
|
18
|
+
newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);
|
|
19
19
|
}
|
|
20
20
|
const resolved = await helpers.resolveData({
|
|
21
21
|
transform: "items",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadDynamicMenuItems.js","names":["loadDynamicMenuItems","menu","runtimeContext","menuWithI18n","helpers","dynamicItems","itemsResolve","overrideAppId","app","appId","newRuntimeContext","id","_helpers$getStoryboar","overrideApp","window","STANDALONE_MICRO_APPS","getStoryboardByAppId","appendI18nNamespace","get","resolved","resolveData","transform","items"],"sources":["../../../src/menu/loadDynamicMenuItems.ts"],"sourcesContent":["import type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\n\nexport async function loadDynamicMenuItems(\n menu: MenuRawData,\n runtimeContext: RuntimeContext,\n menuWithI18n: WeakMap<MenuRawData, string>,\n helpers: RuntimeHelpers\n): Promise<void> {\n if (menu.dynamicItems && menu.itemsResolve) {\n const overrideAppId = menu.app[0].appId;\n
|
|
1
|
+
{"version":3,"file":"loadDynamicMenuItems.js","names":["_checkPermissions","require","loadDynamicMenuItems","menu","runtimeContext","menuWithI18n","helpers","dynamicItems","itemsResolve","overrideAppId","app","appId","newRuntimeContext","pendingPermissionsPreCheck","preCheckPermissionsForAny","id","_helpers$getStoryboar","overrideApp","window","STANDALONE_MICRO_APPS","getStoryboardByAppId","appendI18nNamespace","get","resolved","resolveData","transform","items"],"sources":["../../../src/menu/loadDynamicMenuItems.ts"],"sourcesContent":["import { preCheckPermissionsForAny } from \"../checkPermissions.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\n\nexport async function loadDynamicMenuItems(\n menu: MenuRawData,\n runtimeContext: RuntimeContext,\n menuWithI18n: WeakMap<MenuRawData, string>,\n helpers: RuntimeHelpers\n): Promise<void> {\n if (menu.dynamicItems && menu.itemsResolve) {\n const overrideAppId = menu.app[0].appId;\n const newRuntimeContext = {\n ...runtimeContext,\n pendingPermissionsPreCheck: [\n ...runtimeContext.pendingPermissionsPreCheck,\n preCheckPermissionsForAny(menu.itemsResolve),\n ],\n };\n if (overrideAppId !== runtimeContext.app.id) {\n newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS\n ? menu.overrideApp\n : helpers.getStoryboardByAppId(overrideAppId)?.app;\n newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);\n }\n\n const resolved = (await helpers.resolveData(\n {\n transform: \"items\",\n ...menu.itemsResolve,\n },\n newRuntimeContext\n )) as { items: MenuItemRawData[] };\n menu.items = resolved.items;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAQO,eAAeC,oBAAoBA,CACxCC,IAAiB,EACjBC,cAA8B,EAC9BC,YAA0C,EAC1CC,OAAuB,EACR;EACf,IAAIH,IAAI,CAACI,YAAY,IAAIJ,IAAI,CAACK,YAAY,EAAE;IAC1C,MAAMC,aAAa,GAAGN,IAAI,CAACO,GAAG,CAAC,CAAC,CAAC,CAACC,KAAK;IACvC,MAAMC,iBAAiB,GAAG;MACxB,GAAGR,cAAc;MACjBS,0BAA0B,EAAE,CAC1B,GAAGT,cAAc,CAACS,0BAA0B,EAC5C,IAAAC,2CAAyB,EAACX,IAAI,CAACK,YAAY,CAAC;IAEhD,CAAC;IACD,IAAIC,aAAa,KAAKL,cAAc,CAACM,GAAG,CAACK,EAAE,EAAE;MAAA,IAAAC,qBAAA;MAC3CJ,iBAAiB,CAACK,WAAW,GAAGC,MAAM,CAACC,qBAAqB,GACxDhB,IAAI,CAACc,WAAW,IAAAD,qBAAA,GAChBV,OAAO,CAACc,oBAAoB,CAACX,aAAa,CAAC,cAAAO,qBAAA,uBAA3CA,qBAAA,CAA6CN,GAAG;MACpDE,iBAAiB,CAACS,mBAAmB,GAAGhB,YAAY,CAACiB,GAAG,CAACnB,IAAI,CAAC;IAChE;IAEA,MAAMoB,QAAQ,GAAI,MAAMjB,OAAO,CAACkB,WAAW,CACzC;MACEC,SAAS,EAAE,OAAO;MAClB,GAAGtB,IAAI,CAACK;IACV,CAAC,EACDI,iBACF,CAAkC;IAClCT,IAAI,CAACuB,KAAK,GAAGH,QAAQ,CAACG,KAAK;EAC7B;AACF"}
|
|
@@ -39,7 +39,8 @@ function getApiArgsFromApiProfile(_ref, originalArgs, method) {
|
|
|
39
39
|
isFileType,
|
|
40
40
|
request
|
|
41
41
|
} = _ref;
|
|
42
|
-
|
|
42
|
+
// `saveAs` requires the first argument to be the filename.
|
|
43
|
+
var isDownload = method === "saveAs";
|
|
43
44
|
var fileName;
|
|
44
45
|
if (isDownload) {
|
|
45
46
|
fileName = originalArgs.shift();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowApi.js","names":["yaml","ContractApi_searchSingleContract","getContract","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","_x","_x2","_x3","_getArgsOfFlowApi","apply","arguments","_asyncToGenerator","originalArgs","method","Error","concat","apiDefinition","fetchFlowApiDefinition","FlowApiNotFoundError","apiProfile","getApiProfileFromApiDefinition","getApiArgsFromApiProfile","_ref","uri","apiMethod","ext_fields","name","namespace","serviceName","responseWrapper","version","isFileType","request","isDownload","fileName","shift","url","args","getTransformedUriAndRestArgs","originalUri","prefix","restArgs","slice","transformedUri","replace","api","_contract$endpoint","_contract$response","contract","safeLoad","schema","JSON_SCHEMA","json","endpoint","response","wrapper","toLowerCase","type","_x4","_fetchFlowApiDefinition","namespaceName","nameWithVersion","split","namespaceId","promise","get","fetchFlowApiDefinitionFromRemote","set","_x5","_x6","_x7","_fetchFlowApiDefinitionFromRemote","_contractData$namespa","contractData","contractName","constructor","message","captureStackTrace"],"sources":["../../../src/flowApi/FlowApi.ts"],"sourcesContent":["import yaml from \"js-yaml\";\nimport { ContractApi_searchSingleContract } from \"@next-api-sdk/api-gateway-sdk\";\nimport { ContractRequest, ContractResponse, ExtField } from \"@next-core/types\";\nimport { getContract } from \"./CollectContracts.js\";\n\nconst remoteContractCache = new Map<\n string,\n Promise<CustomApiDefinition | null>\n>();\n\n// Legacy Custom API: `${namespace}@${name}`\n// Flow API: `${namespace}@${name}:${version}`\nexport function isFlowApiProvider(provider: string): boolean {\n return provider.includes(\"@\");\n}\n\nexport async function getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string\n): Promise<unknown[]> {\n if (!provider.includes(\":\")) {\n throw new Error(\n `You're using legacy Custom API \"${provider}\" which is dropped in v3, please use Flow API instead`\n );\n }\n\n const apiDefinition = await fetchFlowApiDefinition(provider);\n\n if (!apiDefinition) {\n throw new FlowApiNotFoundError(`Flow API not found: \"${provider}\"`);\n }\n\n const apiProfile = getApiProfileFromApiDefinition(provider, apiDefinition);\n\n return getApiArgsFromApiProfile(apiProfile, originalArgs, method);\n}\n\nfunction getApiArgsFromApiProfile(\n {\n uri,\n method: apiMethod,\n ext_fields,\n name,\n namespace,\n serviceName,\n responseWrapper,\n version,\n isFileType,\n request,\n }: CustomApiProfile,\n originalArgs: unknown[],\n method?: string\n): unknown[] {\n const isDownload = isFileType && method === \"saveAs\";\n let fileName: string | undefined;\n if (isDownload) {\n fileName = originalArgs.shift() as string;\n }\n\n const { url, args } = getTransformedUriAndRestArgs(\n uri,\n originalArgs,\n name,\n namespace,\n serviceName,\n version\n );\n\n return [\n ...(isDownload ? [fileName] : []),\n {\n url,\n originalUri: uri,\n method: apiMethod,\n ext_fields,\n responseWrapper,\n request,\n isFileType,\n },\n ...args,\n ];\n}\n\nfunction getTransformedUriAndRestArgs(\n uri: string,\n originalArgs: unknown[],\n name: string,\n namespace: string,\n serviceName: string | undefined,\n version?: string\n): { url: string; args: unknown[] } {\n const prefix = version\n ? serviceName\n ? `api/gateway/${serviceName}`\n : `api/gateway/${namespace}.${name}@${version}`\n : `api/gateway/api_service.${namespace}.${name}`;\n const restArgs = originalArgs.slice();\n const transformedUri = uri.replace(\n /:([^/]+)/g,\n () => restArgs.shift() as string\n );\n return {\n url: prefix + transformedUri,\n args: restArgs,\n };\n}\n\nfunction getApiProfileFromApiDefinition(\n provider: string,\n api: CustomApiDefinition\n): CustomApiProfile {\n const contract: CustomApiDefinition[\"contract\"] =\n typeof api.contract === \"string\"\n ? (yaml.safeLoad(api.contract, {\n schema: yaml.JSON_SCHEMA,\n json: true,\n }) as CustomApiDefinition[\"contract\"])\n : api.contract;\n const { uri, method = \"GET\", ext_fields } = contract?.endpoint ?? {};\n const responseWrapper = contract?.response\n ? contract.response.wrapper !== false\n : false;\n if (!uri) {\n throw new Error(\n `Missing endpoint.uri in contract of provider \"${provider}\"`\n );\n }\n return {\n uri,\n method: method.toLowerCase() === \"list\" ? \"get\" : method,\n ext_fields,\n name: api.name,\n namespace: api.namespace,\n serviceName: api.serviceName,\n version: api.version,\n isFileType: contract?.response?.type === \"file\",\n responseWrapper,\n request: contract?.request,\n };\n}\n\nasync function fetchFlowApiDefinition(\n provider: string\n): Promise<CustomApiDefinition | null> {\n const [namespaceName, nameWithVersion] = provider.split(\"@\");\n const [name, version] = nameWithVersion.split(\":\");\n\n // Do not cache the result of `geContract`, which will lead to no contract\n // will be found when render twice immediately.\n const contract = getContract(`${namespaceName}.${name}`);\n if (contract) {\n return {\n name: contract.name,\n namespace: contract.namespaceId,\n serviceName: contract.serviceName,\n version: contract.version,\n contract: {\n endpoint: contract.endpoint,\n response: contract.response,\n request: contract.request,\n },\n };\n }\n let promise = remoteContractCache.get(provider);\n if (!promise) {\n promise = fetchFlowApiDefinitionFromRemote(namespaceName, name, version);\n remoteContractCache.set(provider, promise);\n }\n return promise;\n}\n\nasync function fetchFlowApiDefinitionFromRemote(\n namespace: string,\n name: string,\n version: string\n): Promise<CustomApiDefinition | null> {\n const { contractData } = await ContractApi_searchSingleContract({\n contractName: `${namespace}.${name}`,\n version,\n });\n\n // return undefined if don't found contract\n return contractData\n ? {\n name: contractData.name,\n namespace: contractData.namespace?.[0]?.name,\n serviceName: contractData.serviceName,\n version: contractData.version,\n contract: {\n endpoint: contractData.endpoint,\n response: contractData.response,\n request: contractData.request,\n },\n }\n : null;\n}\n\nexport interface CustomApiDefinition {\n name: string;\n namespace: string;\n version?: string;\n serviceName?: string;\n contract?: {\n endpoint: {\n ext_fields?: ExtField[];\n uri: string;\n method:\n | \"POST\"\n | \"post\"\n | \"PUT\"\n | \"put\"\n | \"GET\"\n | \"get\"\n | \"DELETE\"\n | \"delete\"\n | \"LIST\"\n | \"list\"\n | \"PATCH\"\n | \"patch\"\n | \"HEAD\"\n | \"head\";\n };\n request?: ContractRequest;\n response?: ContractResponse;\n };\n}\n\nexport interface CustomApiProfile {\n uri: string;\n method: string;\n name: string;\n namespace: string;\n serviceName?: string;\n responseWrapper: boolean;\n version?: string;\n isFileType?: boolean;\n ext_fields?: ExtField[];\n request?: ContractRequest;\n}\n\nclass FlowApiNotFoundError extends Error {\n constructor(message: string) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(message);\n\n this.name = \"FlowApiNotFoundError\";\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // istanbul ignore else\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FlowApiNotFoundError);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FlowApi.js","names":["yaml","ContractApi_searchSingleContract","getContract","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","_x","_x2","_x3","_getArgsOfFlowApi","apply","arguments","_asyncToGenerator","originalArgs","method","Error","concat","apiDefinition","fetchFlowApiDefinition","FlowApiNotFoundError","apiProfile","getApiProfileFromApiDefinition","getApiArgsFromApiProfile","_ref","uri","apiMethod","ext_fields","name","namespace","serviceName","responseWrapper","version","isFileType","request","isDownload","fileName","shift","url","args","getTransformedUriAndRestArgs","originalUri","prefix","restArgs","slice","transformedUri","replace","api","_contract$endpoint","_contract$response","contract","safeLoad","schema","JSON_SCHEMA","json","endpoint","response","wrapper","toLowerCase","type","_x4","_fetchFlowApiDefinition","namespaceName","nameWithVersion","split","namespaceId","promise","get","fetchFlowApiDefinitionFromRemote","set","_x5","_x6","_x7","_fetchFlowApiDefinitionFromRemote","_contractData$namespa","contractData","contractName","constructor","message","captureStackTrace"],"sources":["../../../src/flowApi/FlowApi.ts"],"sourcesContent":["import yaml from \"js-yaml\";\nimport { ContractApi_searchSingleContract } from \"@next-api-sdk/api-gateway-sdk\";\nimport { ContractRequest, ContractResponse, ExtField } from \"@next-core/types\";\nimport { getContract } from \"./CollectContracts.js\";\n\nconst remoteContractCache = new Map<\n string,\n Promise<CustomApiDefinition | null>\n>();\n\n// Legacy Custom API: `${namespace}@${name}`\n// Flow API: `${namespace}@${name}:${version}`\nexport function isFlowApiProvider(provider: string): boolean {\n return provider.includes(\"@\");\n}\n\nexport async function getArgsOfFlowApi(\n provider: string,\n originalArgs: unknown[],\n method?: string\n): Promise<unknown[]> {\n if (!provider.includes(\":\")) {\n throw new Error(\n `You're using legacy Custom API \"${provider}\" which is dropped in v3, please use Flow API instead`\n );\n }\n\n const apiDefinition = await fetchFlowApiDefinition(provider);\n\n if (!apiDefinition) {\n throw new FlowApiNotFoundError(`Flow API not found: \"${provider}\"`);\n }\n\n const apiProfile = getApiProfileFromApiDefinition(provider, apiDefinition);\n\n return getApiArgsFromApiProfile(apiProfile, originalArgs, method);\n}\n\nfunction getApiArgsFromApiProfile(\n {\n uri,\n method: apiMethod,\n ext_fields,\n name,\n namespace,\n serviceName,\n responseWrapper,\n version,\n isFileType,\n request,\n }: CustomApiProfile,\n originalArgs: unknown[],\n method?: string\n): unknown[] {\n // `saveAs` requires the first argument to be the filename.\n const isDownload = method === \"saveAs\";\n let fileName: string | undefined;\n if (isDownload) {\n fileName = originalArgs.shift() as string;\n }\n\n const { url, args } = getTransformedUriAndRestArgs(\n uri,\n originalArgs,\n name,\n namespace,\n serviceName,\n version\n );\n\n return [\n ...(isDownload ? [fileName] : []),\n {\n url,\n originalUri: uri,\n method: apiMethod,\n ext_fields,\n responseWrapper,\n request,\n isFileType,\n },\n ...args,\n ];\n}\n\nfunction getTransformedUriAndRestArgs(\n uri: string,\n originalArgs: unknown[],\n name: string,\n namespace: string,\n serviceName: string | undefined,\n version?: string\n): { url: string; args: unknown[] } {\n const prefix = version\n ? serviceName\n ? `api/gateway/${serviceName}`\n : `api/gateway/${namespace}.${name}@${version}`\n : `api/gateway/api_service.${namespace}.${name}`;\n const restArgs = originalArgs.slice();\n const transformedUri = uri.replace(\n /:([^/]+)/g,\n () => restArgs.shift() as string\n );\n return {\n url: prefix + transformedUri,\n args: restArgs,\n };\n}\n\nfunction getApiProfileFromApiDefinition(\n provider: string,\n api: CustomApiDefinition\n): CustomApiProfile {\n const contract: CustomApiDefinition[\"contract\"] =\n typeof api.contract === \"string\"\n ? (yaml.safeLoad(api.contract, {\n schema: yaml.JSON_SCHEMA,\n json: true,\n }) as CustomApiDefinition[\"contract\"])\n : api.contract;\n const { uri, method = \"GET\", ext_fields } = contract?.endpoint ?? {};\n const responseWrapper = contract?.response\n ? contract.response.wrapper !== false\n : false;\n if (!uri) {\n throw new Error(\n `Missing endpoint.uri in contract of provider \"${provider}\"`\n );\n }\n return {\n uri,\n method: method.toLowerCase() === \"list\" ? \"get\" : method,\n ext_fields,\n name: api.name,\n namespace: api.namespace,\n serviceName: api.serviceName,\n version: api.version,\n isFileType: contract?.response?.type === \"file\",\n responseWrapper,\n request: contract?.request,\n };\n}\n\nasync function fetchFlowApiDefinition(\n provider: string\n): Promise<CustomApiDefinition | null> {\n const [namespaceName, nameWithVersion] = provider.split(\"@\");\n const [name, version] = nameWithVersion.split(\":\");\n\n // Do not cache the result of `geContract`, which will lead to no contract\n // will be found when render twice immediately.\n const contract = getContract(`${namespaceName}.${name}`);\n if (contract) {\n return {\n name: contract.name,\n namespace: contract.namespaceId,\n serviceName: contract.serviceName,\n version: contract.version,\n contract: {\n endpoint: contract.endpoint,\n response: contract.response,\n request: contract.request,\n },\n };\n }\n let promise = remoteContractCache.get(provider);\n if (!promise) {\n promise = fetchFlowApiDefinitionFromRemote(namespaceName, name, version);\n remoteContractCache.set(provider, promise);\n }\n return promise;\n}\n\nasync function fetchFlowApiDefinitionFromRemote(\n namespace: string,\n name: string,\n version: string\n): Promise<CustomApiDefinition | null> {\n const { contractData } = await ContractApi_searchSingleContract({\n contractName: `${namespace}.${name}`,\n version,\n });\n\n // return undefined if don't found contract\n return contractData\n ? {\n name: contractData.name,\n namespace: contractData.namespace?.[0]?.name,\n serviceName: contractData.serviceName,\n version: contractData.version,\n contract: {\n endpoint: contractData.endpoint,\n response: contractData.response,\n request: contractData.request,\n },\n }\n : null;\n}\n\nexport interface CustomApiDefinition {\n name: string;\n namespace: string;\n version?: string;\n serviceName?: string;\n contract?: {\n endpoint: {\n ext_fields?: ExtField[];\n uri: string;\n method:\n | \"POST\"\n | \"post\"\n | \"PUT\"\n | \"put\"\n | \"GET\"\n | \"get\"\n | \"DELETE\"\n | \"delete\"\n | \"LIST\"\n | \"list\"\n | \"PATCH\"\n | \"patch\"\n | \"HEAD\"\n | \"head\";\n };\n request?: ContractRequest;\n response?: ContractResponse;\n };\n}\n\nexport interface CustomApiProfile {\n uri: string;\n method: string;\n name: string;\n namespace: string;\n serviceName?: string;\n responseWrapper: boolean;\n version?: string;\n isFileType?: boolean;\n ext_fields?: ExtField[];\n request?: ContractRequest;\n}\n\nclass FlowApiNotFoundError extends Error {\n constructor(message: string) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(message);\n\n this.name = \"FlowApiNotFoundError\";\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n // istanbul ignore else\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FlowApiNotFoundError);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
+
import { preCheckPermissionsForAny } from "../checkPermissions.js";
|
|
3
4
|
export function loadDynamicMenuItems(_x, _x2, _x3, _x4) {
|
|
4
5
|
return _loadDynamicMenuItems.apply(this, arguments);
|
|
5
6
|
}
|
|
@@ -7,14 +8,13 @@ function _loadDynamicMenuItems() {
|
|
|
7
8
|
_loadDynamicMenuItems = _asyncToGenerator(function* (menu, runtimeContext, menuWithI18n, helpers) {
|
|
8
9
|
if (menu.dynamicItems && menu.itemsResolve) {
|
|
9
10
|
var overrideAppId = menu.app[0].appId;
|
|
10
|
-
var newRuntimeContext = runtimeContext
|
|
11
|
+
var newRuntimeContext = _objectSpread(_objectSpread({}, runtimeContext), {}, {
|
|
12
|
+
pendingPermissionsPreCheck: [...runtimeContext.pendingPermissionsPreCheck, preCheckPermissionsForAny(menu.itemsResolve)]
|
|
13
|
+
});
|
|
11
14
|
if (overrideAppId !== runtimeContext.app.id) {
|
|
12
15
|
var _helpers$getStoryboar;
|
|
13
|
-
|
|
14
|
-
newRuntimeContext =
|
|
15
|
-
overrideApp,
|
|
16
|
-
appendI18nNamespace: menuWithI18n.get(menu)
|
|
17
|
-
});
|
|
16
|
+
newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS ? menu.overrideApp : (_helpers$getStoryboar = helpers.getStoryboardByAppId(overrideAppId)) === null || _helpers$getStoryboar === void 0 ? void 0 : _helpers$getStoryboar.app;
|
|
17
|
+
newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);
|
|
18
18
|
}
|
|
19
19
|
var resolved = yield helpers.resolveData(_objectSpread({
|
|
20
20
|
transform: "items"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadDynamicMenuItems.js","names":["loadDynamicMenuItems","_x","_x2","_x3","_x4","_loadDynamicMenuItems","apply","arguments","_asyncToGenerator","menu","runtimeContext","menuWithI18n","helpers","dynamicItems","itemsResolve","overrideAppId","app","appId","newRuntimeContext","id","_helpers$getStoryboar","overrideApp","window","STANDALONE_MICRO_APPS","getStoryboardByAppId","
|
|
1
|
+
{"version":3,"file":"loadDynamicMenuItems.js","names":["preCheckPermissionsForAny","loadDynamicMenuItems","_x","_x2","_x3","_x4","_loadDynamicMenuItems","apply","arguments","_asyncToGenerator","menu","runtimeContext","menuWithI18n","helpers","dynamicItems","itemsResolve","overrideAppId","app","appId","newRuntimeContext","_objectSpread","pendingPermissionsPreCheck","id","_helpers$getStoryboar","overrideApp","window","STANDALONE_MICRO_APPS","getStoryboardByAppId","appendI18nNamespace","get","resolved","resolveData","transform","items"],"sources":["../../../src/menu/loadDynamicMenuItems.ts"],"sourcesContent":["import { preCheckPermissionsForAny } from \"../checkPermissions.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\n\nexport async function loadDynamicMenuItems(\n menu: MenuRawData,\n runtimeContext: RuntimeContext,\n menuWithI18n: WeakMap<MenuRawData, string>,\n helpers: RuntimeHelpers\n): Promise<void> {\n if (menu.dynamicItems && menu.itemsResolve) {\n const overrideAppId = menu.app[0].appId;\n const newRuntimeContext = {\n ...runtimeContext,\n pendingPermissionsPreCheck: [\n ...runtimeContext.pendingPermissionsPreCheck,\n preCheckPermissionsForAny(menu.itemsResolve),\n ],\n };\n if (overrideAppId !== runtimeContext.app.id) {\n newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS\n ? menu.overrideApp\n : helpers.getStoryboardByAppId(overrideAppId)?.app;\n newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);\n }\n\n const resolved = (await helpers.resolveData(\n {\n transform: \"items\",\n ...menu.itemsResolve,\n },\n newRuntimeContext\n )) as { items: MenuItemRawData[] };\n menu.items = resolved.items;\n }\n}\n"],"mappings":";;AAAA,SAASA,yBAAyB,QAAQ,wBAAwB;AAQlE,gBAAsBC,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AA+BzC,SAAAF,sBAAA;EAAAA,qBAAA,GAAAG,iBAAA,CA/BM,WACLC,IAAiB,EACjBC,cAA8B,EAC9BC,YAA0C,EAC1CC,OAAuB,EACR;IACf,IAAIH,IAAI,CAACI,YAAY,IAAIJ,IAAI,CAACK,YAAY,EAAE;MAC1C,IAAMC,aAAa,GAAGN,IAAI,CAACO,GAAG,CAAC,CAAC,CAAC,CAACC,KAAK;MACvC,IAAMC,iBAAiB,GAAAC,aAAA,CAAAA,aAAA,KAClBT,cAAc;QACjBU,0BAA0B,EAAE,CAC1B,GAAGV,cAAc,CAACU,0BAA0B,EAC5CrB,yBAAyB,CAACU,IAAI,CAACK,YAAY,CAAC;MAC7C,EACF;MACD,IAAIC,aAAa,KAAKL,cAAc,CAACM,GAAG,CAACK,EAAE,EAAE;QAAA,IAAAC,qBAAA;QAC3CJ,iBAAiB,CAACK,WAAW,GAAGC,MAAM,CAACC,qBAAqB,GACxDhB,IAAI,CAACc,WAAW,IAAAD,qBAAA,GAChBV,OAAO,CAACc,oBAAoB,CAACX,aAAa,CAAC,cAAAO,qBAAA,uBAA3CA,qBAAA,CAA6CN,GAAG;QACpDE,iBAAiB,CAACS,mBAAmB,GAAGhB,YAAY,CAACiB,GAAG,CAACnB,IAAI,CAAC;MAChE;MAEA,IAAMoB,QAAQ,SAAUjB,OAAO,CAACkB,WAAW,CAAAX,aAAA;QAEvCY,SAAS,EAAE;MAAO,GACftB,IAAI,CAACK,YAAY,GAEtBI,iBACF,CAAkC;MAClCT,IAAI,CAACuB,KAAK,GAAGH,QAAQ,CAACG,KAAK;IAC7B;EACF,CAAC;EAAA,OAAA3B,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/easyops-runtime",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.60",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/easyops-runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@next-core/cook": "^2.2.9",
|
|
48
48
|
"@next-core/http": "^1.1.6",
|
|
49
49
|
"@next-core/pipes": "^2.0.13",
|
|
50
|
-
"@next-core/runtime": "^1.26.
|
|
50
|
+
"@next-core/runtime": "^1.26.3",
|
|
51
51
|
"@next-core/types": "^1.7.2",
|
|
52
52
|
"@next-core/utils": "^1.6.5",
|
|
53
53
|
"js-yaml": "^3.14.1",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"jest-websocket-mock": "^2.5.0",
|
|
60
60
|
"whatwg-fetch": "^3.6.19"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "c2280da32c75a6600e664fd6190e8f80bc9c51b4"
|
|
63
63
|
}
|