@antelopejs/interface-data-api 0.4.0 → 0.6.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/README.md +26 -22
- package/dist/antelope.test.js +1 -5
- package/dist/antelope.test.js.map +1 -1
- package/dist/components.d.ts +67 -39
- package/dist/components.js +106 -685
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +57 -68
- package/dist/index.js +114 -100
- package/dist/index.js.map +1 -1
- package/dist/internal/computed.d.ts +6 -0
- package/dist/internal/computed.js +51 -0
- package/dist/internal/computed.js.map +1 -0
- package/dist/internal/controller-types.d.ts +34 -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 +29 -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 +125 -0
- package/dist/internal/deferred-joined-stream.js.map +1 -0
- package/dist/internal/extractors.d.ts +25 -0
- package/dist/internal/extractors.js +31 -0
- package/dist/internal/extractors.js.map +1 -0
- package/dist/internal/field-types.d.ts +199 -0
- package/dist/internal/field-types.js +4 -0
- package/dist/internal/field-types.js.map +1 -0
- package/dist/internal/filters.d.ts +6 -0
- package/dist/internal/filters.js +22 -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 +39 -0
- package/dist/internal/guards.js +116 -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 +182 -0
- package/dist/internal/list.js.map +1 -0
- package/dist/internal/meta-records.d.ts +19 -0
- package/dist/internal/meta-records.js +78 -0
- package/dist/internal/meta-records.js.map +1 -0
- package/dist/internal/properties.d.ts +4 -0
- package/dist/internal/properties.js +45 -0
- package/dist/internal/properties.js.map +1 -0
- package/dist/internal/prototypes.d.ts +14 -0
- package/dist/internal/prototypes.js +38 -0
- package/dist/internal/prototypes.js.map +1 -0
- package/dist/internal/read-properties.d.ts +3 -0
- package/dist/internal/read-properties.js +29 -0
- package/dist/internal/read-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 +28 -0
- package/dist/internal/tables.js +48 -0
- package/dist/internal/tables.js.map +1 -0
- package/dist/internal/validation.d.ts +12 -0
- package/dist/internal/validation.js +100 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/metadata.d.ts +27 -228
- package/dist/metadata.js +84 -213
- package/dist/metadata.js.map +1 -1
- package/dist/tests/components/access_control.test.js +28 -20
- package/dist/tests/components/access_control.test.js.map +1 -1
- package/dist/tests/components/computed.test.js +36 -27
- 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 +57 -54
- package/dist/tests/components/deferred_joined.test.js.map +1 -1
- package/dist/tests/components/extract_generic.test.d.ts +1 -0
- package/dist/tests/components/extract_generic.test.js +64 -0
- package/dist/tests/components/extract_generic.test.js.map +1 -0
- package/dist/tests/components/filter_comparisons.test.d.ts +1 -0
- package/dist/tests/components/filter_comparisons.test.js +34 -0
- package/dist/tests/components/filter_comparisons.test.js.map +1 -0
- package/dist/tests/components/filter_list_route.test.d.ts +1 -0
- package/dist/tests/components/filter_list_route.test.js +182 -0
- package/dist/tests/components/filter_list_route.test.js.map +1 -0
- package/dist/tests/components/filter_options.test.js +11 -10
- package/dist/tests/components/filter_options.test.js.map +1 -1
- package/dist/tests/components/foreign_computed.test.js +23 -14
- package/dist/tests/components/foreign_computed.test.js.map +1 -1
- package/dist/tests/components/foreign_joined.test.js +31 -27
- package/dist/tests/components/foreign_joined.test.js.map +1 -1
- package/dist/tests/components/joined.test.js +59 -45
- package/dist/tests/components/joined.test.js.map +1 -1
- package/dist/tests/components/listable.test.js +78 -58
- package/dist/tests/components/listable.test.js.map +1 -1
- package/dist/tests/components/localized_sort.test.js +14 -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 +27 -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 +76 -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 +38 -32
- package/dist/tests/components/partial_edit.test.js.map +1 -1
- package/dist/tests/components/per_action_access.test.js +20 -12
- package/dist/tests/components/per_action_access.test.js.map +1 -1
- package/dist/tests/components/prototype_named_filter.test.d.ts +1 -0
- package/dist/tests/components/prototype_named_filter.test.js +87 -0
- package/dist/tests/components/prototype_named_filter.test.js.map +1 -0
- package/dist/tests/components/validator.test.js +45 -37
- package/dist/tests/components/validator.test.js.map +1 -1
- package/dist/tests/components/written_row.test.d.ts +1 -0
- package/dist/tests/components/written_row.test.js +99 -0
- package/dist/tests/components/written_row.test.js.map +1 -0
- package/dist/tests/helpers/other-instance.d.ts +11 -1
- package/dist/tests/helpers/other-instance.js +35 -9
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/index/field_decorator_target.test.d.ts +1 -0
- package/dist/tests/index/field_decorator_target.test.js +20 -0
- package/dist/tests/index/field_decorator_target.test.js.map +1 -0
- 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 +14 -9
- package/dist/tests/index/inheritance.test.js.map +1 -1
- package/dist/tests/index/metadata_names.test.d.ts +1 -0
- package/dist/tests/index/metadata_names.test.js +91 -0
- package/dist/tests/index/metadata_names.test.js.map +1 -0
- package/dist/tests/index/routes.test.js +49 -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 +66 -729
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/internal/controller-fields.test.d.ts +1 -0
- package/dist/tests/internal/controller-fields.test.js +25 -0
- package/dist/tests/internal/controller-fields.test.js.map +1 -0
- package/dist/tests/internal/http.d.ts +35 -0
- package/dist/tests/internal/http.js +56 -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 +162 -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 +8 -10
- 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/1.introduction.md +38 -35
- package/docs/10.joined.md +51 -40
- package/docs/11.computed.md +91 -47
- package/docs/2.data-controllers.md +50 -42
- package/docs/3.routes.md +156 -134
- package/docs/4.access-rights.md +48 -44
- package/docs/5.validators.md +65 -47
- package/docs/6.listable.md +53 -49
- package/docs/7.foreign-keys.md +55 -48
- package/docs/8.filters.md +65 -54
- package/docs/9.modifiers.md +29 -25
- package/package.json +34 -13
- package/skills/data-api-interface/SKILL.md +13 -3
- package/skills/data-api-interface/cases.json +99 -0
|
@@ -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)(http_1.createdRowSchema, 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
+
const chai_1 = require("chai");
|
|
17
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
18
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
19
|
+
const index_1 = require("../../index");
|
|
20
|
+
const metadata_1 = require("../../metadata");
|
|
21
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
22
|
+
const utils_1 = require("../utils");
|
|
23
|
+
const currentTestName = node_path_1.default
|
|
24
|
+
.basename(__filename)
|
|
25
|
+
.replace(/\.test\.(ts|js)$/, "");
|
|
26
|
+
const counterTableName = `counters-${currentTestName}`;
|
|
27
|
+
const schemaName = "default";
|
|
28
|
+
const counterName = "visits";
|
|
29
|
+
let Counter = class Counter extends interface_database_decorators_1.Table {
|
|
30
|
+
};
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], Counter.prototype, "name", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, interface_database_decorators_1.Field)("number"),
|
|
37
|
+
__metadata("design:type", BigInt)
|
|
38
|
+
], Counter.prototype, "count", void 0);
|
|
39
|
+
Counter = __decorate([
|
|
40
|
+
(0, interface_database_decorators_1.RegisterTable)(counterTableName, schemaName)
|
|
41
|
+
], Counter);
|
|
42
|
+
class CounterModel extends (0, interface_database_decorators_1.BasicDataModel)(Counter, counterTableName) {
|
|
43
|
+
}
|
|
44
|
+
describe("Written row", () => {
|
|
45
|
+
it("refuses a new row whose setter writes a bigint, and writes nothing", async () => await expectRefusesNewBigint());
|
|
46
|
+
it("refuses an edit whose setter writes a bigint, and keeps the row", async () => await expectRefusesEditedBigint());
|
|
47
|
+
});
|
|
48
|
+
function counters() {
|
|
49
|
+
const schema = interface_database_1.Schema.get(schemaName);
|
|
50
|
+
if (!schema) {
|
|
51
|
+
throw new Error(`Schema '${schemaName}' is not registered`);
|
|
52
|
+
}
|
|
53
|
+
return schema.instance().table(counterTableName);
|
|
54
|
+
}
|
|
55
|
+
async function _createDataController(testName) {
|
|
56
|
+
let _WrittenRowTestAPI = class _WrittenRowTestAPI extends (0, index_1.DataController)(Counter, { new: index_1.DefaultRoutes.New, edit: index_1.DefaultRoutes.Edit }, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
57
|
+
set count(value) {
|
|
58
|
+
this.table.count = BigInt(value);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, metadata_1.ModelReference)(),
|
|
63
|
+
(0, interface_database_decorators_1.Model)(CounterModel),
|
|
64
|
+
__metadata("design:type", CounterModel)
|
|
65
|
+
], _WrittenRowTestAPI.prototype, "counterModel", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], _WrittenRowTestAPI.prototype, "name", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.WriteOnly),
|
|
72
|
+
__metadata("design:type", Number),
|
|
73
|
+
__metadata("design:paramtypes", [Number])
|
|
74
|
+
], _WrittenRowTestAPI.prototype, "count", null);
|
|
75
|
+
_WrittenRowTestAPI = __decorate([
|
|
76
|
+
(0, index_1.RegisterDataController)()
|
|
77
|
+
], _WrittenRowTestAPI);
|
|
78
|
+
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
79
|
+
await counters().delete();
|
|
80
|
+
}
|
|
81
|
+
async function expectRefusesNewBigint() {
|
|
82
|
+
await _createDataController((0, utils_1.getFunctionName)());
|
|
83
|
+
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
84
|
+
name: counterName,
|
|
85
|
+
count: 2,
|
|
86
|
+
});
|
|
87
|
+
(0, chai_1.expect)(response.status).to.equal(500);
|
|
88
|
+
(0, chai_1.expect)(await counters().count()).to.equal(0);
|
|
89
|
+
}
|
|
90
|
+
async function expectRefusesEditedBigint() {
|
|
91
|
+
await _createDataController((0, utils_1.getFunctionName)());
|
|
92
|
+
const [id] = await counters().insert({ name: counterName });
|
|
93
|
+
const response = await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), { count: 3 }, { id });
|
|
94
|
+
(0, chai_1.expect)(response.status).to.equal(500);
|
|
95
|
+
const stored = await counters().get(id);
|
|
96
|
+
(0, chai_1.expect)(stored).to.include({ name: counterName });
|
|
97
|
+
(0, chai_1.expect)(stored).to.not.have.property("count");
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=written_row.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"written_row.test.js","sourceRoot":"","sources":["../../../src/tests/components/written_row.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AACvD,uEAAwD;AACxD,uCAIqB;AACrB,6CAAoE;AACpE,6FAOmD;AAEnD,oCAAoE;AAEpE,MAAM,eAAe,GAAG,mBAAI;KACzB,QAAQ,CAAC,UAAU,CAAC;KACpB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnC,MAAM,gBAAgB,GAAG,YAAY,eAAe,EAAE,CAAC;AACvD,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC;AAG7B,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,qCAAK;CAQ1B,CAAA;AAJS;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qCACK;AAGb;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sCACM;AAPlB,OAAO;IADZ,IAAA,6CAAa,EAAC,gBAAgB,EAAE,UAAU,CAAC;GACtC,OAAO,CAQZ;AACD,MAAM,YAAa,SAAQ,IAAA,8CAAc,EAAC,OAAO,EAAE,gBAAgB,CAAC;CAAG;AAEvE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE,CAClF,MAAM,sBAAsB,EAAE,CAAC,CAAC;IAClC,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE,CAC/E,MAAM,yBAAyB,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,SAAS,QAAQ;IACf,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,qBAAqB,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAEnD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,IAAA,sBAAc,EAC7C,OAAO,EACP,EAAE,GAAG,EAAE,qBAAa,CAAC,GAAG,EAAE,IAAI,EAAE,qBAAa,CAAC,IAAI,EAAE,EACpD,IAAA,0BAAU,EAAC,IAAI,QAAQ,EAAE,CAAC,CAC3B;QAUC,IACI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;KACF,CAAA;IAXS;QAFP,IAAA,yBAAc,GAAE;QAChB,IAAA,qCAAK,EAAC,YAAY,CAAC;kCACE,YAAY;4DAAC;IAK3B;QADP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;oDACR;IAErB;QAAC,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;;mDAG5B;IAjBG,kBAAkB;QADvB,IAAA,8BAAsB,GAAE;OACnB,kBAAkB,CAkBvB;IACD,MAAM,IAAA,8CAAc,EAAC,UAAU,CAAC,CAAC;IACjC,MAAM,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,qBAAqB,CAAC,IAAA,uBAAe,GAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,IAAA,uBAAe,GAAE,EAAE;QACnD,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IAEH,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAA,aAAM,EAAC,MAAM,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,MAAM,qBAAqB,CAAC,IAAA,uBAAe,GAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAW,EAAC,IAAA,uBAAe,GAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5E,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAY,MAAM,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -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`
|
|
@@ -24,23 +27,46 @@ function CreateOtherInstance(folders) {
|
|
|
24
27
|
const load = (filename, parent) => {
|
|
25
28
|
const cached = modules.get(filename);
|
|
26
29
|
if (cached) {
|
|
27
|
-
return cached
|
|
30
|
+
return cached;
|
|
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
|
-
return loaded
|
|
38
|
+
return loaded;
|
|
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
|
-
|
|
41
|
-
? load(filename, parent)
|
|
43
|
+
const exported = isOwned
|
|
44
|
+
? load(filename, parent).exports
|
|
42
45
|
: node_module_1.default.prototype.require.call(parent, request);
|
|
46
|
+
if (!(0, guards_1.isObject)(exported) && !(0, guards_1.isFunction)(exported)) {
|
|
47
|
+
throw new Error(`${request} exports neither an object nor a function`);
|
|
48
|
+
}
|
|
49
|
+
return exported;
|
|
43
50
|
};
|
|
44
51
|
return (request) => requireFrom(module, request);
|
|
45
52
|
}
|
|
53
|
+
function exportsAllOf(loaded, reference) {
|
|
54
|
+
return ((0, guards_1.isObject)(loaded) && Object.keys(reference).every((name) => name in loaded));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Evaluates a built module again and checks that the copy exports every name
|
|
58
|
+
* the module already loaded exports.
|
|
59
|
+
*
|
|
60
|
+
* @param load The `require` of {@link CreateOtherInstance}
|
|
61
|
+
* @param file Built file to evaluate again
|
|
62
|
+
* @param reference The module already loaded from the same file
|
|
63
|
+
* @returns The second copy of the module
|
|
64
|
+
*/
|
|
65
|
+
function LoadAgain(load, file, reference) {
|
|
66
|
+
const loaded = load(file);
|
|
67
|
+
if (!exportsAllOf(loaded, reference)) {
|
|
68
|
+
throw new Error(`${file} does not export the names of its first copy`);
|
|
69
|
+
}
|
|
70
|
+
return loaded;
|
|
71
|
+
}
|
|
46
72
|
//# 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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
5
|
+
const metadata_1 = require("../../metadata");
|
|
6
|
+
const REFUSAL = "A field decorator applies to a class.";
|
|
7
|
+
describe("field decorators - target", () => {
|
|
8
|
+
it("refuses a target whose constructor is an arrow function", () => {
|
|
9
|
+
const target = { constructor: () => undefined };
|
|
10
|
+
(0, chai_1.expect)(() => (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly)(target, "title")).to.throw(TypeError, REFUSAL);
|
|
11
|
+
});
|
|
12
|
+
it("declares the field on a target whose constructor is a class", () => {
|
|
13
|
+
class Target {
|
|
14
|
+
}
|
|
15
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly)(Target.prototype, "title");
|
|
16
|
+
const { fields } = (0, interface_core_1.GetMetadata)(Target, metadata_1.DataAPIMeta);
|
|
17
|
+
(0, chai_1.expect)(Object.hasOwn(fields, "title")).to.equal(true);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=field_decorator_target.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_decorator_target.test.js","sourceRoot":"","sources":["../../../src/tests/index/field_decorator_target.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,+DAAyD;AACzD,6CAAiE;AAEjE,MAAM,OAAO,GAAG,uCAAuC,CAAC;AAExD,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QAEhD,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACjE,SAAS,EACT,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM;SAEX;QAED,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEvD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,4BAAW,EAAC,MAAM,EAAE,sBAAW,CAAC,CAAC;QACpD,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,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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"}
|
|
@@ -10,10 +10,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const chai_1 = require("chai");
|
|
13
|
+
const zod_1 = require("zod");
|
|
13
14
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
14
|
-
const metadata_1 = require("
|
|
15
|
-
const
|
|
15
|
+
const metadata_1 = require("../../metadata");
|
|
16
|
+
const index_1 = require("../../index");
|
|
16
17
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
18
|
+
const http_1 = require("../internal/http");
|
|
17
19
|
const utils_1 = require("../utils");
|
|
18
20
|
const NOTE_TABLE = "inheritance-notes";
|
|
19
21
|
const ARCHIVE_TABLE = "inheritance-archives";
|
|
@@ -44,7 +46,7 @@ Archive = __decorate([
|
|
|
44
46
|
], Archive);
|
|
45
47
|
class ArchiveModel extends (0, interface_database_decorators_1.BasicDataModel)(Archive, ARCHIVE_TABLE) {
|
|
46
48
|
}
|
|
47
|
-
class NoteBaseAPI extends (0,
|
|
49
|
+
class NoteBaseAPI extends (0, index_1.DataController)(Note, {}, (0, interface_api_1.Controller)("/inheritance-base")) {
|
|
48
50
|
}
|
|
49
51
|
__decorate([
|
|
50
52
|
(0, metadata_1.ModelReference)(),
|
|
@@ -61,12 +63,12 @@ __decorate([
|
|
|
61
63
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
62
64
|
__metadata("design:type", String)
|
|
63
65
|
], NoteBaseAPI.prototype, "title", void 0);
|
|
64
|
-
let _DerivedNoteAPI = class _DerivedNoteAPI extends (0,
|
|
66
|
+
let _DerivedNoteAPI = class _DerivedNoteAPI extends (0, index_1.DataController)(Note, index_1.DefaultRoutes.All, (0, interface_api_1.Controller)(`/${DERIVED_LOCATION}`, NoteBaseAPI)) {
|
|
65
67
|
};
|
|
66
68
|
_DerivedNoteAPI = __decorate([
|
|
67
|
-
(0,
|
|
69
|
+
(0, index_1.RegisterDataController)()
|
|
68
70
|
], _DerivedNoteAPI);
|
|
69
|
-
let _ArchiveAPI = class _ArchiveAPI extends (0,
|
|
71
|
+
let _ArchiveAPI = class _ArchiveAPI extends (0, index_1.DataController)(Archive, { get: index_1.DefaultRoutes.Get }, (0, interface_api_1.Controller)(`/${OVERRIDE_LOCATION}`, NoteBaseAPI)) {
|
|
70
72
|
};
|
|
71
73
|
__decorate([
|
|
72
74
|
(0, metadata_1.ModelReference)(),
|
|
@@ -74,8 +76,11 @@ __decorate([
|
|
|
74
76
|
__metadata("design:type", ArchiveModel)
|
|
75
77
|
], _ArchiveAPI.prototype, "archiveModel", void 0);
|
|
76
78
|
_ArchiveAPI = __decorate([
|
|
77
|
-
(0,
|
|
79
|
+
(0, index_1.RegisterDataController)()
|
|
78
80
|
], _ArchiveAPI);
|
|
81
|
+
const noteListSchema = zod_1.z.looseObject({
|
|
82
|
+
results: zod_1.z.array(zod_1.z.looseObject({ _id: zod_1.z.string().optional(), title: zod_1.z.string().optional() })),
|
|
83
|
+
});
|
|
79
84
|
describe("Derived data controllers", () => {
|
|
80
85
|
let noteModel;
|
|
81
86
|
let archiveModel;
|
|
@@ -91,13 +96,13 @@ describe("Derived data controllers", () => {
|
|
|
91
96
|
(0, chai_1.expect)(await get.json()).to.deep.equal({ _id: id, title: "Inherited" });
|
|
92
97
|
const list = await (0, utils_1.listRequest)(DERIVED_LOCATION);
|
|
93
98
|
(0, chai_1.expect)(list.status).to.equal(OK);
|
|
94
|
-
const { results } =
|
|
99
|
+
const { results } = await (0, http_1.readJson)(noteListSchema, list);
|
|
95
100
|
(0, chai_1.expect)(results).to.deep.include({ _id: id, title: "Inherited" });
|
|
96
101
|
});
|
|
97
102
|
it("inherits the parent model reference for new, edit and delete", async () => {
|
|
98
103
|
const created = await (0, utils_1.newRequest)(DERIVED_LOCATION, { title: "Created" });
|
|
99
104
|
(0, chai_1.expect)(created.status).to.equal(OK);
|
|
100
|
-
const { _id: id } =
|
|
105
|
+
const { _id: id } = await (0, http_1.readJson)(http_1.createdRowSchema, created);
|
|
101
106
|
(0, chai_1.expect)(await noteModel.get(id)).to.have.property("title", "Created");
|
|
102
107
|
const edited = await (0, utils_1.editRequest)(DERIVED_LOCATION, { title: "Edited" }, { id });
|
|
103
108
|
(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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|