@next-core/easyops-runtime 0.12.44 → 0.12.45
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/analytics/http.js +4 -3
- package/dist/cjs/analytics/http.js.map +1 -1
- package/dist/cjs/checkInstalledApps.js +2 -1
- package/dist/cjs/checkInstalledApps.js.map +1 -1
- package/dist/cjs/flowApi/FlowApi.js +2 -2
- package/dist/cjs/flowApi/FlowApi.js.map +1 -1
- package/dist/cjs/flowApi/FlowApiProvider.js +5 -5
- package/dist/cjs/flowApi/FlowApiProvider.js.map +1 -1
- package/dist/cjs/menu/fetchMenuTitle.js +1 -1
- package/dist/cjs/menu/fetchMenuTitle.js.map +1 -1
- package/dist/cjs/menu/getMenusOfStandaloneApp.js +2 -2
- package/dist/cjs/menu/getMenusOfStandaloneApp.js.map +1 -1
- package/dist/cjs/menu/mergeMenu.js +2 -1
- package/dist/cjs/menu/mergeMenu.js.map +1 -1
- package/dist/cjs/menu/reorderMenuItems.js +4 -1
- package/dist/cjs/menu/reorderMenuItems.js.map +1 -1
- package/package.json +7 -7
|
@@ -35,6 +35,7 @@ function onResponseOrError(hasError, responseOrError, config) {
|
|
|
35
35
|
url
|
|
36
36
|
} = config;
|
|
37
37
|
if (meta && !(hasError && responseOrError instanceof _http.HttpAbortError)) {
|
|
38
|
+
var _code, _message, _traceId;
|
|
38
39
|
delete config[symbolHttpAnalytics];
|
|
39
40
|
const {
|
|
40
41
|
st,
|
|
@@ -91,10 +92,10 @@ function onResponseOrError(hasError, responseOrError, config) {
|
|
|
91
92
|
duration: perfEndTime - perfStartTime,
|
|
92
93
|
api: url,
|
|
93
94
|
type: "api",
|
|
94
|
-
code: code
|
|
95
|
-
msg: message
|
|
95
|
+
code: (_code = code) !== null && _code !== void 0 ? _code : -1,
|
|
96
|
+
msg: (_message = message) !== null && _message !== void 0 ? _message : "",
|
|
96
97
|
status,
|
|
97
|
-
traceId: traceId
|
|
98
|
+
traceId: (_traceId = traceId) !== null && _traceId !== void 0 ? _traceId : "",
|
|
98
99
|
size: size ? Number(size) : -1
|
|
99
100
|
});
|
|
100
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","names":["_http","require","_general","_auth","_analytics","symbolHttpAnalytics","Symbol","onRequest","config","perfStartTime","Math","round","performance","now","st","Date","time","onResponse","response","onResponseOrError","onResponseError","error","hasError","responseOrError","perfEndTime","et","meta","url","HttpAbortError","userInstanceId","uid","username","getAuth","code","message","traceId","size","status","headers","data","isHttpResponseError","HttpResponseError","HttpParseError","responseJson","isObject","Headers","get","pushApiMetric","_ver","page","location","href","duration","api","type","msg","Number","Promise","reject"],"sources":["../../../src/analytics/http.ts"],"sourcesContent":["import {\n HttpResponseError,\n HttpParseError,\n HttpAbortError,\n type HttpError,\n type HttpRequestConfig,\n type HttpResponse,\n} from \"@next-core/http\";\nimport { isObject } from \"@next-core/utils/general\";\nimport { getAuth } from \"../auth.js\";\nimport type { HttpAnalyticsMeta } from \"./interfaces.js\";\nimport { pushApiMetric } from \"./analytics.js\";\n\nconst symbolHttpAnalytics = Symbol(\"HttpAnalytics\");\n\ninterface HttpRequestConfigWithAnalyticsMeta extends HttpRequestConfig {\n [symbolHttpAnalytics]?: HttpAnalyticsMeta;\n}\n\nexport function onRequest(\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpRequestConfig {\n const perfStartTime = Math.round(performance.now());\n const st = Date.now();\n config[symbolHttpAnalytics] = {\n st,\n time: Math.round(st / 1000),\n perfStartTime,\n };\n return config;\n}\n\nexport function onResponse(\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse {\n return onResponseOrError(false, response, config);\n}\n\nexport function onResponseError(\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError> {\n return onResponseOrError(true, error, config);\n}\n\nfunction onResponseOrError(\n hasError: false,\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse;\nfunction onResponseOrError(\n hasError: true,\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError>;\nfunction onResponseOrError(\n hasError: boolean,\n responseOrError: HttpResponse | HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse | Promise<HttpError> {\n const perfEndTime = Math.round(performance.now());\n const et = Date.now();\n const { [symbolHttpAnalytics]: meta, url } = config;\n if (meta && !(hasError && responseOrError instanceof HttpAbortError)) {\n delete config[symbolHttpAnalytics];\n const { st, time, perfStartTime } = meta;\n const { userInstanceId: uid, username } = getAuth();\n\n let code: number | undefined;\n let message: string | undefined;\n let traceId: string | null | undefined;\n let size: string | null | undefined;\n let status: number | undefined;\n\n let headers: Headers | undefined;\n let data: unknown;\n\n if (hasError) {\n const isHttpResponseError = responseOrError instanceof HttpResponseError;\n if (isHttpResponseError || responseOrError instanceof HttpParseError) {\n ({ status, headers } = responseOrError.response);\n if (isHttpResponseError) {\n data = responseOrError.responseJson;\n }\n }\n } else {\n ({ status, data, headers } = responseOrError as HttpResponse);\n }\n\n if (isObject(data)) {\n ({ code, message } = data as { code?: number; message?: string });\n }\n\n if (headers instanceof Headers) {\n traceId = headers.get(\"x-b3-traceid\");\n size = headers.get(\"content-length\");\n }\n\n pushApiMetric({\n st,\n _ver: st,\n uid,\n username,\n time,\n et,\n page: location.href,\n duration: perfEndTime - perfStartTime,\n api: url,\n type: \"api\",\n code: code ?? -1,\n msg: message ?? \"\",\n status,\n traceId: traceId ?? \"\",\n size: size ? Number(size) : -1,\n });\n }\n\n return hasError\n ? Promise.reject(responseOrError)\n : (responseOrError as HttpResponse);\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAQA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AAEA,MAAMI,mBAAmB,GAAGC,MAAM,CAAC,eAAe,CAAC;AAM5C,SAASC,SAASA,CACvBC,MAA0C,EACvB;EACnB,MAAMC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC;EACnD,MAAMC,EAAE,GAAGC,IAAI,CAACF,GAAG,CAAC,CAAC;EACrBL,MAAM,CAACH,mBAAmB,CAAC,GAAG;IAC5BS,EAAE;IACFE,IAAI,EAAEN,IAAI,CAACC,KAAK,CAACG,EAAE,GAAG,IAAI,CAAC;IAC3BL;EACF,CAAC;EACD,OAAOD,MAAM;AACf;AAEO,SAASS,UAAUA,CACxBC,QAAsB,EACtBV,MAA0C,EAC5B;EACd,OAAOW,iBAAiB,CAAC,KAAK,EAAED,QAAQ,EAAEV,MAAM,CAAC;AACnD;AAEO,SAASY,eAAeA,CAC7BC,KAAgB,EAChBb,MAA0C,EACtB;EACpB,OAAOW,iBAAiB,CAAC,IAAI,EAAEE,KAAK,EAAEb,MAAM,CAAC;AAC/C;AAYA,SAASW,iBAAiBA,CACxBG,QAAiB,EACjBC,eAAyC,EACzCf,MAA0C,EACP;EACnC,MAAMgB,WAAW,GAAGd,IAAI,CAACC,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC;EACjD,MAAMY,EAAE,GAAGV,IAAI,CAACF,GAAG,CAAC,CAAC;EACrB,MAAM;IAAE,CAACR,mBAAmB,GAAGqB,IAAI;IAAEC;EAAI,CAAC,GAAGnB,MAAM;EACnD,IAAIkB,IAAI,IAAI,EAAEJ,QAAQ,IAAIC,eAAe,YAAYK,oBAAc,CAAC,EAAE;IACpE,
|
|
1
|
+
{"version":3,"file":"http.js","names":["_http","require","_general","_auth","_analytics","symbolHttpAnalytics","Symbol","onRequest","config","perfStartTime","Math","round","performance","now","st","Date","time","onResponse","response","onResponseOrError","onResponseError","error","hasError","responseOrError","perfEndTime","et","meta","url","HttpAbortError","_code","_message","_traceId","userInstanceId","uid","username","getAuth","code","message","traceId","size","status","headers","data","isHttpResponseError","HttpResponseError","HttpParseError","responseJson","isObject","Headers","get","pushApiMetric","_ver","page","location","href","duration","api","type","msg","Number","Promise","reject"],"sources":["../../../src/analytics/http.ts"],"sourcesContent":["import {\n HttpResponseError,\n HttpParseError,\n HttpAbortError,\n type HttpError,\n type HttpRequestConfig,\n type HttpResponse,\n} from \"@next-core/http\";\nimport { isObject } from \"@next-core/utils/general\";\nimport { getAuth } from \"../auth.js\";\nimport type { HttpAnalyticsMeta } from \"./interfaces.js\";\nimport { pushApiMetric } from \"./analytics.js\";\n\nconst symbolHttpAnalytics = Symbol(\"HttpAnalytics\");\n\ninterface HttpRequestConfigWithAnalyticsMeta extends HttpRequestConfig {\n [symbolHttpAnalytics]?: HttpAnalyticsMeta;\n}\n\nexport function onRequest(\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpRequestConfig {\n const perfStartTime = Math.round(performance.now());\n const st = Date.now();\n config[symbolHttpAnalytics] = {\n st,\n time: Math.round(st / 1000),\n perfStartTime,\n };\n return config;\n}\n\nexport function onResponse(\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse {\n return onResponseOrError(false, response, config);\n}\n\nexport function onResponseError(\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError> {\n return onResponseOrError(true, error, config);\n}\n\nfunction onResponseOrError(\n hasError: false,\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse;\nfunction onResponseOrError(\n hasError: true,\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError>;\nfunction onResponseOrError(\n hasError: boolean,\n responseOrError: HttpResponse | HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse | Promise<HttpError> {\n const perfEndTime = Math.round(performance.now());\n const et = Date.now();\n const { [symbolHttpAnalytics]: meta, url } = config;\n if (meta && !(hasError && responseOrError instanceof HttpAbortError)) {\n delete config[symbolHttpAnalytics];\n const { st, time, perfStartTime } = meta;\n const { userInstanceId: uid, username } = getAuth();\n\n let code: number | undefined;\n let message: string | undefined;\n let traceId: string | null | undefined;\n let size: string | null | undefined;\n let status: number | undefined;\n\n let headers: Headers | undefined;\n let data: unknown;\n\n if (hasError) {\n const isHttpResponseError = responseOrError instanceof HttpResponseError;\n if (isHttpResponseError || responseOrError instanceof HttpParseError) {\n ({ status, headers } = responseOrError.response);\n if (isHttpResponseError) {\n data = responseOrError.responseJson;\n }\n }\n } else {\n ({ status, data, headers } = responseOrError as HttpResponse);\n }\n\n if (isObject(data)) {\n ({ code, message } = data as { code?: number; message?: string });\n }\n\n if (headers instanceof Headers) {\n traceId = headers.get(\"x-b3-traceid\");\n size = headers.get(\"content-length\");\n }\n\n pushApiMetric({\n st,\n _ver: st,\n uid,\n username,\n time,\n et,\n page: location.href,\n duration: perfEndTime - perfStartTime,\n api: url,\n type: \"api\",\n code: code ?? -1,\n msg: message ?? \"\",\n status,\n traceId: traceId ?? \"\",\n size: size ? Number(size) : -1,\n });\n }\n\n return hasError\n ? Promise.reject(responseOrError)\n : (responseOrError as HttpResponse);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -59,6 +59,7 @@ function getCheckedApp(appId) {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
function scanInstalledAppsUsage(storyboard) {
|
|
62
|
+
var _storyboard$meta;
|
|
62
63
|
const usage = {
|
|
63
64
|
usedArgs: new Set()
|
|
64
65
|
};
|
|
@@ -66,7 +67,7 @@ function scanInstalledAppsUsage(storyboard) {
|
|
|
66
67
|
const {
|
|
67
68
|
customTemplates,
|
|
68
69
|
menus
|
|
69
|
-
} = storyboard.meta
|
|
70
|
+
} = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};
|
|
70
71
|
(0, _storyboard.traverseStoryboardExpressions)([storyboard.routes, customTemplates, menus], (node, parent) => {
|
|
71
72
|
(0, _storyboard.collectInstalledAppsHasUsage)(usage, node, parent);
|
|
72
73
|
}, "INSTALLED_APPS");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkInstalledApps.js","names":["_storyboard","require","_microAppStandaloneSdk","checkingApps","Map","checkedApps","preCheckInstalledApps","storyboard","hasAppInBootstrap","window","STANDALONE_MICRO_APPS","NO_AUTH_GUARD","appIds","scanInstalledAppsUsage","searchIds","appId","has","push","length","promise","RuntimeApi_searchMicroAppStandalone","query","$in","fields","catch","error","console","set","then","result","_result$list","app","list","find","item","checkedApp","id","undefined","waitForCheckingApps","Promise","all","map","get","getCheckedApp","usage","usedArgs","Set","customTemplates","menus","meta","traverseStoryboardExpressions","routes","node","parent","collectInstalledAppsHasUsage"],"sources":["../../src/checkInstalledApps.ts"],"sourcesContent":["import type { MicroApp, Storyboard } from \"@next-core/types\";\nimport {\n traverseStoryboardExpressions,\n collectInstalledAppsHasUsage,\n type MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { RuntimeApi_searchMicroAppStandalone } from \"@next-api-sdk/micro-app-standalone-sdk\";\n\ntype AppForCheck = Pick<MicroApp, \"id\" | \"currentVersion\" | \"installStatus\">;\n\nconst checkingApps = new Map<string, Promise<AppForCheck | undefined>>();\nconst checkedApps = new Map<string, AppForCheck | undefined>();\n\nexport function preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n) {\n if (window.STANDALONE_MICRO_APPS && !window.NO_AUTH_GUARD) {\n const appIds = scanInstalledAppsUsage(storyboard);\n const searchIds: string[] = [];\n for (const appId of appIds) {\n // Do not check these apps already checking or in bootstrap.\n if (!checkingApps.has(appId) && !hasAppInBootstrap(appId)) {\n searchIds.push(appId);\n }\n }\n if (searchIds.length === 0) {\n return;\n }\n const promise = RuntimeApi_searchMicroAppStandalone({\n query: { appId: { $in: searchIds } },\n fields: [\"appId\", \"currentVersion\", \"installStatus\"],\n }).catch((error) => {\n // Allow search micro app to fail, and\n // make it not crash when the backend service is not updated.\n // eslint-disable-next-line no-console\n console.error(\"Get off site standalone micro-apps failed\", error);\n });\n for (const appId of searchIds) {\n checkingApps.set(\n appId,\n promise.then((result) => {\n const app = result?.list?.find((item) => item.appId === appId);\n const checkedApp = app\n ? {\n ...app,\n id: appId,\n }\n : undefined;\n checkedApps.set(appId, checkedApp);\n return checkedApp;\n })\n );\n }\n }\n}\n\nexport async function waitForCheckingApps(appIds: string[]) {\n await Promise.all(appIds.map((appId) => checkingApps.get(appId)));\n}\n\nexport function getCheckedApp(appId: string) {\n if (window.STANDALONE_MICRO_APPS) {\n return checkedApps.get(appId);\n }\n}\n\nfunction scanInstalledAppsUsage(storyboard: Storyboard) {\n const usage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n // `INSTALLED_APPS.has(...)` is not available in storyboard functions\n const { customTemplates, menus } = storyboard.meta ?? {};\n traverseStoryboardExpressions(\n [storyboard.routes, customTemplates, menus],\n (node, parent) => {\n collectInstalledAppsHasUsage(usage, node, parent);\n },\n \"INSTALLED_APPS\"\n );\n return [...usage.usedArgs];\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,sBAAA,GAAAD,OAAA;AAIA,MAAME,YAAY,GAAG,IAAIC,GAAG,CAA2C,CAAC;AACxE,MAAMC,WAAW,GAAG,IAAID,GAAG,CAAkC,CAAC;AAEvD,SAASE,qBAAqBA,CACnCC,UAAsB,EACtBC,iBAA6C,EAC7C;EACA,IAAIC,MAAM,CAACC,qBAAqB,IAAI,CAACD,MAAM,CAACE,aAAa,EAAE;IACzD,MAAMC,MAAM,GAAGC,sBAAsB,CAACN,UAAU,CAAC;IACjD,MAAMO,SAAmB,GAAG,EAAE;IAC9B,KAAK,MAAMC,KAAK,IAAIH,MAAM,EAAE;MAC1B;MACA,IAAI,CAACT,YAAY,CAACa,GAAG,CAACD,KAAK,CAAC,IAAI,CAACP,iBAAiB,CAACO,KAAK,CAAC,EAAE;QACzDD,SAAS,CAACG,IAAI,CAACF,KAAK,CAAC;MACvB;IACF;IACA,IAAID,SAAS,CAACI,MAAM,KAAK,CAAC,EAAE;MAC1B;IACF;IACA,MAAMC,OAAO,GAAG,IAAAC,0DAAmC,EAAC;MAClDC,KAAK,EAAE;QAAEN,KAAK,EAAE;UAAEO,GAAG,EAAER;QAAU;MAAE,CAAC;MACpCS,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe;IACrD,CAAC,CAAC,CAACC,KAAK,CAAEC,KAAK,IAAK;MAClB;MACA;MACA;MACAC,OAAO,CAACD,KAAK,CAAC,2CAA2C,EAAEA,KAAK,CAAC;IACnE,CAAC,CAAC;IACF,KAAK,MAAMV,KAAK,IAAID,SAAS,EAAE;MAC7BX,YAAY,CAACwB,GAAG,CACdZ,KAAK,EACLI,OAAO,CAACS,IAAI,CAAEC,MAAM,IAAK;QAAA,IAAAC,YAAA;QACvB,MAAMC,GAAG,GAAGF,MAAM,aAANA,MAAM,gBAAAC,YAAA,GAAND,MAAM,CAAEG,IAAI,cAAAF,YAAA,uBAAZA,YAAA,CAAcG,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACnB,KAAK,KAAKA,KAAK,CAAC;QAC9D,MAAMoB,UAAU,GAAGJ,GAAG,GAClB;UACE,GAAGA,GAAG;UACNK,EAAE,EAAErB;QACN,CAAC,GACDsB,SAAS;QACbhC,WAAW,CAACsB,GAAG,CAACZ,KAAK,EAAEoB,UAAU,CAAC;QAClC,OAAOA,UAAU;MACnB,CAAC,CACH,CAAC;IACH;EACF;AACF;AAEO,eAAeG,mBAAmBA,CAAC1B,MAAgB,EAAE;EAC1D,MAAM2B,OAAO,CAACC,GAAG,CAAC5B,MAAM,CAAC6B,GAAG,CAAE1B,KAAK,IAAKZ,YAAY,CAACuC,GAAG,CAAC3B,KAAK,CAAC,CAAC,CAAC;AACnE;AAEO,SAAS4B,aAAaA,CAAC5B,KAAa,EAAE;EAC3C,IAAIN,MAAM,CAACC,qBAAqB,EAAE;IAChC,OAAOL,WAAW,CAACqC,GAAG,CAAC3B,KAAK,CAAC;EAC/B;AACF;AAEA,SAASF,sBAAsBA,CAACN,UAAsB,EAAE;EACtD,
|
|
1
|
+
{"version":3,"file":"checkInstalledApps.js","names":["_storyboard","require","_microAppStandaloneSdk","checkingApps","Map","checkedApps","preCheckInstalledApps","storyboard","hasAppInBootstrap","window","STANDALONE_MICRO_APPS","NO_AUTH_GUARD","appIds","scanInstalledAppsUsage","searchIds","appId","has","push","length","promise","RuntimeApi_searchMicroAppStandalone","query","$in","fields","catch","error","console","set","then","result","_result$list","app","list","find","item","checkedApp","id","undefined","waitForCheckingApps","Promise","all","map","get","getCheckedApp","_storyboard$meta","usage","usedArgs","Set","customTemplates","menus","meta","traverseStoryboardExpressions","routes","node","parent","collectInstalledAppsHasUsage"],"sources":["../../src/checkInstalledApps.ts"],"sourcesContent":["import type { MicroApp, Storyboard } from \"@next-core/types\";\nimport {\n traverseStoryboardExpressions,\n collectInstalledAppsHasUsage,\n type MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { RuntimeApi_searchMicroAppStandalone } from \"@next-api-sdk/micro-app-standalone-sdk\";\n\ntype AppForCheck = Pick<MicroApp, \"id\" | \"currentVersion\" | \"installStatus\">;\n\nconst checkingApps = new Map<string, Promise<AppForCheck | undefined>>();\nconst checkedApps = new Map<string, AppForCheck | undefined>();\n\nexport function preCheckInstalledApps(\n storyboard: Storyboard,\n hasAppInBootstrap: (appId: string) => boolean\n) {\n if (window.STANDALONE_MICRO_APPS && !window.NO_AUTH_GUARD) {\n const appIds = scanInstalledAppsUsage(storyboard);\n const searchIds: string[] = [];\n for (const appId of appIds) {\n // Do not check these apps already checking or in bootstrap.\n if (!checkingApps.has(appId) && !hasAppInBootstrap(appId)) {\n searchIds.push(appId);\n }\n }\n if (searchIds.length === 0) {\n return;\n }\n const promise = RuntimeApi_searchMicroAppStandalone({\n query: { appId: { $in: searchIds } },\n fields: [\"appId\", \"currentVersion\", \"installStatus\"],\n }).catch((error) => {\n // Allow search micro app to fail, and\n // make it not crash when the backend service is not updated.\n // eslint-disable-next-line no-console\n console.error(\"Get off site standalone micro-apps failed\", error);\n });\n for (const appId of searchIds) {\n checkingApps.set(\n appId,\n promise.then((result) => {\n const app = result?.list?.find((item) => item.appId === appId);\n const checkedApp = app\n ? {\n ...app,\n id: appId,\n }\n : undefined;\n checkedApps.set(appId, checkedApp);\n return checkedApp;\n })\n );\n }\n }\n}\n\nexport async function waitForCheckingApps(appIds: string[]) {\n await Promise.all(appIds.map((appId) => checkingApps.get(appId)));\n}\n\nexport function getCheckedApp(appId: string) {\n if (window.STANDALONE_MICRO_APPS) {\n return checkedApps.get(appId);\n }\n}\n\nfunction scanInstalledAppsUsage(storyboard: Storyboard) {\n const usage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n // `INSTALLED_APPS.has(...)` is not available in storyboard functions\n const { customTemplates, menus } = storyboard.meta ?? {};\n traverseStoryboardExpressions(\n [storyboard.routes, customTemplates, menus],\n (node, parent) => {\n collectInstalledAppsHasUsage(usage, node, parent);\n },\n \"INSTALLED_APPS\"\n );\n return [...usage.usedArgs];\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,sBAAA,GAAAD,OAAA;AAIA,MAAME,YAAY,GAAG,IAAIC,GAAG,CAA2C,CAAC;AACxE,MAAMC,WAAW,GAAG,IAAID,GAAG,CAAkC,CAAC;AAEvD,SAASE,qBAAqBA,CACnCC,UAAsB,EACtBC,iBAA6C,EAC7C;EACA,IAAIC,MAAM,CAACC,qBAAqB,IAAI,CAACD,MAAM,CAACE,aAAa,EAAE;IACzD,MAAMC,MAAM,GAAGC,sBAAsB,CAACN,UAAU,CAAC;IACjD,MAAMO,SAAmB,GAAG,EAAE;IAC9B,KAAK,MAAMC,KAAK,IAAIH,MAAM,EAAE;MAC1B;MACA,IAAI,CAACT,YAAY,CAACa,GAAG,CAACD,KAAK,CAAC,IAAI,CAACP,iBAAiB,CAACO,KAAK,CAAC,EAAE;QACzDD,SAAS,CAACG,IAAI,CAACF,KAAK,CAAC;MACvB;IACF;IACA,IAAID,SAAS,CAACI,MAAM,KAAK,CAAC,EAAE;MAC1B;IACF;IACA,MAAMC,OAAO,GAAG,IAAAC,0DAAmC,EAAC;MAClDC,KAAK,EAAE;QAAEN,KAAK,EAAE;UAAEO,GAAG,EAAER;QAAU;MAAE,CAAC;MACpCS,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe;IACrD,CAAC,CAAC,CAACC,KAAK,CAAEC,KAAK,IAAK;MAClB;MACA;MACA;MACAC,OAAO,CAACD,KAAK,CAAC,2CAA2C,EAAEA,KAAK,CAAC;IACnE,CAAC,CAAC;IACF,KAAK,MAAMV,KAAK,IAAID,SAAS,EAAE;MAC7BX,YAAY,CAACwB,GAAG,CACdZ,KAAK,EACLI,OAAO,CAACS,IAAI,CAAEC,MAAM,IAAK;QAAA,IAAAC,YAAA;QACvB,MAAMC,GAAG,GAAGF,MAAM,aAANA,MAAM,gBAAAC,YAAA,GAAND,MAAM,CAAEG,IAAI,cAAAF,YAAA,uBAAZA,YAAA,CAAcG,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACnB,KAAK,KAAKA,KAAK,CAAC;QAC9D,MAAMoB,UAAU,GAAGJ,GAAG,GAClB;UACE,GAAGA,GAAG;UACNK,EAAE,EAAErB;QACN,CAAC,GACDsB,SAAS;QACbhC,WAAW,CAACsB,GAAG,CAACZ,KAAK,EAAEoB,UAAU,CAAC;QAClC,OAAOA,UAAU;MACnB,CAAC,CACH,CAAC;IACH;EACF;AACF;AAEO,eAAeG,mBAAmBA,CAAC1B,MAAgB,EAAE;EAC1D,MAAM2B,OAAO,CAACC,GAAG,CAAC5B,MAAM,CAAC6B,GAAG,CAAE1B,KAAK,IAAKZ,YAAY,CAACuC,GAAG,CAAC3B,KAAK,CAAC,CAAC,CAAC;AACnE;AAEO,SAAS4B,aAAaA,CAAC5B,KAAa,EAAE;EAC3C,IAAIN,MAAM,CAACC,qBAAqB,EAAE;IAChC,OAAOL,WAAW,CAACqC,GAAG,CAAC3B,KAAK,CAAC;EAC/B;AACF;AAEA,SAASF,sBAAsBA,CAACN,UAAsB,EAAE;EAAA,IAAAqC,gBAAA;EACtD,MAAMC,KAAsB,GAAG;IAC7BC,QAAQ,EAAE,IAAIC,GAAG,CAAC;EACpB,CAAC;EACD;EACA,MAAM;IAAEC,eAAe;IAAEC;EAAM,CAAC,IAAAL,gBAAA,GAAGrC,UAAU,CAAC2C,IAAI,cAAAN,gBAAA,cAAAA,gBAAA,GAAI,CAAC,CAAC;EACxD,IAAAO,yCAA6B,EAC3B,CAAC5C,UAAU,CAAC6C,MAAM,EAAEJ,eAAe,EAAEC,KAAK,CAAC,EAC3C,CAACI,IAAI,EAAEC,MAAM,KAAK;IAChB,IAAAC,wCAA4B,EAACV,KAAK,EAAEQ,IAAI,EAAEC,MAAM,CAAC;EACnD,CAAC,EACD,gBACF,CAAC;EACD,OAAO,CAAC,GAAGT,KAAK,CAACC,QAAQ,CAAC;AAC5B","ignoreList":[]}
|
|
@@ -70,7 +70,7 @@ function getTransformedUriAndRestArgs(uri, originalArgs, name, namespace, servic
|
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
function getApiProfileFromApiDefinition(provider, api) {
|
|
73
|
-
var _contract$response;
|
|
73
|
+
var _contract$endpoint, _contract$response;
|
|
74
74
|
const contract = typeof api.contract === "string" ? _jsYaml.default.safeLoad(api.contract, {
|
|
75
75
|
schema: _jsYaml.default.JSON_SCHEMA,
|
|
76
76
|
json: true
|
|
@@ -79,7 +79,7 @@ function getApiProfileFromApiDefinition(provider, api) {
|
|
|
79
79
|
uri,
|
|
80
80
|
method = "GET",
|
|
81
81
|
ext_fields
|
|
82
|
-
} = (contract === null || contract === void 0 ? void 0 : contract.endpoint)
|
|
82
|
+
} = (_contract$endpoint = contract === null || contract === void 0 ? void 0 : contract.endpoint) !== null && _contract$endpoint !== void 0 ? _contract$endpoint : {};
|
|
83
83
|
const responseWrapper = contract !== null && contract !== void 0 && contract.response ? contract.response.wrapper !== false : false;
|
|
84
84
|
if (!uri) {
|
|
85
85
|
throw new Error(`Missing endpoint.uri in contract of provider "${provider}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowApi.js","names":["_jsYaml","_interopRequireDefault","require","_apiGatewaySdk","_CollectContracts","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","originalArgs","method","stream","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","startsWith","restArgs","slice","transformedUri","replace","api","_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 type {\n ContractResponse,\n ExtField,\n ContractRequest,\n} from \"@next-core/types\";\nimport { getContract } from \"./CollectContracts.js\";\n\nexport type MinimalContractRequest = Pick<ContractRequest, \"type\"> & {\n fields?: MinimalContractField[];\n};\nexport type MinimalContractField =\n | {\n type: string;\n fields?: MinimalContractField[];\n }\n | {\n ref: string;\n };\nexport type MinimalContractResponse = Pick<\n ContractResponse,\n \"type\" | \"wrapper\"\n>;\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 stream?: boolean\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, stream);\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 stream?: boolean\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 stream,\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 === \"logic.api.gateway\" ||\n serviceName?.startsWith(\"logic.api.gateway.\")\n ? \"\"\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 ? prefix + transformedUri : transformedUri.replace(/^\\//, \"\"),\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?: MinimalContractRequest;\n response?: MinimalContractResponse;\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?: MinimalContractRequest;\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FlowApi.js","names":["_jsYaml","_interopRequireDefault","require","_apiGatewaySdk","_CollectContracts","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","originalArgs","method","stream","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","startsWith","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 type {\n ContractResponse,\n ExtField,\n ContractRequest,\n} from \"@next-core/types\";\nimport { getContract } from \"./CollectContracts.js\";\n\nexport type MinimalContractRequest = Pick<ContractRequest, \"type\"> & {\n fields?: MinimalContractField[];\n};\nexport type MinimalContractField =\n | {\n type: string;\n fields?: MinimalContractField[];\n }\n | {\n ref: string;\n };\nexport type MinimalContractResponse = Pick<\n ContractResponse,\n \"type\" | \"wrapper\"\n>;\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 stream?: boolean\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, stream);\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 stream?: boolean\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 stream,\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 === \"logic.api.gateway\" ||\n serviceName?.startsWith(\"logic.api.gateway.\")\n ? \"\"\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 ? prefix + transformedUri : transformedUri.replace(/^\\//, \"\"),\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?: MinimalContractRequest;\n response?: MinimalContractResponse;\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?: MinimalContractRequest;\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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","ignoreList":[]}
|
|
@@ -92,8 +92,8 @@ async function callFlowApi({
|
|
|
92
92
|
} : {};
|
|
93
93
|
let response;
|
|
94
94
|
if (isSimpleRequest) {
|
|
95
|
-
var _originalUri$match, _request$fields;
|
|
96
|
-
const noParams = originalUri && (request === null || request === void 0 ? void 0 : request.type) === "object" ? (((_originalUri$match = originalUri.match(/:([^/]+)/g)) === null || _originalUri$match === void 0 ? void 0 : _originalUri$match.length)
|
|
95
|
+
var _originalUri$match$le, _originalUri$match, _request$fields$lengt, _request$fields;
|
|
96
|
+
const noParams = originalUri && (request === null || request === void 0 ? void 0 : request.type) === "object" ? ((_originalUri$match$le = (_originalUri$match = originalUri.match(/:([^/]+)/g)) === null || _originalUri$match === void 0 ? void 0 : _originalUri$match.length) !== null && _originalUri$match$le !== void 0 ? _originalUri$match$le : 0) === ((_request$fields$lengt = (_request$fields = request.fields) === null || _request$fields === void 0 ? void 0 : _request$fields.length) !== null && _request$fields$lengt !== void 0 ? _request$fields$lengt : 0) : false;
|
|
97
97
|
let params;
|
|
98
98
|
let options;
|
|
99
99
|
if (noParams) {
|
|
@@ -102,12 +102,12 @@ async function callFlowApi({
|
|
|
102
102
|
[params, options] = args;
|
|
103
103
|
}
|
|
104
104
|
if (stream) {
|
|
105
|
-
var _options;
|
|
105
|
+
var _options$headers, _options;
|
|
106
106
|
const stream = await (0, _general.createSSEStream)(_http.http.getUrlWithParams(url, params), {
|
|
107
107
|
...defaultOptions,
|
|
108
108
|
...options,
|
|
109
109
|
method,
|
|
110
|
-
headers: Object.fromEntries([...new Headers(((_options = options) === null || _options === void 0 ? void 0 : _options.headers)
|
|
110
|
+
headers: Object.fromEntries([...new Headers((_options$headers = (_options = options) === null || _options === void 0 ? void 0 : _options.headers) !== null && _options$headers !== void 0 ? _options$headers : {}).entries()])
|
|
111
111
|
});
|
|
112
112
|
return stream;
|
|
113
113
|
}
|
|
@@ -130,7 +130,7 @@ async function callFlowApi({
|
|
|
130
130
|
...defaultOptions,
|
|
131
131
|
...result.options,
|
|
132
132
|
method,
|
|
133
|
-
headers: Object.fromEntries([...new Headers(headers
|
|
133
|
+
headers: Object.fromEntries([...new Headers(headers !== null && headers !== void 0 ? headers : {}).entries()]),
|
|
134
134
|
body
|
|
135
135
|
});
|
|
136
136
|
return stream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowApiProvider.js","names":["_general","require","_http","_lodash","FLOW_API_PROVIDER","exports","hasFields","ext_fields","type","some","item","source","processExtFields","args","hasQueryParams","hasBodyParams","data","params","options","hasFileType","request","processFields","fields","isEmpty","field","includes","transformFormData","FormData","formData","key","value","Object","entries","Array","isArray","forEach","v","append","isObject","Blob","Date","k","callFlowApi","url","originalUri","method","responseWrapper","isFileType","stream","isSimpleRequest","toLowerCase","defaultOptions","responseType","response","_originalUri$match","_request$fields","noParams","match","length","_options","createSSEStream","http","getUrlWithParams","headers","fromEntries","Headers","simpleRequest","isUploadType","result","_result$options","body","getBodyAndHeaders","requestWithBody","registerFlowApiProvider","customElements","define","createProviderClass"],"sources":["../../../src/flowApi/FlowApiProvider.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport { ExtField, ContractFieldItem } from \"@next-core/types\";\nimport { http, HttpOptions, HttpParams } from \"@next-core/http\";\nimport { isEmpty, isObject } from \"lodash\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport type {\n MinimalContractField,\n MinimalContractRequest,\n} from \"./FlowApi.js\";\n\nexport const FLOW_API_PROVIDER = \"core.provider-flow-api\";\n\nexport interface CustomApiParams {\n url: string;\n originalUri?: string;\n method?: string;\n responseWrapper?: boolean;\n ext_fields?: ExtField[];\n request?: MinimalContractRequest;\n isFileType?: boolean;\n stream?: boolean;\n}\n\nfunction hasFields(ext_fields: ExtField[], type: \"query\" | \"body\"): boolean {\n return ext_fields.some((item) => item.source === type);\n}\n\nexport function processExtFields(\n ext_fields: ExtField[],\n ...args: unknown[]\n): { data: unknown; options: HttpOptions } {\n const hasQueryParams = hasFields(ext_fields, \"query\");\n const hasBodyParams = hasFields(ext_fields, \"body\");\n\n if (hasQueryParams) {\n if (hasBodyParams) {\n const [data, params, options] = args;\n return {\n data: data,\n options: {\n params: params as HttpParams,\n ...(options as HttpOptions),\n },\n };\n }\n\n const [params, options] = args;\n return {\n data: {},\n options: {\n params: params as HttpParams,\n ...(options as HttpOptions),\n },\n };\n }\n\n // only hasBodyParams or default\n const [data, options] = args;\n return {\n data,\n options: options as HttpOptions,\n };\n}\n\nexport function hasFileType(\n request: MinimalContractRequest | undefined\n): boolean {\n if (request?.type !== \"object\") {\n return false;\n }\n\n const processFields = (\n fields: MinimalContractField[] | undefined\n ): boolean => {\n return (\n !isEmpty(fields) &&\n fields!.some(\n (field) =>\n [\"file\", \"file[]\"].includes((field as ContractFieldItem).type) ||\n processFields((field as ContractFieldItem).fields)\n )\n );\n };\n\n return processFields(request.fields);\n}\n\nexport function transformFormData(\n data: Record<string, unknown> | FormData\n): FormData {\n if (data instanceof FormData) {\n return data;\n }\n\n const formData = new FormData();\n for (const [key, value] of Object.entries(data)) {\n if (Array.isArray(value)) {\n value.forEach((v) => {\n formData.append(key, v);\n });\n } else if (\n isObject(value) &&\n !(value instanceof Blob) &&\n !(value instanceof Date)\n ) {\n Object.entries(value).forEach(([k, v]) => {\n formData.append(`${key}[${k}]`, v);\n });\n } else {\n formData.append(key, value as string);\n }\n }\n\n return formData;\n}\n\nexport async function callFlowApi(\n {\n url,\n originalUri,\n method = \"GET\",\n responseWrapper = true,\n ext_fields = [],\n request,\n isFileType,\n stream,\n }: CustomApiParams,\n ...args: unknown[]\n): Promise<unknown> {\n const isSimpleRequest = [\"get\", \"delete\", \"head\"].includes(\n method.toLowerCase()\n );\n const defaultOptions: HttpOptions = isFileType\n ? { responseType: \"blob\" }\n : {};\n let response: { data?: unknown };\n\n if (isSimpleRequest) {\n const noParams =\n originalUri && request?.type === \"object\"\n ? (originalUri.match(/:([^/]+)/g)?.length ?? 0) ===\n (request.fields?.length ?? 0)\n : false;\n let params: HttpParams | undefined;\n let options: HttpOptions | undefined;\n\n if (noParams) {\n [options] = args as [HttpOptions?];\n } else {\n [params, options] = args as [HttpParams?, HttpOptions?];\n }\n\n if (stream) {\n const stream = await createSSEStream(http.getUrlWithParams(url, params), {\n ...defaultOptions,\n ...options,\n method,\n headers: Object.fromEntries([\n ...new Headers(options?.headers ?? {}).entries(),\n ]),\n });\n return stream;\n }\n\n response = await http.simpleRequest(method, url, {\n params,\n ...defaultOptions,\n ...options,\n });\n } else {\n const isUploadType = hasFileType(request);\n const result = processExtFields(ext_fields, ...args);\n\n const data = isUploadType\n ? transformFormData(result.data as any)\n : result.data;\n\n if (stream) {\n const { body, headers } = http.getBodyAndHeaders(\n data,\n result.options?.headers\n );\n const stream = await createSSEStream(url, {\n ...defaultOptions,\n ...result.options,\n method,\n headers: Object.fromEntries([...new Headers(headers ?? {}).entries()]),\n body,\n });\n return stream;\n }\n\n response = await http.requestWithBody(method, url, data, {\n ...defaultOptions,\n ...result.options,\n });\n }\n\n return (isFileType ? false : responseWrapper) ? response.data : response;\n}\n\nexport function registerFlowApiProvider(): void {\n customElements.define(FLOW_API_PROVIDER, createProviderClass(callFlowApi));\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FlowApiProvider.js","names":["_general","require","_http","_lodash","FLOW_API_PROVIDER","exports","hasFields","ext_fields","type","some","item","source","processExtFields","args","hasQueryParams","hasBodyParams","data","params","options","hasFileType","request","processFields","fields","isEmpty","field","includes","transformFormData","FormData","formData","key","value","Object","entries","Array","isArray","forEach","v","append","isObject","Blob","Date","k","callFlowApi","url","originalUri","method","responseWrapper","isFileType","stream","isSimpleRequest","toLowerCase","defaultOptions","responseType","response","_originalUri$match$le","_originalUri$match","_request$fields$lengt","_request$fields","noParams","match","length","_options$headers","_options","createSSEStream","http","getUrlWithParams","headers","fromEntries","Headers","simpleRequest","isUploadType","result","_result$options","body","getBodyAndHeaders","requestWithBody","registerFlowApiProvider","customElements","define","createProviderClass"],"sources":["../../../src/flowApi/FlowApiProvider.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport { ExtField, ContractFieldItem } from \"@next-core/types\";\nimport { http, HttpOptions, HttpParams } from \"@next-core/http\";\nimport { isEmpty, isObject } from \"lodash\";\nimport { createSSEStream } from \"@next-core/utils/general\";\nimport type {\n MinimalContractField,\n MinimalContractRequest,\n} from \"./FlowApi.js\";\n\nexport const FLOW_API_PROVIDER = \"core.provider-flow-api\";\n\nexport interface CustomApiParams {\n url: string;\n originalUri?: string;\n method?: string;\n responseWrapper?: boolean;\n ext_fields?: ExtField[];\n request?: MinimalContractRequest;\n isFileType?: boolean;\n stream?: boolean;\n}\n\nfunction hasFields(ext_fields: ExtField[], type: \"query\" | \"body\"): boolean {\n return ext_fields.some((item) => item.source === type);\n}\n\nexport function processExtFields(\n ext_fields: ExtField[],\n ...args: unknown[]\n): { data: unknown; options: HttpOptions } {\n const hasQueryParams = hasFields(ext_fields, \"query\");\n const hasBodyParams = hasFields(ext_fields, \"body\");\n\n if (hasQueryParams) {\n if (hasBodyParams) {\n const [data, params, options] = args;\n return {\n data: data,\n options: {\n params: params as HttpParams,\n ...(options as HttpOptions),\n },\n };\n }\n\n const [params, options] = args;\n return {\n data: {},\n options: {\n params: params as HttpParams,\n ...(options as HttpOptions),\n },\n };\n }\n\n // only hasBodyParams or default\n const [data, options] = args;\n return {\n data,\n options: options as HttpOptions,\n };\n}\n\nexport function hasFileType(\n request: MinimalContractRequest | undefined\n): boolean {\n if (request?.type !== \"object\") {\n return false;\n }\n\n const processFields = (\n fields: MinimalContractField[] | undefined\n ): boolean => {\n return (\n !isEmpty(fields) &&\n fields!.some(\n (field) =>\n [\"file\", \"file[]\"].includes((field as ContractFieldItem).type) ||\n processFields((field as ContractFieldItem).fields)\n )\n );\n };\n\n return processFields(request.fields);\n}\n\nexport function transformFormData(\n data: Record<string, unknown> | FormData\n): FormData {\n if (data instanceof FormData) {\n return data;\n }\n\n const formData = new FormData();\n for (const [key, value] of Object.entries(data)) {\n if (Array.isArray(value)) {\n value.forEach((v) => {\n formData.append(key, v);\n });\n } else if (\n isObject(value) &&\n !(value instanceof Blob) &&\n !(value instanceof Date)\n ) {\n Object.entries(value).forEach(([k, v]) => {\n formData.append(`${key}[${k}]`, v);\n });\n } else {\n formData.append(key, value as string);\n }\n }\n\n return formData;\n}\n\nexport async function callFlowApi(\n {\n url,\n originalUri,\n method = \"GET\",\n responseWrapper = true,\n ext_fields = [],\n request,\n isFileType,\n stream,\n }: CustomApiParams,\n ...args: unknown[]\n): Promise<unknown> {\n const isSimpleRequest = [\"get\", \"delete\", \"head\"].includes(\n method.toLowerCase()\n );\n const defaultOptions: HttpOptions = isFileType\n ? { responseType: \"blob\" }\n : {};\n let response: { data?: unknown };\n\n if (isSimpleRequest) {\n const noParams =\n originalUri && request?.type === \"object\"\n ? (originalUri.match(/:([^/]+)/g)?.length ?? 0) ===\n (request.fields?.length ?? 0)\n : false;\n let params: HttpParams | undefined;\n let options: HttpOptions | undefined;\n\n if (noParams) {\n [options] = args as [HttpOptions?];\n } else {\n [params, options] = args as [HttpParams?, HttpOptions?];\n }\n\n if (stream) {\n const stream = await createSSEStream(http.getUrlWithParams(url, params), {\n ...defaultOptions,\n ...options,\n method,\n headers: Object.fromEntries([\n ...new Headers(options?.headers ?? {}).entries(),\n ]),\n });\n return stream;\n }\n\n response = await http.simpleRequest(method, url, {\n params,\n ...defaultOptions,\n ...options,\n });\n } else {\n const isUploadType = hasFileType(request);\n const result = processExtFields(ext_fields, ...args);\n\n const data = isUploadType\n ? transformFormData(result.data as any)\n : result.data;\n\n if (stream) {\n const { body, headers } = http.getBodyAndHeaders(\n data,\n result.options?.headers\n );\n const stream = await createSSEStream(url, {\n ...defaultOptions,\n ...result.options,\n method,\n headers: Object.fromEntries([...new Headers(headers ?? {}).entries()]),\n body,\n });\n return stream;\n }\n\n response = await http.requestWithBody(method, url, data, {\n ...defaultOptions,\n ...result.options,\n });\n }\n\n return (isFileType ? false : responseWrapper) ? response.data : response;\n}\n\nexport function registerFlowApiProvider(): void {\n customElements.define(FLOW_API_PROVIDER, createProviderClass(callFlowApi));\n}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAOO,MAAMG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,wBAAwB;AAazD,SAASE,SAASA,CAACC,UAAsB,EAAEC,IAAsB,EAAW;EAC1E,OAAOD,UAAU,CAACE,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,MAAM,KAAKH,IAAI,CAAC;AACxD;AAEO,SAASI,gBAAgBA,CAC9BL,UAAsB,EACtB,GAAGM,IAAe,EACuB;EACzC,MAAMC,cAAc,GAAGR,SAAS,CAACC,UAAU,EAAE,OAAO,CAAC;EACrD,MAAMQ,aAAa,GAAGT,SAAS,CAACC,UAAU,EAAE,MAAM,CAAC;EAEnD,IAAIO,cAAc,EAAE;IAClB,IAAIC,aAAa,EAAE;MACjB,MAAM,CAACC,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC,GAAGL,IAAI;MACpC,OAAO;QACLG,IAAI,EAAEA,IAAI;QACVE,OAAO,EAAE;UACPD,MAAM,EAAEA,MAAoB;UAC5B,GAAIC;QACN;MACF,CAAC;IACH;IAEA,MAAM,CAACD,MAAM,EAAEC,OAAO,CAAC,GAAGL,IAAI;IAC9B,OAAO;MACLG,IAAI,EAAE,CAAC,CAAC;MACRE,OAAO,EAAE;QACPD,MAAM,EAAEA,MAAoB;QAC5B,GAAIC;MACN;IACF,CAAC;EACH;;EAEA;EACA,MAAM,CAACF,IAAI,EAAEE,OAAO,CAAC,GAAGL,IAAI;EAC5B,OAAO;IACLG,IAAI;IACJE,OAAO,EAAEA;EACX,CAAC;AACH;AAEO,SAASC,WAAWA,CACzBC,OAA2C,EAClC;EACT,IAAI,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEZ,IAAI,MAAK,QAAQ,EAAE;IAC9B,OAAO,KAAK;EACd;EAEA,MAAMa,aAAa,GACjBC,MAA0C,IAC9B;IACZ,OACE,CAAC,IAAAC,eAAO,EAACD,MAAM,CAAC,IAChBA,MAAM,CAAEb,IAAI,CACTe,KAAK,IACJ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAACC,QAAQ,CAAED,KAAK,CAAuBhB,IAAI,CAAC,IAC9Da,aAAa,CAAEG,KAAK,CAAuBF,MAAM,CACrD,CAAC;EAEL,CAAC;EAED,OAAOD,aAAa,CAACD,OAAO,CAACE,MAAM,CAAC;AACtC;AAEO,SAASI,iBAAiBA,CAC/BV,IAAwC,EAC9B;EACV,IAAIA,IAAI,YAAYW,QAAQ,EAAE;IAC5B,OAAOX,IAAI;EACb;EAEA,MAAMY,QAAQ,GAAG,IAAID,QAAQ,CAAC,CAAC;EAC/B,KAAK,MAAM,CAACE,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAAChB,IAAI,CAAC,EAAE;IAC/C,IAAIiB,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;MACxBA,KAAK,CAACK,OAAO,CAAEC,CAAC,IAAK;QACnBR,QAAQ,CAACS,MAAM,CAACR,GAAG,EAAEO,CAAC,CAAC;MACzB,CAAC,CAAC;IACJ,CAAC,MAAM,IACL,IAAAE,gBAAQ,EAACR,KAAK,CAAC,IACf,EAAEA,KAAK,YAAYS,IAAI,CAAC,IACxB,EAAET,KAAK,YAAYU,IAAI,CAAC,EACxB;MACAT,MAAM,CAACC,OAAO,CAACF,KAAK,CAAC,CAACK,OAAO,CAAC,CAAC,CAACM,CAAC,EAAEL,CAAC,CAAC,KAAK;QACxCR,QAAQ,CAACS,MAAM,CAAC,GAAGR,GAAG,IAAIY,CAAC,GAAG,EAAEL,CAAC,CAAC;MACpC,CAAC,CAAC;IACJ,CAAC,MAAM;MACLR,QAAQ,CAACS,MAAM,CAACR,GAAG,EAAEC,KAAe,CAAC;IACvC;EACF;EAEA,OAAOF,QAAQ;AACjB;AAEO,eAAec,WAAWA,CAC/B;EACEC,GAAG;EACHC,WAAW;EACXC,MAAM,GAAG,KAAK;EACdC,eAAe,GAAG,IAAI;EACtBvC,UAAU,GAAG,EAAE;EACfa,OAAO;EACP2B,UAAU;EACVC;AACe,CAAC,EAClB,GAAGnC,IAAe,EACA;EAClB,MAAMoC,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAACxB,QAAQ,CACxDoB,MAAM,CAACK,WAAW,CAAC,CACrB,CAAC;EACD,MAAMC,cAA2B,GAAGJ,UAAU,GAC1C;IAAEK,YAAY,EAAE;EAAO,CAAC,GACxB,CAAC,CAAC;EACN,IAAIC,QAA4B;EAEhC,IAAIJ,eAAe,EAAE;IAAA,IAAAK,qBAAA,EAAAC,kBAAA,EAAAC,qBAAA,EAAAC,eAAA;IACnB,MAAMC,QAAQ,GACZd,WAAW,IAAI,CAAAxB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEZ,IAAI,MAAK,QAAQ,GACrC,EAAA8C,qBAAA,IAAAC,kBAAA,GAACX,WAAW,CAACe,KAAK,CAAC,WAAW,CAAC,cAAAJ,kBAAA,uBAA9BA,kBAAA,CAAgCK,MAAM,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,QAAAE,qBAAA,IAAAC,eAAA,GAC3CrC,OAAO,CAACE,MAAM,cAAAmC,eAAA,uBAAdA,eAAA,CAAgBG,MAAM,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,GAC7B,KAAK;IACX,IAAIvC,MAA8B;IAClC,IAAIC,OAAgC;IAEpC,IAAIwC,QAAQ,EAAE;MACZ,CAACxC,OAAO,CAAC,GAAGL,IAAsB;IACpC,CAAC,MAAM;MACL,CAACI,MAAM,EAAEC,OAAO,CAAC,GAAGL,IAAmC;IACzD;IAEA,IAAImC,MAAM,EAAE;MAAA,IAAAa,gBAAA,EAAAC,QAAA;MACV,MAAMd,MAAM,GAAG,MAAM,IAAAe,wBAAe,EAACC,UAAI,CAACC,gBAAgB,CAACtB,GAAG,EAAE1B,MAAM,CAAC,EAAE;QACvE,GAAGkC,cAAc;QACjB,GAAGjC,OAAO;QACV2B,MAAM;QACNqB,OAAO,EAAEnC,MAAM,CAACoC,WAAW,CAAC,CAC1B,GAAG,IAAIC,OAAO,EAAAP,gBAAA,IAAAC,QAAA,GAAC5C,OAAO,cAAA4C,QAAA,uBAAPA,QAAA,CAASI,OAAO,cAAAL,gBAAA,cAAAA,gBAAA,GAAI,CAAC,CAAC,CAAC,CAAC7B,OAAO,CAAC,CAAC,CACjD;MACH,CAAC,CAAC;MACF,OAAOgB,MAAM;IACf;IAEAK,QAAQ,GAAG,MAAMW,UAAI,CAACK,aAAa,CAACxB,MAAM,EAAEF,GAAG,EAAE;MAC/C1B,MAAM;MACN,GAAGkC,cAAc;MACjB,GAAGjC;IACL,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,MAAMoD,YAAY,GAAGnD,WAAW,CAACC,OAAO,CAAC;IACzC,MAAMmD,MAAM,GAAG3D,gBAAgB,CAACL,UAAU,EAAE,GAAGM,IAAI,CAAC;IAEpD,MAAMG,IAAI,GAAGsD,YAAY,GACrB5C,iBAAiB,CAAC6C,MAAM,CAACvD,IAAW,CAAC,GACrCuD,MAAM,CAACvD,IAAI;IAEf,IAAIgC,MAAM,EAAE;MAAA,IAAAwB,eAAA;MACV,MAAM;QAAEC,IAAI;QAAEP;MAAQ,CAAC,GAAGF,UAAI,CAACU,iBAAiB,CAC9C1D,IAAI,GAAAwD,eAAA,GACJD,MAAM,CAACrD,OAAO,cAAAsD,eAAA,uBAAdA,eAAA,CAAgBN,OAClB,CAAC;MACD,MAAMlB,MAAM,GAAG,MAAM,IAAAe,wBAAe,EAACpB,GAAG,EAAE;QACxC,GAAGQ,cAAc;QACjB,GAAGoB,MAAM,CAACrD,OAAO;QACjB2B,MAAM;QACNqB,OAAO,EAAEnC,MAAM,CAACoC,WAAW,CAAC,CAAC,GAAG,IAAIC,OAAO,CAACF,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,CAAClC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtEyC;MACF,CAAC,CAAC;MACF,OAAOzB,MAAM;IACf;IAEAK,QAAQ,GAAG,MAAMW,UAAI,CAACW,eAAe,CAAC9B,MAAM,EAAEF,GAAG,EAAE3B,IAAI,EAAE;MACvD,GAAGmC,cAAc;MACjB,GAAGoB,MAAM,CAACrD;IACZ,CAAC,CAAC;EACJ;EAEA,OAAO,CAAC6B,UAAU,GAAG,KAAK,GAAGD,eAAe,IAAIO,QAAQ,CAACrC,IAAI,GAAGqC,QAAQ;AAC1E;AAEO,SAASuB,uBAAuBA,CAAA,EAAS;EAC9CC,cAAc,CAACC,MAAM,CAAC1E,iBAAiB,EAAE,IAAA2E,4BAAmB,EAACrC,WAAW,CAAC,CAAC;AAC5E","ignoreList":[]}
|
|
@@ -21,7 +21,7 @@ async function fetchMenuTitle(menuData) {
|
|
|
21
21
|
instanceId,
|
|
22
22
|
attributeId
|
|
23
23
|
} = menuData.titleDataSource;
|
|
24
|
-
const attr = attributeId
|
|
24
|
+
const attr = attributeId !== null && attributeId !== void 0 ? attributeId : "name";
|
|
25
25
|
const instanceData = await (0, _cmdbSdk.InstanceApi_getDetail)(objectId, instanceId, {
|
|
26
26
|
fields: attr
|
|
27
27
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMenuTitle.js","names":["_lodash","require","_cmdbSdk","menuTitleCache","Map","fetchMenuTitle","menuData","title","isEmpty","titleDataSource","cacheKey","JSON","stringify","cachedTitle","get","undefined","objectId","instanceId","attributeId","attr","instanceData","InstanceApi_getDetail","fields","Array","isArray","primary","rest","length","join","String","set"],"sources":["../../../src/menu/fetchMenuTitle.ts"],"sourcesContent":["import { isEmpty } from \"lodash\";\nimport { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport type { MenuRawData } from \"./interfaces.js\";\n\nconst menuTitleCache = new Map<string, string>();\n\nexport async function fetchMenuTitle(\n menuData: Pick<MenuRawData, \"title\" | \"titleDataSource\">\n): Promise<string> {\n if (menuData.title || isEmpty(menuData.titleDataSource)) {\n return menuData.title;\n }\n const cacheKey = JSON.stringify(menuData.titleDataSource);\n const cachedTitle = menuTitleCache.get(cacheKey);\n if (cachedTitle !== undefined) {\n return cachedTitle;\n }\n const { objectId, instanceId, attributeId } = menuData.titleDataSource;\n const attr = attributeId ?? \"name\";\n const instanceData = await InstanceApi_getDetail(objectId, instanceId, {\n fields: attr,\n });\n let title: string;\n if (attributeId === \"#showKey\" && Array.isArray(instanceData[attr])) {\n const [primary, ...rest] = instanceData[attr];\n title = rest.length > 0 ? `${primary}(${rest.join(\",\")})` : String(primary);\n } else {\n title = String(instanceData[attr]);\n }\n menuTitleCache.set(cacheKey, title);\n return title;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,cAAc,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAEzC,eAAeC,cAAcA,CAClCC,QAAwD,EACvC;EACjB,IAAIA,QAAQ,CAACC,KAAK,IAAI,IAAAC,eAAO,EAACF,QAAQ,CAACG,eAAe,CAAC,EAAE;IACvD,OAAOH,QAAQ,CAACC,KAAK;EACvB;EACA,MAAMG,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACN,QAAQ,CAACG,eAAe,CAAC;EACzD,MAAMI,WAAW,GAAGV,cAAc,CAACW,GAAG,CAACJ,QAAQ,CAAC;EAChD,IAAIG,WAAW,KAAKE,SAAS,EAAE;IAC7B,OAAOF,WAAW;EACpB;EACA,MAAM;IAAEG,QAAQ;IAAEC,UAAU;IAAEC;EAAY,CAAC,GAAGZ,QAAQ,CAACG,eAAe;EACtE,MAAMU,IAAI,GAAGD,WAAW,
|
|
1
|
+
{"version":3,"file":"fetchMenuTitle.js","names":["_lodash","require","_cmdbSdk","menuTitleCache","Map","fetchMenuTitle","menuData","title","isEmpty","titleDataSource","cacheKey","JSON","stringify","cachedTitle","get","undefined","objectId","instanceId","attributeId","attr","instanceData","InstanceApi_getDetail","fields","Array","isArray","primary","rest","length","join","String","set"],"sources":["../../../src/menu/fetchMenuTitle.ts"],"sourcesContent":["import { isEmpty } from \"lodash\";\nimport { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport type { MenuRawData } from \"./interfaces.js\";\n\nconst menuTitleCache = new Map<string, string>();\n\nexport async function fetchMenuTitle(\n menuData: Pick<MenuRawData, \"title\" | \"titleDataSource\">\n): Promise<string> {\n if (menuData.title || isEmpty(menuData.titleDataSource)) {\n return menuData.title;\n }\n const cacheKey = JSON.stringify(menuData.titleDataSource);\n const cachedTitle = menuTitleCache.get(cacheKey);\n if (cachedTitle !== undefined) {\n return cachedTitle;\n }\n const { objectId, instanceId, attributeId } = menuData.titleDataSource;\n const attr = attributeId ?? \"name\";\n const instanceData = await InstanceApi_getDetail(objectId, instanceId, {\n fields: attr,\n });\n let title: string;\n if (attributeId === \"#showKey\" && Array.isArray(instanceData[attr])) {\n const [primary, ...rest] = instanceData[attr];\n title = rest.length > 0 ? `${primary}(${rest.join(\",\")})` : String(primary);\n } else {\n title = String(instanceData[attr]);\n }\n menuTitleCache.set(cacheKey, title);\n return title;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,cAAc,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAEzC,eAAeC,cAAcA,CAClCC,QAAwD,EACvC;EACjB,IAAIA,QAAQ,CAACC,KAAK,IAAI,IAAAC,eAAO,EAACF,QAAQ,CAACG,eAAe,CAAC,EAAE;IACvD,OAAOH,QAAQ,CAACC,KAAK;EACvB;EACA,MAAMG,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACN,QAAQ,CAACG,eAAe,CAAC;EACzD,MAAMI,WAAW,GAAGV,cAAc,CAACW,GAAG,CAACJ,QAAQ,CAAC;EAChD,IAAIG,WAAW,KAAKE,SAAS,EAAE;IAC7B,OAAOF,WAAW;EACpB;EACA,MAAM;IAAEG,QAAQ;IAAEC,UAAU;IAAEC;EAAY,CAAC,GAAGZ,QAAQ,CAACG,eAAe;EACtE,MAAMU,IAAI,GAAGD,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,MAAM;EAClC,MAAME,YAAY,GAAG,MAAM,IAAAC,8BAAqB,EAACL,QAAQ,EAAEC,UAAU,EAAE;IACrEK,MAAM,EAAEH;EACV,CAAC,CAAC;EACF,IAAIZ,KAAa;EACjB,IAAIW,WAAW,KAAK,UAAU,IAAIK,KAAK,CAACC,OAAO,CAACJ,YAAY,CAACD,IAAI,CAAC,CAAC,EAAE;IACnE,MAAM,CAACM,OAAO,EAAE,GAAGC,IAAI,CAAC,GAAGN,YAAY,CAACD,IAAI,CAAC;IAC7CZ,KAAK,GAAGmB,IAAI,CAACC,MAAM,GAAG,CAAC,GAAG,GAAGF,OAAO,IAAIC,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAGC,MAAM,CAACJ,OAAO,CAAC;EAC7E,CAAC,MAAM;IACLlB,KAAK,GAAGsB,MAAM,CAACT,YAAY,CAACD,IAAI,CAAC,CAAC;EACpC;EACAhB,cAAc,CAAC2B,GAAG,CAACpB,QAAQ,EAAEH,KAAK,CAAC;EACnC,OAAOA,KAAK;AACd","ignoreList":[]}
|
|
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getMenusOfStandaloneApp = getMenusOfStandaloneApp;
|
|
7
7
|
function getMenusOfStandaloneApp(menuId, appId, helpers) {
|
|
8
|
-
var _storyboard$meta, _storyboard$meta2;
|
|
8
|
+
var _ref, _storyboard$meta$inje, _storyboard$meta, _storyboard$meta2;
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
10
10
|
const storyboard = helpers.getStoryboardByAppId(appId);
|
|
11
|
-
const menus = ((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.injectMenus)
|
|
11
|
+
const menus = (_ref = (_storyboard$meta$inje = (_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.injectMenus) !== null && _storyboard$meta$inje !== void 0 ? _storyboard$meta$inje : (_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.menus) !== null && _ref !== void 0 ? _ref : [];
|
|
12
12
|
return menus.filter(menu => menu.menuId === menuId).map(menu => {
|
|
13
13
|
var _menu$app;
|
|
14
14
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMenusOfStandaloneApp.js","names":["getMenusOfStandaloneApp","menuId","appId","helpers","_storyboard$meta","_storyboard$meta2","storyboard","getStoryboardByAppId","menus","meta","injectMenus","filter","menu","map","_menu$app","app"],"sources":["../../../src/menu/getMenusOfStandaloneApp.ts"],"sourcesContent":["import { MenuRawData, RuntimeHelpers } from \"./interfaces.js\";\n\nexport function getMenusOfStandaloneApp(\n menuId: string,\n appId: string,\n helpers: RuntimeHelpers\n): MenuRawData[] {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const storyboard = helpers.getStoryboardByAppId(appId)!;\n const menus = (storyboard.meta?.injectMenus ??\n storyboard.meta?.menus ??\n []) as MenuRawData[];\n\n return menus\n .filter((menu) => menu.menuId === menuId)\n .map((menu) => ({\n ...menu,\n ...(menu.app?.[0]?.appId ? {} : { app: [{ appId }] }),\n }));\n\n // Todo: maybe: fetch menus from STANDALONE_MENU@EASYOPS\n}\n"],"mappings":";;;;;;AAEO,SAASA,uBAAuBA,CACrCC,MAAc,EACdC,KAAa,EACbC,OAAuB,EACR;EAAA,IAAAC,gBAAA,EAAAC,iBAAA;EACf;EACA,MAAMC,UAAU,
|
|
1
|
+
{"version":3,"file":"getMenusOfStandaloneApp.js","names":["getMenusOfStandaloneApp","menuId","appId","helpers","_ref","_storyboard$meta$inje","_storyboard$meta","_storyboard$meta2","storyboard","getStoryboardByAppId","menus","meta","injectMenus","filter","menu","map","_menu$app","app"],"sources":["../../../src/menu/getMenusOfStandaloneApp.ts"],"sourcesContent":["import { MenuRawData, RuntimeHelpers } from \"./interfaces.js\";\n\nexport function getMenusOfStandaloneApp(\n menuId: string,\n appId: string,\n helpers: RuntimeHelpers\n): MenuRawData[] {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const storyboard = helpers.getStoryboardByAppId(appId)!;\n const menus = (storyboard.meta?.injectMenus ??\n storyboard.meta?.menus ??\n []) as MenuRawData[];\n\n return menus\n .filter((menu) => menu.menuId === menuId)\n .map((menu) => ({\n ...menu,\n ...(menu.app?.[0]?.appId ? {} : { app: [{ appId }] }),\n }));\n\n // Todo: maybe: fetch menus from STANDALONE_MENU@EASYOPS\n}\n"],"mappings":";;;;;;AAEO,SAASA,uBAAuBA,CACrCC,MAAc,EACdC,KAAa,EACbC,OAAuB,EACR;EAAA,IAAAC,IAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,iBAAA;EACf;EACA,MAAMC,UAAU,GAAGL,OAAO,CAACM,oBAAoB,CAACP,KAAK,CAAE;EACvD,MAAMQ,KAAK,IAAAN,IAAA,IAAAC,qBAAA,IAAAC,gBAAA,GAAIE,UAAU,CAACG,IAAI,cAAAL,gBAAA,uBAAfA,gBAAA,CAAiBM,WAAW,cAAAP,qBAAA,cAAAA,qBAAA,IAAAE,iBAAA,GACzCC,UAAU,CAACG,IAAI,cAAAJ,iBAAA,uBAAfA,iBAAA,CAAiBG,KAAK,cAAAN,IAAA,cAAAA,IAAA,GACtB,EAAoB;EAEtB,OAAOM,KAAK,CACTG,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACb,MAAM,KAAKA,MAAM,CAAC,CACxCc,GAAG,CAAED,IAAI;IAAA,IAAAE,SAAA;IAAA,OAAM;MACd,GAAGF,IAAI;MACP,IAAI,CAAAE,SAAA,GAAAF,IAAI,CAACG,GAAG,cAAAD,SAAA,gBAAAA,SAAA,GAARA,SAAA,CAAW,CAAC,CAAC,cAAAA,SAAA,eAAbA,SAAA,CAAed,KAAK,GAAG,CAAC,CAAC,GAAG;QAAEe,GAAG,EAAE,CAAC;UAAEf;QAAM,CAAC;MAAE,CAAC;IACtD,CAAC;EAAA,CAAC,CAAC;;EAEL;AACF","ignoreList":[]}
|
|
@@ -52,6 +52,7 @@ async function mergeMenu(menuList, runtimeContext, helpers) {
|
|
|
52
52
|
}
|
|
53
53
|
function processGroupInject(items, menu, injectWithMenus, menuWithI18n) {
|
|
54
54
|
return items === null || items === void 0 ? void 0 : items.map(item => {
|
|
55
|
+
var _processGroupInject;
|
|
55
56
|
const foundInjectingMenus = item.groupId && injectWithMenus.get(item.groupId);
|
|
56
57
|
if (foundInjectingMenus) {
|
|
57
58
|
// Each menu to be injected with should be injected only once.
|
|
@@ -60,7 +61,7 @@ function processGroupInject(items, menu, injectWithMenus, menuWithI18n) {
|
|
|
60
61
|
}
|
|
61
62
|
return {
|
|
62
63
|
...item,
|
|
63
|
-
children: (processGroupInject(item.children, menu, injectWithMenus, menuWithI18n)
|
|
64
|
+
children: ((_processGroupInject = processGroupInject(item.children, menu, injectWithMenus, menuWithI18n)) !== null && _processGroupInject !== void 0 ? _processGroupInject : []).concat(foundInjectingMenus ? foundInjectingMenus.flatMap(injectingMenu =>
|
|
64
65
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
65
66
|
processGroupInject(injectingMenu.items, injectingMenu, injectWithMenus, menuWithI18n)) : []),
|
|
66
67
|
[_constants.symbolAppId]: menu.app[0].appId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeMenu.js","names":["_i18n","require","_constants","_loadDynamicMenuItems","mergeMenu","menuList","runtimeContext","helpers","mainMenu","find","menu","type","undefined","validMenuList","injectWithMenus","Map","menuWithI18n","WeakMap","i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","lang","resources","addResourceBundle","set","Promise","all","map","loadDynamicMenuItems","_menu$items","items","length","injectMenuGroupId","injectingMenus","get","push","flatMap","processGroupInject","symbolMenuI18nNamespace","symbolOverrideApp","overrideApp","item","foundInjectingMenus","groupId","delete","children","concat","injectingMenu","symbolAppId"],"sources":["../../../src/menu/mergeMenu.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport {\n symbolAppId,\n symbolMenuI18nNamespace,\n symbolOverrideApp,\n} from \"./constants.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeMenuItemRawData,\n RuntimeMenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\nimport { loadDynamicMenuItems } from \"./loadDynamicMenuItems.js\";\n\nexport async function mergeMenu(\n menuList: MenuRawData[],\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n): Promise<RuntimeMenuRawData | undefined> {\n const mainMenu = menuList.find((menu) => menu.type !== \"inject\");\n if (!mainMenu) {\n return undefined;\n }\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n\n for (const menu of menuList) {\n if (menu.i18n) {\n const menuI18nNamespace = `menu/${menu.menuId}~${menu.app[0].appId}+${\n (menu as { instanceId?: string }).instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n }\n\n await Promise.all(\n menuList.map((menu) =>\n loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers)\n )\n );\n\n for (const menu of menuList) {\n if (menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n return {\n ...mainMenu,\n items: validMenuList.flatMap(\n (menu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)!\n ),\n [symbolMenuI18nNamespace]: menuWithI18n.get(mainMenu),\n [symbolOverrideApp]: mainMenu.overrideApp,\n };\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>,\n menuWithI18n: WeakMap<MenuRawData, string>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(\n item.children,\n menu,\n injectWithMenus,\n menuWithI18n\n ) ?? ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus,\n menuWithI18n\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n [symbolAppId]: menu.app[0].appId,\n [symbolMenuI18nNamespace]: menuWithI18n.get(menu),\n [symbolOverrideApp]: menu.overrideApp,\n };\n });\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAaA,IAAAE,qBAAA,GAAAF,OAAA;AAEO,eAAeG,SAASA,CAC7BC,QAAuB,EACvBC,cAA8B,EAC9BC,OAAuB,EACkB;EACzC,MAAMC,QAAQ,GAAGH,QAAQ,CAACI,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,IAAI,KAAK,QAAQ,CAAC;EAChE,IAAI,CAACH,QAAQ,EAAE;IACb,OAAOI,SAAS;EAClB;EACA,MAAMC,aAA4B,GAAG,EAAE;EACvC,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAwB,CAAC;EACxD,MAAMC,YAAY,GAAG,IAAIC,OAAO,CAAsB,CAAC;EAEvD,KAAK,MAAMP,IAAI,IAAIL,QAAQ,EAAE;IAC3B,IAAIK,IAAI,CAACQ,IAAI,EAAE;MACb,MAAMC,iBAAiB,GAAG,QAAQT,IAAI,CAACU,MAAM,IAAIV,IAAI,CAACW,GAAG,CAAC,CAAC,CAAC,CAACC,KAAK,IAC/DZ,IAAI,CAA6Ba,UAAU,EAC5C;MACF;MACAC,MAAM,CAACC,OAAO,CAACf,IAAI,CAACQ,IAAI,CAAC,CAACQ,OAAO,CAAC,CAAC,CAACC,IAAI,EAAEC,SAAS,CAAC,KAAK;QACvDV,UAAI,CAACW,iBAAiB,CAACF,IAAI,EAAER,iBAAiB,EAAES,SAAS,CAAC;MAC5D,CAAC,CAAC;MACFZ,YAAY,CAACc,GAAG,CAACpB,IAAI,EAAES,iBAAiB,CAAC;IAC3C;EACF;EAEA,MAAMY,OAAO,CAACC,GAAG,CACf3B,QAAQ,CAAC4B,GAAG,CAAEvB,IAAI,IAChB,IAAAwB,0CAAoB,EAACxB,IAAI,EAAEJ,cAAc,EAAEU,YAAY,EAAET,OAAO,CAClE,CACF,CAAC;EAED,KAAK,MAAMG,IAAI,IAAIL,QAAQ,EAAE;IAAA,IAAA8B,WAAA;IAC3B,KAAAA,WAAA,GAAIzB,IAAI,CAAC0B,KAAK,cAAAD,WAAA,eAAVA,WAAA,CAAYE,MAAM,EAAE;MACtB,IAAI3B,IAAI,CAACC,IAAI,KAAK,QAAQ,IAAID,IAAI,CAAC4B,iBAAiB,EAAE;QACpD,IAAIC,cAAc,GAAGzB,eAAe,CAAC0B,GAAG,CAAC9B,IAAI,CAAC4B,iBAAiB,CAAC;QAChE,IAAI,CAACC,cAAc,EAAE;UACnBA,cAAc,GAAG,EAAE;UACnBzB,eAAe,CAACgB,GAAG,CAACpB,IAAI,CAAC4B,iBAAiB,EAAEC,cAAc,CAAC;QAC7D;QACAA,cAAc,CAACE,IAAI,CAAC/B,IAAI,CAAC;MAC3B,CAAC,MAAM;QACLG,aAAa,CAAC4B,IAAI,CAAC/B,IAAI,CAAC;MAC1B;IACF;EACF;EAEA,OAAO;IACL,GAAGF,QAAQ;IACX4B,KAAK,EAAEvB,aAAa,CAAC6B,OAAO,CACzBhC,IAAI;IACH;IACAiC,kBAAkB,CAACjC,IAAI,CAAC0B,KAAK,EAAE1B,IAAI,EAAEI,eAAe,EAAEE,YAAY,CACtE,CAAC;IACD,CAAC4B,kCAAuB,GAAG5B,YAAY,CAACwB,GAAG,CAAChC,QAAQ,CAAC;IACrD,CAACqC,4BAAiB,GAAGrC,QAAQ,CAACsC;EAChC,CAAC;AACH;AAEA,SAASH,kBAAkBA,CACzBP,KAAoC,EACpC1B,IAAiB,EACjBI,eAA2C,EAC3CE,YAA0C,EACJ;EACtC,OAAOoB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEH,GAAG,CAAEc,IAAI,IAAK;IAC1B,MAAMC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"mergeMenu.js","names":["_i18n","require","_constants","_loadDynamicMenuItems","mergeMenu","menuList","runtimeContext","helpers","mainMenu","find","menu","type","undefined","validMenuList","injectWithMenus","Map","menuWithI18n","WeakMap","i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","lang","resources","addResourceBundle","set","Promise","all","map","loadDynamicMenuItems","_menu$items","items","length","injectMenuGroupId","injectingMenus","get","push","flatMap","processGroupInject","symbolMenuI18nNamespace","symbolOverrideApp","overrideApp","item","_processGroupInject","foundInjectingMenus","groupId","delete","children","concat","injectingMenu","symbolAppId"],"sources":["../../../src/menu/mergeMenu.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport {\n symbolAppId,\n symbolMenuI18nNamespace,\n symbolOverrideApp,\n} from \"./constants.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeMenuItemRawData,\n RuntimeMenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\nimport { loadDynamicMenuItems } from \"./loadDynamicMenuItems.js\";\n\nexport async function mergeMenu(\n menuList: MenuRawData[],\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n): Promise<RuntimeMenuRawData | undefined> {\n const mainMenu = menuList.find((menu) => menu.type !== \"inject\");\n if (!mainMenu) {\n return undefined;\n }\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n\n for (const menu of menuList) {\n if (menu.i18n) {\n const menuI18nNamespace = `menu/${menu.menuId}~${menu.app[0].appId}+${\n (menu as { instanceId?: string }).instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n }\n\n await Promise.all(\n menuList.map((menu) =>\n loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers)\n )\n );\n\n for (const menu of menuList) {\n if (menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n return {\n ...mainMenu,\n items: validMenuList.flatMap(\n (menu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)!\n ),\n [symbolMenuI18nNamespace]: menuWithI18n.get(mainMenu),\n [symbolOverrideApp]: mainMenu.overrideApp,\n };\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>,\n menuWithI18n: WeakMap<MenuRawData, string>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(\n item.children,\n menu,\n injectWithMenus,\n menuWithI18n\n ) ?? ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus,\n menuWithI18n\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n [symbolAppId]: menu.app[0].appId,\n [symbolMenuI18nNamespace]: menuWithI18n.get(menu),\n [symbolOverrideApp]: menu.overrideApp,\n };\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,9 @@ function reorderMenuItems(list) {
|
|
|
15
15
|
}));
|
|
16
16
|
}
|
|
17
17
|
function sortMenuItems(list) {
|
|
18
|
-
return (0, _lodash.sortBy)(list, item =>
|
|
18
|
+
return (0, _lodash.sortBy)(list, item => {
|
|
19
|
+
var _item$sort;
|
|
20
|
+
return (_item$sort = item.sort) !== null && _item$sort !== void 0 ? _item$sort : -Infinity;
|
|
21
|
+
});
|
|
19
22
|
}
|
|
20
23
|
//# sourceMappingURL=reorderMenuItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorderMenuItems.js","names":["_lodash","require","reorderMenu","menuData","items","reorderMenuItems","list","sortMenuItems","map","item","children","sortBy","sort","Infinity"],"sources":["../../../src/menu/reorderMenuItems.ts"],"sourcesContent":["import { sortBy } from \"lodash\";\nimport { MenuItemRawData, MenuRawData } from \"./interfaces.js\";\n\nexport function reorderMenu(menuData: MenuRawData): void {\n menuData.items = reorderMenuItems(menuData.items);\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,WAAWA,CAACC,QAAqB,EAAQ;EACvDA,QAAQ,CAACC,KAAK,GAAGC,gBAAgB,CAACF,QAAQ,CAACC,KAAK,CAAC;AACnD;AAEA,SAASC,gBAAgBA,CACvBC,IAAmC,EAChB;EACnB,OAAOC,aAAa,CAACD,IAAI,CAAC,CAACE,GAAG,CAAEC,IAAI,KAAM;IACxC,GAAGA,IAAI;IACPC,QAAQ,EAAEL,gBAAgB,CAACI,IAAI,CAACC,QAAQ;EAC1C,CAAC,CAAC,CAAC;AACL;AAEA,SAASH,aAAaA,CAACD,IAAmC,EAAqB;EAC7E,OAAO,IAAAK,cAAM,EAACL,IAAI,EAAGG,IAAI,
|
|
1
|
+
{"version":3,"file":"reorderMenuItems.js","names":["_lodash","require","reorderMenu","menuData","items","reorderMenuItems","list","sortMenuItems","map","item","children","sortBy","_item$sort","sort","Infinity"],"sources":["../../../src/menu/reorderMenuItems.ts"],"sourcesContent":["import { sortBy } from \"lodash\";\nimport { MenuItemRawData, MenuRawData } from \"./interfaces.js\";\n\nexport function reorderMenu(menuData: MenuRawData): void {\n menuData.items = reorderMenuItems(menuData.items);\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,WAAWA,CAACC,QAAqB,EAAQ;EACvDA,QAAQ,CAACC,KAAK,GAAGC,gBAAgB,CAACF,QAAQ,CAACC,KAAK,CAAC;AACnD;AAEA,SAASC,gBAAgBA,CACvBC,IAAmC,EAChB;EACnB,OAAOC,aAAa,CAACD,IAAI,CAAC,CAACE,GAAG,CAAEC,IAAI,KAAM;IACxC,GAAGA,IAAI;IACPC,QAAQ,EAAEL,gBAAgB,CAACI,IAAI,CAACC,QAAQ;EAC1C,CAAC,CAAC,CAAC;AACL;AAEA,SAASH,aAAaA,CAACD,IAAmC,EAAqB;EAC7E,OAAO,IAAAK,cAAM,EAACL,IAAI,EAAGG,IAAI;IAAA,IAAAG,UAAA;IAAA,QAAAA,UAAA,GAAKH,IAAI,CAACI,IAAI,cAAAD,UAAA,cAAAA,UAAA,GAAI,CAACE,QAAQ;EAAA,EAAC;AACvD","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/easyops-runtime",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.45",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/easyops-runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -45,20 +45,20 @@
|
|
|
45
45
|
"@next-api-sdk/cmdb-sdk": "^1.1.0",
|
|
46
46
|
"@next-api-sdk/micro-app-sdk": "^1.2.1",
|
|
47
47
|
"@next-api-sdk/micro-app-standalone-sdk": "^1.1.0",
|
|
48
|
-
"@next-core/cook": "^2.5.
|
|
49
|
-
"@next-core/http": "^1.2.
|
|
50
|
-
"@next-core/pipes": "^2.0.
|
|
51
|
-
"@next-core/runtime": "^1.58.
|
|
48
|
+
"@next-core/cook": "^2.5.4",
|
|
49
|
+
"@next-core/http": "^1.2.9",
|
|
50
|
+
"@next-core/pipes": "^2.0.28",
|
|
51
|
+
"@next-core/runtime": "^1.58.3",
|
|
52
52
|
"@next-core/types": "^1.14.0",
|
|
53
53
|
"@next-core/utils": "^1.7.28",
|
|
54
54
|
"js-yaml": "^3.14.1",
|
|
55
55
|
"lodash": "^4.17.21"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@next-core/build-next-libs": "^1.0.
|
|
58
|
+
"@next-core/build-next-libs": "^1.0.21",
|
|
59
59
|
"@next-core/test-next": "^1.1.7",
|
|
60
60
|
"jest-websocket-mock": "^2.5.0",
|
|
61
61
|
"whatwg-fetch": "^3.6.20"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "a66abb00c5ef6e134f4b864bee87d54b1ddb136b"
|
|
64
64
|
}
|