@antelopejs/interface-database-decorators 0.0.2
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/LICENSE +190 -0
- package/README.md +42 -0
- package/dist/antelope.test.d.ts +2 -0
- package/dist/antelope.test.js +52 -0
- package/dist/antelope.test.js.map +1 -0
- package/dist/common.d.ts +22 -0
- package/dist/common.js +36 -0
- package/dist/common.js.map +1 -0
- package/dist/database.d.ts +2 -0
- package/dist/database.js +71 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +101 -0
- package/dist/model.js +161 -0
- package/dist/model.js.map +1 -0
- package/dist/modifiers/common.d.ts +87 -0
- package/dist/modifiers/common.js +370 -0
- package/dist/modifiers/common.js.map +1 -0
- package/dist/modifiers/encryption.d.ts +37 -0
- package/dist/modifiers/encryption.js +79 -0
- package/dist/modifiers/encryption.js.map +1 -0
- package/dist/modifiers/hash.d.ts +41 -0
- package/dist/modifiers/hash.js +54 -0
- package/dist/modifiers/hash.js.map +1 -0
- package/dist/modifiers/index.d.ts +4 -0
- package/dist/modifiers/index.js +21 -0
- package/dist/modifiers/index.js.map +1 -0
- package/dist/modifiers/localization.d.ts +43 -0
- package/dist/modifiers/localization.js +57 -0
- package/dist/modifiers/localization.js.map +1 -0
- package/dist/schema.d.ts +4 -0
- package/dist/schema.js +21 -0
- package/dist/schema.js.map +1 -0
- package/dist/table.d.ts +53 -0
- package/dist/table.js +63 -0
- package/dist/table.js.map +1 -0
- package/dist/tests/common.test.d.ts +1 -0
- package/dist/tests/common.test.js +52 -0
- package/dist/tests/common.test.js.map +1 -0
- package/dist/tests/database.test.d.ts +1 -0
- package/dist/tests/database.test.js +184 -0
- package/dist/tests/database.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +1 -0
- package/dist/tests/integration.test.js +399 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/model.test.d.ts +1 -0
- package/dist/tests/model.test.js +186 -0
- package/dist/tests/model.test.js.map +1 -0
- package/dist/tests/modifiers/common.test.d.ts +1 -0
- package/dist/tests/modifiers/common.test.js +165 -0
- package/dist/tests/modifiers/common.test.js.map +1 -0
- package/dist/tests/modifiers/encryption.test.d.ts +1 -0
- package/dist/tests/modifiers/encryption.test.js +161 -0
- package/dist/tests/modifiers/encryption.test.js.map +1 -0
- package/dist/tests/modifiers/hash.test.d.ts +1 -0
- package/dist/tests/modifiers/hash.test.js +126 -0
- package/dist/tests/modifiers/hash.test.js.map +1 -0
- package/dist/tests/modifiers/localization.test.d.ts +1 -0
- package/dist/tests/modifiers/localization.test.js +175 -0
- package/dist/tests/modifiers/localization.test.js.map +1 -0
- package/dist/tests/schema.test.d.ts +1 -0
- package/dist/tests/schema.test.js +102 -0
- package/dist/tests/schema.test.js.map +1 -0
- package/dist/tests/table.test.d.ts +1 -0
- package/dist/tests/table.test.js +112 -0
- package/dist/tests/table.test.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,126 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const hash_1 = require("@antelopejs/interface-database-decorators/modifiers/hash");
|
|
13
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
14
|
+
const chai_1 = require("chai");
|
|
15
|
+
describe("Modifiers - hash", () => {
|
|
16
|
+
it("hashes string values", async () => HashStringValuesTest());
|
|
17
|
+
it("hashes object values", async () => HashObjectValuesTest());
|
|
18
|
+
it("handles undefined values", async () => HandleUndefinedValuesTest());
|
|
19
|
+
it("uses custom hash algorithm", async () => UseCustomHashAlgorithmTest());
|
|
20
|
+
it("generates unique salt for each field", async () => GenerateUniqueSaltForEachFieldTest());
|
|
21
|
+
it("handles hash decorator", async () => HandleHashDecoratorTest());
|
|
22
|
+
it("tests hash values correctly", async () => TestHashValuesTest());
|
|
23
|
+
it("provides testHash method through mixin", async () => ProvideTestHashMethodTest());
|
|
24
|
+
});
|
|
25
|
+
class TestableHashModifier extends hash_1.HashModifier {
|
|
26
|
+
setOptions(options) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
}
|
|
29
|
+
getOptions() {
|
|
30
|
+
return this.options;
|
|
31
|
+
}
|
|
32
|
+
getMeta() {
|
|
33
|
+
return this.meta;
|
|
34
|
+
}
|
|
35
|
+
setMeta(meta) {
|
|
36
|
+
this.meta = meta;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function HashStringValuesTest() {
|
|
40
|
+
const modifier = new TestableHashModifier();
|
|
41
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
42
|
+
modifier.setMeta({});
|
|
43
|
+
const originalValue = "password123";
|
|
44
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
45
|
+
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
46
|
+
(0, chai_1.expect)(hashed).to.not.equal(originalValue);
|
|
47
|
+
(0, chai_1.expect)(modifier.getMeta().salt).to.be.a("string");
|
|
48
|
+
}
|
|
49
|
+
async function HashObjectValuesTest() {
|
|
50
|
+
const modifier = new TestableHashModifier();
|
|
51
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
52
|
+
modifier.setMeta({});
|
|
53
|
+
const originalValue = { name: "John", age: 30 };
|
|
54
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
55
|
+
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
56
|
+
(0, chai_1.expect)(hashed).to.not.equal(JSON.stringify(originalValue));
|
|
57
|
+
}
|
|
58
|
+
async function HandleUndefinedValuesTest() {
|
|
59
|
+
const modifier = new TestableHashModifier();
|
|
60
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
61
|
+
modifier.setMeta({});
|
|
62
|
+
const hashed = modifier.lock(undefined, undefined);
|
|
63
|
+
(0, chai_1.expect)(hashed).to.equal(undefined);
|
|
64
|
+
}
|
|
65
|
+
async function UseCustomHashAlgorithmTest() {
|
|
66
|
+
const modifier = new TestableHashModifier();
|
|
67
|
+
modifier.setOptions({ algorithm: "md5" });
|
|
68
|
+
modifier.setMeta({});
|
|
69
|
+
const originalValue = "test data";
|
|
70
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
71
|
+
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
72
|
+
(0, chai_1.expect)(hashed).to.not.equal(originalValue);
|
|
73
|
+
(0, chai_1.expect)(modifier.getOptions().algorithm).to.equal("md5");
|
|
74
|
+
}
|
|
75
|
+
async function GenerateUniqueSaltForEachFieldTest() {
|
|
76
|
+
const modifier1 = new TestableHashModifier();
|
|
77
|
+
modifier1.setOptions({ algorithm: "sha256" });
|
|
78
|
+
modifier1.setMeta({});
|
|
79
|
+
const modifier2 = new TestableHashModifier();
|
|
80
|
+
modifier2.setOptions({ algorithm: "sha256" });
|
|
81
|
+
modifier2.setMeta({});
|
|
82
|
+
const value = "test data";
|
|
83
|
+
const hashed1 = modifier1.lock(undefined, value);
|
|
84
|
+
const hashed2 = modifier2.lock(undefined, value);
|
|
85
|
+
(0, chai_1.expect)(hashed1).to.not.equal(hashed2);
|
|
86
|
+
(0, chai_1.expect)(modifier1.getMeta().salt).to.not.equal(modifier2.getMeta().salt);
|
|
87
|
+
}
|
|
88
|
+
async function HandleHashDecoratorTest() {
|
|
89
|
+
class TestTable extends table_1.Table.with(hash_1.HashModifier) {
|
|
90
|
+
}
|
|
91
|
+
__decorate([
|
|
92
|
+
(0, hash_1.Hashed)({ algorithm: "sha256" }),
|
|
93
|
+
__metadata("design:type", String)
|
|
94
|
+
], TestTable.prototype, "password", void 0);
|
|
95
|
+
const instance = new TestTable();
|
|
96
|
+
instance.password = "myPassword123";
|
|
97
|
+
(0, chai_1.expect)(instance.testHash("password", "myPassword123")).to.equal(true);
|
|
98
|
+
(0, chai_1.expect)(instance.testHash("password", "notMyPassword")).to.equal(false);
|
|
99
|
+
}
|
|
100
|
+
async function TestHashValuesTest() {
|
|
101
|
+
const modifier = new TestableHashModifier();
|
|
102
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
103
|
+
modifier.setMeta({});
|
|
104
|
+
const originalValue = "test data";
|
|
105
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
106
|
+
const isMatch = modifier.test(hashed, originalValue);
|
|
107
|
+
const isNotMatch = modifier.test(hashed, "wrong data");
|
|
108
|
+
(0, chai_1.expect)(isMatch).to.equal(true);
|
|
109
|
+
(0, chai_1.expect)(isNotMatch).to.equal(false);
|
|
110
|
+
}
|
|
111
|
+
async function ProvideTestHashMethodTest() {
|
|
112
|
+
class TestTable extends table_1.Table.with(hash_1.HashModifier) {
|
|
113
|
+
}
|
|
114
|
+
__decorate([
|
|
115
|
+
(0, hash_1.Hashed)({ algorithm: "sha256" }),
|
|
116
|
+
__metadata("design:type", String)
|
|
117
|
+
], TestTable.prototype, "password", void 0);
|
|
118
|
+
const instance = new TestTable();
|
|
119
|
+
instance.password = "myPassword123";
|
|
120
|
+
(0, chai_1.expect)(typeof instance.testHash).to.equal("function");
|
|
121
|
+
const isMatch = instance.testHash("password", "myPassword123");
|
|
122
|
+
const isNotMatch = instance.testHash("password", "wrongPassword");
|
|
123
|
+
(0, chai_1.expect)(isMatch).to.equal(true);
|
|
124
|
+
(0, chai_1.expect)(isNotMatch).to.equal(false);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=hash.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/hash.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,175 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const localization_1 = require("@antelopejs/interface-database-decorators/modifiers/localization");
|
|
13
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
14
|
+
const chai_1 = require("chai");
|
|
15
|
+
describe("Modifiers - localization", () => {
|
|
16
|
+
it("creates localization modifier", async () => CreateLocalizationModifierTest());
|
|
17
|
+
it("stores multiple locale values", async () => StoreMultipleLocaleValuesTest());
|
|
18
|
+
it("retrieves specific locale value", async () => RetrieveSpecificLocaleValueTest());
|
|
19
|
+
it("falls back to default locale", async () => FallbackToDefaultLocaleTest());
|
|
20
|
+
it("handles missing locale gracefully", async () => HandleMissingLocaleGracefullyTest());
|
|
21
|
+
it("provides localize method through mixin", async () => ProvideLocalizeMethodTest());
|
|
22
|
+
it("handles localization decorator", async () => HandleLocalizationDecoratorTest());
|
|
23
|
+
it("localizes specific fields", async () => LocalizeSpecificFieldsTest());
|
|
24
|
+
it("maintains data structure integrity", async () => MaintainDataStructureIntegrityTest());
|
|
25
|
+
});
|
|
26
|
+
class TestableLocalizationModifier extends localization_1.LocalizationModifier {
|
|
27
|
+
setOptions(options) {
|
|
28
|
+
this.options = options;
|
|
29
|
+
}
|
|
30
|
+
getOptions() {
|
|
31
|
+
return this.options;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function CreateLocalizationModifierTest() {
|
|
35
|
+
const modifier = new TestableLocalizationModifier();
|
|
36
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
37
|
+
(0, chai_1.expect)(modifier).to.be.instanceOf(localization_1.LocalizationModifier);
|
|
38
|
+
(0, chai_1.expect)(modifier.getOptions().fallbackLocale).to.equal("en");
|
|
39
|
+
}
|
|
40
|
+
async function StoreMultipleLocaleValuesTest() {
|
|
41
|
+
const modifier = new TestableLocalizationModifier();
|
|
42
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
43
|
+
const enValue = "Hello World";
|
|
44
|
+
const frValue = "Bonjour le Monde";
|
|
45
|
+
const esValue = "Hola Mundo";
|
|
46
|
+
const locked1 = modifier.lock(undefined, enValue, "en");
|
|
47
|
+
const locked2 = modifier.lock(locked1, frValue, "fr");
|
|
48
|
+
const locked3 = modifier.lock(locked2, esValue, "es");
|
|
49
|
+
(0, chai_1.expect)(locked3).to.deep.equal({
|
|
50
|
+
en: enValue,
|
|
51
|
+
fr: frValue,
|
|
52
|
+
es: esValue,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async function RetrieveSpecificLocaleValueTest() {
|
|
56
|
+
const modifier = new TestableLocalizationModifier();
|
|
57
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
58
|
+
const data = {
|
|
59
|
+
en: "Hello World",
|
|
60
|
+
fr: "Bonjour le Monde",
|
|
61
|
+
es: "Hola Mundo",
|
|
62
|
+
};
|
|
63
|
+
const enValue = modifier.unlock(data, "en");
|
|
64
|
+
const frValue = modifier.unlock(data, "fr");
|
|
65
|
+
const esValue = modifier.unlock(data, "es");
|
|
66
|
+
(0, chai_1.expect)(enValue).to.equal("Hello World");
|
|
67
|
+
(0, chai_1.expect)(frValue).to.equal("Bonjour le Monde");
|
|
68
|
+
(0, chai_1.expect)(esValue).to.equal("Hola Mundo");
|
|
69
|
+
}
|
|
70
|
+
async function FallbackToDefaultLocaleTest() {
|
|
71
|
+
const modifier = new TestableLocalizationModifier();
|
|
72
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
73
|
+
const data = {
|
|
74
|
+
en: "Hello World",
|
|
75
|
+
fr: "Bonjour le Monde",
|
|
76
|
+
};
|
|
77
|
+
const missingValue = modifier.unlock(data, "es");
|
|
78
|
+
(0, chai_1.expect)(missingValue).to.equal("Hello World");
|
|
79
|
+
}
|
|
80
|
+
async function HandleMissingLocaleGracefullyTest() {
|
|
81
|
+
const modifier = new TestableLocalizationModifier();
|
|
82
|
+
modifier.setOptions({});
|
|
83
|
+
const data = {
|
|
84
|
+
en: "Hello World",
|
|
85
|
+
};
|
|
86
|
+
const missingValue = modifier.unlock(data, "fr");
|
|
87
|
+
(0, chai_1.expect)(missingValue).to.equal(undefined);
|
|
88
|
+
}
|
|
89
|
+
async function ProvideLocalizeMethodTest() {
|
|
90
|
+
const TestTableWithMixin = table_1.Table.with(localization_1.LocalizationModifier);
|
|
91
|
+
class TestTable extends TestTableWithMixin {
|
|
92
|
+
}
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, localization_1.Localized)({ fallbackLocale: "en" }),
|
|
95
|
+
__metadata("design:type", String)
|
|
96
|
+
], TestTable.prototype, "title", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, localization_1.Localized)({ fallbackLocale: "en" }),
|
|
99
|
+
__metadata("design:type", String)
|
|
100
|
+
], TestTable.prototype, "description", void 0);
|
|
101
|
+
const instance = new TestTable();
|
|
102
|
+
(0, chai_1.expect)(typeof instance.localize).to.equal("function");
|
|
103
|
+
(0, chai_1.expect)(instance.localize("fr")).to.equal(instance);
|
|
104
|
+
}
|
|
105
|
+
async function HandleLocalizationDecoratorTest() {
|
|
106
|
+
class TestTable extends table_1.Table.with(localization_1.LocalizationModifier) {
|
|
107
|
+
}
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, localization_1.Localized)({ fallbackLocale: "en" }),
|
|
110
|
+
__metadata("design:type", String)
|
|
111
|
+
], TestTable.prototype, "title", void 0);
|
|
112
|
+
__decorate([
|
|
113
|
+
(0, localization_1.Localized)({ fallbackLocale: "fr" }),
|
|
114
|
+
__metadata("design:type", String)
|
|
115
|
+
], TestTable.prototype, "description", void 0);
|
|
116
|
+
const instance = new TestTable();
|
|
117
|
+
instance.localize("fr");
|
|
118
|
+
instance.title = "French Title";
|
|
119
|
+
instance.description = "French Description";
|
|
120
|
+
instance.localize("en").title = "English Title";
|
|
121
|
+
instance.localize("en").description = "English Description";
|
|
122
|
+
instance.localize("be");
|
|
123
|
+
(0, chai_1.expect)(instance.title).to.equal("English Title");
|
|
124
|
+
(0, chai_1.expect)(instance.description).to.equal("French Description");
|
|
125
|
+
}
|
|
126
|
+
async function LocalizeSpecificFieldsTest() {
|
|
127
|
+
const TestTableWithMixin = table_1.Table.with(localization_1.LocalizationModifier);
|
|
128
|
+
class TestTable extends TestTableWithMixin {
|
|
129
|
+
}
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, localization_1.Localized)({ fallbackLocale: "en" }),
|
|
132
|
+
__metadata("design:type", String)
|
|
133
|
+
], TestTable.prototype, "title", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
(0, localization_1.Localized)({ fallbackLocale: "en" }),
|
|
136
|
+
__metadata("design:type", String)
|
|
137
|
+
], TestTable.prototype, "description", void 0);
|
|
138
|
+
__decorate([
|
|
139
|
+
(0, localization_1.Localized)({ fallbackLocale: "en" }),
|
|
140
|
+
__metadata("design:type", String)
|
|
141
|
+
], TestTable.prototype, "content", void 0);
|
|
142
|
+
const instance = new TestTable();
|
|
143
|
+
instance.localize("en");
|
|
144
|
+
instance.title = "English Title";
|
|
145
|
+
instance.description = "English Description";
|
|
146
|
+
instance.content = "English Content";
|
|
147
|
+
instance.localize("fr");
|
|
148
|
+
instance.title = "French Title";
|
|
149
|
+
instance.description = "French Description";
|
|
150
|
+
instance.content = "French Content";
|
|
151
|
+
instance.localize("en");
|
|
152
|
+
instance.localize("fr", ["title", "content"]);
|
|
153
|
+
(0, chai_1.expect)(instance.title).to.equal("French Title");
|
|
154
|
+
(0, chai_1.expect)(instance.content).to.equal("French Content");
|
|
155
|
+
(0, chai_1.expect)(instance.description).to.equal("English Description");
|
|
156
|
+
}
|
|
157
|
+
async function MaintainDataStructureIntegrityTest() {
|
|
158
|
+
const modifier = new TestableLocalizationModifier();
|
|
159
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
160
|
+
const complexData = {
|
|
161
|
+
en: { title: "English Title", content: "English Content" },
|
|
162
|
+
fr: { title: "French Title", content: "French Content" },
|
|
163
|
+
};
|
|
164
|
+
const enValue = modifier.unlock(complexData, "en");
|
|
165
|
+
const frValue = modifier.unlock(complexData, "fr");
|
|
166
|
+
(0, chai_1.expect)(enValue).to.deep.equal({
|
|
167
|
+
title: "English Title",
|
|
168
|
+
content: "English Content",
|
|
169
|
+
});
|
|
170
|
+
(0, chai_1.expect)(frValue).to.deep.equal({
|
|
171
|
+
title: "French Title",
|
|
172
|
+
content: "French Content",
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=localization.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localization.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/localization.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const common_1 = require("@antelopejs/interface-database-decorators/common");
|
|
13
|
+
const schema_1 = require("@antelopejs/interface-database-decorators/schema");
|
|
14
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
15
|
+
const chai_1 = require("chai");
|
|
16
|
+
describe("Schema - RegisterTable decorator", () => {
|
|
17
|
+
it("stores tableName and schemaName in metadata", async () => StoreTableNameAndSchemaNameInMetadataTest());
|
|
18
|
+
it("stores tableName for multiple classes", async () => StoreTableNameForMultipleClassesTest());
|
|
19
|
+
it("preserves existing metadata", async () => PreserveExistingMetadataTest());
|
|
20
|
+
it("registers tables in schema registry", async () => RegisterTablesInSchemaRegistryTest());
|
|
21
|
+
it("returns undefined for unknown schema", async () => ReturnUndefinedForUnknownSchemaTest());
|
|
22
|
+
});
|
|
23
|
+
async function StoreTableNameAndSchemaNameInMetadataTest() {
|
|
24
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
25
|
+
name;
|
|
26
|
+
};
|
|
27
|
+
TestTable = __decorate([
|
|
28
|
+
(0, schema_1.RegisterTable)("test_table", "test-schema")
|
|
29
|
+
], TestTable);
|
|
30
|
+
const metadata = (0, common_1.getMetadata)(TestTable, common_1.DatumStaticMetadata);
|
|
31
|
+
(0, chai_1.expect)(metadata.tableName).to.equal("test_table");
|
|
32
|
+
(0, chai_1.expect)(metadata.schemaName).to.equal("test-schema");
|
|
33
|
+
}
|
|
34
|
+
async function StoreTableNameForMultipleClassesTest() {
|
|
35
|
+
let UserTable = class UserTable extends table_1.Table {
|
|
36
|
+
email;
|
|
37
|
+
name;
|
|
38
|
+
};
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, table_1.Index)(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], UserTable.prototype, "email", void 0);
|
|
43
|
+
UserTable = __decorate([
|
|
44
|
+
(0, schema_1.RegisterTable)("user_table", "multi-schema")
|
|
45
|
+
], UserTable);
|
|
46
|
+
let ProductTable = class ProductTable extends table_1.Table {
|
|
47
|
+
name;
|
|
48
|
+
price;
|
|
49
|
+
};
|
|
50
|
+
__decorate([
|
|
51
|
+
(0, table_1.Index)(),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], ProductTable.prototype, "name", void 0);
|
|
54
|
+
ProductTable = __decorate([
|
|
55
|
+
(0, schema_1.RegisterTable)("product_table", "multi-schema")
|
|
56
|
+
], ProductTable);
|
|
57
|
+
const userMetadata = (0, common_1.getMetadata)(UserTable, common_1.DatumStaticMetadata);
|
|
58
|
+
const productMetadata = (0, common_1.getMetadata)(ProductTable, common_1.DatumStaticMetadata);
|
|
59
|
+
(0, chai_1.expect)(userMetadata.tableName).to.equal("user_table");
|
|
60
|
+
(0, chai_1.expect)(userMetadata.schemaName).to.equal("multi-schema");
|
|
61
|
+
(0, chai_1.expect)(productMetadata.tableName).to.equal("product_table");
|
|
62
|
+
(0, chai_1.expect)(productMetadata.schemaName).to.equal("multi-schema");
|
|
63
|
+
}
|
|
64
|
+
async function PreserveExistingMetadataTest() {
|
|
65
|
+
let IndexedTable = class IndexedTable extends table_1.Table {
|
|
66
|
+
email;
|
|
67
|
+
name;
|
|
68
|
+
};
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, table_1.Index)(),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], IndexedTable.prototype, "email", void 0);
|
|
73
|
+
IndexedTable = __decorate([
|
|
74
|
+
(0, schema_1.RegisterTable)("indexed_table", "preserve-schema")
|
|
75
|
+
], IndexedTable);
|
|
76
|
+
const metadata = (0, common_1.getMetadata)(IndexedTable, common_1.DatumStaticMetadata);
|
|
77
|
+
(0, chai_1.expect)(metadata.tableName).to.equal("indexed_table");
|
|
78
|
+
(0, chai_1.expect)(metadata.schemaName).to.equal("preserve-schema");
|
|
79
|
+
(0, chai_1.expect)(metadata.primary).to.equal("_id");
|
|
80
|
+
(0, chai_1.expect)(metadata.indexes).to.have.property("email");
|
|
81
|
+
}
|
|
82
|
+
async function RegisterTablesInSchemaRegistryTest() {
|
|
83
|
+
let _RegUser = class _RegUser extends table_1.Table {
|
|
84
|
+
};
|
|
85
|
+
_RegUser = __decorate([
|
|
86
|
+
(0, schema_1.RegisterTable)("reg_users", "registry-schema")
|
|
87
|
+
], _RegUser);
|
|
88
|
+
let _RegProduct = class _RegProduct extends table_1.Table {
|
|
89
|
+
};
|
|
90
|
+
_RegProduct = __decorate([
|
|
91
|
+
(0, schema_1.RegisterTable)("reg_products", "registry-schema")
|
|
92
|
+
], _RegProduct);
|
|
93
|
+
const tables = (0, schema_1.getTablesForSchema)("registry-schema");
|
|
94
|
+
(0, chai_1.expect)(tables).to.not.equal(undefined);
|
|
95
|
+
(0, chai_1.expect)(tables).to.have.property("reg_users");
|
|
96
|
+
(0, chai_1.expect)(tables).to.have.property("reg_products");
|
|
97
|
+
}
|
|
98
|
+
async function ReturnUndefinedForUnknownSchemaTest() {
|
|
99
|
+
const tables = (0, schema_1.getTablesForSchema)("nonexistent-schema");
|
|
100
|
+
(0, chai_1.expect)(tables).to.equal(undefined);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=schema.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/tests/schema.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6EAG0D;AAC1D,6EAG0D;AAC1D,2EAA+E;AAC/E,+BAA8B;AAE9B,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE,CAC3D,yCAAyC,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE,CACrD,oCAAoC,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAC9E,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE,CACnD,kCAAkC,EAAE,CAAC,CAAC;IACxC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE,CACpD,mCAAmC,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,yCAAyC;IAEtD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,aAAK;QAC3B,IAAI,CAAU;KACf,CAAA;IAFK,SAAS;QADd,IAAA,sBAAa,EAAC,YAAY,EAAE,aAAa,CAAC;OACrC,SAAS,CAEd;IAED,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,SAAS,EAAE,4BAAmB,CAAC,CAAC;IAC7D,IAAA,aAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClD,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,oCAAoC;IAEjD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,aAAK;QAE3B,KAAK,CAAU;QAEf,IAAI,CAAU;KACf,CAAA;IAHC;QADC,IAAA,aAAK,GAAE;;4CACO;IAFX,SAAS;QADd,IAAA,sBAAa,EAAC,YAAY,EAAE,cAAc,CAAC;OACtC,SAAS,CAKd;IAGD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,aAAK;QAE9B,IAAI,CAAU;QAEd,KAAK,CAAU;KAChB,CAAA;IAHC;QADC,IAAA,aAAK,GAAE;;8CACM;IAFV,YAAY;QADjB,IAAA,sBAAa,EAAC,eAAe,EAAE,cAAc,CAAC;OACzC,YAAY,CAKjB;IAED,MAAM,YAAY,GAAG,IAAA,oBAAW,EAAC,SAAS,EAAE,4BAAmB,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,IAAA,oBAAW,EAAC,YAAY,EAAE,4BAAmB,CAAC,CAAC;IAEvE,IAAA,aAAM,EAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtD,IAAA,aAAM,EAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzD,IAAA,aAAM,EAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAA,aAAM,EAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,4BAA4B;IAEzC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,aAAK;QAE9B,KAAK,CAAU;QAEf,IAAI,CAAU;KACf,CAAA;IAHC;QADC,IAAA,aAAK,GAAE;;+CACO;IAFX,YAAY;QADjB,IAAA,sBAAa,EAAC,eAAe,EAAE,iBAAiB,CAAC;OAC5C,YAAY,CAKjB;IAED,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,YAAY,EAAE,4BAAmB,CAAC,CAAC;IAChE,IAAA,aAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACrD,IAAA,aAAM,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxD,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,kCAAkC;IAE/C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,aAAK;KAAG,CAAA;IAAzB,QAAQ;QADb,IAAA,sBAAa,EAAC,WAAW,EAAE,iBAAiB,CAAC;OACxC,QAAQ,CAAiB;IAG/B,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,aAAK;KAAG,CAAA;IAA5B,WAAW;QADhB,IAAA,sBAAa,EAAC,cAAc,EAAE,iBAAiB,CAAC;OAC3C,WAAW,CAAiB;IAElC,MAAM,MAAM,GAAG,IAAA,2BAAkB,EAAC,iBAAiB,CAAC,CAAC;IACrD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,mCAAmC;IAChD,MAAM,MAAM,GAAG,IAAA,2BAAkB,EAAC,oBAAoB,CAAC,CAAC;IACxD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const common_1 = require("@antelopejs/interface-database-decorators/common");
|
|
13
|
+
const common_2 = require("@antelopejs/interface-database-decorators/modifiers/common");
|
|
14
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
15
|
+
const chai_1 = require("chai");
|
|
16
|
+
describe("Table - decorators", () => {
|
|
17
|
+
it("creates table with default primary key", async () => CreateTableWithDefaultPrimaryKeyTest());
|
|
18
|
+
it("creates table with multiple indexes", async () => CreateTableWithMultipleIndexesTest());
|
|
19
|
+
it("creates table with grouped indexes", async () => CreateTableWithGroupedIndexesTest());
|
|
20
|
+
it("creates table with fixture data", async () => CreateTableWithFixtureDataTest());
|
|
21
|
+
it("combines table with mixins", async () => CombineTableWithMixinsTest());
|
|
22
|
+
});
|
|
23
|
+
async function CreateTableWithDefaultPrimaryKeyTest() {
|
|
24
|
+
class TestTable extends table_1.Table {
|
|
25
|
+
name;
|
|
26
|
+
}
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, table_1.Index)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], TestTable.prototype, "name", void 0);
|
|
31
|
+
const metadata = (0, common_1.getMetadata)(TestTable, common_1.DatumStaticMetadata);
|
|
32
|
+
(0, chai_1.expect)(metadata.primary).to.equal("_id");
|
|
33
|
+
(0, chai_1.expect)(metadata.indexes.name).to.deep.equal(["name"]);
|
|
34
|
+
}
|
|
35
|
+
async function CreateTableWithMultipleIndexesTest() {
|
|
36
|
+
class TestTable extends table_1.Table {
|
|
37
|
+
email;
|
|
38
|
+
age;
|
|
39
|
+
}
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, table_1.Index)(),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], TestTable.prototype, "email", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, table_1.Index)(),
|
|
46
|
+
__metadata("design:type", Number)
|
|
47
|
+
], TestTable.prototype, "age", void 0);
|
|
48
|
+
const metadata = (0, common_1.getMetadata)(TestTable, common_1.DatumStaticMetadata);
|
|
49
|
+
(0, chai_1.expect)(metadata.primary).to.equal("_id");
|
|
50
|
+
(0, chai_1.expect)(metadata.indexes.email).to.deep.equal(["email"]);
|
|
51
|
+
(0, chai_1.expect)(metadata.indexes.age).to.deep.equal(["age"]);
|
|
52
|
+
}
|
|
53
|
+
async function CreateTableWithGroupedIndexesTest() {
|
|
54
|
+
class TestTable extends table_1.Table {
|
|
55
|
+
name;
|
|
56
|
+
email;
|
|
57
|
+
age;
|
|
58
|
+
}
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, table_1.Index)({ group: "user_search" }),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], TestTable.prototype, "name", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, table_1.Index)({ group: "user_search" }),
|
|
65
|
+
__metadata("design:type", String)
|
|
66
|
+
], TestTable.prototype, "email", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, table_1.Index)({ group: "age_range" }),
|
|
69
|
+
__metadata("design:type", Number)
|
|
70
|
+
], TestTable.prototype, "age", void 0);
|
|
71
|
+
const metadata = (0, common_1.getMetadata)(TestTable, common_1.DatumStaticMetadata);
|
|
72
|
+
(0, chai_1.expect)(metadata.primary).to.equal("_id");
|
|
73
|
+
(0, chai_1.expect)(metadata.indexes.user_search).to.deep.equal(["name", "email"]);
|
|
74
|
+
(0, chai_1.expect)(metadata.indexes.age_range).to.deep.equal(["age"]);
|
|
75
|
+
}
|
|
76
|
+
async function CreateTableWithFixtureDataTest() {
|
|
77
|
+
const testData = [
|
|
78
|
+
{ id: "1", name: "Test User 1" },
|
|
79
|
+
{ id: "2", name: "Test User 2" },
|
|
80
|
+
];
|
|
81
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
82
|
+
name;
|
|
83
|
+
};
|
|
84
|
+
TestTable = __decorate([
|
|
85
|
+
(0, table_1.Fixture)(() => testData)
|
|
86
|
+
], TestTable);
|
|
87
|
+
const metadata = (0, common_1.getMetadata)(TestTable, common_1.DatumStaticMetadata);
|
|
88
|
+
(0, chai_1.expect)(metadata.generator).to.be.a("function");
|
|
89
|
+
(0, chai_1.expect)(metadata.primary).to.equal("_id");
|
|
90
|
+
}
|
|
91
|
+
async function CombineTableWithMixinsTest() {
|
|
92
|
+
class TestMixin {
|
|
93
|
+
testMethodUnunvailable() {
|
|
94
|
+
return "This method should be undefined";
|
|
95
|
+
}
|
|
96
|
+
[common_2.MixinSymbol] = class {
|
|
97
|
+
testMethod() {
|
|
98
|
+
return "mixin method ok";
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
class TestTable extends table_1.Table.with(TestMixin) {
|
|
103
|
+
name;
|
|
104
|
+
}
|
|
105
|
+
const instance = new TestTable();
|
|
106
|
+
(0, chai_1.expect)(instance).to.have.property("testMethod");
|
|
107
|
+
(0, chai_1.expect)(instance.testMethod()).to.equal("mixin method ok");
|
|
108
|
+
(0, chai_1.expect)(instance).to.not.have.property("testMethodUnunvailable");
|
|
109
|
+
(0, chai_1.expect)(instance).to.have.property("name");
|
|
110
|
+
(0, chai_1.expect)(instance).to.be.instanceOf(TestTable);
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=table.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.test.js","sourceRoot":"","sources":["../../src/tests/table.test.ts"],"names":[],"mappings":"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"}
|