@bleedingdev/modern-js-bff-core 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21
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/client/generateClient.js +67 -138
- package/dist/cjs/index.js +24 -114
- package/dist/cjs/router/index.js +7 -5
- package/dist/cjs/utils/index.js +11 -21
- package/dist/esm/client/generateClient.mjs +65 -139
- package/dist/esm/index.mjs +1 -5
- package/dist/esm/router/index.mjs +7 -5
- package/dist/esm/utils/index.mjs +0 -1
- package/dist/esm-node/client/generateClient.mjs +65 -139
- package/dist/esm-node/index.mjs +1 -5
- package/dist/esm-node/router/index.mjs +7 -5
- package/dist/esm-node/utils/index.mjs +0 -1
- package/dist/types/client/generateClient.d.ts +24 -1
- package/dist/types/index.d.ts +1 -5
- package/dist/types/utils/index.d.ts +0 -1
- package/package.json +10 -19
- package/dist/cjs/adapter-kit/index.js +0 -144
- package/dist/cjs/adapter-kit/parity-scenarios/cross-project-denial.js +0 -55
- package/dist/cjs/adapter-kit/parity-scenarios/envelope.js +0 -128
- package/dist/cjs/adapter-kit/parity-scenarios/operation-context.js +0 -152
- package/dist/cjs/adapter-kit/parity-scenarios/schema.js +0 -109
- package/dist/cjs/adapter-kit/parity-scenarios/shared.js +0 -71
- package/dist/cjs/adapter-kit/parity.js +0 -204
- package/dist/cjs/security/crossProjectPolicy.js +0 -309
- package/dist/cjs/security/operationContracts.js +0 -183
- package/dist/cjs/security/resolveCrossProjectPolicy.js +0 -65
- package/dist/cjs/utils/alias.js +0 -112
- package/dist/esm/adapter-kit/index.mjs +0 -79
- package/dist/esm/adapter-kit/parity-scenarios/cross-project-denial.mjs +0 -17
- package/dist/esm/adapter-kit/parity-scenarios/envelope.mjs +0 -90
- package/dist/esm/adapter-kit/parity-scenarios/operation-context.mjs +0 -111
- package/dist/esm/adapter-kit/parity-scenarios/schema.mjs +0 -71
- package/dist/esm/adapter-kit/parity-scenarios/shared.mjs +0 -21
- package/dist/esm/adapter-kit/parity.mjs +0 -148
- package/dist/esm/security/crossProjectPolicy.mjs +0 -259
- package/dist/esm/security/operationContracts.mjs +0 -127
- package/dist/esm/security/resolveCrossProjectPolicy.mjs +0 -27
- package/dist/esm/utils/alias.mjs +0 -57
- package/dist/esm-node/adapter-kit/index.mjs +0 -80
- package/dist/esm-node/adapter-kit/parity-scenarios/cross-project-denial.mjs +0 -18
- package/dist/esm-node/adapter-kit/parity-scenarios/envelope.mjs +0 -91
- package/dist/esm-node/adapter-kit/parity-scenarios/operation-context.mjs +0 -112
- package/dist/esm-node/adapter-kit/parity-scenarios/schema.mjs +0 -72
- package/dist/esm-node/adapter-kit/parity-scenarios/shared.mjs +0 -22
- package/dist/esm-node/adapter-kit/parity.mjs +0 -149
- package/dist/esm-node/security/crossProjectPolicy.mjs +0 -260
- package/dist/esm-node/security/operationContracts.mjs +0 -130
- package/dist/esm-node/security/resolveCrossProjectPolicy.mjs +0 -28
- package/dist/esm-node/utils/alias.mjs +0 -58
- package/dist/types/adapter-kit/index.d.ts +0 -90
- package/dist/types/adapter-kit/parity-scenarios/cross-project-denial.d.ts +0 -2
- package/dist/types/adapter-kit/parity-scenarios/envelope.d.ts +0 -2
- package/dist/types/adapter-kit/parity-scenarios/operation-context.d.ts +0 -3
- package/dist/types/adapter-kit/parity-scenarios/schema.d.ts +0 -2
- package/dist/types/adapter-kit/parity-scenarios/shared.d.ts +0 -32
- package/dist/types/adapter-kit/parity.d.ts +0 -43
- package/dist/types/security/crossProjectPolicy.d.ts +0 -110
- package/dist/types/security/operationContracts.d.ts +0 -84
- package/dist/types/security/resolveCrossProjectPolicy.d.ts +0 -39
- package/dist/types/utils/alias.d.ts +0 -7
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"modern",
|
|
18
18
|
"modern.js"
|
|
19
19
|
],
|
|
20
|
-
"version": "3.9.0-ultramodern.
|
|
20
|
+
"version": "3.9.0-ultramodern.21",
|
|
21
21
|
"types": "./dist/types/index.d.ts",
|
|
22
22
|
"main": "./dist/cjs/index.js",
|
|
23
23
|
"exports": {
|
|
@@ -28,37 +28,28 @@
|
|
|
28
28
|
"require": "./dist/cjs/index.js"
|
|
29
29
|
},
|
|
30
30
|
"default": "./dist/cjs/index.js"
|
|
31
|
-
},
|
|
32
|
-
"./security/cross-project-policy": {
|
|
33
|
-
"types": "./dist/types/security/crossProjectPolicy.d.ts",
|
|
34
|
-
"node": {
|
|
35
|
-
"import": "./dist/esm-node/security/crossProjectPolicy.mjs",
|
|
36
|
-
"require": "./dist/cjs/security/crossProjectPolicy.js"
|
|
37
|
-
},
|
|
38
|
-
"default": "./dist/esm/security/crossProjectPolicy.mjs"
|
|
39
31
|
}
|
|
40
32
|
},
|
|
41
33
|
"dependencies": {
|
|
42
|
-
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.
|
|
34
|
+
"@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.21",
|
|
43
35
|
"@swc/helpers": "^0.5.23",
|
|
44
36
|
"koa-compose": "^4.1.0",
|
|
45
37
|
"reflect-metadata": "^0.2.2",
|
|
46
|
-
"type-fest": "5.
|
|
38
|
+
"type-fest": "5.10.0"
|
|
47
39
|
},
|
|
48
40
|
"devDependencies": {
|
|
49
|
-
"@modern-js/bff-runtime": "npm:@bleedingdev/modern-js-bff-runtime@3.9.0-ultramodern.
|
|
50
|
-
"@modern-js/
|
|
51
|
-
"@
|
|
41
|
+
"@modern-js/bff-runtime": "npm:@bleedingdev/modern-js-bff-runtime@3.9.0-ultramodern.21",
|
|
42
|
+
"@modern-js/server-runtime-extensions": "npm:@bleedingdev/modern-js-server-runtime-extensions@3.9.0-ultramodern.21",
|
|
43
|
+
"@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.21",
|
|
44
|
+
"@rslib/core": "1.0.2",
|
|
52
45
|
"@scripts/rstest-config": "2.66.0",
|
|
53
46
|
"@types/koa-compose": "^3.2.9",
|
|
54
|
-
"@types/node": "^26.
|
|
47
|
+
"@types/node": "^26.6.2",
|
|
55
48
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
56
49
|
"esbuild": "^0.28.2",
|
|
57
|
-
"
|
|
58
|
-
"zod": "^4.5.4"
|
|
50
|
+
"zod": "^4.6.5"
|
|
59
51
|
},
|
|
60
52
|
"peerDependencies": {
|
|
61
|
-
"tsconfig-paths": "^4.2.0",
|
|
62
53
|
"zod": "^4.5.4"
|
|
63
54
|
},
|
|
64
55
|
"peerDependenciesMeta": {
|
|
@@ -72,6 +63,6 @@
|
|
|
72
63
|
"scripts": {
|
|
73
64
|
"dev": "rslib build --watch",
|
|
74
65
|
"build": "rslib build",
|
|
75
|
-
"test": "rstest
|
|
66
|
+
"test": "rstest"
|
|
76
67
|
}
|
|
77
68
|
}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
-
var define = (defs, kind)=>{
|
|
6
|
-
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
[kind]: defs[key]
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
define(getters, "get");
|
|
12
|
-
define(values, "value");
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
(()=>{
|
|
16
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
-
})();
|
|
18
|
-
(()=>{
|
|
19
|
-
__webpack_require__.r = (exports1)=>{
|
|
20
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
-
value: 'Module'
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
-
value: true
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
})();
|
|
28
|
-
var __webpack_exports__ = {};
|
|
29
|
-
__webpack_require__.r(__webpack_exports__);
|
|
30
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
HANDLER_WITH_SCHEMA: ()=>HANDLER_WITH_SCHEMA,
|
|
32
|
-
buildPositionalHandlerArgs: ()=>buildPositionalHandlerArgs,
|
|
33
|
-
checkCrossProjectPolicy: ()=>checkCrossProjectPolicy,
|
|
34
|
-
getApiHandlerMode: ()=>getApiHandlerMode,
|
|
35
|
-
getResponseMetaList: ()=>getResponseMetaList,
|
|
36
|
-
getRouteMiddlewares: ()=>getRouteMiddlewares,
|
|
37
|
-
isSchemaApiHandler: ()=>isSchemaApiHandler,
|
|
38
|
-
mapSchemaHandlerResult: ()=>mapSchemaHandlerResult,
|
|
39
|
-
planApiRoutes: ()=>planApiRoutes,
|
|
40
|
-
toApiRouteMethod: ()=>toApiRouteMethod
|
|
41
|
-
});
|
|
42
|
-
require("reflect-metadata");
|
|
43
|
-
const crossProjectPolicy_js_namespaceObject = require("../security/crossProjectPolicy.js");
|
|
44
|
-
const external_types_js_namespaceObject = require("../types.js");
|
|
45
|
-
const index_js_namespaceObject = require("../utils/index.js");
|
|
46
|
-
const API_ROUTE_METHODS = {
|
|
47
|
-
[external_types_js_namespaceObject.HttpMethod.Get]: 'get',
|
|
48
|
-
[external_types_js_namespaceObject.HttpMethod.Post]: 'post',
|
|
49
|
-
[external_types_js_namespaceObject.HttpMethod.Put]: 'put',
|
|
50
|
-
[external_types_js_namespaceObject.HttpMethod.Delete]: 'delete',
|
|
51
|
-
[external_types_js_namespaceObject.HttpMethod.Connect]: 'connect',
|
|
52
|
-
[external_types_js_namespaceObject.HttpMethod.Trace]: 'trace',
|
|
53
|
-
[external_types_js_namespaceObject.HttpMethod.Patch]: 'patch',
|
|
54
|
-
[external_types_js_namespaceObject.HttpMethod.Options]: 'options',
|
|
55
|
-
[external_types_js_namespaceObject.HttpMethod.Head]: 'head'
|
|
56
|
-
};
|
|
57
|
-
const toApiRouteMethod = (httpMethod)=>{
|
|
58
|
-
const method = API_ROUTE_METHODS[httpMethod];
|
|
59
|
-
if (!method) throw new Error(`[bff-core] Unsupported HTTP method "${String(httpMethod)}" in API handler info`);
|
|
60
|
-
return method;
|
|
61
|
-
};
|
|
62
|
-
const getRouteMiddlewares = (handler)=>{
|
|
63
|
-
const middlewares = Reflect.getMetadata('middleware', handler);
|
|
64
|
-
return Array.isArray(middlewares) ? middlewares : [];
|
|
65
|
-
};
|
|
66
|
-
const planApiRoutes = (handlerInfos)=>handlerInfos.map(({ routePath, handler, httpMethod })=>({
|
|
67
|
-
method: toApiRouteMethod(httpMethod),
|
|
68
|
-
routePath,
|
|
69
|
-
handler,
|
|
70
|
-
middlewares: getRouteMiddlewares(handler)
|
|
71
|
-
}));
|
|
72
|
-
const HANDLER_WITH_SCHEMA = 'HANDLER_WITH_SCHEMA';
|
|
73
|
-
const isSchemaApiHandler = (handler)=>{
|
|
74
|
-
if ('function' != typeof handler) return false;
|
|
75
|
-
const marked = handler;
|
|
76
|
-
return true === marked[HANDLER_WITH_SCHEMA];
|
|
77
|
-
};
|
|
78
|
-
const getApiHandlerMode = (handler)=>{
|
|
79
|
-
if ((0, index_js_namespaceObject.isWithMetaHandler)(handler)) return 'meta';
|
|
80
|
-
if (isSchemaApiHandler(handler)) return 'schema';
|
|
81
|
-
if ((0, index_js_namespaceObject.isInputParamsDeciderHandler)(handler)) return 'inputParamsDecider';
|
|
82
|
-
return 'plain';
|
|
83
|
-
};
|
|
84
|
-
const mapSchemaHandlerResult = (result)=>{
|
|
85
|
-
if ('HandleSuccess' === result.type) return {
|
|
86
|
-
success: true,
|
|
87
|
-
status: 200,
|
|
88
|
-
body: result.value
|
|
89
|
-
};
|
|
90
|
-
return {
|
|
91
|
-
success: false,
|
|
92
|
-
status: 'InputValidationError' === result.type ? 400 : 500,
|
|
93
|
-
body: result.message
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
const getResponseMetaList = (handler)=>{
|
|
97
|
-
const responseMeta = Reflect.getMetadata(external_types_js_namespaceObject.HttpMetadata.Response, handler);
|
|
98
|
-
return Array.isArray(responseMeta) ? responseMeta : [];
|
|
99
|
-
};
|
|
100
|
-
const buildPositionalHandlerArgs = (input, routePath)=>{
|
|
101
|
-
const paramNames = routePath?.match(/:(\w+)/g)?.map((param)=>param.slice(1)) ?? [];
|
|
102
|
-
const positionalParams = paramNames.length > 0 ? paramNames.map((param)=>input.params[param]) : Object.values(input.params);
|
|
103
|
-
return [
|
|
104
|
-
...positionalParams,
|
|
105
|
-
input
|
|
106
|
-
];
|
|
107
|
-
};
|
|
108
|
-
const checkCrossProjectPolicy = (headers, policy)=>{
|
|
109
|
-
const violation = (0, crossProjectPolicy_js_namespaceObject.evaluateCrossProjectPolicy)(headers, policy);
|
|
110
|
-
if (!violation) return null;
|
|
111
|
-
return {
|
|
112
|
-
status: violation.status,
|
|
113
|
-
body: {
|
|
114
|
-
code: violation.code,
|
|
115
|
-
reason: violation.reason,
|
|
116
|
-
message: violation.message
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
exports.HANDLER_WITH_SCHEMA = __webpack_exports__.HANDLER_WITH_SCHEMA;
|
|
121
|
-
exports.buildPositionalHandlerArgs = __webpack_exports__.buildPositionalHandlerArgs;
|
|
122
|
-
exports.checkCrossProjectPolicy = __webpack_exports__.checkCrossProjectPolicy;
|
|
123
|
-
exports.getApiHandlerMode = __webpack_exports__.getApiHandlerMode;
|
|
124
|
-
exports.getResponseMetaList = __webpack_exports__.getResponseMetaList;
|
|
125
|
-
exports.getRouteMiddlewares = __webpack_exports__.getRouteMiddlewares;
|
|
126
|
-
exports.isSchemaApiHandler = __webpack_exports__.isSchemaApiHandler;
|
|
127
|
-
exports.mapSchemaHandlerResult = __webpack_exports__.mapSchemaHandlerResult;
|
|
128
|
-
exports.planApiRoutes = __webpack_exports__.planApiRoutes;
|
|
129
|
-
exports.toApiRouteMethod = __webpack_exports__.toApiRouteMethod;
|
|
130
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
131
|
-
"HANDLER_WITH_SCHEMA",
|
|
132
|
-
"buildPositionalHandlerArgs",
|
|
133
|
-
"checkCrossProjectPolicy",
|
|
134
|
-
"getApiHandlerMode",
|
|
135
|
-
"getResponseMetaList",
|
|
136
|
-
"getRouteMiddlewares",
|
|
137
|
-
"isSchemaApiHandler",
|
|
138
|
-
"mapSchemaHandlerResult",
|
|
139
|
-
"planApiRoutes",
|
|
140
|
-
"toApiRouteMethod"
|
|
141
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
142
|
-
Object.defineProperty(exports, '__esModule', {
|
|
143
|
-
value: true
|
|
144
|
-
});
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
-
var define = (defs, kind)=>{
|
|
6
|
-
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
[kind]: defs[key]
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
define(getters, "get");
|
|
12
|
-
define(values, "value");
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
(()=>{
|
|
16
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
-
})();
|
|
18
|
-
(()=>{
|
|
19
|
-
__webpack_require__.r = (exports1)=>{
|
|
20
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
-
value: 'Module'
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
-
value: true
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
})();
|
|
28
|
-
var __webpack_exports__ = {};
|
|
29
|
-
__webpack_require__.r(__webpack_exports__);
|
|
30
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
createCrossProjectDenialScenarios: ()=>createCrossProjectDenialScenarios
|
|
32
|
-
});
|
|
33
|
-
const external_shared_js_namespaceObject = require("./shared.js");
|
|
34
|
-
const createCrossProjectDenialScenarios = ()=>[
|
|
35
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies missing envelope', 'missing_envelope', {}),
|
|
36
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies invalid envelope', 'invalid_envelope', {
|
|
37
|
-
'x-modernjs-bff-envelope': 'not-json'
|
|
38
|
-
}),
|
|
39
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies envelope that is valid JSON but not an object', 'invalid_envelope', {
|
|
40
|
-
'x-modernjs-bff-envelope': '123'
|
|
41
|
-
}),
|
|
42
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies missing requestId', 'missing_request_id', {
|
|
43
|
-
'x-modernjs-bff-envelope': (0, external_shared_js_namespaceObject.envelopeHeader)(void 0)
|
|
44
|
-
}),
|
|
45
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies namespace outside allowlist', 'namespace_not_allowed', {
|
|
46
|
-
'x-modernjs-bff-envelope': (0, external_shared_js_namespaceObject.envelopeHeader)('billing.producer-z')
|
|
47
|
-
})
|
|
48
|
-
];
|
|
49
|
-
exports.createCrossProjectDenialScenarios = __webpack_exports__.createCrossProjectDenialScenarios;
|
|
50
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
51
|
-
"createCrossProjectDenialScenarios"
|
|
52
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
53
|
-
Object.defineProperty(exports, '__esModule', {
|
|
54
|
-
value: true
|
|
55
|
-
});
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
-
var define = (defs, kind)=>{
|
|
6
|
-
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
[kind]: defs[key]
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
define(getters, "get");
|
|
12
|
-
define(values, "value");
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
(()=>{
|
|
16
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
-
})();
|
|
18
|
-
(()=>{
|
|
19
|
-
__webpack_require__.r = (exports1)=>{
|
|
20
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
-
value: 'Module'
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
-
value: true
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
})();
|
|
28
|
-
var __webpack_exports__ = {};
|
|
29
|
-
__webpack_require__.r(__webpack_exports__);
|
|
30
|
-
const createEnvelopeParityScenarios = ()=>[
|
|
31
|
-
{
|
|
32
|
-
name: 'plain handler returns object payload',
|
|
33
|
-
policy: false,
|
|
34
|
-
request: {
|
|
35
|
-
method: 'get',
|
|
36
|
-
path: '/hello'
|
|
37
|
-
},
|
|
38
|
-
expected: {
|
|
39
|
-
kind: 'payload',
|
|
40
|
-
status: 200,
|
|
41
|
-
payload: {
|
|
42
|
-
message: 'hello'
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
name: 'plain handler returns scalar payload',
|
|
48
|
-
policy: false,
|
|
49
|
-
request: {
|
|
50
|
-
method: 'post',
|
|
51
|
-
path: '/hello'
|
|
52
|
-
},
|
|
53
|
-
expected: {
|
|
54
|
-
kind: 'payload',
|
|
55
|
-
status: 200,
|
|
56
|
-
payload: 'hello'
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'plain handler returning undefined',
|
|
61
|
-
policy: false,
|
|
62
|
-
request: {
|
|
63
|
-
method: 'get',
|
|
64
|
-
path: '/nothing'
|
|
65
|
-
},
|
|
66
|
-
expected: {
|
|
67
|
-
kind: 'payload',
|
|
68
|
-
status: 404,
|
|
69
|
-
payload: '404 Not Found'
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: 'plain handler receives data, query and cookies',
|
|
74
|
-
policy: false,
|
|
75
|
-
request: {
|
|
76
|
-
method: 'post',
|
|
77
|
-
path: '/echo?q=z',
|
|
78
|
-
headers: {
|
|
79
|
-
'content-type': 'application/json',
|
|
80
|
-
cookie: 'id=666'
|
|
81
|
-
},
|
|
82
|
-
body: {
|
|
83
|
-
a: 1
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
expected: {
|
|
87
|
-
kind: 'payload',
|
|
88
|
-
status: 200,
|
|
89
|
-
payload: {
|
|
90
|
-
data: {
|
|
91
|
-
a: 1
|
|
92
|
-
},
|
|
93
|
-
query: {
|
|
94
|
-
q: 'z'
|
|
95
|
-
},
|
|
96
|
-
cookie: 'id=666'
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
name: 'plain handler receives positional route params',
|
|
102
|
-
policy: false,
|
|
103
|
-
request: {
|
|
104
|
-
method: 'get',
|
|
105
|
-
path: '/items/123?q=x'
|
|
106
|
-
},
|
|
107
|
-
expected: {
|
|
108
|
-
kind: 'payload',
|
|
109
|
-
status: 200,
|
|
110
|
-
payload: {
|
|
111
|
-
id: '123',
|
|
112
|
-
query: {
|
|
113
|
-
q: 'x'
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
];
|
|
119
|
-
__webpack_require__.d(__webpack_exports__, {}, {
|
|
120
|
-
createEnvelopeParityScenarios: createEnvelopeParityScenarios
|
|
121
|
-
});
|
|
122
|
-
exports.createEnvelopeParityScenarios = __webpack_exports__.createEnvelopeParityScenarios;
|
|
123
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
124
|
-
"createEnvelopeParityScenarios"
|
|
125
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
126
|
-
Object.defineProperty(exports, '__esModule', {
|
|
127
|
-
value: true
|
|
128
|
-
});
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
-
var define = (defs, kind)=>{
|
|
6
|
-
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
[kind]: defs[key]
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
define(getters, "get");
|
|
12
|
-
define(values, "value");
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
(()=>{
|
|
16
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
-
})();
|
|
18
|
-
(()=>{
|
|
19
|
-
__webpack_require__.r = (exports1)=>{
|
|
20
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
-
value: 'Module'
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
-
value: true
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
})();
|
|
28
|
-
var __webpack_exports__ = {};
|
|
29
|
-
__webpack_require__.r(__webpack_exports__);
|
|
30
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
createOperationContextDenialScenarios: ()=>createOperationContextDenialScenarios,
|
|
32
|
-
createOperationContextSuccessScenarios: ()=>createOperationContextSuccessScenarios
|
|
33
|
-
});
|
|
34
|
-
const external_shared_js_namespaceObject = require("./shared.js");
|
|
35
|
-
const createOperationContextSuccessScenarios = ({ helloContract, validEnvelope, validOperationId })=>[
|
|
36
|
-
{
|
|
37
|
-
name: 'policy pass with full operation context',
|
|
38
|
-
policy: true,
|
|
39
|
-
request: {
|
|
40
|
-
method: 'get',
|
|
41
|
-
path: '/hello',
|
|
42
|
-
headers: {
|
|
43
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
44
|
-
'x-operation-id': validOperationId,
|
|
45
|
-
'x-modernjs-bff-operation-context': (0, external_shared_js_namespaceObject.detailHeader)({
|
|
46
|
-
requestId: external_shared_js_namespaceObject.PARITY_PRODUCER_REQUEST_ID,
|
|
47
|
-
method: 'GET',
|
|
48
|
-
routePath: '/hello',
|
|
49
|
-
schemaHash: helloContract.schemaHash,
|
|
50
|
-
operationVersion: helloContract.operationVersion
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
expected: {
|
|
55
|
-
kind: 'payload',
|
|
56
|
-
status: 200,
|
|
57
|
-
payload: {
|
|
58
|
-
message: 'hello'
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
];
|
|
63
|
-
const getMismatchedOperationVersion = (contract)=>{
|
|
64
|
-
const operationVersion = contract.operationVersion;
|
|
65
|
-
if ('number' != typeof operationVersion) throw new Error('Adapter parity hello contract requires operationVersion');
|
|
66
|
-
return operationVersion + 1;
|
|
67
|
-
};
|
|
68
|
-
const createOperationContextDenialScenarios = ({ helloContract, validEnvelope, validOperationId })=>[
|
|
69
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies missing operation context', 'missing_operation_context', {
|
|
70
|
-
'x-modernjs-bff-envelope': validEnvelope
|
|
71
|
-
}),
|
|
72
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies operation context mismatch', 'operation_context_mismatch', {
|
|
73
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
74
|
-
'x-operation-id': 'someone-else:parity'
|
|
75
|
-
}),
|
|
76
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies missing operation context details', 'missing_operation_context_details', {
|
|
77
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
78
|
-
'x-operation-id': validOperationId
|
|
79
|
-
}),
|
|
80
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies JSON-array operation context details', 'invalid_operation_context_details', {
|
|
81
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
82
|
-
'x-operation-id': validOperationId,
|
|
83
|
-
'x-modernjs-bff-operation-context': '[]'
|
|
84
|
-
}),
|
|
85
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies invalid operation context details', 'invalid_operation_context_details', {
|
|
86
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
87
|
-
'x-operation-id': validOperationId,
|
|
88
|
-
'x-modernjs-bff-operation-context': 'not-json'
|
|
89
|
-
}),
|
|
90
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies detail requestId mismatch', 'operation_context_details_request_id_mismatch', {
|
|
91
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
92
|
-
'x-operation-id': validOperationId,
|
|
93
|
-
'x-modernjs-bff-operation-context': (0, external_shared_js_namespaceObject.detailHeader)({
|
|
94
|
-
requestId: 'crm.producer-b',
|
|
95
|
-
method: 'GET',
|
|
96
|
-
routePath: '/hello',
|
|
97
|
-
schemaHash: helloContract.schemaHash,
|
|
98
|
-
operationVersion: helloContract.operationVersion
|
|
99
|
-
})
|
|
100
|
-
}),
|
|
101
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies missing operation schema hash', 'missing_operation_schema_hash', {
|
|
102
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
103
|
-
'x-operation-id': validOperationId,
|
|
104
|
-
'x-modernjs-bff-operation-context': (0, external_shared_js_namespaceObject.detailHeader)({
|
|
105
|
-
requestId: external_shared_js_namespaceObject.PARITY_PRODUCER_REQUEST_ID,
|
|
106
|
-
method: 'GET',
|
|
107
|
-
routePath: '/hello',
|
|
108
|
-
operationVersion: helloContract.operationVersion
|
|
109
|
-
})
|
|
110
|
-
}),
|
|
111
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies missing operation version', 'missing_operation_version', {
|
|
112
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
113
|
-
'x-operation-id': validOperationId,
|
|
114
|
-
'x-modernjs-bff-operation-context': (0, external_shared_js_namespaceObject.detailHeader)({
|
|
115
|
-
requestId: external_shared_js_namespaceObject.PARITY_PRODUCER_REQUEST_ID,
|
|
116
|
-
method: 'GET',
|
|
117
|
-
routePath: '/hello',
|
|
118
|
-
schemaHash: helloContract.schemaHash
|
|
119
|
-
})
|
|
120
|
-
}),
|
|
121
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies operation schema hash mismatch', 'operation_schema_hash_mismatch', {
|
|
122
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
123
|
-
'x-operation-id': validOperationId,
|
|
124
|
-
'x-modernjs-bff-operation-context': (0, external_shared_js_namespaceObject.detailHeader)({
|
|
125
|
-
requestId: external_shared_js_namespaceObject.PARITY_PRODUCER_REQUEST_ID,
|
|
126
|
-
method: 'GET',
|
|
127
|
-
routePath: '/hello',
|
|
128
|
-
schemaHash: 'deadbeef',
|
|
129
|
-
operationVersion: helloContract.operationVersion
|
|
130
|
-
})
|
|
131
|
-
}),
|
|
132
|
-
(0, external_shared_js_namespaceObject.deniedScenario)('policy denies operation version mismatch', 'operation_version_mismatch', {
|
|
133
|
-
'x-modernjs-bff-envelope': validEnvelope,
|
|
134
|
-
'x-operation-id': validOperationId,
|
|
135
|
-
'x-modernjs-bff-operation-context': (0, external_shared_js_namespaceObject.detailHeader)({
|
|
136
|
-
requestId: external_shared_js_namespaceObject.PARITY_PRODUCER_REQUEST_ID,
|
|
137
|
-
method: 'GET',
|
|
138
|
-
routePath: '/hello',
|
|
139
|
-
schemaHash: helloContract.schemaHash,
|
|
140
|
-
operationVersion: getMismatchedOperationVersion(helloContract)
|
|
141
|
-
})
|
|
142
|
-
})
|
|
143
|
-
];
|
|
144
|
-
exports.createOperationContextDenialScenarios = __webpack_exports__.createOperationContextDenialScenarios;
|
|
145
|
-
exports.createOperationContextSuccessScenarios = __webpack_exports__.createOperationContextSuccessScenarios;
|
|
146
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
147
|
-
"createOperationContextDenialScenarios",
|
|
148
|
-
"createOperationContextSuccessScenarios"
|
|
149
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
150
|
-
Object.defineProperty(exports, '__esModule', {
|
|
151
|
-
value: true
|
|
152
|
-
});
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
-
var define = (defs, kind)=>{
|
|
6
|
-
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
[kind]: defs[key]
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
define(getters, "get");
|
|
12
|
-
define(values, "value");
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
(()=>{
|
|
16
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
-
})();
|
|
18
|
-
(()=>{
|
|
19
|
-
__webpack_require__.r = (exports1)=>{
|
|
20
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
-
value: 'Module'
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
-
value: true
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
})();
|
|
28
|
-
var __webpack_exports__ = {};
|
|
29
|
-
__webpack_require__.r(__webpack_exports__);
|
|
30
|
-
const createSchemaParityScenarios = ()=>[
|
|
31
|
-
{
|
|
32
|
-
name: 'schema handler success',
|
|
33
|
-
policy: false,
|
|
34
|
-
request: {
|
|
35
|
-
method: 'patch',
|
|
36
|
-
path: '/schema',
|
|
37
|
-
headers: {
|
|
38
|
-
'content-type': 'application/json'
|
|
39
|
-
},
|
|
40
|
-
body: {
|
|
41
|
-
id: 777
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
expected: {
|
|
45
|
-
kind: 'payload',
|
|
46
|
-
status: 200,
|
|
47
|
-
payload: {
|
|
48
|
-
type: 'HandleSuccess',
|
|
49
|
-
value: {
|
|
50
|
-
id: 777
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: 'schema handler input validation error',
|
|
57
|
-
policy: false,
|
|
58
|
-
request: {
|
|
59
|
-
method: 'patch',
|
|
60
|
-
path: '/schema',
|
|
61
|
-
headers: {
|
|
62
|
-
'content-type': 'application/json'
|
|
63
|
-
},
|
|
64
|
-
body: {
|
|
65
|
-
id: 'aaa'
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
expected: {
|
|
69
|
-
kind: 'payload',
|
|
70
|
-
status: 200,
|
|
71
|
-
payload: {
|
|
72
|
-
type: 'InputValidationError',
|
|
73
|
-
message: 'invalid input'
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: 'schema handler output validation error',
|
|
79
|
-
policy: false,
|
|
80
|
-
request: {
|
|
81
|
-
method: 'patch',
|
|
82
|
-
path: '/schema',
|
|
83
|
-
headers: {
|
|
84
|
-
'content-type': 'application/json'
|
|
85
|
-
},
|
|
86
|
-
body: {
|
|
87
|
-
id: 'boom'
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
expected: {
|
|
91
|
-
kind: 'payload',
|
|
92
|
-
status: 200,
|
|
93
|
-
payload: {
|
|
94
|
-
type: 'OutputValidationError',
|
|
95
|
-
message: 'invalid output'
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
];
|
|
100
|
-
__webpack_require__.d(__webpack_exports__, {}, {
|
|
101
|
-
createSchemaParityScenarios: createSchemaParityScenarios
|
|
102
|
-
});
|
|
103
|
-
exports.createSchemaParityScenarios = __webpack_exports__.createSchemaParityScenarios;
|
|
104
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
105
|
-
"createSchemaParityScenarios"
|
|
106
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
107
|
-
Object.defineProperty(exports, '__esModule', {
|
|
108
|
-
value: true
|
|
109
|
-
});
|