@antelopejs/interface-data-api 0.4.0 → 0.5.0
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/components.d.ts +15 -7
- package/dist/components.js +98 -645
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +41 -36
- package/dist/index.js +94 -92
- package/dist/index.js.map +1 -1
- package/dist/internal/computed.d.ts +6 -0
- package/dist/internal/computed.js +43 -0
- package/dist/internal/computed.js.map +1 -0
- package/dist/internal/controller-types.d.ts +19 -0
- package/dist/internal/controller-types.js +4 -0
- package/dist/internal/controller-types.js.map +1 -0
- package/dist/internal/default-filter.d.ts +4 -0
- package/dist/internal/default-filter.js +19 -0
- package/dist/internal/default-filter.js.map +1 -0
- package/dist/internal/deferred-joined-stream.d.ts +11 -0
- package/dist/internal/deferred-joined-stream.js +112 -0
- package/dist/internal/deferred-joined-stream.js.map +1 -0
- package/dist/internal/field-types.d.ts +183 -0
- package/dist/internal/field-types.js +4 -0
- package/dist/internal/field-types.js.map +1 -0
- package/dist/internal/filters.d.ts +4 -0
- package/dist/internal/filters.js +15 -0
- package/dist/internal/filters.js.map +1 -0
- package/dist/internal/foreign.d.ts +6 -0
- package/dist/internal/foreign.js +116 -0
- package/dist/internal/foreign.js.map +1 -0
- package/dist/internal/guards.d.ts +20 -0
- package/dist/internal/guards.js +74 -0
- package/dist/internal/guards.js.map +1 -0
- package/dist/internal/joined.d.ts +28 -0
- package/dist/internal/joined.js +127 -0
- package/dist/internal/joined.js.map +1 -0
- package/dist/internal/list.d.ts +16 -0
- package/dist/internal/list.js +178 -0
- package/dist/internal/list.js.map +1 -0
- package/dist/internal/meta-records.d.ts +17 -0
- package/dist/internal/meta-records.js +73 -0
- package/dist/internal/meta-records.js.map +1 -0
- package/dist/internal/properties.d.ts +4 -0
- package/dist/internal/properties.js +43 -0
- package/dist/internal/properties.js.map +1 -0
- package/dist/internal/table-reference.d.ts +11 -0
- package/dist/internal/table-reference.js +46 -0
- package/dist/internal/table-reference.js.map +1 -0
- package/dist/internal/tables.d.ts +18 -0
- package/dist/internal/tables.js +37 -0
- package/dist/internal/tables.js.map +1 -0
- package/dist/internal/validation.d.ts +11 -0
- package/dist/internal/validation.js +88 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/metadata.d.ts +27 -228
- package/dist/metadata.js +61 -188
- package/dist/metadata.js.map +1 -1
- package/dist/tests/components/access_control.test.js +20 -20
- package/dist/tests/components/access_control.test.js.map +1 -1
- package/dist/tests/components/computed.test.js +28 -30
- package/dist/tests/components/computed.test.js.map +1 -1
- package/dist/tests/components/cross_instance.test.js +8 -6
- package/dist/tests/components/cross_instance.test.js.map +1 -1
- package/dist/tests/components/deferred_joined.test.js +56 -53
- package/dist/tests/components/deferred_joined.test.js.map +1 -1
- package/dist/tests/components/filter_options.test.js +8 -7
- package/dist/tests/components/filter_options.test.js.map +1 -1
- package/dist/tests/components/foreign_computed.test.js +14 -16
- package/dist/tests/components/foreign_computed.test.js.map +1 -1
- package/dist/tests/components/foreign_joined.test.js +19 -27
- package/dist/tests/components/foreign_joined.test.js.map +1 -1
- package/dist/tests/components/joined.test.js +41 -45
- package/dist/tests/components/joined.test.js.map +1 -1
- package/dist/tests/components/listable.test.js +59 -58
- package/dist/tests/components/listable.test.js.map +1 -1
- package/dist/tests/components/localized_sort.test.js +10 -11
- package/dist/tests/components/localized_sort.test.js.map +1 -1
- package/dist/tests/components/mandatory.test.js +25 -25
- package/dist/tests/components/mandatory.test.js.map +1 -1
- package/dist/tests/components/modifier_key.test.js +19 -18
- package/dist/tests/components/modifier_key.test.js.map +1 -1
- package/dist/tests/components/parse_body.test.d.ts +1 -0
- package/dist/tests/components/parse_body.test.js +75 -0
- package/dist/tests/components/parse_body.test.js.map +1 -0
- package/dist/tests/components/parsed_value.test.js +23 -21
- package/dist/tests/components/parsed_value.test.js.map +1 -1
- package/dist/tests/components/partial_edit.test.js +33 -32
- package/dist/tests/components/partial_edit.test.js.map +1 -1
- package/dist/tests/components/per_action_access.test.js +12 -12
- package/dist/tests/components/per_action_access.test.js.map +1 -1
- package/dist/tests/components/validator.test.js +45 -37
- package/dist/tests/components/validator.test.js.map +1 -1
- package/dist/tests/helpers/other-instance.d.ts +11 -1
- package/dist/tests/helpers/other-instance.js +27 -5
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/index/get_guard.test.js +6 -6
- package/dist/tests/index/get_guard.test.js.map +1 -1
- package/dist/tests/index/inheritance.test.js +10 -9
- package/dist/tests/index/inheritance.test.js.map +1 -1
- package/dist/tests/index/routes.test.js +40 -44
- package/dist/tests/index/routes.test.js.map +1 -1
- package/dist/tests/integration.test.d.ts +1 -1
- package/dist/tests/integration.test.js +53 -729
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/internal/http.d.ts +23 -0
- package/dist/tests/internal/http.js +35 -0
- package/dist/tests/internal/http.js.map +1 -0
- package/dist/tests/internal/shop-api.d.ts +1 -0
- package/dist/tests/internal/shop-api.js +331 -0
- package/dist/tests/internal/shop-api.js.map +1 -0
- package/dist/tests/internal/shop-schema.d.ts +154 -0
- package/dist/tests/internal/shop-schema.js +387 -0
- package/dist/tests/internal/shop-schema.js.map +1 -0
- package/dist/tests/utils.d.ts +5 -5
- package/dist/tests/utils.js +1 -3
- package/dist/tests/utils.js.map +1 -1
- package/dist/tests/utils.test.js +10 -11
- package/dist/tests/utils.test.js.map +1 -1
- package/docs/3.routes.md +8 -3
- package/docs/5.validators.md +12 -3
- package/docs/8.filters.md +7 -3
- package/package.json +14 -3
- package/skills/data-api-interface/SKILL.md +4 -0
- package/skills/data-api-interface/cases.json +99 -0
|
@@ -15,9 +15,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const node_path_1 = __importDefault(require("node:path"));
|
|
16
16
|
const chai_1 = require("chai");
|
|
17
17
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
18
|
-
const
|
|
19
|
-
const metadata_1 = require("
|
|
18
|
+
const index_1 = require("../../index");
|
|
19
|
+
const metadata_1 = require("../../metadata");
|
|
20
20
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
21
|
+
const http_1 = require("../internal/http");
|
|
21
22
|
const utils_1 = require("../utils");
|
|
22
23
|
const currentTestName = node_path_1.default
|
|
23
24
|
.basename(__filename)
|
|
@@ -55,8 +56,8 @@ const defaultUserDataset = {
|
|
|
55
56
|
age: 30,
|
|
56
57
|
};
|
|
57
58
|
describe("Per-Action Access Control", () => {
|
|
58
|
-
it("writable in new but read-only in edit", async () => await
|
|
59
|
-
it("read-only globally but read-write in new", async () => await
|
|
59
|
+
it("writable in new but read-only in edit", async () => await expectWritableInNewReadOnlyInEdit());
|
|
60
|
+
it("read-only globally but read-write in new", async () => await expectReadOnlyGloballyReadWriteInNew());
|
|
60
61
|
it("reads a field's effective mode per action", () => {
|
|
61
62
|
const field = {
|
|
62
63
|
mode: metadata_1.AccessMode.ReadWrite,
|
|
@@ -67,10 +68,9 @@ describe("Per-Action Access Control", () => {
|
|
|
67
68
|
(0, chai_1.expect)((0, metadata_1.GetEffectiveMode)(field, "_default")).to.equal(metadata_1.AccessMode.ReadWrite);
|
|
68
69
|
(0, chai_1.expect)((0, metadata_1.GetEffectiveMode)(field)).to.equal(metadata_1.AccessMode.ReadWrite);
|
|
69
70
|
});
|
|
70
|
-
after(async () => { });
|
|
71
71
|
});
|
|
72
72
|
async function _createDataController(testName, user) {
|
|
73
|
-
let _PerActionAccessAPI = class _PerActionAccessAPI extends (0,
|
|
73
|
+
let _PerActionAccessAPI = class _PerActionAccessAPI extends (0, index_1.DataController)(User, index_1.DefaultRoutes.All, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
74
74
|
};
|
|
75
75
|
__decorate([
|
|
76
76
|
(0, metadata_1.ModelReference)(),
|
|
@@ -102,7 +102,7 @@ async function _createDataController(testName, user) {
|
|
|
102
102
|
__metadata("design:type", Number)
|
|
103
103
|
], _PerActionAccessAPI.prototype, "age", void 0);
|
|
104
104
|
_PerActionAccessAPI = __decorate([
|
|
105
|
-
(0,
|
|
105
|
+
(0, index_1.RegisterDataController)()
|
|
106
106
|
], _PerActionAccessAPI);
|
|
107
107
|
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
108
108
|
const database = (0, utils_1.getSchemaInstance)(schemaName);
|
|
@@ -110,21 +110,21 @@ async function _createDataController(testName, user) {
|
|
|
110
110
|
const insertResult = await userModel.insert(user);
|
|
111
111
|
return { id: insertResult[0], userModel };
|
|
112
112
|
}
|
|
113
|
-
async function
|
|
113
|
+
async function expectWritableInNewReadOnlyInEdit() {
|
|
114
114
|
const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), defaultUserDataset);
|
|
115
115
|
const getResponse = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), { id });
|
|
116
116
|
(0, chai_1.expect)(getResponse.status).to.equal(200);
|
|
117
|
-
const data =
|
|
117
|
+
const data = await (0, http_1.readJson)(getResponse);
|
|
118
118
|
(0, chai_1.expect)(data.role).to.equal("admin");
|
|
119
119
|
await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), { role: "user" }, { id });
|
|
120
120
|
const user = await userModel.get(id);
|
|
121
121
|
(0, chai_1.expect)(user?.role).to.equal("admin");
|
|
122
122
|
}
|
|
123
|
-
async function
|
|
123
|
+
async function expectReadOnlyGloballyReadWriteInNew() {
|
|
124
124
|
const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), defaultUserDataset);
|
|
125
125
|
const newResponse = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), defaultUserDataset);
|
|
126
126
|
(0, chai_1.expect)(newResponse.status).to.equal(200);
|
|
127
|
-
const created =
|
|
127
|
+
const created = await (0, http_1.readJson)(newResponse);
|
|
128
128
|
const newUser = await userModel.get(created._id);
|
|
129
129
|
(0, chai_1.expect)(newUser?.age).to.equal(30);
|
|
130
130
|
await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), { age: 99 }, { id });
|
|
@@ -132,7 +132,7 @@ async function readOnlyGloballyReadWriteInNew() {
|
|
|
132
132
|
(0, chai_1.expect)(editedUser?.age).to.equal(30);
|
|
133
133
|
const getResponse = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), { id });
|
|
134
134
|
(0, chai_1.expect)(getResponse.status).to.equal(200);
|
|
135
|
-
const getData =
|
|
135
|
+
const getData = await (0, http_1.readJson)(getResponse);
|
|
136
136
|
(0, chai_1.expect)(getData.age).to.equal(30);
|
|
137
137
|
}
|
|
138
138
|
//# sourceMappingURL=per_action_access.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"per_action_access.test.js","sourceRoot":"","sources":["../../../src/tests/components/per_action_access.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"per_action_access.test.js","sourceRoot":"","sources":["../../../src/tests/components/per_action_access.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const node_path_1 = __importDefault(require("node:path"));
|
|
16
16
|
const chai_1 = require("chai");
|
|
17
17
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
18
|
-
const
|
|
19
|
-
const metadata_1 = require("
|
|
18
|
+
const index_1 = require("../../index");
|
|
19
|
+
const metadata_1 = require("../../metadata");
|
|
20
20
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
21
|
+
const http_1 = require("../internal/http");
|
|
21
22
|
const utils_1 = require("../utils");
|
|
23
|
+
const guards_1 = require("../../internal/guards");
|
|
22
24
|
const currentTestName = node_path_1.default
|
|
23
25
|
.basename(__filename)
|
|
24
26
|
.replace(/\.test\.(ts|js)$/, "");
|
|
@@ -79,20 +81,19 @@ const validProductData = {
|
|
|
79
81
|
},
|
|
80
82
|
};
|
|
81
83
|
describe("Field Validator", () => {
|
|
82
|
-
it("validate correct parameters on new", async () => await
|
|
83
|
-
it("validate incorrect date parameter on new", async () => await
|
|
84
|
-
it("validate incorrect regex parameter on new", async () => await
|
|
85
|
-
it("validate incorrect string parameter on new", async () => await
|
|
86
|
-
it("validate incorrect number parameter on new", async () => await
|
|
87
|
-
it("validate correct parameters on edit", async () => await
|
|
88
|
-
it("validate incorrect date parameter on edit", async () => await
|
|
89
|
-
it("validate incorrect regex parameter on edit", async () => await
|
|
90
|
-
it("validate incorrect string parameter on edit", async () => await
|
|
91
|
-
it("validate incorrect number parameter on edit", async () => await
|
|
92
|
-
after(async () => { });
|
|
84
|
+
it("validate correct parameters on new", async () => await expectCorrectParametersOnNew());
|
|
85
|
+
it("validate incorrect date parameter on new", async () => await expectIncorrectDateParameterOnNew());
|
|
86
|
+
it("validate incorrect regex parameter on new", async () => await expectIncorrectEmailParameterOnNew());
|
|
87
|
+
it("validate incorrect string parameter on new", async () => await expectIncorrectStringParameterOnNew());
|
|
88
|
+
it("validate incorrect number parameter on new", async () => await expectIncorrectNumberParameterOnNew());
|
|
89
|
+
it("validate correct parameters on edit", async () => await expectCorrectParametersOnEdit());
|
|
90
|
+
it("validate incorrect date parameter on edit", async () => await expectIncorrectDateParameterOnEdit());
|
|
91
|
+
it("validate incorrect regex parameter on edit", async () => await expectIncorrectEmailParameterOnEdit());
|
|
92
|
+
it("validate incorrect string parameter on edit", async () => await expectIncorrectStringParameterOnEdit());
|
|
93
|
+
it("validate incorrect number parameter on edit", async () => await expectIncorrectNumberParameterOnEdit());
|
|
93
94
|
});
|
|
94
95
|
async function _createDataController(testName, route, product) {
|
|
95
|
-
let _ValidatorTestAPI = class _ValidatorTestAPI extends (0,
|
|
96
|
+
let _ValidatorTestAPI = class _ValidatorTestAPI extends (0, index_1.DataController)(Product, route, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
96
97
|
};
|
|
97
98
|
__decorate([
|
|
98
99
|
(0, metadata_1.ModelReference)(),
|
|
@@ -101,18 +102,18 @@ async function _createDataController(testName, route, product) {
|
|
|
101
102
|
], _ValidatorTestAPI.prototype, "productModel", void 0);
|
|
102
103
|
__decorate([
|
|
103
104
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
104
|
-
(0, metadata_1.Validator)((value) =>
|
|
105
|
+
(0, metadata_1.Validator)((value) => (0, guards_1.isString)(value) && value.length >= 3),
|
|
105
106
|
__metadata("design:type", String)
|
|
106
107
|
], _ValidatorTestAPI.prototype, "name", void 0);
|
|
107
108
|
__decorate([
|
|
108
109
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
109
|
-
(0, metadata_1.Validator)((value) =>
|
|
110
|
+
(0, metadata_1.Validator)((value) => (0, guards_1.isNumber)(value) && value >= 0),
|
|
110
111
|
__metadata("design:type", Number)
|
|
111
112
|
], _ValidatorTestAPI.prototype, "price", void 0);
|
|
112
113
|
__decorate([
|
|
113
114
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
114
115
|
(0, metadata_1.Validator)((value) => {
|
|
115
|
-
if (
|
|
116
|
+
if (!(0, guards_1.isString)(value))
|
|
116
117
|
return false;
|
|
117
118
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
118
119
|
return emailRegex.test(value);
|
|
@@ -121,22 +122,22 @@ async function _createDataController(testName, route, product) {
|
|
|
121
122
|
], _ValidatorTestAPI.prototype, "email", void 0);
|
|
122
123
|
__decorate([
|
|
123
124
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
124
|
-
(0, metadata_1.Validator)((value) =>
|
|
125
|
+
(0, metadata_1.Validator)((value) => (0, guards_1.isString)(value) && !Number.isNaN(Date.parse(value))),
|
|
125
126
|
__metadata("design:type", Date)
|
|
126
127
|
], _ValidatorTestAPI.prototype, "birthDate", void 0);
|
|
127
128
|
__decorate([
|
|
128
129
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
129
|
-
(0, metadata_1.Validator)((value) => ["active", "inactive", "pending"].
|
|
130
|
+
(0, metadata_1.Validator)((value) => ["active", "inactive", "pending"].some((status) => status === value)),
|
|
130
131
|
__metadata("design:type", String)
|
|
131
132
|
], _ValidatorTestAPI.prototype, "status", void 0);
|
|
132
133
|
__decorate([
|
|
133
134
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
134
135
|
(0, metadata_1.Validator)((value) => Array.isArray(value) &&
|
|
135
|
-
value.every((tag) =>
|
|
136
|
+
value.every((tag) => (0, guards_1.isString)(tag) && tag.length > 0)),
|
|
136
137
|
__metadata("design:type", Array)
|
|
137
138
|
], _ValidatorTestAPI.prototype, "tags", void 0);
|
|
138
139
|
_ValidatorTestAPI = __decorate([
|
|
139
|
-
(0,
|
|
140
|
+
(0, index_1.RegisterDataController)()
|
|
140
141
|
], _ValidatorTestAPI);
|
|
141
142
|
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
142
143
|
const productModel = new ProductModel((0, utils_1.getSchemaInstance)(schemaName));
|
|
@@ -146,10 +147,10 @@ async function _createDataController(testName, route, product) {
|
|
|
146
147
|
}
|
|
147
148
|
return { productModel };
|
|
148
149
|
}
|
|
149
|
-
function createIncorrectValidator(testName, fieldName, invalidValue, requestFunction,
|
|
150
|
+
function createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, scenario) {
|
|
150
151
|
return async () => {
|
|
151
|
-
const { id } = await _createDataController(testName, route, createDataset);
|
|
152
|
-
const invalidData = { ...testDataset, [fieldName]: invalidValue };
|
|
152
|
+
const { id } = await _createDataController(testName, scenario.route, scenario.createDataset);
|
|
153
|
+
const invalidData = { ...scenario.testDataset, [fieldName]: invalidValue };
|
|
153
154
|
const response = await requestFunction(testName, invalidData, id ? { id } : {});
|
|
154
155
|
(0, chai_1.expect)(response.status).to.equal(400);
|
|
155
156
|
const error = await response.text();
|
|
@@ -166,7 +167,7 @@ function createCorrectValidator(testName, requestFunction, route, testDataset, c
|
|
|
166
167
|
product_fetched = await productModel.get(id);
|
|
167
168
|
}
|
|
168
169
|
else {
|
|
169
|
-
const created =
|
|
170
|
+
const created = await (0, http_1.readJson)(response);
|
|
170
171
|
(0, chai_1.expect)(created._id).to.be.a("string");
|
|
171
172
|
product_fetched = await productModel.get(created._id);
|
|
172
173
|
}
|
|
@@ -183,19 +184,26 @@ function createCorrectValidator(testName, requestFunction, route, testDataset, c
|
|
|
183
184
|
};
|
|
184
185
|
}
|
|
185
186
|
function createIncorrectValidatorEdit(testName, fieldName, invalidValue, requestFunction) {
|
|
186
|
-
return createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, {
|
|
187
|
+
return createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, {
|
|
188
|
+
route: { edit: index_1.DefaultRoutes.Edit },
|
|
189
|
+
testDataset: validProductData.alternative,
|
|
190
|
+
createDataset: validProductData.default,
|
|
191
|
+
});
|
|
187
192
|
}
|
|
188
193
|
function createIncorrectValidatorNew(testName, fieldName, invalidValue, requestFunction) {
|
|
189
|
-
return createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, {
|
|
194
|
+
return createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, {
|
|
195
|
+
route: { new: index_1.DefaultRoutes.New },
|
|
196
|
+
testDataset: validProductData.default,
|
|
197
|
+
});
|
|
190
198
|
}
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
const
|
|
196
|
-
const
|
|
197
|
-
const
|
|
198
|
-
const
|
|
199
|
-
const
|
|
200
|
-
const
|
|
199
|
+
const expectCorrectParametersOnNew = createCorrectValidator("CorrectParametersOnNew", utils_1.newRequest, { new: index_1.DefaultRoutes.New }, validProductData.default);
|
|
200
|
+
const expectIncorrectDateParameterOnNew = createIncorrectValidatorNew("DateParameterOnNew", "birthDate", "invalid", utils_1.newRequest);
|
|
201
|
+
const expectIncorrectEmailParameterOnNew = createIncorrectValidatorNew("EmailParameterOnNew", "email", "invalid", utils_1.newRequest);
|
|
202
|
+
const expectIncorrectStringParameterOnNew = createIncorrectValidatorNew("StringParameterOnNew", "name", "ab", utils_1.newRequest);
|
|
203
|
+
const expectIncorrectNumberParameterOnNew = createIncorrectValidatorNew("NumberParameterOnNew", "price", -10, utils_1.newRequest);
|
|
204
|
+
const expectCorrectParametersOnEdit = createCorrectValidator("CorrectParametersOnEdit", utils_1.editRequest, { edit: index_1.DefaultRoutes.Edit }, validProductData.alternative, validProductData.default);
|
|
205
|
+
const expectIncorrectDateParameterOnEdit = createIncorrectValidatorEdit("DateParameterOnEdit", "birthDate", "invalid-date", utils_1.editRequest);
|
|
206
|
+
const expectIncorrectEmailParameterOnEdit = createIncorrectValidatorEdit("EmailParameterOnEdit", "email", "invalid-email@a", utils_1.editRequest);
|
|
207
|
+
const expectIncorrectStringParameterOnEdit = createIncorrectValidatorEdit("StringParameterOnEdit", "name", "ab", utils_1.editRequest);
|
|
208
|
+
const expectIncorrectNumberParameterOnEdit = createIncorrectValidatorEdit("NumberParameterOnEdit", "price", -10, utils_1.editRequest);
|
|
201
209
|
//# sourceMappingURL=validator.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../../src/tests/components/validator.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../../src/tests/components/validator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type ModuleRequire = (request: string) =>
|
|
1
|
+
type ModuleRequire = (request: string) => object;
|
|
2
2
|
/**
|
|
3
3
|
* Evaluates built packages a second time, the way the core gives each
|
|
4
4
|
* provider binding its own copy of an interface: every file under `folders`
|
|
@@ -10,4 +10,14 @@ type ModuleRequire = (request: string) => unknown;
|
|
|
10
10
|
* @returns A `require` resolving into the second copy
|
|
11
11
|
*/
|
|
12
12
|
export declare function CreateOtherInstance(folders: string[]): ModuleRequire;
|
|
13
|
+
/**
|
|
14
|
+
* Evaluates a built module again and checks that the copy exports every name
|
|
15
|
+
* the module already loaded exports.
|
|
16
|
+
*
|
|
17
|
+
* @param load The `require` of {@link CreateOtherInstance}
|
|
18
|
+
* @param file Built file to evaluate again
|
|
19
|
+
* @param reference The module already loaded from the same file
|
|
20
|
+
* @returns The second copy of the module
|
|
21
|
+
*/
|
|
22
|
+
export declare function LoadAgain<Exports extends object>(load: ModuleRequire, file: string, reference: Exports): Exports;
|
|
13
23
|
export {};
|
|
@@ -4,10 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.CreateOtherInstance = CreateOtherInstance;
|
|
7
|
+
exports.LoadAgain = LoadAgain;
|
|
7
8
|
const node_module_1 = __importDefault(require("node:module"));
|
|
8
9
|
const node_fs_1 = require("node:fs");
|
|
9
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const
|
|
11
|
+
const guards_1 = require("../../internal/guards");
|
|
12
|
+
class InternalModule extends node_module_1.default {
|
|
13
|
+
}
|
|
11
14
|
/**
|
|
12
15
|
* Evaluates built packages a second time, the way the core gives each
|
|
13
16
|
* provider binding its own copy of an interface: every file under `folders`
|
|
@@ -26,16 +29,16 @@ function CreateOtherInstance(folders) {
|
|
|
26
29
|
if (cached) {
|
|
27
30
|
return cached.exports;
|
|
28
31
|
}
|
|
29
|
-
const loaded = new
|
|
32
|
+
const loaded = new InternalModule(filename, parent);
|
|
30
33
|
loaded.filename = filename;
|
|
31
|
-
loaded.paths =
|
|
32
|
-
loaded.require = (
|
|
34
|
+
loaded.paths = InternalModule._nodeModulePaths(node_path_1.default.dirname(filename));
|
|
35
|
+
loaded.require = (request) => requireFrom(loaded, request);
|
|
33
36
|
modules.set(filename, loaded);
|
|
34
37
|
loaded.load(filename);
|
|
35
38
|
return loaded.exports;
|
|
36
39
|
};
|
|
37
40
|
const requireFrom = (parent, request) => {
|
|
38
|
-
const filename =
|
|
41
|
+
const filename = InternalModule._resolveFilename(request, parent);
|
|
39
42
|
const isOwned = owned.some((root) => filename.startsWith(root));
|
|
40
43
|
return isOwned
|
|
41
44
|
? load(filename, parent)
|
|
@@ -43,4 +46,23 @@ function CreateOtherInstance(folders) {
|
|
|
43
46
|
};
|
|
44
47
|
return (request) => requireFrom(module, request);
|
|
45
48
|
}
|
|
49
|
+
function exportsAllOf(loaded, reference) {
|
|
50
|
+
return ((0, guards_1.isObject)(loaded) && Object.keys(reference).every((name) => name in loaded));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Evaluates a built module again and checks that the copy exports every name
|
|
54
|
+
* the module already loaded exports.
|
|
55
|
+
*
|
|
56
|
+
* @param load The `require` of {@link CreateOtherInstance}
|
|
57
|
+
* @param file Built file to evaluate again
|
|
58
|
+
* @param reference The module already loaded from the same file
|
|
59
|
+
* @returns The second copy of the module
|
|
60
|
+
*/
|
|
61
|
+
function LoadAgain(load, file, reference) {
|
|
62
|
+
const loaded = load(file);
|
|
63
|
+
if (!exportsAllOf(loaded, reference)) {
|
|
64
|
+
throw new Error(`${file} does not export the names of its first copy`);
|
|
65
|
+
}
|
|
66
|
+
return loaded;
|
|
67
|
+
}
|
|
46
68
|
//# sourceMappingURL=other-instance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"other-instance.js","sourceRoot":"","sources":["../../../src/tests/helpers/other-instance.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"other-instance.js","sourceRoot":"","sources":["../../../src/tests/helpers/other-instance.ts"],"names":[],"mappings":";;;;;AAwBA,kDA2BC;AAoBD,8BAUC;AAjFD,8DAAiC;AACjC,qCAAuC;AACvC,0DAA6B;AAE7B,kDAAiD;AAEjD,MAAM,cAAe,SAAQ,qBAAM;CAIlC;AAID;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,OAAiB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,MAAM,CAAC,GAAG,mBAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAElD,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAqB,EAAE;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,gBAAgB,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,OAAe,EAAqB,EAAE;QACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,OAAO;YACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,CAAC,CAAC,qBAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CACnB,MAAe,EACf,SAAkB;IAElB,OAAO,CACL,IAAA,iBAAQ,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,SAAS,CACvB,IAAmB,EACnB,IAAY,EACZ,SAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const chai_1 = require("chai");
|
|
13
13
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
14
14
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
15
|
-
const metadata_1 = require("
|
|
16
|
-
const
|
|
15
|
+
const metadata_1 = require("../../metadata");
|
|
16
|
+
const index_1 = require("../../index");
|
|
17
17
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
18
18
|
const utils_1 = require("../utils");
|
|
19
19
|
const TABLE = "get-guard-documents";
|
|
@@ -38,7 +38,7 @@ Document = __decorate([
|
|
|
38
38
|
], Document);
|
|
39
39
|
class DocumentModel extends (0, interface_database_decorators_1.BasicDataModel)(Document, TABLE) {
|
|
40
40
|
}
|
|
41
|
-
const guarded =
|
|
41
|
+
const guarded = index_1.DefaultRoutes.WithGetGuard(async function (ctx, current, params) {
|
|
42
42
|
await Promise.resolve();
|
|
43
43
|
calls++;
|
|
44
44
|
(0, chai_1.expect)(this).to.be.instanceOf(DocumentAPI);
|
|
@@ -46,9 +46,9 @@ const guarded = interface_data_api_1.DefaultRoutes.WithGetGuard(async function (
|
|
|
46
46
|
(0, interface_api_util_1.assert)(current.documentType === "invoice", NOT_FOUND, "Not Found");
|
|
47
47
|
(0, interface_api_util_1.assert)(!ctx.url.searchParams.has("deny"), FORBIDDEN, "Denied");
|
|
48
48
|
});
|
|
49
|
-
let DocumentAPI = class DocumentAPI extends (0,
|
|
49
|
+
let DocumentAPI = class DocumentAPI extends (0, index_1.DataController)(Document, {
|
|
50
50
|
get: guarded,
|
|
51
|
-
plain:
|
|
51
|
+
plain: index_1.DefaultRoutes.Get,
|
|
52
52
|
}, (0, interface_api_1.Controller)(`/${LOCATION}`)) {
|
|
53
53
|
get name() {
|
|
54
54
|
transforms++;
|
|
@@ -66,7 +66,7 @@ __decorate([
|
|
|
66
66
|
__metadata("design:paramtypes", [])
|
|
67
67
|
], DocumentAPI.prototype, "name", null);
|
|
68
68
|
DocumentAPI = __decorate([
|
|
69
|
-
(0,
|
|
69
|
+
(0, index_1.RegisterDataController)()
|
|
70
70
|
], DocumentAPI);
|
|
71
71
|
describe("Get loaded-model guard", () => {
|
|
72
72
|
let invoiceId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get_guard.test.js","sourceRoot":"","sources":["../../../src/tests/index/get_guard.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,6DAAuD;AACvD,uEAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"get_guard.test.js","sourceRoot":"","sources":["../../../src/tests/index/get_guard.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const chai_1 = require("chai");
|
|
13
13
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
14
|
-
const metadata_1 = require("
|
|
15
|
-
const
|
|
14
|
+
const metadata_1 = require("../../metadata");
|
|
15
|
+
const index_1 = require("../../index");
|
|
16
16
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
17
|
+
const http_1 = require("../internal/http");
|
|
17
18
|
const utils_1 = require("../utils");
|
|
18
19
|
const NOTE_TABLE = "inheritance-notes";
|
|
19
20
|
const ARCHIVE_TABLE = "inheritance-archives";
|
|
@@ -44,7 +45,7 @@ Archive = __decorate([
|
|
|
44
45
|
], Archive);
|
|
45
46
|
class ArchiveModel extends (0, interface_database_decorators_1.BasicDataModel)(Archive, ARCHIVE_TABLE) {
|
|
46
47
|
}
|
|
47
|
-
class NoteBaseAPI extends (0,
|
|
48
|
+
class NoteBaseAPI extends (0, index_1.DataController)(Note, {}, (0, interface_api_1.Controller)("/inheritance-base")) {
|
|
48
49
|
}
|
|
49
50
|
__decorate([
|
|
50
51
|
(0, metadata_1.ModelReference)(),
|
|
@@ -61,12 +62,12 @@ __decorate([
|
|
|
61
62
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
62
63
|
__metadata("design:type", String)
|
|
63
64
|
], NoteBaseAPI.prototype, "title", void 0);
|
|
64
|
-
let _DerivedNoteAPI = class _DerivedNoteAPI extends (0,
|
|
65
|
+
let _DerivedNoteAPI = class _DerivedNoteAPI extends (0, index_1.DataController)(Note, index_1.DefaultRoutes.All, (0, interface_api_1.Controller)(`/${DERIVED_LOCATION}`, NoteBaseAPI)) {
|
|
65
66
|
};
|
|
66
67
|
_DerivedNoteAPI = __decorate([
|
|
67
|
-
(0,
|
|
68
|
+
(0, index_1.RegisterDataController)()
|
|
68
69
|
], _DerivedNoteAPI);
|
|
69
|
-
let _ArchiveAPI = class _ArchiveAPI extends (0,
|
|
70
|
+
let _ArchiveAPI = class _ArchiveAPI extends (0, index_1.DataController)(Archive, { get: index_1.DefaultRoutes.Get }, (0, interface_api_1.Controller)(`/${OVERRIDE_LOCATION}`, NoteBaseAPI)) {
|
|
70
71
|
};
|
|
71
72
|
__decorate([
|
|
72
73
|
(0, metadata_1.ModelReference)(),
|
|
@@ -74,7 +75,7 @@ __decorate([
|
|
|
74
75
|
__metadata("design:type", ArchiveModel)
|
|
75
76
|
], _ArchiveAPI.prototype, "archiveModel", void 0);
|
|
76
77
|
_ArchiveAPI = __decorate([
|
|
77
|
-
(0,
|
|
78
|
+
(0, index_1.RegisterDataController)()
|
|
78
79
|
], _ArchiveAPI);
|
|
79
80
|
describe("Derived data controllers", () => {
|
|
80
81
|
let noteModel;
|
|
@@ -91,13 +92,13 @@ describe("Derived data controllers", () => {
|
|
|
91
92
|
(0, chai_1.expect)(await get.json()).to.deep.equal({ _id: id, title: "Inherited" });
|
|
92
93
|
const list = await (0, utils_1.listRequest)(DERIVED_LOCATION);
|
|
93
94
|
(0, chai_1.expect)(list.status).to.equal(OK);
|
|
94
|
-
const { results } =
|
|
95
|
+
const { results } = await (0, http_1.readJson)(list);
|
|
95
96
|
(0, chai_1.expect)(results).to.deep.include({ _id: id, title: "Inherited" });
|
|
96
97
|
});
|
|
97
98
|
it("inherits the parent model reference for new, edit and delete", async () => {
|
|
98
99
|
const created = await (0, utils_1.newRequest)(DERIVED_LOCATION, { title: "Created" });
|
|
99
100
|
(0, chai_1.expect)(created.status).to.equal(OK);
|
|
100
|
-
const { _id: id } =
|
|
101
|
+
const { _id: id } = await (0, http_1.readJson)(created);
|
|
101
102
|
(0, chai_1.expect)(await noteModel.get(id)).to.have.property("title", "Created");
|
|
102
103
|
const edited = await (0, utils_1.editRequest)(DERIVED_LOCATION, { title: "Edited" }, { id });
|
|
103
104
|
(0, chai_1.expect)(edited.status).to.equal(OK);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inheritance.test.js","sourceRoot":"","sources":["../../../src/tests/index/inheritance.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,6DAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"inheritance.test.js","sourceRoot":"","sources":["../../../src/tests/index/inheritance.test.ts"],"names":[],"mappings":"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"}
|