@next-core/easyops-runtime 0.10.5 → 0.10.7
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 +3 -4
- package/dist/cjs/analytics/http.js.map +1 -1
- package/dist/cjs/checkInstalledApps.js +1 -2
- package/dist/cjs/checkInstalledApps.js.map +1 -1
- package/dist/cjs/checkPermissions.js.map +1 -1
- package/dist/cjs/flowApi/CollectContracts.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/fetchMenuById.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 +1 -2
- package/dist/cjs/menu/mergeMenu.js.map +1 -1
- package/dist/cjs/menu/reorderMenuItems.js +1 -4
- package/dist/cjs/menu/reorderMenuItems.js.map +1 -1
- package/dist/cjs/websocket/MessageDispatcher.js.map +1 -1
- package/dist/cjs/websocket/MessageService.js.map +1 -1
- package/dist/esm/analytics/analytics.js +23 -18
- package/dist/esm/analytics/analytics.js.map +1 -1
- package/dist/esm/analytics/http.js +19 -20
- package/dist/esm/analytics/http.js.map +1 -1
- package/dist/esm/analytics/pageView.js +6 -6
- package/dist/esm/analytics/pageView.js.map +1 -1
- package/dist/esm/analytics/transport.js +12 -12
- package/dist/esm/analytics/transport.js.map +1 -1
- package/dist/esm/auth-v2.js +1 -1
- package/dist/esm/auth-v2.js.map +1 -1
- package/dist/esm/auth.js +5 -4
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/checkInstalledApps.js +19 -30
- package/dist/esm/checkInstalledApps.js.map +1 -1
- package/dist/esm/checkPermissions.js +35 -48
- package/dist/esm/checkPermissions.js.map +1 -1
- package/dist/esm/flowApi/CollectContracts.js +5 -5
- package/dist/esm/flowApi/CollectContracts.js.map +1 -1
- package/dist/esm/flowApi/FlowApi.js +68 -87
- package/dist/esm/flowApi/FlowApi.js.map +1 -1
- package/dist/esm/flowApi/FlowApiProvider.js +87 -87
- package/dist/esm/flowApi/FlowApiProvider.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/menu/computeMenuData.js +17 -24
- package/dist/esm/menu/computeMenuData.js.map +1 -1
- package/dist/esm/menu/constants.js +3 -3
- package/dist/esm/menu/constants.js.map +1 -1
- package/dist/esm/menu/fetchMenuById.js +61 -70
- package/dist/esm/menu/fetchMenuById.js.map +1 -1
- package/dist/esm/menu/fetchMenuTitle.js +27 -34
- package/dist/esm/menu/fetchMenuTitle.js.map +1 -1
- package/dist/esm/menu/getMenusOfStandaloneApp.js +11 -9
- package/dist/esm/menu/getMenusOfStandaloneApp.js.map +1 -1
- package/dist/esm/menu/loadDynamicMenuItems.js +17 -23
- package/dist/esm/menu/loadDynamicMenuItems.js.map +1 -1
- package/dist/esm/menu/mergeMenu.js +44 -54
- package/dist/esm/menu/mergeMenu.js.map +1 -1
- package/dist/esm/menu/reorderMenuItems.js +3 -6
- package/dist/esm/menu/reorderMenuItems.js.map +1 -1
- package/dist/esm/websocket/MessageDispatcher.js +19 -19
- package/dist/esm/websocket/MessageDispatcher.js.map +1 -1
- package/dist/esm/websocket/MessageService.js +9 -9
- package/dist/esm/websocket/MessageService.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkInstalledApps.js","names":["traverseStoryboardExpressions","collectInstalledAppsHasUsage","RuntimeApi_searchMicroAppStandalone","checkingApps","Map","checkedApps","preCheckInstalledApps","storyboard","hasAppInBootstrap","window","STANDALONE_MICRO_APPS","NO_AUTH_GUARD","appIds","scanInstalledAppsUsage","searchIds","appId","has","push","length","promise","query","$in","fields","catch","error","console","
|
|
1
|
+
{"version":3,"file":"checkInstalledApps.js","names":["traverseStoryboardExpressions","collectInstalledAppsHasUsage","RuntimeApi_searchMicroAppStandalone","checkingApps","Map","checkedApps","preCheckInstalledApps","storyboard","hasAppInBootstrap","window","STANDALONE_MICRO_APPS","NO_AUTH_GUARD","appIds","scanInstalledAppsUsage","searchIds","appId","has","push","length","promise","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","routes","node","parent"],"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":"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","ignoreList":[]}
|
|
@@ -1,36 +1,51 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import { difference } from "lodash";
|
|
3
2
|
import { scanPermissionActionsInAny, scanPermissionActionsInStoryboard } from "@next-core/utils/storyboard";
|
|
4
3
|
import { PermissionApi_validatePermissions } from "@next-api-sdk/micro-app-sdk";
|
|
5
4
|
import { getAuth, isLoggedIn } from "./auth.js";
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const checkedPermissions = [];
|
|
6
|
+
const permissionMap = new Map();
|
|
8
7
|
export function preCheckPermissions(storyboard) {
|
|
9
8
|
if (isLoggedIn() && !getAuth().isAdmin) {
|
|
10
|
-
|
|
9
|
+
const usedActions = scanPermissionActionsInStoryboard(storyboard);
|
|
11
10
|
return validatePermissions(usedActions);
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
|
-
export function preCheckPermissionsForBrickOrRoute(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (isLoggedIn() && !getAuth().isAdmin && Array.isArray(container.permissionsPreCheck)) {
|
|
20
|
-
var actions = yield asyncComputeRealValue(container.permissionsPreCheck);
|
|
21
|
-
return validatePermissions(actions);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
return _preCheckPermissionsForBrickOrRoute.apply(this, arguments);
|
|
13
|
+
export async function preCheckPermissionsForBrickOrRoute(container, asyncComputeRealValue) {
|
|
14
|
+
if (isLoggedIn() && !getAuth().isAdmin && Array.isArray(container.permissionsPreCheck)) {
|
|
15
|
+
const actions = await asyncComputeRealValue(container.permissionsPreCheck);
|
|
16
|
+
return validatePermissions(actions);
|
|
17
|
+
}
|
|
25
18
|
}
|
|
26
19
|
export function preCheckPermissionsForAny(data) {
|
|
27
20
|
if (isLoggedIn() && !getAuth().isAdmin) {
|
|
28
|
-
|
|
21
|
+
const usedActions = scanPermissionActionsInAny(data);
|
|
29
22
|
return validatePermissions(usedActions);
|
|
30
23
|
}
|
|
31
24
|
}
|
|
32
|
-
export function validatePermissions(
|
|
33
|
-
|
|
25
|
+
export async function validatePermissions(usedActions) {
|
|
26
|
+
// Do not request known actions.
|
|
27
|
+
const actions = difference(usedActions, [...checkedPermissions]);
|
|
28
|
+
if (actions.length === 0) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
checkedPermissions.push(...actions);
|
|
32
|
+
try {
|
|
33
|
+
const result = await PermissionApi_validatePermissions({
|
|
34
|
+
actions
|
|
35
|
+
});
|
|
36
|
+
for (const item of result.actions) {
|
|
37
|
+
permissionMap.set(item.action, item.authorizationStatus);
|
|
38
|
+
if (item.authorizationStatus === "undefined") {
|
|
39
|
+
// eslint-disable-next-line no-console
|
|
40
|
+
console.error(`Undefined permission action: "${item.action}"`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
} catch (error) {
|
|
44
|
+
// Allow pre-check to fail, and
|
|
45
|
+
// make it not crash when the backend service is not updated.
|
|
46
|
+
// eslint-disable-next-line no-console
|
|
47
|
+
console.error("Pre-check permissions failed", error);
|
|
48
|
+
}
|
|
34
49
|
}
|
|
35
50
|
|
|
36
51
|
/**
|
|
@@ -39,34 +54,6 @@ export function validatePermissions(_x3) {
|
|
|
39
54
|
*
|
|
40
55
|
* @param actions - Required permission actions.
|
|
41
56
|
*/
|
|
42
|
-
function _validatePermissions() {
|
|
43
|
-
_validatePermissions = _asyncToGenerator(function* (usedActions) {
|
|
44
|
-
// Do not request known actions.
|
|
45
|
-
var actions = difference(usedActions, [...checkedPermissions]);
|
|
46
|
-
if (actions.length === 0) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
checkedPermissions.push(...actions);
|
|
50
|
-
try {
|
|
51
|
-
var result = yield PermissionApi_validatePermissions({
|
|
52
|
-
actions
|
|
53
|
-
});
|
|
54
|
-
for (var item of result.actions) {
|
|
55
|
-
permissionMap.set(item.action, item.authorizationStatus);
|
|
56
|
-
if (item.authorizationStatus === "undefined") {
|
|
57
|
-
// eslint-disable-next-line no-console
|
|
58
|
-
console.error("Undefined permission action: \"".concat(item.action, "\""));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
} catch (error) {
|
|
62
|
-
// Allow pre-check to fail, and
|
|
63
|
-
// make it not crash when the backend service is not updated.
|
|
64
|
-
// eslint-disable-next-line no-console
|
|
65
|
-
console.error("Pre-check permissions failed", error);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return _validatePermissions.apply(this, arguments);
|
|
69
|
-
}
|
|
70
57
|
export function checkPermissions() {
|
|
71
58
|
if (!isLoggedIn()) {
|
|
72
59
|
return false;
|
|
@@ -77,7 +64,7 @@ export function checkPermissions() {
|
|
|
77
64
|
for (var _len = arguments.length, actions = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
78
65
|
actions[_key] = arguments[_key];
|
|
79
66
|
}
|
|
80
|
-
for (
|
|
67
|
+
for (const action of actions) {
|
|
81
68
|
// Only **exclusively authorized** permissions are ok.
|
|
82
69
|
// Those scenarios below will fail:
|
|
83
70
|
// - unauthorized actions (pre-check results)
|
|
@@ -89,7 +76,7 @@ export function checkPermissions() {
|
|
|
89
76
|
return false;
|
|
90
77
|
case undefined:
|
|
91
78
|
// eslint-disable-next-line no-console
|
|
92
|
-
console.error(
|
|
79
|
+
console.error(`Un-checked permission action: "${action}", please make sure the permission to check is defined in permissionsPreCheck.`);
|
|
93
80
|
return false;
|
|
94
81
|
}
|
|
95
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkPermissions.js","names":["difference","scanPermissionActionsInAny","scanPermissionActionsInStoryboard","PermissionApi_validatePermissions","getAuth","isLoggedIn","checkedPermissions","permissionMap","Map","preCheckPermissions","storyboard","isAdmin","usedActions","validatePermissions","preCheckPermissionsForBrickOrRoute","
|
|
1
|
+
{"version":3,"file":"checkPermissions.js","names":["difference","scanPermissionActionsInAny","scanPermissionActionsInStoryboard","PermissionApi_validatePermissions","getAuth","isLoggedIn","checkedPermissions","permissionMap","Map","preCheckPermissions","storyboard","isAdmin","usedActions","validatePermissions","preCheckPermissionsForBrickOrRoute","container","asyncComputeRealValue","Array","isArray","permissionsPreCheck","actions","preCheckPermissionsForAny","data","length","push","result","item","set","action","authorizationStatus","console","error","checkPermissions","_len","arguments","_key","get","undefined","resetPermissionPreChecks","clear"],"sources":["../../src/checkPermissions.ts"],"sourcesContent":["import { difference } from \"lodash\";\nimport {\n scanPermissionActionsInAny,\n scanPermissionActionsInStoryboard,\n} from \"@next-core/utils/storyboard\";\nimport type { BrickConf, RouteConf, Storyboard } from \"@next-core/types\";\nimport { PermissionApi_validatePermissions } from \"@next-api-sdk/micro-app-sdk\";\nimport { getAuth, isLoggedIn } from \"./auth.js\";\n\ntype PermissionStatus = \"authorized\" | \"unauthorized\" | \"undefined\";\n\nconst checkedPermissions: string[] = [];\nconst permissionMap = new Map<string, PermissionStatus>();\n\nexport function preCheckPermissions(\n storyboard: Storyboard\n): Promise<void> | undefined {\n if (isLoggedIn() && !getAuth().isAdmin) {\n const usedActions = scanPermissionActionsInStoryboard(storyboard);\n return validatePermissions(usedActions);\n }\n}\n\nexport async function preCheckPermissionsForBrickOrRoute(\n container: BrickConf | RouteConf,\n asyncComputeRealValue: (value: unknown) => Promise<unknown>\n) {\n if (\n isLoggedIn() &&\n !getAuth().isAdmin &&\n Array.isArray(container.permissionsPreCheck)\n ) {\n const actions = (await asyncComputeRealValue(\n container.permissionsPreCheck\n )) as string[];\n return validatePermissions(actions);\n }\n}\n\nexport function preCheckPermissionsForAny(\n data: unknown\n): Promise<void> | undefined {\n if (isLoggedIn() && !getAuth().isAdmin) {\n const usedActions = scanPermissionActionsInAny(data);\n return validatePermissions(usedActions);\n }\n}\n\nexport async function validatePermissions(\n usedActions: string[]\n): Promise<void> {\n // Do not request known actions.\n const actions = difference(usedActions, [...checkedPermissions]);\n if (actions.length === 0) {\n return;\n }\n checkedPermissions.push(...actions);\n try {\n const result = await PermissionApi_validatePermissions({ actions });\n for (const item of result.actions!) {\n permissionMap.set(item.action!, item.authorizationStatus!);\n if (item.authorizationStatus === \"undefined\") {\n // eslint-disable-next-line no-console\n console.error(`Undefined permission action: \"${item.action}\"`);\n }\n }\n } catch (error) {\n // Allow pre-check 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(\"Pre-check permissions failed\", error);\n }\n}\n\n/**\n * Check the current logged-in user whether to have all\n * permissions of actions passed to it.\n *\n * @param actions - Required permission actions.\n */\nexport function checkPermissions(...actions: string[]): boolean {\n if (!isLoggedIn()) {\n return false;\n }\n\n if (getAuth().isAdmin) {\n return true;\n }\n\n for (const action of actions) {\n // Only **exclusively authorized** permissions are ok.\n // Those scenarios below will fail:\n // - unauthorized actions (pre-check results)\n // - undefined actions (pre-check results)\n // - Un-pre-checked or pre-check failed\n switch (permissionMap.get(action)) {\n case \"unauthorized\":\n case \"undefined\":\n return false;\n case undefined:\n // eslint-disable-next-line no-console\n console.error(\n `Un-checked permission action: \"${action}\", please make sure the permission to check is defined in permissionsPreCheck.`\n );\n return false;\n }\n }\n return true;\n}\n\n/**\n * Reset permission pre-checks after logged-out.\n */\nexport function resetPermissionPreChecks(): void {\n checkedPermissions.length = 0;\n permissionMap.clear();\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const contractsMap = new Map();
|
|
2
|
+
const widgetContractMap = new Map();
|
|
3
|
+
const debugContractMap = new Map();
|
|
4
|
+
const addContract = (contracts, map) => {
|
|
5
5
|
contracts === null || contracts === void 0 || contracts.forEach(contract => {
|
|
6
|
-
map.set(
|
|
6
|
+
map.set(`${contract.namespaceId}.${contract.name}`, contract);
|
|
7
7
|
});
|
|
8
8
|
};
|
|
9
9
|
export function collectContract(contracts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectContracts.js","names":["contractsMap","Map","widgetContractMap","debugContractMap","addContract","contracts","map","forEach","contract","set","
|
|
1
|
+
{"version":3,"file":"CollectContracts.js","names":["contractsMap","Map","widgetContractMap","debugContractMap","addContract","contracts","map","forEach","contract","set","namespaceId","name","collectContract","collectWidgetContract","clearCollectWidgetContract","clear","collectDebugContract","clearDebugContract","getContract","get"],"sources":["../../../src/flowApi/CollectContracts.ts"],"sourcesContent":["import { Contract } from \"@next-core/types\";\n\nconst contractsMap: Map<string, Contract> = new Map();\nconst widgetContractMap: Map<string, Contract> = new Map();\nconst debugContractMap: Map<string, Contract> = new Map();\n\nconst addContract = (\n contracts: Contract[] | undefined,\n map: Map<string, Contract>\n): void => {\n contracts?.forEach((contract) => {\n map.set(`${contract.namespaceId}.${contract.name}`, contract);\n });\n};\n\nexport function collectContract(contracts: Contract[] | undefined): void {\n addContract(contracts, contractsMap);\n}\n\nexport function collectWidgetContract(contracts: Contract[] | undefined): void {\n addContract(contracts, widgetContractMap);\n}\n\nexport function clearCollectWidgetContract(): void {\n widgetContractMap.clear();\n}\n\nexport function collectDebugContract(contracts: Contract[] | undefined): void {\n addContract(contracts, debugContractMap);\n}\n\nexport function clearDebugContract() {\n debugContractMap.clear();\n}\n\nexport function getContract(name: string): Contract | undefined {\n return (\n contractsMap.get(name) ||\n widgetContractMap.get(name) ||\n debugContractMap.get(name)\n );\n}\n"],"mappings":"AAEA,MAAMA,YAAmC,GAAG,IAAIC,GAAG,CAAC,CAAC;AACrD,MAAMC,iBAAwC,GAAG,IAAID,GAAG,CAAC,CAAC;AAC1D,MAAME,gBAAuC,GAAG,IAAIF,GAAG,CAAC,CAAC;AAEzD,MAAMG,WAAW,GAAGA,CAClBC,SAAiC,EACjCC,GAA0B,KACjB;EACTD,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEE,OAAO,CAAEC,QAAQ,IAAK;IAC/BF,GAAG,CAACG,GAAG,CAAC,GAAGD,QAAQ,CAACE,WAAW,IAAIF,QAAQ,CAACG,IAAI,EAAE,EAAEH,QAAQ,CAAC;EAC/D,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,SAASI,eAAeA,CAACP,SAAiC,EAAQ;EACvED,WAAW,CAACC,SAAS,EAAEL,YAAY,CAAC;AACtC;AAEA,OAAO,SAASa,qBAAqBA,CAACR,SAAiC,EAAQ;EAC7ED,WAAW,CAACC,SAAS,EAAEH,iBAAiB,CAAC;AAC3C;AAEA,OAAO,SAASY,0BAA0BA,CAAA,EAAS;EACjDZ,iBAAiB,CAACa,KAAK,CAAC,CAAC;AAC3B;AAEA,OAAO,SAASC,oBAAoBA,CAACX,SAAiC,EAAQ;EAC5ED,WAAW,CAACC,SAAS,EAAEF,gBAAgB,CAAC;AAC1C;AAEA,OAAO,SAASc,kBAAkBA,CAAA,EAAG;EACnCd,gBAAgB,CAACY,KAAK,CAAC,CAAC;AAC1B;AAEA,OAAO,SAASG,WAAWA,CAACP,IAAY,EAAwB;EAC9D,OACEX,YAAY,CAACmB,GAAG,CAACR,IAAI,CAAC,IACtBT,iBAAiB,CAACiB,GAAG,CAACR,IAAI,CAAC,IAC3BR,gBAAgB,CAACgB,GAAG,CAACR,IAAI,CAAC;AAE9B","ignoreList":[]}
|
|
@@ -1,33 +1,26 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import yaml from "js-yaml";
|
|
3
2
|
import { ContractApi_searchSingleContract } from "@next-api-sdk/api-gateway-sdk";
|
|
4
3
|
import { getContract } from "./CollectContracts.js";
|
|
5
|
-
|
|
4
|
+
const remoteContractCache = new Map();
|
|
6
5
|
|
|
7
6
|
// Legacy Custom API: `${namespace}@${name}`
|
|
8
7
|
// Flow API: `${namespace}@${name}:${version}`
|
|
9
8
|
export function isFlowApiProvider(provider) {
|
|
10
9
|
return provider.includes("@");
|
|
11
10
|
}
|
|
12
|
-
export function getArgsOfFlowApi(
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
throw new FlowApiNotFoundError("Flow API not found: \"".concat(provider, "\""));
|
|
23
|
-
}
|
|
24
|
-
var apiProfile = getApiProfileFromApiDefinition(provider, apiDefinition);
|
|
25
|
-
return getApiArgsFromApiProfile(apiProfile, originalArgs, method, stream);
|
|
26
|
-
});
|
|
27
|
-
return _getArgsOfFlowApi.apply(this, arguments);
|
|
11
|
+
export async function getArgsOfFlowApi(provider, originalArgs, method, stream) {
|
|
12
|
+
if (!provider.includes(":")) {
|
|
13
|
+
throw new Error(`You're using legacy Custom API "${provider}" which is dropped in v3, please use Flow API instead`);
|
|
14
|
+
}
|
|
15
|
+
const apiDefinition = await fetchFlowApiDefinition(provider);
|
|
16
|
+
if (!apiDefinition) {
|
|
17
|
+
throw new FlowApiNotFoundError(`Flow API not found: "${provider}"`);
|
|
18
|
+
}
|
|
19
|
+
const apiProfile = getApiProfileFromApiDefinition(provider, apiDefinition);
|
|
20
|
+
return getApiArgsFromApiProfile(apiProfile, originalArgs, method, stream);
|
|
28
21
|
}
|
|
29
22
|
function getApiArgsFromApiProfile(_ref, originalArgs, method, stream) {
|
|
30
|
-
|
|
23
|
+
let {
|
|
31
24
|
uri,
|
|
32
25
|
method: apiMethod,
|
|
33
26
|
ext_fields,
|
|
@@ -40,12 +33,12 @@ function getApiArgsFromApiProfile(_ref, originalArgs, method, stream) {
|
|
|
40
33
|
request
|
|
41
34
|
} = _ref;
|
|
42
35
|
// `saveAs` requires the first argument to be the filename.
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
const isDownload = method === "saveAs";
|
|
37
|
+
let fileName;
|
|
45
38
|
if (isDownload) {
|
|
46
39
|
fileName = originalArgs.shift();
|
|
47
40
|
}
|
|
48
|
-
|
|
41
|
+
const {
|
|
49
42
|
url,
|
|
50
43
|
args
|
|
51
44
|
} = getTransformedUriAndRestArgs(uri, originalArgs, name, namespace, serviceName, version);
|
|
@@ -61,28 +54,28 @@ function getApiArgsFromApiProfile(_ref, originalArgs, method, stream) {
|
|
|
61
54
|
}, ...args];
|
|
62
55
|
}
|
|
63
56
|
function getTransformedUriAndRestArgs(uri, originalArgs, name, namespace, serviceName, version) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
const prefix = version ? serviceName ? `api/gateway/${serviceName}` : `api/gateway/${namespace}.${name}@${version}` : `api/gateway/api_service.${namespace}.${name}`;
|
|
58
|
+
const restArgs = originalArgs.slice();
|
|
59
|
+
const transformedUri = uri.replace(/:([^/]+)/g, () => restArgs.shift());
|
|
67
60
|
return {
|
|
68
61
|
url: prefix + transformedUri,
|
|
69
62
|
args: restArgs
|
|
70
63
|
};
|
|
71
64
|
}
|
|
72
65
|
function getApiProfileFromApiDefinition(provider, api) {
|
|
73
|
-
var _contract$
|
|
74
|
-
|
|
66
|
+
var _contract$response;
|
|
67
|
+
const contract = typeof api.contract === "string" ? yaml.safeLoad(api.contract, {
|
|
75
68
|
schema: yaml.JSON_SCHEMA,
|
|
76
69
|
json: true
|
|
77
70
|
}) : api.contract;
|
|
78
|
-
|
|
71
|
+
const {
|
|
79
72
|
uri,
|
|
80
73
|
method = "GET",
|
|
81
74
|
ext_fields
|
|
82
|
-
} = (
|
|
83
|
-
|
|
75
|
+
} = (contract === null || contract === void 0 ? void 0 : contract.endpoint) ?? {};
|
|
76
|
+
const responseWrapper = contract !== null && contract !== void 0 && contract.response ? contract.response.wrapper !== false : false;
|
|
84
77
|
if (!uri) {
|
|
85
|
-
throw new Error(
|
|
78
|
+
throw new Error(`Missing endpoint.uri in contract of provider "${provider}"`);
|
|
86
79
|
}
|
|
87
80
|
return {
|
|
88
81
|
uri,
|
|
@@ -97,66 +90,54 @@ function getApiProfileFromApiDefinition(provider, api) {
|
|
|
97
90
|
request: contract === null || contract === void 0 ? void 0 : contract.request
|
|
98
91
|
};
|
|
99
92
|
}
|
|
100
|
-
function fetchFlowApiDefinition(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
function _fetchFlowApiDefinition() {
|
|
104
|
-
_fetchFlowApiDefinition = _asyncToGenerator(function* (provider) {
|
|
105
|
-
var [namespaceName, nameWithVersion] = provider.split("@");
|
|
106
|
-
var [name, version] = nameWithVersion.split(":");
|
|
107
|
-
|
|
108
|
-
// Do not cache the result of `geContract`, which will lead to no contract
|
|
109
|
-
// will be found when render twice immediately.
|
|
110
|
-
var contract = getContract("".concat(namespaceName, ".").concat(name));
|
|
111
|
-
if (contract) {
|
|
112
|
-
return {
|
|
113
|
-
name: contract.name,
|
|
114
|
-
namespace: contract.namespaceId,
|
|
115
|
-
serviceName: contract.serviceName,
|
|
116
|
-
version: contract.version,
|
|
117
|
-
contract: {
|
|
118
|
-
endpoint: contract.endpoint,
|
|
119
|
-
response: contract.response,
|
|
120
|
-
request: contract.request
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
var promise = remoteContractCache.get(provider);
|
|
125
|
-
if (!promise) {
|
|
126
|
-
promise = fetchFlowApiDefinitionFromRemote(namespaceName, name, version);
|
|
127
|
-
remoteContractCache.set(provider, promise);
|
|
128
|
-
}
|
|
129
|
-
return promise;
|
|
130
|
-
});
|
|
131
|
-
return _fetchFlowApiDefinition.apply(this, arguments);
|
|
132
|
-
}
|
|
133
|
-
function fetchFlowApiDefinitionFromRemote(_x6, _x7, _x8) {
|
|
134
|
-
return _fetchFlowApiDefinitionFromRemote.apply(this, arguments);
|
|
135
|
-
}
|
|
136
|
-
function _fetchFlowApiDefinitionFromRemote() {
|
|
137
|
-
_fetchFlowApiDefinitionFromRemote = _asyncToGenerator(function* (namespace, name, version) {
|
|
138
|
-
var _contractData$namespa;
|
|
139
|
-
var {
|
|
140
|
-
contractData
|
|
141
|
-
} = yield ContractApi_searchSingleContract({
|
|
142
|
-
contractName: "".concat(namespace, ".").concat(name),
|
|
143
|
-
version
|
|
144
|
-
});
|
|
93
|
+
async function fetchFlowApiDefinition(provider) {
|
|
94
|
+
const [namespaceName, nameWithVersion] = provider.split("@");
|
|
95
|
+
const [name, version] = nameWithVersion.split(":");
|
|
145
96
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
97
|
+
// Do not cache the result of `geContract`, which will lead to no contract
|
|
98
|
+
// will be found when render twice immediately.
|
|
99
|
+
const contract = getContract(`${namespaceName}.${name}`);
|
|
100
|
+
if (contract) {
|
|
101
|
+
return {
|
|
102
|
+
name: contract.name,
|
|
103
|
+
namespace: contract.namespaceId,
|
|
104
|
+
serviceName: contract.serviceName,
|
|
105
|
+
version: contract.version,
|
|
152
106
|
contract: {
|
|
153
|
-
endpoint:
|
|
154
|
-
response:
|
|
155
|
-
request:
|
|
107
|
+
endpoint: contract.endpoint,
|
|
108
|
+
response: contract.response,
|
|
109
|
+
request: contract.request
|
|
156
110
|
}
|
|
157
|
-
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
let promise = remoteContractCache.get(provider);
|
|
114
|
+
if (!promise) {
|
|
115
|
+
promise = fetchFlowApiDefinitionFromRemote(namespaceName, name, version);
|
|
116
|
+
remoteContractCache.set(provider, promise);
|
|
117
|
+
}
|
|
118
|
+
return promise;
|
|
119
|
+
}
|
|
120
|
+
async function fetchFlowApiDefinitionFromRemote(namespace, name, version) {
|
|
121
|
+
var _contractData$namespa;
|
|
122
|
+
const {
|
|
123
|
+
contractData
|
|
124
|
+
} = await ContractApi_searchSingleContract({
|
|
125
|
+
contractName: `${namespace}.${name}`,
|
|
126
|
+
version
|
|
158
127
|
});
|
|
159
|
-
|
|
128
|
+
|
|
129
|
+
// return undefined if don't found contract
|
|
130
|
+
return contractData ? {
|
|
131
|
+
name: contractData.name,
|
|
132
|
+
namespace: (_contractData$namespa = contractData.namespace) === null || _contractData$namespa === void 0 || (_contractData$namespa = _contractData$namespa[0]) === null || _contractData$namespa === void 0 ? void 0 : _contractData$namespa.name,
|
|
133
|
+
serviceName: contractData.serviceName,
|
|
134
|
+
version: contractData.version,
|
|
135
|
+
contract: {
|
|
136
|
+
endpoint: contractData.endpoint,
|
|
137
|
+
response: contractData.response,
|
|
138
|
+
request: contractData.request
|
|
139
|
+
}
|
|
140
|
+
} : null;
|
|
160
141
|
}
|
|
161
142
|
class FlowApiNotFoundError extends Error {
|
|
162
143
|
constructor(message) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowApi.js","names":["yaml","ContractApi_searchSingleContract","getContract","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","_x","_x2","_x3","_x4","_getArgsOfFlowApi","apply","arguments","_asyncToGenerator","originalArgs","method","stream","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","_x5","_fetchFlowApiDefinition","namespaceName","nameWithVersion","split","namespaceId","promise","get","fetchFlowApiDefinitionFromRemote","set","_x6","_x7","_x8","_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 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\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FlowApi.js","names":["yaml","ContractApi_searchSingleContract","getContract","remoteContractCache","Map","isFlowApiProvider","provider","includes","getArgsOfFlowApi","originalArgs","method","stream","Error","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$response","contract","safeLoad","schema","JSON_SCHEMA","json","endpoint","response","wrapper","toLowerCase","type","namespaceName","nameWithVersion","split","namespaceId","promise","get","fetchFlowApiDefinitionFromRemote","set","_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 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\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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","ignoreList":[]}
|