@antelopejs/interface-database-decorators 0.1.8 → 0.1.10
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 +98 -15
- package/dist/antelope.test.js +1 -1
- package/dist/common.d.ts +2 -1
- package/dist/common.js +5 -1
- package/dist/common.js.map +1 -1
- package/dist/database.js +1 -0
- package/dist/database.js.map +1 -1
- package/dist/modifiers/localization.d.ts +19 -1
- package/dist/modifiers/localization.js +37 -6
- package/dist/modifiers/localization.js.map +1 -1
- package/dist/table.d.ts +8 -0
- package/dist/table.js +2 -1
- package/dist/table.js.map +1 -1
- package/dist/tests/database.test.js +31 -0
- package/dist/tests/database.test.js.map +1 -1
- package/dist/tests/integration.test.js +16 -0
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/modifiers/localization.test.js +37 -0
- package/dist/tests/modifiers/localization.test.js.map +1 -1
- package/docs/1.introduction.md +56 -2
- package/docs/2.table-definitions.md +23 -3
- package/docs/3.table-modifiers.md +45 -18
- package/docs/4.data-models.md +24 -0
- package/docs/5.parameter-decoration.md +4 -0
- package/docs/assets/model-conversion.svg +21 -0
- package/docs/tsconfig.json +10 -0
- package/package.json +15 -10
- package/skills/database-decorators-interface/SKILL.md +4 -0
package/README.md
CHANGED
|
@@ -1,30 +1,113 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @antelopejs/interface-database-decorators
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
|
-
<a href="https://www.npmjs.com/package/@antelopejs/interface-database-decorators"><img src="https://img.shields.io/npm/v/@antelopejs/interface-database-decorators?style=for-the-badge&labelColor=000000&color=000000"
|
|
5
|
-
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/
|
|
6
|
-
<a href="https://discord.gg/sjK28QHrA7"><img src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"
|
|
7
|
-
<a href="
|
|
4
|
+
<a href="https://www.npmjs.com/package/@antelopejs/interface-database-decorators"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/interface-database-decorators?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
5
|
+
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/interface-database-decorators?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
6
|
+
<a href="https://discord.gg/sjK28QHrA7"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
|
|
7
|
+
<a href="https://interfaces.antelopejs.com/docs/database-decorators"><img alt="Docs" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Database tables and data models as TypeScript classes, on top of [`@antelopejs/interface-database`](https://github.com/AntelopeJS/interface-database): declare fields and indexes with decorators, then read and write rows through a typed model.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## What it offers
|
|
13
|
+
|
|
14
|
+
- `Table`, `@RegisterTable`, `@Field`, `@Index` and `@Fixture` declare tables, indexes and seed rows; `RegisterSchema` provisions them.
|
|
15
|
+
- `BasicDataModel` and `GetModel` give each table typed CRUD methods with optional validation.
|
|
16
|
+
- `@Encrypted`, `@Hashed`, `@Localized`, `@CreationTime` and `@UpdateTime` transform field values on write and read.
|
|
17
|
+
- `@Model` injects a model into an [`@antelopejs/interface-api`](https://github.com/AntelopeJS/interface-api) controller.
|
|
18
|
+
|
|
19
|
+
## Implementations
|
|
20
|
+
|
|
21
|
+
The package runs in your module and has no implementing module of its own. The project needs a module that implements `@antelopejs/interface-database`:
|
|
22
|
+
|
|
23
|
+
| Module | Notes |
|
|
24
|
+
| ------------------------------------------------------------------ | --------- |
|
|
25
|
+
| [`@antelopejs/mongodb`](https://github.com/AntelopeJS/mongodb) | MongoDB |
|
|
26
|
+
| [`@antelopejs/rethinkdb`](https://github.com/AntelopeJS/rethinkdb) | RethinkDB |
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
Add the package to the module that declares tables:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pnpm add @antelopejs/interface-database-decorators
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Then add a database module to the project:
|
|
13
37
|
|
|
14
38
|
```bash
|
|
15
|
-
|
|
39
|
+
ajs project modules add @antelopejs/mongodb
|
|
16
40
|
```
|
|
17
41
|
|
|
42
|
+
## Quick start
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import {
|
|
46
|
+
BasicDataModel,
|
|
47
|
+
Field,
|
|
48
|
+
GetModel,
|
|
49
|
+
Index,
|
|
50
|
+
RegisterSchema,
|
|
51
|
+
RegisterTable,
|
|
52
|
+
Table,
|
|
53
|
+
} from "@antelopejs/interface-database-decorators";
|
|
54
|
+
|
|
55
|
+
@RegisterTable("recipes", "cookbook")
|
|
56
|
+
class Recipe extends Table {
|
|
57
|
+
@Index()
|
|
58
|
+
@Field("string")
|
|
59
|
+
declare slug: string;
|
|
60
|
+
|
|
61
|
+
@Field("string")
|
|
62
|
+
declare tagline: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class RecipeModel extends BasicDataModel(Recipe) {}
|
|
66
|
+
|
|
67
|
+
export async function construct() {
|
|
68
|
+
await RegisterSchema("cookbook");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export async function start() {
|
|
72
|
+
const recipes = GetModel(RecipeModel);
|
|
73
|
+
await recipes.insert({ slug: "grilled-halloumi", tagline: "Smoky skewers" });
|
|
74
|
+
const [recipe] = await recipes.getBy("slug", "grilled-halloumi");
|
|
75
|
+
await recipes.update(recipe._id, { tagline: "Smoky halloumi skewers" });
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`RegisterSchema` creates every table registered for the schema and inserts their fixtures. Call it once, in the module that declares the tables.
|
|
80
|
+
|
|
18
81
|
## Documentation
|
|
19
82
|
|
|
20
|
-
|
|
83
|
+
- [Introduction](./docs/1.introduction.md)
|
|
84
|
+
- [Table definitions](./docs/2.table-definitions.md)
|
|
85
|
+
- [Table modifiers](./docs/3.table-modifiers.md)
|
|
86
|
+
- [Data models](./docs/4.data-models.md)
|
|
87
|
+
- [Parameter decoration](./docs/5.parameter-decoration.md)
|
|
88
|
+
|
|
89
|
+
## Compatibility
|
|
90
|
+
|
|
91
|
+
Requires AntelopeJS core `1.x` and the following peer dependencies:
|
|
21
92
|
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
93
|
+
<!-- docs-compat: ./package.json#peerDependencies -->
|
|
94
|
+
|
|
95
|
+
| Package | Range |
|
|
96
|
+
| -------------------------------- | ----------------- |
|
|
97
|
+
| `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` |
|
|
98
|
+
| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` |
|
|
99
|
+
| `@antelopejs/interface-database` | `>=0.1.11 <1.0.0` |
|
|
100
|
+
|
|
101
|
+
## Contributing
|
|
102
|
+
|
|
103
|
+
Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you open a pull request. The local checks are:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
pnpm install
|
|
107
|
+
pnpm lint
|
|
108
|
+
pnpm test
|
|
109
|
+
```
|
|
27
110
|
|
|
28
111
|
## License
|
|
29
112
|
|
|
30
|
-
|
|
113
|
+
[Apache-2.0](./LICENSE)
|
package/dist/antelope.test.js
CHANGED
package/dist/common.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare class DatumStaticMetadata {
|
|
|
18
18
|
schemaName?: string;
|
|
19
19
|
readonly indexes: Record<string, Array<string>>;
|
|
20
20
|
readonly crossInstanceIndexes: Set<string>;
|
|
21
|
+
readonly uniqueIndexes: Set<string>;
|
|
21
22
|
readonly fields: Record<string, FieldType>;
|
|
22
23
|
primary: string;
|
|
23
24
|
generator?: DatumGenerator;
|
|
@@ -25,6 +26,6 @@ export declare class DatumStaticMetadata {
|
|
|
25
26
|
* Schema the table was registered into by `RegisterSchema`.
|
|
26
27
|
*/
|
|
27
28
|
schema?: Schema<any>;
|
|
28
|
-
addIndex(key: string, group: string, isCrossInstance?: boolean): void;
|
|
29
|
+
addIndex(key: string, group: string, isCrossInstance?: boolean, isUnique?: boolean): void;
|
|
29
30
|
}
|
|
30
31
|
export declare function getMetadata<TMetadata, TTarget extends object>(target: TTarget, metadataClass: MetadataClass<TMetadata>, inherit?: boolean): TMetadata;
|
package/dist/common.js
CHANGED
|
@@ -11,6 +11,7 @@ class DatumStaticMetadata {
|
|
|
11
11
|
schemaName;
|
|
12
12
|
indexes = {};
|
|
13
13
|
crossInstanceIndexes = new Set();
|
|
14
|
+
uniqueIndexes = new Set();
|
|
14
15
|
fields = {};
|
|
15
16
|
primary = "_id";
|
|
16
17
|
generator;
|
|
@@ -18,7 +19,7 @@ class DatumStaticMetadata {
|
|
|
18
19
|
* Schema the table was registered into by `RegisterSchema`.
|
|
19
20
|
*/
|
|
20
21
|
schema;
|
|
21
|
-
addIndex(key, group, isCrossInstance = false) {
|
|
22
|
+
addIndex(key, group, isCrossInstance = false, isUnique = false) {
|
|
22
23
|
if (!(group in this.indexes)) {
|
|
23
24
|
this.indexes[group] = [];
|
|
24
25
|
}
|
|
@@ -26,6 +27,9 @@ class DatumStaticMetadata {
|
|
|
26
27
|
if (isCrossInstance) {
|
|
27
28
|
this.crossInstanceIndexes.add(group);
|
|
28
29
|
}
|
|
30
|
+
if (isUnique) {
|
|
31
|
+
this.uniqueIndexes.add(group);
|
|
32
|
+
}
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
35
|
exports.DatumStaticMetadata = DatumStaticMetadata;
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAqEA,kCAsBC;AA9DD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,iEAAiE,CAClE,CAAC;IAEK,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CACN,GAAW,EACX,KAAa,EACb,kBAA2B,KAAK,EAChC,WAAoB,KAAK;QAEzB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;;AAlCH,kDAmCC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAC;IAClE,MAAM,iBAAiB,GACrB,OAAO,IAAI,SAAS;QAClB,CAAC,CAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAEtC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/database.js
CHANGED
|
@@ -49,6 +49,7 @@ function buildIndexDefinitions(metadata) {
|
|
|
49
49
|
indexes[group] = {
|
|
50
50
|
fields: fields.length === 1 && fields[0] === group ? undefined : fields,
|
|
51
51
|
...(metadata.crossInstanceIndexes.has(group) && { crossInstance: true }),
|
|
52
|
+
...(metadata.uniqueIndexes.has(group) && { unique: true }),
|
|
52
53
|
};
|
|
53
54
|
}
|
|
54
55
|
return indexes;
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;;;;AAwBA,wCASC;AAjCD,8DAAiC;AAGjC,uEAA+E;AAG/E,qCAA8C;AAE9C,qCAA4D;AAC5D,+CAA6E;AAK7E;;;;;;;;;GASG;AACI,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,MAAM,GAAG,IAAA,2BAAkB,EAAC,QAAQ,CAAC,CAAC;IAC5C,IAAA,qBAAM,EAAC,MAAM,EAAE,oCAAoC,QAAQ,GAAG,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,2BAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3B,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,MAAmB,EAAE,MAAwB;IAC/D,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAA,oBAAW,EAAC,UAAU,EAAE,4BAAmB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAwB;IACrD,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,UAAU,EAAE,4BAAmB,CAAC,CAAC;QAC9D,UAAU,CAAC,SAAS,CAAC,GAAG;YACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAA6B;IAE7B,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACvE,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type * as DatabaseDev from "@antelopejs/interface-database";
|
|
2
|
+
import { type Constructible } from "../common";
|
|
2
3
|
import { ContainerModifier, MixinSymbol } from "./common";
|
|
3
4
|
type Options = {
|
|
4
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Fallback locale to use when the selected locale has no value, or an
|
|
7
|
+
* empty one.
|
|
8
|
+
*/
|
|
5
9
|
fallbackLocale?: string;
|
|
6
10
|
};
|
|
7
11
|
/**
|
|
@@ -14,6 +18,20 @@ type Options = {
|
|
|
14
18
|
* See {@link ContainerModifier} for the generic modifier.
|
|
15
19
|
*/
|
|
16
20
|
export declare class LocalizationModifier extends ContainerModifier<Record<string, never>, Options> {
|
|
21
|
+
/**
|
|
22
|
+
* The fallback locale of a localized field of a table class.
|
|
23
|
+
*
|
|
24
|
+
* @param TableClass Table class declaring the field
|
|
25
|
+
* @param field Field name
|
|
26
|
+
* @returns The field's `fallbackLocale`, or `undefined` when the field is
|
|
27
|
+
* not localized or declares none
|
|
28
|
+
*/
|
|
29
|
+
static fallbackLocaleOf(TableClass: Constructible, field: string): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Stores an empty text as no text, so that the fallback locale answers for
|
|
32
|
+
* it in queries too (`unlockrequest`).
|
|
33
|
+
*/
|
|
34
|
+
lock(locked_value: Record<string, unknown> | undefined, value: unknown, key: string): Record<string, unknown>;
|
|
17
35
|
unlock(locked_value: Record<string, unknown>, key: string): unknown;
|
|
18
36
|
unlockrequest(data: DatabaseDev.ValueProxy<Record<string, unknown>>, _meta: DatabaseDev.ValueProxy<Record<string, never>>, key: DatabaseDev.ValueProxyOrValue<string>): DatabaseDev.ValueProxy<unknown>;
|
|
19
37
|
[MixinSymbol]: {
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Localized = exports.LocalizationModifier = void 0;
|
|
4
4
|
const decorators_1 = require("@antelopejs/interface-core/decorators");
|
|
5
|
-
const common_1 = require("
|
|
5
|
+
const common_1 = require("../common");
|
|
6
|
+
const common_2 = require("./common");
|
|
7
|
+
/** A text left empty in one language counts as no text in that language. */
|
|
8
|
+
const EMPTY_TEXT = "";
|
|
9
|
+
function withoutEmptyTexts(values) {
|
|
10
|
+
return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== EMPTY_TEXT));
|
|
11
|
+
}
|
|
6
12
|
/**
|
|
7
13
|
* Localization modifier. enables the use of {@link Localized} on table fields.
|
|
8
14
|
*
|
|
@@ -12,10 +18,35 @@ const common_1 = require("./common");
|
|
|
12
18
|
*
|
|
13
19
|
* See {@link ContainerModifier} for the generic modifier.
|
|
14
20
|
*/
|
|
15
|
-
class LocalizationModifier extends
|
|
21
|
+
class LocalizationModifier extends common_2.ContainerModifier {
|
|
22
|
+
/**
|
|
23
|
+
* The fallback locale of a localized field of a table class.
|
|
24
|
+
*
|
|
25
|
+
* @param TableClass Table class declaring the field
|
|
26
|
+
* @param field Field name
|
|
27
|
+
* @returns The field's `fallbackLocale`, or `undefined` when the field is
|
|
28
|
+
* not localized or declares none
|
|
29
|
+
*/
|
|
30
|
+
static fallbackLocaleOf(TableClass, field) {
|
|
31
|
+
const modified = (0, common_1.getMetadata)(TableClass, common_2.ModifiersStaticMetadata).fields[field]?.find(({ id }) => id === LocalizationModifier.name);
|
|
32
|
+
return modified?.modifier?.options
|
|
33
|
+
.fallbackLocale;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Stores an empty text as no text, so that the fallback locale answers for
|
|
37
|
+
* it in queries too (`unlockrequest`).
|
|
38
|
+
*/
|
|
39
|
+
lock(locked_value, value, key) {
|
|
40
|
+
if (key === "*") {
|
|
41
|
+
return value && typeof value === "object"
|
|
42
|
+
? withoutEmptyTexts(value)
|
|
43
|
+
: value;
|
|
44
|
+
}
|
|
45
|
+
return withoutEmptyTexts(super.lock(locked_value, value, key));
|
|
46
|
+
}
|
|
16
47
|
unlock(locked_value, key) {
|
|
17
48
|
const unlocked = super.unlock(locked_value, key);
|
|
18
|
-
if (unlocked !== undefined) {
|
|
49
|
+
if (unlocked !== undefined && unlocked !== EMPTY_TEXT) {
|
|
19
50
|
return unlocked;
|
|
20
51
|
}
|
|
21
52
|
if (this.options.fallbackLocale) {
|
|
@@ -28,7 +59,7 @@ class LocalizationModifier extends common_1.ContainerModifier {
|
|
|
28
59
|
}
|
|
29
60
|
return data.key(key);
|
|
30
61
|
}
|
|
31
|
-
[
|
|
62
|
+
[common_2.MixinSymbol] = class {
|
|
32
63
|
/**
|
|
33
64
|
* Specify which locale to use for accessing some or all localized fields.
|
|
34
65
|
*
|
|
@@ -38,7 +69,7 @@ class LocalizationModifier extends common_1.ContainerModifier {
|
|
|
38
69
|
* @returns `this`
|
|
39
70
|
*/
|
|
40
71
|
localize(locale, fields) {
|
|
41
|
-
(0,
|
|
72
|
+
(0, common_2.unlock)(this, LocalizationModifier, fields, locale);
|
|
42
73
|
return this;
|
|
43
74
|
}
|
|
44
75
|
};
|
|
@@ -52,6 +83,6 @@ exports.LocalizationModifier = LocalizationModifier;
|
|
|
52
83
|
* @param options Localization options.
|
|
53
84
|
*/
|
|
54
85
|
exports.Localized = (0, decorators_1.MakePropertyDecorator)((target, propertyKey, options) => {
|
|
55
|
-
(0,
|
|
86
|
+
(0, common_2.attachModifier)(target.constructor, LocalizationModifier, propertyKey, options || {});
|
|
56
87
|
});
|
|
57
88
|
//# sourceMappingURL=localization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../../src/modifiers/localization.ts"],"names":[],"mappings":";;;AACA,sEAA8E;AAE9E,
|
|
1
|
+
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../../src/modifiers/localization.ts"],"names":[],"mappings":";;;AACA,sEAA8E;AAE9E,sCAA4D;AAC5D,qCAMkB;AAUlB,4EAA4E;AAC5E,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,SAAS,iBAAiB,CACxB,MAA+B;IAE/B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,CACnE,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAa,oBAAqB,SAAQ,0BAGzC;IACC;;;;;;;OAOG;IACI,MAAM,CAAC,gBAAgB,CAC5B,UAAyB,EACzB,KAAa;QAEb,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,UAAU,EAAE,gCAAuB,CAAC,CAAC,MAAM,CACtE,KAAK,CACN,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACtD,OAAQ,QAAQ,EAAE,QAA6C,EAAE,OAAO;aACrE,cAAc,CAAC;IACpB,CAAC;IAED;;;OAGG;IACa,IAAI,CAClB,YAAiD,EACjD,KAAc,EACd,GAAW;QAEX,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBACvC,CAAC,CAAC,iBAAiB,CAAC,KAAgC,CAAC;gBACrD,CAAC,CAAE,KAAiC,CAAC;QACzC,CAAC;QACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;IAEe,MAAM,CAAC,YAAqC,EAAE,GAAW;QACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACtD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEe,aAAa,CAC3B,IAAqD,EACrD,KAAoD,EACpD,GAA0C;QAE1C,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,CAAC,oBAAW,CAAC,GAAG;QACd;;;;;;;WAOG;QACH,QAAQ,CAEN,MAAc,EACd,MAA0B;YAE1B,IAAA,eAAM,EAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH;AA/ED,oDA+EC;AAED;;;;;;GAMG;AACU,QAAA,SAAS,GAAG,IAAA,kCAAqB,EAC5C,CAAC,MAAM,EAAE,WAAW,EAAE,OAAiB,EAAE,EAAE;IACzC,IAAA,uBAAc,EACZ,MAAM,CAAC,WAAW,EAClB,oBAAoB,EACpB,WAAW,EACX,OAAO,IAAI,EAAE,CACd,CAAC;AACJ,CAAC,CACF,CAAC"}
|
package/dist/table.d.ts
CHANGED
|
@@ -67,6 +67,13 @@ export interface IndexOptions {
|
|
|
67
67
|
* For a group, setting it on any field applies it to the whole group.
|
|
68
68
|
*/
|
|
69
69
|
crossInstance?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Refuse a second row of the instance with the same key: the write throws
|
|
72
|
+
* `DuplicateKeyError` from `@antelopejs/interface-database`.
|
|
73
|
+
*
|
|
74
|
+
* For a group, setting it on any field makes the whole group's key unique.
|
|
75
|
+
*/
|
|
76
|
+
unique?: boolean;
|
|
70
77
|
}
|
|
71
78
|
/**
|
|
72
79
|
* Database Table Index decorator.
|
|
@@ -74,6 +81,7 @@ export interface IndexOptions {
|
|
|
74
81
|
* Available options:
|
|
75
82
|
* - `group`: Index name for multi-field indexes.
|
|
76
83
|
* - `crossInstance`: Also keep the index fast for cross-instance queries.
|
|
84
|
+
* - `unique`: Refuse two rows of the instance with the same key.
|
|
77
85
|
*
|
|
78
86
|
* @param options Options
|
|
79
87
|
*/
|
package/dist/table.js
CHANGED
|
@@ -71,12 +71,13 @@ exports.Table = Table;
|
|
|
71
71
|
* Available options:
|
|
72
72
|
* - `group`: Index name for multi-field indexes.
|
|
73
73
|
* - `crossInstance`: Also keep the index fast for cross-instance queries.
|
|
74
|
+
* - `unique`: Refuse two rows of the instance with the same key.
|
|
74
75
|
*
|
|
75
76
|
* @param options Options
|
|
76
77
|
*/
|
|
77
78
|
exports.Index = (0, decorators_1.MakePropertyDecorator)((target, propertyKey, options) => {
|
|
78
79
|
const metadata = (0, common_2.getMetadata)(target.constructor, common_2.DatumStaticMetadata);
|
|
79
|
-
metadata.addIndex(propertyKey, options?.group || propertyKey, options?.crossInstance);
|
|
80
|
+
metadata.addIndex(propertyKey, options?.group || propertyKey, options?.crossInstance, options?.unique);
|
|
80
81
|
});
|
|
81
82
|
/**
|
|
82
83
|
* Database Table Field type decorator.
|
package/dist/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAiC;AAOjC,sEAI+C;AAE/C,+CAAiE;AACjE,qCAAgF;AAQnE,QAAA,eAAe,GAAG,MAAM,EAAE,CAAC;AAC3B,QAAA,cAAc,GAAG,MAAM,EAAE,CAAC;AA2CvC,SAAS,gBAAgB,CACvB,MAA+B;IAE/B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAa,KAAK;IAGhB;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CAEjB,MAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,EAAE,4BAAmB,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAA,qBAAM,EACJ,SAAS,EACT,GAAG,IAAI,CAAC,IAAI,qDAAqD,CAClE,CAAC;QACF,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAA,qBAAM,EACJ,QAAQ,CAAC,MAAM,EACf,GAAG,IAAI,CAAC,IAAI,mDAAmD,QAAQ,CAAC,UAAU,mCAAmC,CACtH,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,IAAI,CAKhB,GAAG,MAAS;QAQZ,MAAM,CAAC,GAAG,MAAM,eAAgB,SAAS,IAAY;SAAG,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM;aACvB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,UAAU,EAAE,CAAC;aAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,oBAAW,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,CAAC,CAAC,SAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpB,CAAC,CAAC,SAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAY,CAAC,CAAC;IAChB,CAAC;CACF;AAtED,sBAsEC;
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ describe("Database - initialization", () => {
|
|
|
23
23
|
it("creates tables with grouped indexes", async () => CreateTablesWithGroupedIndexesTest());
|
|
24
24
|
it("marks a single-field index as cross-instance", async () => MarksSingleFieldIndexCrossInstanceTest());
|
|
25
25
|
it("marks a group index as cross-instance when one member sets it", async () => MarksGroupIndexCrossInstanceTest());
|
|
26
|
+
it("marks a group index as unique when one member sets it", async () => MarksGroupIndexUniqueTest());
|
|
26
27
|
it("leaves index definitions unchanged without crossInstance", async () => LeavesIndexDefinitionsUnchangedTest());
|
|
27
28
|
it("creates tables with fixture data", async () => CreateTablesWithFixtureDataTest());
|
|
28
29
|
it("handles multiple tables", async () => HandleMultipleTablesTest());
|
|
@@ -135,6 +136,36 @@ async function MarksGroupIndexCrossInstanceTest() {
|
|
|
135
136
|
age_range: { fields: ["age"] },
|
|
136
137
|
});
|
|
137
138
|
}
|
|
139
|
+
async function MarksGroupIndexUniqueTest() {
|
|
140
|
+
let _TestTable = class _TestTable extends table_1.Table {
|
|
141
|
+
};
|
|
142
|
+
__decorate([
|
|
143
|
+
(0, table_1.Index)({ unique: true }),
|
|
144
|
+
__metadata("design:type", String)
|
|
145
|
+
], _TestTable.prototype, "slug", void 0);
|
|
146
|
+
__decorate([
|
|
147
|
+
(0, table_1.Index)({ group: "full_name" }),
|
|
148
|
+
__metadata("design:type", String)
|
|
149
|
+
], _TestTable.prototype, "lastName", void 0);
|
|
150
|
+
__decorate([
|
|
151
|
+
(0, table_1.Index)({ group: "full_name", unique: true }),
|
|
152
|
+
__metadata("design:type", String)
|
|
153
|
+
], _TestTable.prototype, "firstName", void 0);
|
|
154
|
+
__decorate([
|
|
155
|
+
(0, table_1.Index)(),
|
|
156
|
+
__metadata("design:type", Number)
|
|
157
|
+
], _TestTable.prototype, "age", void 0);
|
|
158
|
+
_TestTable = __decorate([
|
|
159
|
+
(0, schema_1.RegisterTable)("unique_group", "test-unique-group-schema")
|
|
160
|
+
], _TestTable);
|
|
161
|
+
await (0, database_1.RegisterSchema)("test-unique-group-schema");
|
|
162
|
+
const indexes = getIndexDefinitions("test-unique-group-schema", "unique_group");
|
|
163
|
+
(0, chai_1.expect)(indexes).to.deep.equal({
|
|
164
|
+
slug: { fields: undefined, unique: true },
|
|
165
|
+
full_name: { fields: ["lastName", "firstName"], unique: true },
|
|
166
|
+
age: { fields: undefined },
|
|
167
|
+
});
|
|
168
|
+
}
|
|
138
169
|
async function LeavesIndexDefinitionsUnchangedTest() {
|
|
139
170
|
let _TestTable = class _TestTable extends table_1.Table {
|
|
140
171
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.test.js","sourceRoot":"","sources":["../../src/tests/database.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.test.js","sourceRoot":"","sources":["../../src/tests/database.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const hash_1 = require("@antelopejs/interface-database-decorators/modifiers/hash
|
|
|
18
18
|
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
19
19
|
const encryption_1 = require("@antelopejs/interface-database-decorators/modifiers/encryption");
|
|
20
20
|
const localization_1 = require("@antelopejs/interface-database-decorators/modifiers/localization");
|
|
21
|
+
const common_1 = require("@antelopejs/interface-database-decorators/modifiers/common");
|
|
21
22
|
const codec_helpers_1 = require("./codec_helpers");
|
|
22
23
|
function getDatabase(schemaId) {
|
|
23
24
|
const instance = interface_database_1.Schema.get(schemaId)?.instance();
|
|
@@ -272,6 +273,21 @@ async function HandleLocalizedContentTest() {
|
|
|
272
273
|
(0, chai_1.expect)(germanContent.title).to.equal("English Title");
|
|
273
274
|
(0, chai_1.expect)(germanContent.description).to.equal("English Description");
|
|
274
275
|
}
|
|
276
|
+
const untranslated = new LocalizedContent();
|
|
277
|
+
untranslated._id = "content-untranslated";
|
|
278
|
+
untranslated.category = "News";
|
|
279
|
+
untranslated.localize("en").title = "Only English";
|
|
280
|
+
untranslated.localize("fr").title = "";
|
|
281
|
+
await contentModel.insert(untranslated);
|
|
282
|
+
const stored = await contentModel.get("content-untranslated");
|
|
283
|
+
(0, chai_1.expect)(stored?.localize("fr").title).to.equal("Only English");
|
|
284
|
+
const frenchTitles = await LocalizedContent.table(schemaInstance)
|
|
285
|
+
.filter((row) => row.key("_id").eq("content-untranslated"))
|
|
286
|
+
.map((row) => (0, common_1.unlockrequest)(LocalizedContent, row, "title", [
|
|
287
|
+
{ modifier: localization_1.LocalizationModifier, args: ["fr"] },
|
|
288
|
+
]))
|
|
289
|
+
.run();
|
|
290
|
+
(0, chai_1.expect)(frenchTitles).to.deep.equal(["Only English"]);
|
|
275
291
|
}
|
|
276
292
|
async function ManageEncryptedSensitiveDataTest() {
|
|
277
293
|
let SensitiveData = class SensitiveData extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,uEAAwD;AACxD,6EAAiF;AAEjF,iFAAoF;AACpF,2EAGyD;AACzD,mFAGkE;AAClE,2EAKyD;AACzD,+FAGwE;AACxE,mGAG0E;AAC1E,uFAA2F;AAE3F,mDAA2D;AAE3D,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,QAAQ,GAAG,2BAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE,CACvD,mCAAmC,EAAE,CAAC,CAAC;IACzC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE,CACpD,mCAAmC,EAAE,CAAC,CAAC;IACzC,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAC1E,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE,CAChD,gCAAgC,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAC5E,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE,CAC9C,8BAA8B,EAAE,CAAC,CAAC;IACpC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAC7C,8BAA8B,EAAE,CAAC,CAAC;IACpC,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACxE,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE,CAC/C,gCAAgC,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE,CACxD,2BAA2B,EAAE,CAAC,CAAC;IACjC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE,CACzD,2BAA2B,EAAE,CAAC,CAAC;IACjC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE,CACxD,2BAA2B,EAAE,CAAC,CAAC;IACjC,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE,CAClF,kCAAkC,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,2BAA2B;IAExC,IAAM,EAAE,GAAR,MAAM,EAAG,SAAQ,aAAK;KAGrB,CAAA;IADS;QADP,IAAA,aAAK,EAAC,IAAA,2BAAW,EAAC,2BAAW,CAAC,CAAC;;mCACZ;IAFhB,EAAE;QADP,IAAA,sBAAa,EAAC,cAAc,EAAE,oBAAoB,CAAC;OAC9C,EAAE,CAGP;IACD,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC9C,MAAM,IAAA,yBAAc,EAAC,oBAAoB,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,MAAM,GAAI,CAAuC,CAAC,MAAM,CAAC;QAC/D,IAAA,aAAM,EAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,2BAA2B;IAExC,IAAM,EAAE,GAAR,MAAM,EAAG,SAAQ,aAAK;KAGrB,CAAA;IADS;QADP,IAAA,aAAK,EAAC,IAAA,2BAAW,EAAC,2BAAW,CAAC,CAAC;;mCACZ;IAFhB,EAAE;QADP,IAAA,sBAAa,EAAC,aAAa,EAAE,oBAAoB,CAAC;OAC7C,EAAE,CAGP;IACD,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC7C,MAAM,IAAA,yBAAc,EAAC,oBAAoB,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,2BAA2B;IAExC,IAAM,EAAE,GAAR,MAAM,EAAG,SAAQ,aAAK;KAGrB,CAAA;IADS;QADP,IAAA,aAAK,EAAC,IAAA,2BAAW,EAAC,2BAAW,CAAC,CAAC;;mCACZ;IAFhB,EAAE;QADP,IAAA,sBAAa,EAAC,cAAc,EAAE,oBAAoB,CAAC;OAC9C,EAAE,CAGP;IACD,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC9C,MAAM,IAAA,yBAAc,EAAC,oBAAoB,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAS,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5D,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,EAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,CAAC;QACb,IAAA,aAAM,EAAE,CAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IACD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,kCAAkC;IAE/C,IAAM,EAAE,GAAR,MAAM,EAAG,SAAQ,aAAK;KAKrB,CAAA;IAHS;QADP,IAAA,aAAK,EAAC,IAAA,2BAAW,EAAC,2BAAW,CAAC,CAAC;;mCACZ;IAEZ;QADP,IAAA,aAAK,EAAC,IAAA,2BAAW,EAAC,2BAAW,CAAC,CAAC;;qCACV;IAJlB,EAAE;QADP,IAAA,sBAAa,EAAC,kBAAkB,EAAE,oBAAoB,CAAC;OAClD,EAAE,CAKP;IACD,MAAM,EAAE,GAAG,IAAA,sBAAc,EAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAClD,MAAM,IAAA,yBAAc,EAAC,oBAAoB,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAS,CAAC,CAAC;IACpE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAY,EAAE,EAAE,GAAG,EAAE,EAAE,EAAS,EAAE;QACnE,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,mCAAmC;IAEhD,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,aAAK,CAAC,IAAI,CAAC,mBAAY,EAAE,+BAAkB,CAAC;KAY9D,CAAA;IAVS;QADP,IAAA,aAAK,GAAE;;uCACc;IAGd;QADP,IAAA,aAAM,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;;0CACP;IAGjB;QADP,IAAA,sBAAS,EAAC,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC;;4CACjB;IARxC,IAAI;QADT,IAAA,sBAAa,EAAC,OAAO,EAAE,8BAA8B,CAAC;OACjD,IAAI,CAYT;IAED,MAAM,SAAS,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEhD,MAAM,IAAA,yBAAc,EAAC,8BAA8B,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,WAAW,CAAC,8BAA8B,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,mBAAmB;QAC7B,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;QACzC,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,EAAE;KACR,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,sBAAsB,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,yBAAyB,GAAG,MAAM,cAAc;SACnD,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,MAAM,CAAC;SACX,GAAG,EAAE,CAAC;IAET,IAAA,aAAM,EAAC,sBAAsB,CAAC;SAC3B,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;SACzB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnC,IAAA,aAAM,EAAC,sBAAsB,CAAC;SAC3B,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;SACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,IAAA,aAAM,EAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,IAAA,aAAM,EAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3E,IAAA,aAAM,EAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;QACvD,KAAK,EAAE,kBAAkB;KAC1B,CAAC,CAAC;IACH,IAAA,aAAM,EAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9D,KAAK,EAAE,kBAAkB;KAC1B,CAAC,CAAC;IAEH,IAAI,sBAAsB,EAAE,QAAQ,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,sBAAsB,CAAC,QAAQ,CACrD,UAAU,EACV,mBAAmB,CACpB,CAAC;QACF,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAKpE,CAAC;IACF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACzE,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,mCAAmC;IAEhD,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,aAAK;KAU1B,CAAA;IARS;QADP,IAAA,aAAK,GAAE;;yCACa;IAGb;QADP,IAAA,aAAK,GAAE;;6CACiB;IALrB,OAAO;QADZ,IAAA,sBAAa,EAAC,UAAU,EAAE,yBAAyB,CAAC;OAC/C,OAAO,CAUZ;IAED,MAAM,YAAY,GAAG,IAAA,sBAAc,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEzD,MAAM,IAAA,yBAAc,EAAC,yBAAyB,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAElC,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC9E,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtE,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACvD,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEjD,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzD,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEzE,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzD,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,0BAA0B;IAEvC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,aAAK,CAAC,IAAI,CAAC,mCAAoB,CAAC;KAQ9D,CAAA;IAJS;QADP,IAAA,wBAAS,EAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;mDACd;IAGd;QADP,IAAA,wBAAS,EAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;yDACR;IAPxB,gBAAgB;QADrB,IAAA,sBAAa,EAAC,mBAAmB,EAAE,yBAAyB,CAAC;OACxD,gBAAgB,CAQrB;IAED,MAAM,YAAY,GAAG,IAAA,sBAAc,EAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAE3E,MAAM,IAAA,yBAAc,EAAC,yBAAyB,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACvC,OAAO,CAAC,GAAG,GAAG,aAAa,CAAC;IAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,qBAAqB,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,oBAAoB,CAAC;IAE1D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAElC,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACzD,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1E,IAAI,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrD,IAAA,aAAM,EAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEjE,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvD,IAAA,aAAM,EAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACvD,IAAA,aAAM,EAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAEnE,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,YAAY,CAAC,GAAG,GAAG,sBAAsB,CAAC;IAC1C,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;IACnD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;IACvC,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC9D,IAAA,aAAM,EAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;SAC9D,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,IAAA,sBAAa,EAAC,gBAAgB,EAAE,GAAG,EAAE,OAAO,EAAE;QAC5C,EAAE,QAAQ,EAAE,mCAAoB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;KACjD,CAAC,CACH;SACA,GAAG,EAAE,CAAC;IACT,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,gCAAgC;IAE7C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,aAAK,CAAC,IAAI,CAAC,+BAAkB,CAAC;KAQzD,CAAA;IANS;QADP,IAAA,sBAAS,EAAC,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC;;qDAClC;IAGnB;QADP,IAAA,sBAAS,EAAC,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC;;8CACzC;IALhB,aAAa;QADlB,IAAA,sBAAa,EAAC,gBAAgB,EAAE,4BAA4B,CAAC;OACxD,aAAa,CAQlB;IAED,MAAM,kBAAkB,GAAG,IAAA,sBAAc,EAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAE3E,MAAM,IAAA,yBAAc,EAAC,4BAA4B,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG;QACpB,UAAU,EAAE,qBAAqB;QACjC,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxE,IAAA,aAAM,EAAC,aAAa,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAClE,IAAA,aAAM,EAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc;SACjC,KAAK,CAAC,gBAAgB,CAAC;SACvB,GAAG,CAAC,MAAM,CAAC;SACX,GAAG,EAAE,CAIP,CAAC;IACF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjE,IAAA,aAAM,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAA,aAAM,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,2BAA2B;IAExC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,aAAK,CAAC,IAAI,CAAC,mBAAY,CAAC;KAQjD,CAAA;IANS;QADP,IAAA,aAAK,GAAE;;iDACiB;IAGjB;QADP,IAAA,aAAM,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;;iDACP;IALrB,WAAW;QADhB,IAAA,sBAAa,EAAC,eAAe,EAAE,yBAAyB,CAAC;OACpD,WAAW,CAQhB;IAED,MAAM,gBAAgB,GAAG,IAAA,sBAAc,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAEtE,MAAM,IAAA,yBAAc,EAAC,yBAAyB,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG;QAClB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,qBAAqB;QAC/B,KAAK,EAAE,kBAAkB;KAC1B,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAElC,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/D,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9E,IAAA,aAAM,EAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEvE,IAAI,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAC/C,UAAU,EACV,qBAAqB,CACtB,CAAC;QACF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CACjD,UAAU,EACV,eAAe,CAChB,CAAC;QAEF,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B;IAE3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;KAK7B,CAAA;IAHS;QADP,IAAA,aAAK,GAAE;;6CACc;IAFlB,UAAU;QADf,IAAA,sBAAa,EAAC,cAAc,EAAE,wBAAwB,CAAC;OAClD,UAAU,CAKf;IAGD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,aAAK;KAKhC,CAAA;IAHS;QADP,IAAA,aAAK,GAAE;;+CACa;IAFjB,aAAa;QADlB,IAAA,sBAAa,EAAC,iBAAiB,EAAE,wBAAwB,CAAC;OACrD,aAAa,CAKlB;IAED,MAAM,IAAA,yBAAc,EAAC,wBAAwB,CAAC,CAAC;IAE/C,MAAM,cAAc,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAA,sBAAc,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAA,sBAAc,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAClE,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAE3D,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE7D,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,IAAA,aAAM,EAAC,aAAa,CAAC;SAClB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;SACzB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnC,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,8BAA8B;IAE3C,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,aAAK;KASxB,CAAA;IAPS;QADP,IAAA,aAAK,GAAE;;6CACmB;IAGnB;QADP,IAAA,aAAK,GAAE;kCACW,IAAI;4CAAC;IALpB,KAAK;QADV,IAAA,sBAAa,EAAC,QAAQ,EAAE,wBAAwB,CAAC;OAC5C,KAAK,CASV;IAGD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,aAAK;KAS5B,CAAA;IAPS;QADP,IAAA,aAAK,GAAE;;8CACgB;IAGhB;QADP,IAAA,aAAK,GAAE;;gDACkB;IALtB,SAAS;QADd,IAAA,sBAAa,EAAC,aAAa,EAAE,wBAAwB,CAAC;OACjD,SAAS,CASd;IAED,MAAM,UAAU,GAAG,IAAA,sBAAc,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,IAAA,sBAAc,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEhE,MAAM,IAAA,yBAAc,EAAC,wBAAwB,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE/B,MAAM,cAAc,GAAG;QACrB,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;QACjE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;KAClE,CAAC;IAEF,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACrE,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3C,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrD,IAAA,aAAM,EAAC,cAAc,CAAC;SACnB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;SAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACrC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,yBAAyB;IAEtC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,aAAK;KAM9B,CAAA;IAJS;QADP,IAAA,aAAK,GAAE;;iDACiB;IAFrB,WAAW;QADhB,IAAA,sBAAa,EAAC,eAAe,EAAE,yBAAyB,CAAC;OACpD,WAAW,CAMhB;IAED,MAAM,gBAAgB,GAAG,IAAA,sBAAc,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAEtE,MAAM,IAAA,yBAAc,EAAC,yBAAyB,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG;QACf,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;QAC5D,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;QACtD,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;QACtD,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;KAC1D,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACpD,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACtC,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,mBAAmB,GAAG,MAAM,gBAAgB,CAAC,KAAK,CACtD,UAAU,EACV,aAAa,CACd,CAAC;IACF,IAAA,aAAM,EAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAA,aAAM,EAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxE,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACxC,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,gCAAgC;IAM7C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,aAAK;KAK9B,CAAA;IAHS;QADP,IAAA,aAAK,GAAE;;8CACc;IAFlB,WAAW;QALhB,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC;YACb,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE;YAClE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE;SACnE,CAAC;QACD,IAAA,sBAAa,EAAC,eAAe,EAAE,4BAA4B,CAAC;OACvD,WAAW,CAKhB;IAED,MAAM,IAAA,yBAAc,EAAC,4BAA4B,CAAC,CAAC;IAEnD,MAAM,cAAc,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,IAAA,sBAAc,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACtE,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACjD,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -17,6 +17,9 @@ describe("Modifiers - localization", () => {
|
|
|
17
17
|
it("stores multiple locale values", async () => StoreMultipleLocaleValuesTest());
|
|
18
18
|
it("retrieves specific locale value", async () => RetrieveSpecificLocaleValueTest());
|
|
19
19
|
it("falls back to default locale", async () => FallbackToDefaultLocaleTest());
|
|
20
|
+
it("reads the fallback locale of a field", async () => ReadFallbackLocaleOfFieldTest());
|
|
21
|
+
it("falls back for an empty value", async () => FallbackForEmptyValueTest());
|
|
22
|
+
it("stores an empty value as no value", async () => StoreEmptyValueAsAbsentTest());
|
|
20
23
|
it("handles missing locale gracefully", async () => HandleMissingLocaleGracefullyTest());
|
|
21
24
|
it("provides localize method through mixin", async () => ProvideLocalizeMethodTest());
|
|
22
25
|
it("handles localization decorator", async () => HandleLocalizationDecoratorTest());
|
|
@@ -77,6 +80,40 @@ async function FallbackToDefaultLocaleTest() {
|
|
|
77
80
|
const missingValue = modifier.unlock(data, "es");
|
|
78
81
|
(0, chai_1.expect)(missingValue).to.equal("Hello World");
|
|
79
82
|
}
|
|
83
|
+
async function ReadFallbackLocaleOfFieldTest() {
|
|
84
|
+
class TestTable extends table_1.Table.with(localization_1.LocalizationModifier) {
|
|
85
|
+
}
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, localization_1.Localized)({ fallbackLocale: "fr" }),
|
|
88
|
+
(0, table_1.Field)("string"),
|
|
89
|
+
__metadata("design:type", String)
|
|
90
|
+
], TestTable.prototype, "title", void 0);
|
|
91
|
+
__decorate([
|
|
92
|
+
(0, localization_1.Localized)(),
|
|
93
|
+
(0, table_1.Field)("string"),
|
|
94
|
+
__metadata("design:type", String)
|
|
95
|
+
], TestTable.prototype, "summary", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, table_1.Field)("string"),
|
|
98
|
+
__metadata("design:type", String)
|
|
99
|
+
], TestTable.prototype, "code", void 0);
|
|
100
|
+
(0, chai_1.expect)(localization_1.LocalizationModifier.fallbackLocaleOf(TestTable, "title")).to.equal("fr");
|
|
101
|
+
(0, chai_1.expect)(localization_1.LocalizationModifier.fallbackLocaleOf(TestTable, "summary")).to.equal(undefined);
|
|
102
|
+
(0, chai_1.expect)(localization_1.LocalizationModifier.fallbackLocaleOf(TestTable, "code")).to.equal(undefined);
|
|
103
|
+
}
|
|
104
|
+
async function FallbackForEmptyValueTest() {
|
|
105
|
+
const modifier = new TestableLocalizationModifier();
|
|
106
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
107
|
+
(0, chai_1.expect)(modifier.unlock({ en: "Hello", fr: "" }, "fr")).to.equal("Hello");
|
|
108
|
+
}
|
|
109
|
+
async function StoreEmptyValueAsAbsentTest() {
|
|
110
|
+
const modifier = new TestableLocalizationModifier();
|
|
111
|
+
modifier.setOptions({ fallbackLocale: "en" });
|
|
112
|
+
const cleared = modifier.lock({ en: "Hello", fr: "Bonjour" }, "", "fr");
|
|
113
|
+
const everyLanguage = modifier.lock(undefined, { en: "Hello", fr: "" }, "*");
|
|
114
|
+
(0, chai_1.expect)(cleared).to.deep.equal({ en: "Hello" });
|
|
115
|
+
(0, chai_1.expect)(everyLanguage).to.deep.equal({ en: "Hello" });
|
|
116
|
+
}
|
|
80
117
|
async function HandleMissingLocaleGracefullyTest() {
|
|
81
118
|
const modifier = new TestableLocalizationModifier();
|
|
82
119
|
modifier.setOptions({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localization.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/localization.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"localization.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/localization.test.ts"],"names":[],"mappings":"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"}
|
package/docs/1.introduction.md
CHANGED
|
@@ -1,8 +1,62 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Define tables and work with models
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Use `@antelopejs/interface-database-decorators` to describe tables with TypeScript classes and work with converted records through models. It builds on AQL (`@antelopejs/interface-database`) and adds field modifiers and API model injection.
|
|
6
|
+
|
|
7
|
+
## From a table class to a stored record
|
|
8
|
+
|
|
9
|
+
1. **Describe the table.** Extend `Table`, declare fields and indexes, and register the class with `@RegisterTable("users", "myapp")`. See [table definitions](./2.table-definitions.md).
|
|
10
|
+
2. **Bind the schema.** Import the table declarations, then call `await RegisterSchema("myapp")` from their declaring module. This requires a configured database provider and can provision tables and insert fixtures; it is not a read-only metadata operation.
|
|
11
|
+
3. **Create the model.** Use `BasicDataModel(User)` and a `SchemaInstance`, or `GetModel` after the table has been bound. See [data models](./4.data-models.md).
|
|
12
|
+
4. **Write and read through the model.** Model operations apply conversion and modifier events. Use `model.table` when you need to compose an AQL query yourself.
|
|
13
|
+
|
|
14
|
+
Keep schema IDs and instance IDs distinct: `myapp` identifies the table definitions; an instance ID selects the database instance used by a model. A table class without a schema binding cannot be resolved by `GetModel`.
|
|
15
|
+
|
|
16
|
+
### Save and retrieve a note
|
|
17
|
+
|
|
18
|
+
In a module with a configured database provider, import this declaration before calling `tryNote()` during initialization. Use a disposable development database: `RegisterSchema` provisions the schema, and `insert` writes data.
|
|
19
|
+
|
|
20
|
+
```ts docs-check
|
|
21
|
+
import {
|
|
22
|
+
BasicDataModel,
|
|
23
|
+
Field,
|
|
24
|
+
GetModel,
|
|
25
|
+
RegisterSchema,
|
|
26
|
+
RegisterTable,
|
|
27
|
+
Table,
|
|
28
|
+
} from "@antelopejs/interface-database-decorators";
|
|
29
|
+
|
|
30
|
+
@RegisterTable("notes", "notes-demo")
|
|
31
|
+
class Note extends Table {
|
|
32
|
+
@Field("string")
|
|
33
|
+
declare title: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
class NoteModel extends BasicDataModel(Note) {}
|
|
37
|
+
|
|
38
|
+
export async function tryNote() {
|
|
39
|
+
await RegisterSchema("notes-demo");
|
|
40
|
+
const notes = GetModel(NoteModel);
|
|
41
|
+
const [id] = await notes.insert({ title: "Learn models" });
|
|
42
|
+
const saved = await notes.get(id);
|
|
43
|
+
if (!saved) throw new Error("The inserted note was not found");
|
|
44
|
+
return saved.title; // "Learn models"
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The model uses the default instance of the schema bound to `Note`. Keep the inserted ID when extending this exercise with `update` or `delete`; each successful run inserts a new note. In an application, register the schema once during initialization rather than on each request.
|
|
49
|
+
|
|
50
|
+
## Choose the layer for your task
|
|
51
|
+
|
|
52
|
+
| Task | Layer | Important boundary |
|
|
53
|
+
| ----------------------------------- | --------------------------------------------------- | ---------------------------------------------------------------- |
|
|
54
|
+
| Describe storage fields and indexes | [Table definitions](./2.table-definitions.md) | Declaring a class is separate from registering its schema. |
|
|
55
|
+
| Encrypt, hash, or localize fields | [Table modifiers](./3.table-modifiers.md) | Conversion events determine when transformations run. |
|
|
56
|
+
| Read or write converted records | [Data models](./4.data-models.md) | Reads return converted records, not chainable queries. |
|
|
57
|
+
| Select a model in an HTTP request | [Parameter decoration](./5.parameter-decoration.md) | The instance ID selects a binding; it does not authorize access. |
|
|
58
|
+
|
|
59
|
+
Start without modifiers until the schema and model work together. Add validation explicitly: string-token `@Field` declarations describe storage, while codec validation requires codecs and the model's validation options.
|
|
6
60
|
|
|
7
61
|
## Dependencies
|
|
8
62
|
|
|
@@ -30,17 +30,22 @@ import {
|
|
|
30
30
|
Encrypted,
|
|
31
31
|
} from "@antelopejs/interface-database-decorators";
|
|
32
32
|
|
|
33
|
+
const secretKey = process.env.ENCRYPTION_KEY;
|
|
34
|
+
if (!secretKey || Buffer.byteLength(secretKey, "utf8") !== 32) {
|
|
35
|
+
throw new Error("ENCRYPTION_KEY must contain exactly 32 UTF-8 bytes");
|
|
36
|
+
}
|
|
37
|
+
|
|
33
38
|
class SensitiveData extends Table.with(EncryptionModifier) {
|
|
34
39
|
@Field("string")
|
|
35
40
|
declare publicContent: string;
|
|
36
41
|
|
|
37
|
-
@Encrypted({ secretKey
|
|
42
|
+
@Encrypted({ secretKey })
|
|
38
43
|
@Field("string")
|
|
39
44
|
declare secureContent: string;
|
|
40
45
|
}
|
|
41
46
|
```
|
|
42
47
|
|
|
43
|
-
|
|
48
|
+
Provide a high-entropy key through your secret manager; do not use a default key. See [Table Modifiers](./3.table-modifiers.md#encryptionmodifier) for key format and date precision constraints.
|
|
44
49
|
|
|
45
50
|
## The Index Decorator
|
|
46
51
|
|
|
@@ -65,6 +70,7 @@ class User extends Table {
|
|
|
65
70
|
| --------------- | --------- | ------------------------------------------------------------------- |
|
|
66
71
|
| `group` | `string` | Assign the field to a named compound index group. |
|
|
67
72
|
| `crossInstance` | `boolean` | Also keep the index fast for queries that run across all instances. |
|
|
73
|
+
| `unique` | `boolean` | Refuse two rows of the instance with the same key. |
|
|
68
74
|
|
|
69
75
|
### Cross-Instance Indexes
|
|
70
76
|
|
|
@@ -82,6 +88,20 @@ class User extends Table {
|
|
|
82
88
|
|
|
83
89
|
For a compound index, setting `crossInstance: true` on any field of the group applies it to the whole group.
|
|
84
90
|
|
|
91
|
+
### Unique Indexes
|
|
92
|
+
|
|
93
|
+
Set `unique: true` to refuse a second row with the same key in one instance. The write that would store it throws `DuplicateKeyError` from `@antelopejs/interface-database`, naming the index and its fields; test it with `IsDuplicateKeyError`. Rows of different instances may share a key.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
class Template extends Table {
|
|
97
|
+
@Index({ unique: true })
|
|
98
|
+
@Field("string")
|
|
99
|
+
declare slug: string;
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
For a compound index, setting `unique: true` on any field of the group makes the whole group's key unique. Not every database module can enforce unique secondary indexes: one that cannot refuses the schema rather than ignoring the option.
|
|
104
|
+
|
|
85
105
|
### Compound Indexes
|
|
86
106
|
|
|
87
107
|
Assign multiple fields to the same index group to create a compound index:
|
|
@@ -161,7 +181,7 @@ class Comment extends Table {
|
|
|
161
181
|
@Relation({ to: () => Post })
|
|
162
182
|
declare postId: string;
|
|
163
183
|
|
|
164
|
-
@Field("string")
|
|
184
|
+
@Field(["string"])
|
|
165
185
|
@Relation({ to: () => Tag, many: true })
|
|
166
186
|
declare tagIds: string[];
|
|
167
187
|
}
|
|
@@ -8,7 +8,9 @@ Table modifiers transform field values as they are stored in and retrieved from
|
|
|
8
8
|
|
|
9
9
|
The `EncryptionModifier` encrypts field values before storing them and decrypts them on retrieval. Both operations happen transparently.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The default `aes-256-gcm` algorithm requires a key of exactly 32 bytes. `secretKey` is passed to Node's cipher as a UTF-8 string, without hex or base64 decoding. Supply a high-entropy, 32-byte UTF-8 value from a secret manager, keep it stable for existing ciphertext, and fail startup if it is missing or invalid; a 64-character hex encoding is not a 32-byte key for this API.
|
|
12
|
+
|
|
13
|
+
```ts docs-check
|
|
12
14
|
import {
|
|
13
15
|
Table,
|
|
14
16
|
Field,
|
|
@@ -16,16 +18,21 @@ import {
|
|
|
16
18
|
Encrypted,
|
|
17
19
|
} from "@antelopejs/interface-database-decorators";
|
|
18
20
|
|
|
21
|
+
const secretKey = process.env.ENCRYPTION_KEY;
|
|
22
|
+
if (!secretKey || Buffer.byteLength(secretKey, "utf8") !== 32) {
|
|
23
|
+
throw new Error("ENCRYPTION_KEY must contain exactly 32 UTF-8 bytes");
|
|
24
|
+
}
|
|
25
|
+
|
|
19
26
|
class UserCredentials extends Table.with(EncryptionModifier) {
|
|
20
27
|
@Encrypted({
|
|
21
|
-
secretKey
|
|
28
|
+
secretKey,
|
|
22
29
|
algorithm: "aes-256-gcm",
|
|
23
30
|
ivSize: 16,
|
|
24
31
|
})
|
|
25
32
|
@Field("string")
|
|
26
33
|
declare creditCardNumber: string;
|
|
27
34
|
|
|
28
|
-
@Encrypted({ secretKey
|
|
35
|
+
@Encrypted({ secretKey })
|
|
29
36
|
@Field("any")
|
|
30
37
|
declare personalData: {
|
|
31
38
|
ssn: string;
|
|
@@ -40,7 +47,7 @@ class UserCredentials extends Table.with(EncryptionModifier) {
|
|
|
40
47
|
- A random initialization vector (IV) is generated for each write.
|
|
41
48
|
- For authenticated encryption algorithms (e.g., `aes-256-gcm`), an auth tag is stored alongside the ciphertext.
|
|
42
49
|
- On retrieval, the data is automatically decrypted.
|
|
43
|
-
- Date objects are
|
|
50
|
+
- Date objects are restored as `Date` instances, but the encoder uses `toUTCString()`, which drops milliseconds. Encrypted dates round-trip only to whole-second precision.
|
|
44
51
|
|
|
45
52
|
#### Options
|
|
46
53
|
|
|
@@ -52,7 +59,7 @@ class UserCredentials extends Table.with(EncryptionModifier) {
|
|
|
52
59
|
|
|
53
60
|
### HashModifier
|
|
54
61
|
|
|
55
|
-
The `HashModifier` stores a one-way hash of field values. Unlike encryption, hashing is irreversible -- you cannot retrieve the original value.
|
|
62
|
+
The `HashModifier` stores a salted one-way hash of field values. Unlike encryption, hashing is irreversible -- you cannot retrieve the original value. Its default SHA-256 hash is fast, not a password-hardening function; use a dedicated password hashing library for production credentials.
|
|
56
63
|
|
|
57
64
|
```typescript
|
|
58
65
|
import {
|
|
@@ -88,6 +95,8 @@ class User extends Table.with(HashModifier) {
|
|
|
88
95
|
| ----------- | -------- | ---------- | ------------------ |
|
|
89
96
|
| `algorithm` | `string` | `"sha256"` | Hashing algorithm. |
|
|
90
97
|
|
|
98
|
+
`LocalizationModifier.fallbackLocaleOf(TableClass, field)` returns a field's `fallbackLocale`, or `undefined` when the field is not localized or declares none. Generated forms use it to require a value in that locale.
|
|
99
|
+
|
|
91
100
|
#### Mixin Method
|
|
92
101
|
|
|
93
102
|
The `HashModifier` mixin adds a `testHash` method to table instances:
|
|
@@ -147,15 +156,18 @@ console.log(german.name); // "Premium Headphones" (fallback)
|
|
|
147
156
|
|
|
148
157
|
#### Wildcard Key
|
|
149
158
|
|
|
150
|
-
The wildcard key `"*"` retrieves or sets all translations at once:
|
|
159
|
+
The wildcard key `"*"` retrieves or sets all translations at once at runtime. `localize()` does not change the property's TypeScript type, so a field declared as `string` needs an explicit view for bulk access:
|
|
151
160
|
|
|
152
161
|
```typescript
|
|
153
162
|
// Get all translations
|
|
154
|
-
const
|
|
163
|
+
const translations = product.localize("*") as unknown as {
|
|
164
|
+
name: Record<string, string>;
|
|
165
|
+
};
|
|
166
|
+
const allNames = translations.name;
|
|
155
167
|
// { en: "Premium Headphones", fr: "Casque Premium", es: "Auriculares Premium" }
|
|
156
168
|
|
|
157
169
|
// Set all translations
|
|
158
|
-
|
|
170
|
+
translations.name = {
|
|
159
171
|
en: "Premium Headphones",
|
|
160
172
|
fr: "Casque Premium",
|
|
161
173
|
es: "Auriculares Premium",
|
|
@@ -165,9 +177,9 @@ product.localize("*").name = {
|
|
|
165
177
|
|
|
166
178
|
#### Options
|
|
167
179
|
|
|
168
|
-
| Option | Type | Description
|
|
169
|
-
| ---------------- | -------- |
|
|
170
|
-
| `fallbackLocale` | `string` | Locale to use when the requested locale
|
|
180
|
+
| Option | Type | Description |
|
|
181
|
+
| ---------------- | -------- | --------------------------------------------------------------------- |
|
|
182
|
+
| `fallbackLocale` | `string` | Locale to use when the requested locale has no value or an empty one. |
|
|
171
183
|
|
|
172
184
|
#### Mixin Method
|
|
173
185
|
|
|
@@ -177,7 +189,11 @@ The `LocalizationModifier` mixin adds a `localize` method:
|
|
|
177
189
|
localize(locale: string, fields?: Array<keyof this>): this
|
|
178
190
|
```
|
|
179
191
|
|
|
180
|
-
|
|
192
|
+
`localize()` changes the active locale and returns the same object, not a locale-specific copy.
|
|
193
|
+
|
|
194
|
+
- **References share state.** `spanish`, `german`, and `product` above refer to one object. A later `localize()` call changes what all three references read.
|
|
195
|
+
- **Fields can be restricted.** When you supply `fields`, only those fields are unlocked for the selected locale.
|
|
196
|
+
- **Copy values before switching.** Save the values you need before changing locales, and do not share one instance between concurrent locale-specific operations.
|
|
181
197
|
|
|
182
198
|
### AutoDateModifier
|
|
183
199
|
|
|
@@ -223,12 +239,17 @@ import {
|
|
|
223
239
|
Localized,
|
|
224
240
|
} from "@antelopejs/interface-database-decorators";
|
|
225
241
|
|
|
242
|
+
const secretKey = process.env.ENCRYPTION_KEY;
|
|
243
|
+
if (!secretKey || Buffer.byteLength(secretKey, "utf8") !== 32) {
|
|
244
|
+
throw new Error("ENCRYPTION_KEY must contain exactly 32 UTF-8 bytes");
|
|
245
|
+
}
|
|
246
|
+
|
|
226
247
|
class UserProfile extends Table.with(
|
|
227
248
|
EncryptionModifier,
|
|
228
249
|
HashModifier,
|
|
229
250
|
LocalizationModifier,
|
|
230
251
|
) {
|
|
231
|
-
@Encrypted({ secretKey
|
|
252
|
+
@Encrypted({ secretKey })
|
|
232
253
|
@Field("any")
|
|
233
254
|
declare privateInfo: {
|
|
234
255
|
address: string;
|
|
@@ -303,16 +324,17 @@ The generic parameters for `OneWayModifier<LockedType, Args, Meta, Options>` are
|
|
|
303
324
|
|
|
304
325
|
A `TwoWayModifier` extends `OneWayModifier` with an `unlock` method for reversible transformations like encryption:
|
|
305
326
|
|
|
306
|
-
```
|
|
327
|
+
```ts docs-check
|
|
307
328
|
import {
|
|
308
329
|
TwoWayModifier,
|
|
309
330
|
MixinSymbol,
|
|
310
331
|
attachModifier,
|
|
311
332
|
} from "@antelopejs/interface-database-decorators";
|
|
312
333
|
import { MakePropertyDecorator } from "@antelopejs/interface-core/decorators";
|
|
334
|
+
import type { ValueProxy } from "@antelopejs/interface-database";
|
|
313
335
|
|
|
314
336
|
class Base64Modifier extends TwoWayModifier<
|
|
315
|
-
string,
|
|
337
|
+
string | undefined,
|
|
316
338
|
[],
|
|
317
339
|
{},
|
|
318
340
|
{ prefix?: string }
|
|
@@ -326,14 +348,17 @@ class Base64Modifier extends TwoWayModifier<
|
|
|
326
348
|
return `${prefix}${Buffer.from(JSON.stringify(value)).toString("base64")}`;
|
|
327
349
|
}
|
|
328
350
|
|
|
329
|
-
public override unlock(locked: string) {
|
|
351
|
+
public override unlock(locked: string | undefined): unknown {
|
|
352
|
+
if (locked === undefined) return undefined;
|
|
330
353
|
const prefix = this.options.prefix || "b64-";
|
|
331
354
|
const encoded = locked.substring(prefix.length);
|
|
332
355
|
return JSON.parse(Buffer.from(encoded, "base64").toString("utf8"));
|
|
333
356
|
}
|
|
334
357
|
|
|
335
|
-
public override unlockrequest(
|
|
336
|
-
|
|
358
|
+
public override unlockrequest(
|
|
359
|
+
data: ValueProxy<string | undefined>,
|
|
360
|
+
): ValueProxy<unknown> {
|
|
361
|
+
return data.cast<unknown>();
|
|
337
362
|
}
|
|
338
363
|
|
|
339
364
|
[MixinSymbol] = class {};
|
|
@@ -351,6 +376,8 @@ const Base64Encoded = MakePropertyDecorator(
|
|
|
351
376
|
);
|
|
352
377
|
```
|
|
353
378
|
|
|
379
|
+
Base64 is encoding, not encryption. This example's `unlockrequest()` leaves the encoded value unchanged in database expressions; only instance reads decode it.
|
|
380
|
+
|
|
354
381
|
### ContainerModifier
|
|
355
382
|
|
|
356
383
|
For modifiers that store multiple values in a key-value structure (like `LocalizationModifier`), extend `ContainerModifier`. It provides built-in support for the wildcard key `"*"` for bulk operations:
|
package/docs/4.data-models.md
CHANGED
|
@@ -37,6 +37,18 @@ const userModel = new UserModel(db);
|
|
|
37
37
|
|
|
38
38
|
## CRUD Operations
|
|
39
39
|
|
|
40
|
+
For a model created with `BasicDataModel(User)`, the return values are:
|
|
41
|
+
|
|
42
|
+
| Method | Declared return | Meaning |
|
|
43
|
+
| ------------------------------------ | -------------------------------- | ------------------------------------------------------------------- |
|
|
44
|
+
| `get(id)` | `PromiseLike<User \| undefined>` | The converted row, or `undefined` when the provider returns no row. |
|
|
45
|
+
| `getBy(index, ...keys)` / `getAll()` | `PromiseLike<User[]>` | Converted rows, not an AQL query to chain. |
|
|
46
|
+
| `insert(data, options?)` | `Promise<string[]>` | Inserted document IDs. |
|
|
47
|
+
| `update(...)` | `Promise<number>` | Number of modified documents. |
|
|
48
|
+
| `delete(id)` | `Promise<number>` | Number of deleted documents. |
|
|
49
|
+
|
|
50
|
+
Use `model.table` to compose AQL queries before execution. The static `fromDatabase()` conversion can return `undefined`; `toDatabase()` returns a plain `Record<string, any>`, not a saved record or a write result.
|
|
51
|
+
|
|
40
52
|
### Read
|
|
41
53
|
|
|
42
54
|
```typescript
|
|
@@ -88,6 +100,16 @@ await userModel.delete("user-123");
|
|
|
88
100
|
|
|
89
101
|
Data models include static methods for converting between different data representations:
|
|
90
102
|
|
|
103
|
+
| Starting value | Conversion | Result | Persists data? |
|
|
104
|
+
| ----------------------- | --------------- | ------------------------------------------------- | -------------- |
|
|
105
|
+
| Plain application input | `fromPlainData` | Table instance with input modifier events applied | No |
|
|
106
|
+
| Raw database record | `fromDatabase` | Table instance with read modifier events applied | No |
|
|
107
|
+
| Table instance | `toDatabase` | Plain storage representation | No |
|
|
108
|
+
|
|
109
|
+
Use `insert` or `update` to perform a write; conversion alone does not save anything. Reads through `get`, `getBy`, and `getAll` apply `fromDatabase` for you. A custom query through `model.table` returns AQL results, so apply conversion explicitly when you need model instances.
|
|
110
|
+
|
|
111
|
+
{width="480"}
|
|
112
|
+
|
|
91
113
|
### `fromPlainData(obj)`
|
|
92
114
|
|
|
93
115
|
Convert a plain JavaScript object into a Table class instance. Modifier transformations (like encryption and hashing) are applied during this conversion.
|
|
@@ -140,6 +162,8 @@ await userModel.update("user-123", { name: "Bob" }, { validate: true });
|
|
|
140
162
|
|
|
141
163
|
Extend the generated model class to add custom query methods:
|
|
142
164
|
|
|
165
|
+
The `register` method below checks for an existing email to provide early feedback. It does not guarantee uniqueness under concurrent writes; enforce that constraint in the database where supported and handle conflicts.
|
|
166
|
+
|
|
143
167
|
```typescript
|
|
144
168
|
const UserModelBase = BasicDataModel(User, "users");
|
|
145
169
|
|
|
@@ -29,6 +29,8 @@ class UsersController extends Controller("/users") {
|
|
|
29
29
|
|
|
30
30
|
Pass a callback function to determine the instance ID at request time. The callback receives the request context:
|
|
31
31
|
|
|
32
|
+
Authorize access to the requested tenant before reading or writing through the injected model. The callback selects an instance; a URL parameter alone is not proof that the caller belongs to that tenant.
|
|
33
|
+
|
|
32
34
|
```typescript
|
|
33
35
|
import { Controller, Get, Parameter } from "@antelopejs/interface-api";
|
|
34
36
|
import { Model } from "@antelopejs/interface-database-decorators";
|
|
@@ -90,6 +92,8 @@ const model3 = GetModel(UserModel, "other");
|
|
|
90
92
|
|
|
91
93
|
Model decorators compose naturally with other API decorators for building complete CRUD controllers:
|
|
92
94
|
|
|
95
|
+
This example demonstrates injection, not a complete public API policy. Before exposing writes, reject malformed or non-object JSON, allow only permitted fields, validate their values, and authorize the operation. `JSON.parse` and `@Model` do not provide these checks; string-token `@Field` declarations do not validate input either.
|
|
96
|
+
|
|
93
97
|
```typescript
|
|
94
98
|
import {
|
|
95
99
|
Controller,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 460" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Model conversion and database execution</title>
|
|
3
|
+
<desc id="desc">Writing through a model converts plain input, triggers insert or update modifier events, converts to storage, and executes an AQL write. Reading through a model converts a fetched record with fromDatabase. Static conversion functions do not persist data, and model.table returns raw AQL results.</desc>
|
|
4
|
+
<rect width="480" height="460" rx="16" fill="#f5f7fb"/>
|
|
5
|
+
<g font-family="system-ui, sans-serif" fill="#172b45">
|
|
6
|
+
<text x="24" y="36" font-size="20" font-weight="700">Conversion is not persistence</text>
|
|
7
|
+
<rect x="24" y="58" width="432" height="160" rx="10" fill="#e1ecfa"/>
|
|
8
|
+
<text x="42" y="87" font-size="18" font-weight="700">Model write · insert / update</text>
|
|
9
|
+
<text x="42" y="118" font-size="16">Input → fromPlainData</text>
|
|
10
|
+
<text x="42" y="145" font-size="16">→ insert / update modifier events</text>
|
|
11
|
+
<text x="42" y="172" font-size="16">→ toDatabase → storage representation</text>
|
|
12
|
+
<text x="42" y="199" font-size="16">→ AQL write → IDs / modified count</text>
|
|
13
|
+
<rect x="24" y="238" width="432" height="100" rx="10" fill="#d9eee8"/>
|
|
14
|
+
<text x="42" y="267" font-size="18" font-weight="700">Model read · get / getBy / getAll</text>
|
|
15
|
+
<text x="42" y="296" font-size="16">AQL read → fetched record</text>
|
|
16
|
+
<text x="42" y="323" font-size="16">→ fromDatabase → table instance</text>
|
|
17
|
+
<text x="24" y="375" font-size="16" font-weight="700">Taking the direct AQL path?</text>
|
|
18
|
+
<text x="24" y="403" font-size="16">model.table builds queries without model conversion.</text>
|
|
19
|
+
<text x="24" y="431" font-size="16">Apply fromDatabase to raw rows when needed.</text>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antelopejs/interface-database-decorators",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "AntelopeJS
|
|
3
|
+
"version": "0.1.10",
|
|
4
|
+
"description": "AntelopeJS decorators for database tables and typed data models, with encrypted, hashed and localized fields",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"antelopejs",
|
|
7
7
|
"database",
|
|
8
8
|
"decorators",
|
|
9
9
|
"interface",
|
|
10
|
+
"model",
|
|
10
11
|
"orm"
|
|
11
12
|
],
|
|
13
|
+
"homepage": "https://interfaces.antelopejs.com/docs/database-decorators",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/AntelopeJS/interface-database-decorators/issues"
|
|
16
|
+
},
|
|
12
17
|
"license": "Apache-2.0",
|
|
13
18
|
"repository": {
|
|
14
19
|
"type": "git",
|
|
@@ -129,11 +134,11 @@
|
|
|
129
134
|
"reflect-metadata": "^0.2.2"
|
|
130
135
|
},
|
|
131
136
|
"devDependencies": {
|
|
132
|
-
"@antelopejs/core": "^1.
|
|
133
|
-
"@antelopejs/interface-api": "^0.0.
|
|
134
|
-
"@antelopejs/interface-core": "^0.
|
|
135
|
-
"@antelopejs/interface-database": "^0.1.
|
|
136
|
-
"@antelopejs/tooling-configs": "^0.0.
|
|
137
|
+
"@antelopejs/core": "^1.16.0",
|
|
138
|
+
"@antelopejs/interface-api": "^0.0.15",
|
|
139
|
+
"@antelopejs/interface-core": "^0.2.4",
|
|
140
|
+
"@antelopejs/interface-database": "^0.1.11",
|
|
141
|
+
"@antelopejs/tooling-configs": "^0.0.9",
|
|
137
142
|
"@types/chai": "^4.3.20",
|
|
138
143
|
"@types/mocha": "^10.0.10",
|
|
139
144
|
"@types/node": "^22.19.15",
|
|
@@ -152,9 +157,9 @@
|
|
|
152
157
|
"typescript": "^5.9.3"
|
|
153
158
|
},
|
|
154
159
|
"peerDependencies": {
|
|
155
|
-
"@antelopejs/interface-api": ">=0.0.
|
|
156
|
-
"@antelopejs/interface-core": ">=0.
|
|
157
|
-
"@antelopejs/interface-database": ">=0.1.
|
|
160
|
+
"@antelopejs/interface-api": ">=0.0.15 <1.0.0",
|
|
161
|
+
"@antelopejs/interface-core": ">=0.2.4 <1.0.0",
|
|
162
|
+
"@antelopejs/interface-database": ">=0.1.11 <1.0.0"
|
|
158
163
|
},
|
|
159
164
|
"packageManager": "pnpm@10.6.5",
|
|
160
165
|
"antelopeJs": {
|
|
@@ -127,6 +127,7 @@ class Chef extends Table.with(
|
|
|
127
127
|
- Hashed fields cannot be read back or queried directly — only equality-tested with `testHash`.
|
|
128
128
|
- Localized fields must be written through a localized instance (`instance.localize(locale).field = ...`);
|
|
129
129
|
values assigned before `localize()` are held in floating state and silently dropped on insert/update.
|
|
130
|
+
- A localized value `""` is stored as no value: reads and queries in that locale get the `fallbackLocale` value.
|
|
130
131
|
- `@Relation({ to: () => Target })` is declarative metadata only: no foreign-key enforcement, consumed by introspection tooling via `RelationStaticMetadata`.
|
|
131
132
|
- `Model.validate` (and `{ validate: true }` on insert/update) only checks fields whose `@Field` type is an
|
|
132
133
|
io-ts-style codec with `.decode`; plain string field tokens are skipped. Update validates with
|
|
@@ -135,6 +136,9 @@ class Chef extends Table.with(
|
|
|
135
136
|
- Indexes are scoped to the schema instance. Add `@Index({ crossInstance: true })` only for indexes also queried
|
|
136
137
|
across all instances (`CROSS_INSTANCE`); it never changes results, only speed. On a group, one member setting it
|
|
137
138
|
applies it to the whole group.
|
|
139
|
+
- `@Index({ unique: true })` refuses two rows of an instance with the same key: the write throws `DuplicateKeyError`
|
|
140
|
+
(test with `IsDuplicateKeyError` from `@antelopejs/interface-database`). On a group, one member setting it applies it
|
|
141
|
+
to the whole group.
|
|
138
142
|
- `@Fixture` data is only inserted by `RegisterSchema` when the table is empty (count === 0).
|
|
139
143
|
- `GetModel` caches by model class + instanceId; the same pair always returns the same instance.
|
|
140
144
|
- `RegisterSchema` binds each registered table class to the `Schema` it builds; call it in the module that declares the tables. `User.table()`, `User.table(instanceId)` and `User.table(db)` then return the class's AQL table, and `GetModel` builds `BasicDataModel` models on that same schema, even when another module (bound to another database) calls them. An unbound class throws rather than looking a schema up by id.
|