@antelopejs/interface-database-decorators 0.1.7 → 0.1.9

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 CHANGED
@@ -1,30 +1,113 @@
1
- # Interface Database Decorators
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" alt="npm"></a>
5
- <a href="./LICENSE"><img alt="License" src="https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=for-the-badge&labelColor=000000"></a>
6
- <a href="https://discord.gg/sjK28QHrA7"><img src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000" alt="Discord"></a>
7
- <a href="./docs/1.introduction.md"><img src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000" alt="Documentation"></a>
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
- A structured framework for implementing database operations using TypeScript decorators. Interface Database Decorators provides a flexible, object-oriented approach to defining database tables, models, and operations with full type safety, including built-in support for field-level encryption, hashing, and localization.
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
- ## Installation
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
- npm install @antelopejs/interface-database-decorators
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
- Detailed documentation is available in the `docs` directory:
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
- - [Introduction](./docs/1.introduction.md) - Overview and dependencies
23
- - [Table Definitions](./docs/2.table-definitions.md) - Define database tables with decorators, indexes, and fixtures
24
- - [Table Modifiers](./docs/3.table-modifiers.md) - Encryption, hashing, localization, and custom modifier creation
25
- - [Data Models](./docs/4.data-models.md) - Create and use data models with CRUD operations
26
- - [Parameter Decoration](./docs/5.parameter-decoration.md) - Inject models into API controllers
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.10 <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
- This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
113
+ [Apache-2.0](./LICENSE)
package/dist/common.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Schema } from "@antelopejs/interface-database";
1
2
  import type { FieldType } from "@antelopejs/interface-database/schema";
2
3
  export type Constructible<T = object, A extends unknown[] = unknown[]> = new (...args: A) => T;
3
4
  export type DeepPartial<T> = {
@@ -20,6 +21,10 @@ export declare class DatumStaticMetadata {
20
21
  readonly fields: Record<string, FieldType>;
21
22
  primary: string;
22
23
  generator?: DatumGenerator;
24
+ /**
25
+ * Schema the table was registered into by `RegisterSchema`.
26
+ */
27
+ schema?: Schema<any>;
23
28
  addIndex(key: string, group: string, isCrossInstance?: boolean): void;
24
29
  }
25
30
  export declare function getMetadata<TMetadata, TTarget extends object>(target: TTarget, metadataClass: MetadataClass<TMetadata>, inherit?: boolean): TMetadata;
package/dist/common.js CHANGED
@@ -6,7 +6,7 @@ exports.getMetadata = getMetadata;
6
6
  * Table class Metadata.
7
7
  */
8
8
  class DatumStaticMetadata {
9
- static key = Symbol();
9
+ static key = Symbol.for("@antelopejs/interface-database-decorators/DatumStaticMetadata@1");
10
10
  tableName;
11
11
  schemaName;
12
12
  indexes = {};
@@ -14,6 +14,10 @@ class DatumStaticMetadata {
14
14
  fields = {};
15
15
  primary = "_id";
16
16
  generator;
17
+ /**
18
+ * Schema the table was registered into by `RegisterSchema`.
19
+ */
20
+ schema;
17
21
  addIndex(key, group, isCrossInstance = false) {
18
22
  if (!(group in this.indexes)) {
19
23
  this.indexes[group] = [];
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAqDA,kCAsBC;AA/CD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;IAEtB,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAElC,QAAQ,CAAC,GAAW,EAAE,KAAa,EAAE,kBAA2B,KAAK;QACnE,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;IACH,CAAC;;AAnBH,kDAoBC;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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AA4DA,kCAsBC;AArDD;;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,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CAAC,GAAW,EAAE,KAAa,EAAE,kBAA2B,KAAK;QACnE,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;IACH,CAAC;;AAzBH,kDA0BC;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"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * Reads the table classes registered for `schemaId` via `@RegisterTable`,
5
5
  * builds a `SchemaDefinition`, constructs the `Schema` (which the adapter
6
- * provisions), then inserts fixtures for any table that declares one.
6
+ * provisions), binds each table class to it (see `Table.table`), then
7
+ * inserts fixtures for any table that declares one.
7
8
  *
8
9
  * @param schemaId Schema id matching the `@RegisterTable(_, schemaId)` calls
9
10
  */
package/dist/database.js CHANGED
@@ -14,7 +14,8 @@ const common_2 = require("./modifiers/common");
14
14
  *
15
15
  * Reads the table classes registered for `schemaId` via `@RegisterTable`,
16
16
  * builds a `SchemaDefinition`, constructs the `Schema` (which the adapter
17
- * provisions), then inserts fixtures for any table that declares one.
17
+ * provisions), binds each table class to it (see `Table.table`), then
18
+ * inserts fixtures for any table that declares one.
18
19
  *
19
20
  * @param schemaId Schema id matching the `@RegisterTable(_, schemaId)` calls
20
21
  */
@@ -23,8 +24,14 @@ async function RegisterSchema(schemaId) {
23
24
  (0, node_assert_1.default)(tables, `No tables registered for schema '${schemaId}'`);
24
25
  const definition = buildSchemaDefinition(tables);
25
26
  const schema = new interface_database_1.Schema(schemaId, definition);
27
+ bindTables(schema, tables);
26
28
  await insertAllFixtureData(schema, tables);
27
29
  }
30
+ function bindTables(schema, tables) {
31
+ for (const tableClass of Object.values(tables)) {
32
+ (0, common_1.getMetadata)(tableClass, common_1.DatumStaticMetadata).schema = schema;
33
+ }
34
+ }
28
35
  function buildSchemaDefinition(tables) {
29
36
  const definition = {};
30
37
  for (const [tableName, tableClass] of Object.entries(tables)) {
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
package/dist/model.d.ts CHANGED
@@ -5,6 +5,7 @@ import { type Class } from "@antelopejs/interface-core/decorators";
5
5
  import { type Constructible, type DeepPartial } from "./common";
6
6
  export type DataModel<T = any> = {
7
7
  readonly schemaName: string;
8
+ readonly tableClass?: Constructible;
8
9
  new (database: DatabaseDev.SchemaInstance<any>): {
9
10
  readonly database: DatabaseDev.SchemaInstance<any>;
10
11
  readonly table: DatabaseDev.Table<T>;
@@ -86,6 +87,10 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
86
87
  delete(id: string): Promise<number>;
87
88
  };
88
89
  readonly schemaName: string;
90
+ /**
91
+ * Table class this model was built from.
92
+ */
93
+ readonly tableClass: Constructible<T>;
89
94
  /**
90
95
  * Converts some plain data into an instance of the Table class.
91
96
  *
package/dist/model.js CHANGED
@@ -38,6 +38,10 @@ function BasicDataModel(dataType, tableName) {
38
38
  return class Model {
39
39
  database;
40
40
  static schemaName = schemaName;
41
+ /**
42
+ * Table class this model was built from.
43
+ */
44
+ static tableClass = dataType;
41
45
  /**
42
46
  * Converts some plain data into an instance of the Table class.
43
47
  *
@@ -214,6 +218,16 @@ function parseUpdateArgs(idOrObj, objOrOptions, options) {
214
218
  options: objOrOptions,
215
219
  };
216
220
  }
221
+ function schemaOf(cl) {
222
+ if (!cl.tableClass) {
223
+ const schema = interface_database_1.Schema.get(cl.schemaName);
224
+ (0, node_assert_1.default)(schema, `Schema not found for '${cl.schemaName}'`);
225
+ return schema;
226
+ }
227
+ const schema = (0, common_2.getMetadata)(cl.tableClass, common_2.DatumStaticMetadata).schema;
228
+ (0, node_assert_1.default)(schema, `${cl.tableClass.name} is not bound to a schema: call RegisterSchema("${cl.schemaName}") in the module that declares it`);
229
+ return schema;
230
+ }
217
231
  function GetModel(cl, instanceId) {
218
232
  if (!modelCache.has(cl)) {
219
233
  modelCache.set(cl, new Map());
@@ -224,9 +238,7 @@ function GetModel(cl, instanceId) {
224
238
  const cached = cache.get(key);
225
239
  if (cached)
226
240
  return cached;
227
- const schema = interface_database_1.Schema.get(cl.schemaName);
228
- (0, node_assert_1.default)(schema, `Schema not found for '${cl.schemaName}'`);
229
- const model = new cl(schema.instance(instanceId));
241
+ const model = new cl(schemaOf(cl).instance(instanceId));
230
242
  cache.set(key, model);
231
243
  return model;
232
244
  }
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;AAyEA,wCAoMC;AAgED,4BAeC;AA5VD,8DAAiC;AAGjC,uEAAyE;AACzE,6DAGmC;AACnC,sEAG+C;AAE/C,+CAK4B;AAC5B,qCAKkB;AA4BlB,SAAS,OAAO,CAAC,IAAe;IAC9B,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,OAAQ,IAA6B,CAAC,MAAM,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,MAAsB;IAC7D,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,KAAK,EAAE,CAAC;IACxE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,QAA0B,EAC1B,SAAkB;IAElB,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,QAAQ,EAAE,4BAAmB,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;IACrD,IAAA,qBAAM,EAAC,YAAY,EAAE,sDAAsD,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAW,YAAY,CAAC;IAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;IACpC,OAAO,MAAM,KAAK;QAoEY;QAnErB,MAAM,CAAU,UAAU,GAAG,UAAoB,CAAC;QACzD;;WAEG;QACI,MAAM,CAAU,UAAU,GAAqB,QAAQ,CAAC;QAC/D;;;;;WAKG;QACI,MAAM,CAAC,aAAa,CAAC,GAAQ;YAClC,OAAO,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,sBAAa,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;QAED;;;;;WAKG;QACI,MAAM,CAAC,YAAY,CAAC,GAAQ;YACjC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAA,qBAAY,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,CAAC;QAED;;;;;WAKG;QACI,MAAM,CAAC,UAAU,CAAC,GAAQ;YAC/B,MAAM,QAAQ,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC1E,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED;;;WAGG;QACI,MAAM,CAAC,QAAQ,CACpB,GAAY,EACZ,OAA8B;YAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;YAC1C,MAAM,MAAM,GACV,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;gBACrC,CAAC,CAAE,GAA+B;gBAClC,CAAC,CAAC,SAAS,CAAC;YAChB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC7B,IAAI,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;oBAAE,SAAS;gBACzD,MAAM,MAAM,GAAI,IAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACpE,CAAC;QAED;;WAEG;QACa,KAAK,CAAuB;QAE5C,YAA4B,QAAyC;YAAzC,aAAQ,GAAR,QAAQ,CAAiC;YACnE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED;;;;;WAKG;QACI,GAAG,CAAC,EAAU;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QAED;;;;;;WAMG;QACI,KAAK,CAAC,KAAc,EAAE,GAAG,IAAW;YACzC,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAU,KAAK,CAAC;iBACzD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAQ,CAAC,CAAC;QAC3D,CAAC;QAED;;;;WAIG;QACI,MAAM;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAQ,CAAC,CAAC;QAC1E,CAAC;QAED;;;;;;WAMG;QACI,KAAK,CAAC,MAAM,CACjB,GAA2C,EAC3C,OAAyB;YAEzB,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAiB,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,CAAC,MAAM,CAAC,EAAE;wBAAE,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnD,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBAChE,GAAG,EAAE,CAAC;QACX,CAAC;QAmBM,KAAK,CAAC,MAAM,CACjB,OAAgC,EAChC,YAA+C,EAC/C,OAAyB;YAEzB,MAAM,MAAM,GAAG,eAAe,CAAI,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,KAAK;qBACd,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;qBACd,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;qBAClC,GAAG,EAAE,CAAC;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjC,MAAM,EAAE,GAAI,MAAM,CAAC,IAAY,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAA,qBAAM,EAAC,EAAE,KAAK,SAAS,EAAE,uCAAuC,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACrE,CAAC;QAED;;;;;WAKG;QACI,MAAM,CAAC,EAAU;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;AAEJ,MAAM,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE5D,SAAS,UAAU,CAAC,UAAkC;IACpD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,sBAAsB,CAAC;IAC5D,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAUD,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAEpD,CAAC;IACF,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,OAAgC,EAChC,YAA+C,EAC/C,OAAyB;IAEzB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,YAA8B;YACpC,OAAO;SACR,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,YAA2C;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAa;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACzC,IAAA,qBAAM,EAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,UAAU,EAAE,4BAAmB,CAAC,CAAC,MAAM,CAAC;IACtE,IAAA,qBAAM,EACJ,MAAM,EACN,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,mDAAmD,EAAE,CAAC,UAAU,mCAAmC,CACzH,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CACtB,EAAwB,EACxB,UAAuB;IAEvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,IAAA,qBAAM,EAAC,KAAK,CAAC,CAAC;IACd,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM;QAAE,OAAO,MAAW,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAEY,QAAA,KAAK,GAAG,IAAA,8CAAiC,EACpD,CACE,MAAM,EACN,GAAG,EACH,KAAK,EACL,EAA8C,EAC9C,oBAEqD,EACrD,EAAE;IACF,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC/C,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAC5C,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -64,7 +64,7 @@ function isOnlyEvents(modifier) {
64
64
  return !("lock" in modifier);
65
65
  }
66
66
  class ModifiersStaticMetadata {
67
- static key = Symbol();
67
+ static key = Symbol.for("@antelopejs/interface-database-decorators/ModifiersStaticMetadata@1");
68
68
  fields = {};
69
69
  events = new Map();
70
70
  }
@@ -78,7 +78,7 @@ function withRef(internal, id, modifier, metaRef, callback) {
78
78
  return ret;
79
79
  }
80
80
  class ModifiersDynamicMetadata {
81
- static key = Symbol();
81
+ static key = Symbol.for("@antelopejs/interface-database-decorators/ModifiersDynamicMetadata@1");
82
82
  staticMeta;
83
83
  floating = {}; // Plain data that has no known lock value
84
84
  fields = {};
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":";;;AAgTA,sCAYC;AAED,kCAWC;AAED,oCAUC;AAED,gCAMC;AAaD,wCAsFC;AAED,8CAQC;AAED,wBAyBC;AAMD,sCA6BC;AAED,oBAuBC;AAED,8BAsCC;AAED,oCAqBC;AA9lBD,sCAA4D;AAE/C,QAAA,WAAW,GAAG,MAAM,EAAE,CAAC;AAIpC,MAAa,QAAQ;IAIT,IAAI,CAAQ;IACZ,OAAO,CAAW;CAC7B;AAND,4BAMC;AAED,MAAa,cAKX,SAAQ,QAAuB;IACxB,IAAI,CACT,aAAqC,EACrC,MAAe,EACf,GAAG,KAAW;QAEd,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACM,IAAI,CACT,YAAwB,EACxB,KAAc,EACd,GAAG,IAAU;QAEb,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,YAAY,CAAC;IAC/D,CAAC;CACF;AApBD,wCAoBC;AAMD,MAAa,cAKX,SAAQ,cAA+C;IAChD,MAAM,CAAC,aAAyB,EAAE,GAAG,KAAW;QACrD,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACM,aAAa,CAClB,KAAyC,EACzC,KAAmC,EACnC,GAAG,KAA4B;QAE/B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;CACF;AAhBD,wCAgBC;AAED,MAAa,iBAGX,SAAQ,cAKT;IACiB,IAAI,CAClB,YAAiD,EACjD,KAAc,EACd,GAAW;QAEX,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,KAAgC,CAAC;QAC1C,CAAC;QACD,OAAO,YAAY;YACjB,CAAC,CAAC;gBACE,GAAG,YAAY;gBACf,CAAC,GAAG,CAAC,EAAE,KAAK;aACb;YACH,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IACe,MAAM,CAAC,YAAqC,EAAE,GAAW;QACvE,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACe,aAAa,CAC3B,IAAqD,EACrD,KAAmC,EACnC,GAA0C;QAE1C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CACF;AAlCD,8CAkCC;AAED,SAAS,WAAW,CAAC,QAAkB;IACrC,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,QAAkB;IACtC,OAAO,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAoBD,MAAa,uBAAuB;IAC3B,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,qEAAqE,CACtE,CAAC;IAEK,MAAM,GAAyC,EAAE,CAAC;IAElD,MAAM,GAAG,IAAI,GAAG,EAGpB,CAAC;;AAVN,0DAWC;AAED,SAAS,OAAO,CACd,QAAsB,EACtB,EAAuB,EACvB,QAAmC,EACnC,OAAiC,EACjC,QAA4B;IAE5B,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAa,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAa,wBAAwB;IAC5B,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,sEAAsE,CACvE,CAAC;IAEF,UAAU,CAA0B;IACpC,QAAQ,GAAwB,EAAE,CAAC,CAAC,0CAA0C;IAC9E,MAAM,GAA0C,EAAE,CAAC;IAEnD,YAAY,MAAW;QACrB,IAAI,CAAC,UAAU,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;QAC3E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,IAAU,YAAa,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,CAAC,WAAW,CAAC,YAAY,CAAC;YAC1B,CAAC,IAAI,CAAC,IAAI,CACR,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACnB,CAAO,QAAS,CAAC,UAAU;gBAC3B,QAAQ,IAAI,QAAQ;gBACpB,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC9B,CACF,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,QAAsB;QACvC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;YAC7C,IAAI,QAAQ,IAAI,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,KAAK,GAAG,OAAO,CACb,QAAQ,EACR,EAAE,EACF,QAAQ,EACR,OAAO,EACP,CAAC,QAAwC,EAAE,EAAE,CAC3C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACpD,CAAC;gBACJ,CAAC;qBAAM,IAAU,QAAS,CAAC,UAAU,EAAE,CAAC;oBACtC,KAAK,GAAG,OAAO,CACb,QAAQ,EACR,EAAE,EACF,QAAQ,EACR,OAAO,EACP,CAAC,QAAwC,EAAE,EAAE,CAC3C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CACzB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CACf,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACnB,CAAO,QAAS,CAAC,QAAQ;YACzB,MAAM,IAAI,QAAQ;YAClB,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC9B,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,QAAsB,EAAE,KAAc;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3C,gCAAgC;QAChC,MAAM,QAAQ,GAKR,EAAE,CAAC;QACT,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9C,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,IAAI,GAAoC,QAAS,CAAC,MAAM,CACtD,IAAI,EACJ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAC1B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,IAAI;SACL,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;gBACvB,KAAK,GAAG,OAAO,CACb,QAAQ,EACR,EAAE,EACF,QAAQ,EACR,OAAO,EACP,CAAC,QAAwC,EAAE,EAAE,CAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;;AAhIH,4DAiIC;AAED,SAAS,WAAW,CAAC,MAAW;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,GAAG;YACjB,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AAEH,SAAgB,aAAa,CAC3B,SAA8B,EAC9B,UAAa;IAEb,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,mBAAmB;IACnB,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzB,CAAC;IACD,YAAY,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACtD,OAAO,WAA8B,CAAC;AACxC,CAAC;AAED,SAAgB,WAAW,CACzB,MAAS;IAET,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAa,MAAO,CAAC,SAAS,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,CAAU,KAAK,CAAC,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC,CAAC,2BAA2B;IAC9E,CAAC;IACD,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,YAAY,CAC1B,SAAc,EACd,UAAa;IAEb,gBAAgB;IAChB,MAAM,WAAW,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IACrC,mBAAmB;IACnB,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,UAAU,CACxB,MAAS;IAET,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,iBAAiB,GAAG;IACxB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,SAAgB,cAAc,CAI5B,UAAa,EACb,QAAW,EACX,KAA4B,EAC5B,OAAgD;IAEhD,MAAM,KAAK,GAAG;QACZ,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,QAAQ,EAAE,IAAI,QAAQ,EAAE;QACxB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;KACtB,CAAC;IACD,KAAK,CAAC,QAAgB,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;QACtD,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YACjC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,CAAC;IACF,KAAK,CAAC,QAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;IAE1C,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAEnE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,iDAAiD;QACjD,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAS,KAAK,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnC,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CACb,6BAA6B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,IAAI,IAAY,KAAK,wCAAwC,CACrH,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,IAAI,IAAY,KAAK,yDAAyD,CAC5H,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,MAAM,CAAS,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE;gBACjD,GAAG,EAAE;oBACH,OAAO,IAAA,oBAAW,EAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,GAAG,CAC5C,KAAK,EACb,WAAW,CAAC,IAAI,CAAC,CAClB,CAAC;gBACJ,CAAC;gBACD,GAAG,EAAE,UAAU,KAAK;oBAClB,IAAA,oBAAW,EAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,GAAG,CACrC,KAAK,EACb,WAAW,CAAC,IAAI,CAAC,EACjB,KAAK,CACN,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE;YACpD,KAAK,EAAE;gBACL,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnE,IACE,CAAC,CAAC,KAAK,IAAI,iBAAiB,CAAC;YAC7B,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,UAAU,EAC/C,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,KAAe,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAG/B,MAAS,EAAE,QAAW;IACtB,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,CACjD,CAAC;AACnB,CAAC;AAED,SAAgB,MAAM,CAIpB,MAAS,EACT,QAAW,EACX,MAAkC,EAClC,GAAG,IAA0C;IAE7C,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,CACjB,MAAM,IAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAoB,CAC5D,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,SAAS,CAAC,MAAM,CAAS,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,CACxE,CAAC;IACF,eAAe;IACf,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3D,uDAAuD;IACvD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACjD,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,iBAAiB;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAS,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAMD,SAAgB,aAAa,CAC3B,KAAuB,EACvB,MAAiC,EACjC,KAAQ,EACR,SAAkC;IAElC,MAAM,IAAI,GAA0B,EAAE,CAAC;IACvC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,GAAS,MAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC9D,OAAO,CACL,SAAS,CAAC,MAAM,CAAS,KAAK,CAAC,EAAE,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAgC,QAAS,CAAC,aAAa,CACzD,IAAI,EACJ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EACZ,GAAG,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,EACK,MAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CACtD,IAAU,MAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAgB,IAAI,CAIlB,MAAS,EACT,QAAW,EACX,MAAkC,EAClC,GAAG,IAA+C;IAElD,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,CACjB,MAAM,IAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAoB,CAC5D,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,SAAS,CAAC,MAAM,CAAS,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,CACxE,CAAC;IACF,eAAe;IACf,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3D,uDAAuD;IACvD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CACvB,MAAS,EACT,KAAQ,EACR,KAAW;IAEX,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC3E,eAAe;IACf,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,GAAG,GAAY,QAAQ,CAAC,IAAI,CAAS,KAAK,CAAC,CAAC;IAClD,KAAK,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,MAAM,CAAS,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,CAAS,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAO,QAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,+CAA+C;YAC/C,OAAO,OAAO,CACZ,QAAQ,EACR,EAAE,EACF,QAAQ,EACR,OAAO,EACP,CAAC,QAAwC,EAAE,EAAE,CAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CACrC,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9C,wCAAwC;YACxC,OAAO,OAAO,CACZ,QAAQ,EACR,EAAE,EACF,QAAQ,EACR,OAAO,EACP,CAAC,QAAwC,EAAE,EAAE,CAC3C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAChC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,GAAG,KAAK,KAAK,CAAC;AACvB,CAAC;AAED,SAAgB,YAAY,CAC1B,MAAS,EACT,KAAa,EACb,GAAG,IAAe;IAElB,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAE3E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;QAC9D,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAkB,EAAE,EAAE,CAC9C,QAAQ,CAAiB,KAAK,CAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CACzE,CAAC;IACJ,CAAC;AACH,CAAC"}
package/dist/relation.js CHANGED
@@ -7,7 +7,7 @@ const common_1 = require("./common");
7
7
  * Relation Metadata.
8
8
  */
9
9
  class RelationStaticMetadata {
10
- static key = Symbol();
10
+ static key = Symbol.for("@antelopejs/interface-database-decorators/RelationStaticMetadata@1");
11
11
  relations = {};
12
12
  }
13
13
  exports.RelationStaticMetadata = RelationStaticMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":";;;AAAA,sEAA8E;AAG9E,qCAAuC;AAsBvC;;GAEG;AACH,MAAa,sBAAsB;IAC1B,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;IAEb,SAAS,GAAoC,EAAE,CAAC;;AAHlE,wDAIC;AAED;;;;;;;;;;;;;GAaG;AACU,QAAA,QAAQ,GAAG,IAAA,kCAAqB,EAC3C,CAAC,MAAM,EAAE,WAAW,EAAE,OAAwB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACzE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC;AACpD,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":";;;AAAA,sEAA8E;AAG9E,qCAAuC;AAsBvC;;GAEG;AACH,MAAa,sBAAsB;IAC1B,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,oEAAoE,CACrE,CAAC;IAEc,SAAS,GAAoC,EAAE,CAAC;;AALlE,wDAMC;AAED;;;;;;;;;;;;;GAaG;AACU,QAAA,QAAQ,GAAG,IAAA,kCAAqB,EAC3C,CAAC,MAAM,EAAE,WAAW,EAAE,OAAwB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACzE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC;AACpD,CAAC,CACF,CAAC"}
package/dist/schema.js CHANGED
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RegisterTable = void 0;
4
4
  exports.getTablesForSchema = getTablesForSchema;
5
5
  const decorators_1 = require("@antelopejs/interface-core/decorators");
6
+ const interface_database_1 = require("@antelopejs/interface-database");
6
7
  const common_1 = require("./common");
7
8
  const schemaTableRegistry = {};
8
9
  exports.RegisterTable = (0, decorators_1.MakeClassDecorator)((target, tableName, schemaName) => {
9
10
  const metadata = (0, common_1.getMetadata)(target, common_1.DatumStaticMetadata);
10
11
  metadata.tableName = tableName;
11
12
  metadata.schemaName = schemaName;
13
+ metadata.schema = interface_database_1.Schema.get(schemaName);
12
14
  if (!(schemaName in schemaTableRegistry)) {
13
15
  schemaTableRegistry[schemaName] = {};
14
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;AA4BA,gDAIC;AAhCD,sEAI+C;AAG/C,qCAA4D;AAE5D,MAAM,mBAAmB,GAAiD,EAAE,CAAC;AAEhE,QAAA,aAAa,GAGU,IAAA,+BAAkB,EACpD,CAAC,MAAM,EAAE,SAAiB,EAAE,UAAkB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,4BAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IAEjC,IAAI,CAAC,CAAC,UAAU,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACzC,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IACD,mBAAmB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;QACxC,MAAiC,CAAC;AACtC,CAAC,CACF,CAAC;AAEF,SAAgB,kBAAkB,CAChC,UAAkB;IAElB,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;AA8BA,gDAIC;AAlCD,sEAI+C;AAC/C,uEAAwD;AAGxD,qCAA4D;AAE5D,MAAM,mBAAmB,GAAiD,EAAE,CAAC;AAEhE,QAAA,aAAa,GAGU,IAAA,+BAAkB,EACpD,CAAC,MAAM,EAAE,SAAiB,EAAE,UAAkB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,4BAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,QAAQ,CAAC,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,CAAC,CAAC,UAAU,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACzC,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IACD,mBAAmB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;QACxC,MAAiC,CAAC;AACtC,CAAC,CACF,CAAC;AAEF,SAAgB,kBAAkB,CAChC,UAAkB;IAElB,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC"}
package/dist/table.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { InstanceId, Table as QueryTable, SchemaInstance } from "@antelopejs/interface-database";
1
2
  import type { FieldType } from "@antelopejs/interface-database/schema";
2
3
  import { type ClassDecorator } from "@antelopejs/interface-core/decorators";
3
4
  import { MixinSymbol, type MixinType } from "./modifiers/common";
@@ -17,12 +18,29 @@ export interface TableClass<Base = object, Args extends any[] = [], Meta extends
17
18
  with<This extends TableClass, T extends Constructible<{
18
19
  [MixinSymbol]: Constructible;
19
20
  }>[] = []>(this: This, ...other: T): TableClass<InstanceType<This> & UnionToIntersection<InstanceType<MixinType<InstanceType<T[number]>>>>, ConstructorParameters<This>, ExtractTableMeta<InstanceType<This>> | ExtractTableMeta<InstanceType<T[number]>>>;
21
+ table<This extends TableClass>(this: This, target?: TableTarget): QueryTable<InstanceType<This>>;
20
22
  }
23
+ /**
24
+ * Where {@link Table.table} opens the table: an instance id of the schema
25
+ * the class is bound to, or a schema instance to take the table from.
26
+ */
27
+ export type TableTarget = InstanceId | SchemaInstance<any>;
21
28
  /**
22
29
  * Database Table superclass
23
30
  */
24
31
  export declare class Table {
25
32
  _id: string;
33
+ /**
34
+ * Gets the AQL table this class describes.
35
+ *
36
+ * The class must be decorated with `@RegisterTable` and bound to its schema
37
+ * by `RegisterSchema`, which the declaring module calls.
38
+ *
39
+ * @param target Instance id of the bound schema (default instance when
40
+ * omitted), or a schema instance to take the table from
41
+ * @returns AQL Table
42
+ */
43
+ static table<This extends typeof Table>(this: This, target?: TableTarget): QueryTable<InstanceType<This>>;
26
44
  /**
27
45
  * Supplement the superclass with Modifier mixins.
28
46
  *
package/dist/table.js CHANGED
@@ -1,15 +1,42 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Fixture = exports.Field = exports.Index = exports.Table = exports.TableRefSymbol = exports.TableMetaSymbol = void 0;
7
+ const node_assert_1 = __importDefault(require("node:assert"));
4
8
  const decorators_1 = require("@antelopejs/interface-core/decorators");
5
9
  const common_1 = require("./modifiers/common");
6
10
  const common_2 = require("./common");
7
11
  exports.TableMetaSymbol = Symbol();
8
12
  exports.TableRefSymbol = Symbol();
13
+ function isSchemaInstance(target) {
14
+ return typeof target === "object" && target !== null;
15
+ }
9
16
  /**
10
17
  * Database Table superclass
11
18
  */
12
19
  class Table {
20
+ /**
21
+ * Gets the AQL table this class describes.
22
+ *
23
+ * The class must be decorated with `@RegisterTable` and bound to its schema
24
+ * by `RegisterSchema`, which the declaring module calls.
25
+ *
26
+ * @param target Instance id of the bound schema (default instance when
27
+ * omitted), or a schema instance to take the table from
28
+ * @returns AQL Table
29
+ */
30
+ static table(target) {
31
+ const metadata = (0, common_2.getMetadata)(this, common_2.DatumStaticMetadata);
32
+ const tableName = metadata.tableName;
33
+ (0, node_assert_1.default)(tableName, `${this.name} has no table name: decorate it with @RegisterTable`);
34
+ if (isSchemaInstance(target)) {
35
+ return target.table(tableName);
36
+ }
37
+ (0, node_assert_1.default)(metadata.schema, `${this.name} is not bound to a schema: call RegisterSchema("${metadata.schemaName}") in the module that declares it`);
38
+ return metadata.schema.instance(target).table(tableName);
39
+ }
13
40
  /**
14
41
  * Supplement the superclass with Modifier mixins.
15
42
  *
package/dist/table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":";;;AACA,sEAI+C;AAE/C,+CAAiE;AACjE,qCAAgF;AAQnE,QAAA,eAAe,GAAG,MAAM,EAAE,CAAC;AAC3B,QAAA,cAAc,GAAG,MAAM,EAAE,CAAC;AAgCvC;;GAEG;AACH,MAAa,KAAK;IAGhB;;;;;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;AAxCD,sBAwCC;AAoBD;;;;;;;;GAQG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,OAAsB,EAAE,EAAE;IAC9C,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,CACP,WAAW,EACnB,OAAO,EAAE,KAAK,IAAY,WAAW,EACrC,OAAO,EAAE,aAAa,CACvB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAe,EAAE,EAAE;IACvC,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,CAAC,WAAqB,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC,CACF,CAAC;AAGF;;;;GAIG;AACU,QAAA,OAAO,GAEK,IAAA,+BAAkB,EAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,4BAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,GAAG,SAAwD,CAAC;AAChF,CAAC,CAAC,CAAC"}
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;AAoBD;;;;;;;;GAQG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,OAAsB,EAAE,EAAE;IAC9C,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,CACP,WAAW,EACnB,OAAO,EAAE,KAAK,IAAY,WAAW,EACrC,OAAO,EAAE,aAAa,CACvB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAe,EAAE,EAAE;IACvC,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,CAAC,WAAqB,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC,CACF,CAAC;AAGF;;;;GAIG;AACU,QAAA,OAAO,GAEK,IAAA,+BAAkB,EAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,4BAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,GAAG,SAAwD,CAAC;AAChF,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_path_1 = __importDefault(require("node:path"));
40
+ const chai_1 = require("chai");
41
+ const Database = __importStar(require("@antelopejs/interface-database"));
42
+ const Decorators = __importStar(require("../index"));
43
+ const other_instance_1 = require("./helpers/other-instance");
44
+ const buildFolder = node_path_1.default.resolve(__dirname, "..");
45
+ const databaseFolder = node_path_1.default.join(node_path_1.default.dirname(require.resolve("@antelopejs/interface-database/package.json")), "dist");
46
+ const otherInstance = (0, other_instance_1.CreateOtherInstance)([buildFolder, databaseFolder]);
47
+ const Other = otherInstance(node_path_1.default.join(buildFolder, "index.js"));
48
+ const OtherStagedSchema = otherInstance(node_path_1.default.join(databaseFolder, "staged-query", "schema.js"));
49
+ const boundSchemaId = "cross-instance-bound";
50
+ class Item extends Decorators.Table {
51
+ }
52
+ Decorators.RegisterTable("items", boundSchemaId)(Item);
53
+ class Orphan extends Decorators.Table {
54
+ }
55
+ Decorators.RegisterTable("orphans", "cross-instance-never-registered")(Orphan);
56
+ class Prefix extends Decorators.TwoWayModifier {
57
+ lock(_, value, prefix) {
58
+ return `${prefix}_${String(value)}`;
59
+ }
60
+ unlock(lockedValue, prefix) {
61
+ return lockedValue.replace(`${prefix}_`, "");
62
+ }
63
+ }
64
+ class Labelled extends Decorators.Table {
65
+ }
66
+ Decorators.attachModifier(Labelled, Prefix, "label", {});
67
+ describe("Tables and models across interface instances", () => {
68
+ before(async () => {
69
+ await Decorators.RegisterSchema(boundSchemaId);
70
+ new OtherStagedSchema.Schema(boundSchemaId, {});
71
+ });
72
+ it("BasicDataModel reads a table class decorated through another instance (the DMS builds models of generated modules' tables)", BasicDataModelReadsOtherInstanceTest);
73
+ it("Table.table() returns the class's table in the schema RegisterSchema bound it to: default instance, an instance id, a given SchemaInstance (data-api and modules open tables with it)", TableOpensBoundSchemaTest);
74
+ it("Table.table() on a class no RegisterSchema bound throws, naming the class (no silent lookup by id)", UnboundTableThrowsTest);
75
+ it("GetModel from another instance builds the model on the table class's schema, even when that instance holds a schema with the same id (interface-dms TenantScopedModel)", GetModelFromOtherInstanceTest);
76
+ it("lock from another instance acts on the object's modifier state (data-api Validation.Lock)", LockFromOtherInstanceTest);
77
+ });
78
+ function stagesOf(query) {
79
+ return query
80
+ .build()
81
+ .map(({ stage, options }) => [stage, options?.id]);
82
+ }
83
+ function BasicDataModelReadsOtherInstanceTest() {
84
+ class Remote extends Other.Table {
85
+ }
86
+ Other.RegisterTable("remotes", "cross-instance-remote")(Remote);
87
+ const RemoteModel = Decorators.BasicDataModel(Remote);
88
+ (0, chai_1.expect)(RemoteModel.schemaName).to.equal("cross-instance-remote");
89
+ }
90
+ function TableOpensBoundSchemaTest() {
91
+ const bound = Database.Schema.get(boundSchemaId);
92
+ (0, chai_1.expect)(bound).to.not.equal(undefined);
93
+ (0, chai_1.expect)(Item.table()).to.be.instanceOf(Database.Table);
94
+ (0, chai_1.expect)(stagesOf(Item.table())).to.deep.equal([
95
+ ["schema", boundSchemaId],
96
+ ["instance", undefined],
97
+ ["table", "items"],
98
+ ]);
99
+ (0, chai_1.expect)(stagesOf(Item.table("t1"))[1]).to.deep.equal(["instance", "t1"]);
100
+ (0, chai_1.expect)(stagesOf(Item.table(bound.instance("t2")))[1]).to.deep.equal([
101
+ "instance",
102
+ "t2",
103
+ ]);
104
+ }
105
+ function UnboundTableThrowsTest() {
106
+ (0, chai_1.expect)(() => Orphan.table()).to.throw(/Orphan is not bound to a schema/);
107
+ }
108
+ function GetModelFromOtherInstanceTest() {
109
+ const ItemModel = Decorators.BasicDataModel(Item);
110
+ const model = Other.GetModel(ItemModel, "t3");
111
+ (0, chai_1.expect)(model.database).to.be.instanceOf(Database.SchemaInstance);
112
+ (0, chai_1.expect)(model.database.build()[0].options.id).to.equal(boundSchemaId);
113
+ }
114
+ function LockFromOtherInstanceTest() {
115
+ const row = new Labelled();
116
+ Other.lock(row, Prefix, undefined, "p");
117
+ row.label = "v";
118
+ (0, chai_1.expect)(Decorators.toDatabase(row)).to.have.nested.property("_internal.data.label", "p_v");
119
+ }
120
+ //# sourceMappingURL=cross_instance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross_instance.test.js","sourceRoot":"","sources":["../../src/tests/cross_instance.test.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ const chai_1 = require("chai");
13
13
  const interface_database_1 = require("@antelopejs/interface-database");
14
14
  const schema_1 = require("@antelopejs/interface-database-decorators/schema");
15
15
  const database_1 = require("@antelopejs/interface-database-decorators/database");
16
+ const model_1 = require("@antelopejs/interface-database-decorators/model");
16
17
  const table_1 = require("@antelopejs/interface-database-decorators/table");
17
18
  const codec_helpers_1 = require("./codec_helpers");
18
19
  describe("Database - initialization", () => {
@@ -25,6 +26,7 @@ describe("Database - initialization", () => {
25
26
  it("leaves index definitions unchanged without crossInstance", async () => LeavesIndexDefinitionsUnchangedTest());
26
27
  it("creates tables with fixture data", async () => CreateTablesWithFixtureDataTest());
27
28
  it("handles multiple tables", async () => HandleMultipleTablesTest());
29
+ it("binds a table class registered after RegisterSchema ran to that schema (module hot reload)", async () => BindsLateRegisteredTableTest());
28
30
  it("populates TableDefinition.fields from @Field declarations", () => PopulatesTableDefinitionFieldsTest());
29
31
  });
30
32
  async function CreateSchemaTest() {
@@ -231,4 +233,20 @@ async function HandleMultipleTablesTest() {
231
233
  const schema = interface_database_1.Schema.get("test-multi-table-schema");
232
234
  (0, chai_1.expect)(schema).to.not.equal(undefined);
233
235
  }
236
+ async function BindsLateRegisteredTableTest() {
237
+ let _Declared = class _Declared extends table_1.Table {
238
+ };
239
+ _Declared = __decorate([
240
+ (0, schema_1.RegisterTable)("late_items", "test-late-schema")
241
+ ], _Declared);
242
+ await (0, database_1.RegisterSchema)("test-late-schema");
243
+ let Reloaded = class Reloaded extends table_1.Table {
244
+ };
245
+ Reloaded = __decorate([
246
+ (0, schema_1.RegisterTable)("late_items", "test-late-schema")
247
+ ], Reloaded);
248
+ const model = (0, model_1.GetModel)((0, model_1.BasicDataModel)(Reloaded), "late-instance");
249
+ (0, chai_1.expect)(model.database.build()[0].options.id).to.equal("test-late-schema");
250
+ (0, chai_1.expect)(Reloaded.table().build()[0].options.id).to.equal("test-late-schema");
251
+ }
234
252
  //# sourceMappingURL=database.test.js.map
@@ -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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"}
@@ -0,0 +1,13 @@
1
+ type ModuleRequire = (request: string) => unknown;
2
+ /**
3
+ * Evaluates built packages a second time, the way the core gives each
4
+ * provider binding its own copy of an interface: every file under `folders`
5
+ * is loaded again, with its own classes, symbols and registries, while
6
+ * anything else (interface-core, third-party dependencies) stays the copy
7
+ * already loaded.
8
+ *
9
+ * @param folders Build output folders to evaluate again
10
+ * @returns A `require` resolving into the second copy
11
+ */
12
+ export declare function CreateOtherInstance(folders: string[]): ModuleRequire;
13
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CreateOtherInstance = CreateOtherInstance;
7
+ const node_module_1 = __importDefault(require("node:module"));
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const internals = node_module_1.default;
11
+ /**
12
+ * Evaluates built packages a second time, the way the core gives each
13
+ * provider binding its own copy of an interface: every file under `folders`
14
+ * is loaded again, with its own classes, symbols and registries, while
15
+ * anything else (interface-core, third-party dependencies) stays the copy
16
+ * already loaded.
17
+ *
18
+ * @param folders Build output folders to evaluate again
19
+ * @returns A `require` resolving into the second copy
20
+ */
21
+ function CreateOtherInstance(folders) {
22
+ const owned = folders.map((folder) => (0, node_fs_1.realpathSync)(folder) + node_path_1.default.sep);
23
+ const modules = new Map();
24
+ const load = (filename, parent) => {
25
+ const cached = modules.get(filename);
26
+ if (cached) {
27
+ return cached.exports;
28
+ }
29
+ const loaded = new node_module_1.default(filename, parent);
30
+ loaded.filename = filename;
31
+ loaded.paths = internals._nodeModulePaths(node_path_1.default.dirname(filename));
32
+ loaded.require = ((request) => requireFrom(loaded, request));
33
+ modules.set(filename, loaded);
34
+ loaded.load(filename);
35
+ return loaded.exports;
36
+ };
37
+ const requireFrom = (parent, request) => {
38
+ const filename = internals._resolveFilename(request, parent);
39
+ const isOwned = owned.some((root) => filename.startsWith(root));
40
+ return isOwned
41
+ ? load(filename, parent)
42
+ : node_module_1.default.prototype.require.call(parent, request);
43
+ };
44
+ return (request) => requireFrom(module, request);
45
+ }
46
+ //# sourceMappingURL=other-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"other-instance.js","sourceRoot":"","sources":["../../../src/tests/helpers/other-instance.ts"],"names":[],"mappings":";;;;;AA2BA,kDA4BC;AAvDD,8DAAiC;AACjC,qCAAuC;AACvC,0DAA6B;AAa7B,MAAM,SAAS,GAAG,qBAAoC,CAAC;AAEvD;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,OAAiB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,MAAM,CAAC,GAAG,mBAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAW,EAAE;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,qBAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE,CACpC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAsB,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,OAAe,EAAW,EAAE;QAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,OAAO;YACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,CAAC,CAAC,qBAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}
@@ -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: process.env.SECRET_KEY || "default-key" })
42
+ @Encrypted({ secretKey })
38
43
  @Field("string")
39
44
  declare secureContent: string;
40
45
  }
41
46
  ```
42
47
 
43
- For detailed information about modifiers, see [Table Modifiers](./3.table-modifiers.md).
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
 
@@ -161,7 +166,7 @@ class Comment extends Table {
161
166
  @Relation({ to: () => Post })
162
167
  declare postId: string;
163
168
 
164
- @Field("string")
169
+ @Field(["string"])
165
170
  @Relation({ to: () => Tag, many: true })
166
171
  declare tagIds: string[];
167
172
  }
@@ -294,7 +299,9 @@ class Post extends BaseEntity {
294
299
 
295
300
  ## Register a Schema
296
301
 
297
- The `RegisterSchema` function builds a `SchemaDefinition` from all tables registered for the given schema id (via `@RegisterTable`), constructs the `Schema` (which the adapter provisions), then inserts any fixture data for tables that are empty.
302
+ The `RegisterSchema` function builds a `SchemaDefinition` from all tables registered for the given schema id (via `@RegisterTable`), constructs the `Schema` (which the adapter provisions), binds each table class to that `Schema` (see [Open a Table from its Class](#open-a-table-from-its-class)), then inserts any fixture data for tables that are empty.
303
+
304
+ Call it in the module that declares the tables: the binding then follows that module's database, whichever module later uses the classes.
298
305
 
299
306
  ```typescript
300
307
  import { RegisterSchema } from "@antelopejs/interface-database-decorators";
@@ -309,3 +316,22 @@ await RegisterSchema("myapp");
309
316
  | `schemaId` | `string` | Schema id matching the `@RegisterTable(_, schemaId)` declarations. |
310
317
 
311
318
  `RegisterSchema` returns `Promise<void>`.
319
+
320
+ ## Open a Table from its Class
321
+
322
+ `Table.table()` returns the AQL table a class describes, in the schema `RegisterSchema` bound it to:
323
+
324
+ ```typescript
325
+ @RegisterTable("users", "myapp")
326
+ class User extends Table {
327
+ declare name: string;
328
+ }
329
+
330
+ await RegisterSchema("myapp");
331
+
332
+ User.table(); // default instance of "myapp"
333
+ User.table("tenant-1"); // instance "tenant-1" (CROSS_INSTANCE is accepted too)
334
+ User.table(db); // db.table("users") on a SchemaInstance you already hold
335
+ ```
336
+
337
+ When given a `SchemaInstance`, `table()` takes the table from it as is: pass an instance of the class's own schema. A class that no `RegisterSchema` call bound throws, naming the class.
@@ -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
- ```typescript
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: process.env.ENCRYPTION_KEY || "default-key",
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: process.env.ENCRYPTION_KEY || "default-key" })
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 preserved through JSON serialization with a custom encoder.
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. Use this for passwords and other sensitive data that only needs equality verification.
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 {
@@ -147,15 +154,18 @@ console.log(german.name); // "Premium Headphones" (fallback)
147
154
 
148
155
  #### Wildcard Key
149
156
 
150
- The wildcard key `"*"` retrieves or sets all translations at once:
157
+ 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
158
 
152
159
  ```typescript
153
160
  // Get all translations
154
- const allNames = product.localize("*").name;
161
+ const translations = product.localize("*") as unknown as {
162
+ name: Record<string, string>;
163
+ };
164
+ const allNames = translations.name;
155
165
  // { en: "Premium Headphones", fr: "Casque Premium", es: "Auriculares Premium" }
156
166
 
157
167
  // Set all translations
158
- product.localize("*").name = {
168
+ translations.name = {
159
169
  en: "Premium Headphones",
160
170
  fr: "Casque Premium",
161
171
  es: "Auriculares Premium",
@@ -177,7 +187,7 @@ The `LocalizationModifier` mixin adds a `localize` method:
177
187
  localize(locale: string, fields?: Array<keyof this>): this
178
188
  ```
179
189
 
180
- Sets the active locale for accessing localized fields. If `fields` is provided, only those fields are unlocked for the specified locale.
190
+ Sets the active locale for accessing localized fields and returns the same, mutated object. It does not make a locale-specific copy: `spanish`, `german`, and `product` above all refer to the same object, and subsequent calls change what all those references read. If `fields` is provided, only those fields are unlocked for the specified locale. Copy the values you need before changing locales, and do not share one instance between concurrent locale-specific operations.
181
191
 
182
192
  ### AutoDateModifier
183
193
 
@@ -223,12 +233,17 @@ import {
223
233
  Localized,
224
234
  } from "@antelopejs/interface-database-decorators";
225
235
 
236
+ const secretKey = process.env.ENCRYPTION_KEY;
237
+ if (!secretKey || Buffer.byteLength(secretKey, "utf8") !== 32) {
238
+ throw new Error("ENCRYPTION_KEY must contain exactly 32 UTF-8 bytes");
239
+ }
240
+
226
241
  class UserProfile extends Table.with(
227
242
  EncryptionModifier,
228
243
  HashModifier,
229
244
  LocalizationModifier,
230
245
  ) {
231
- @Encrypted({ secretKey: process.env.SECRET_KEY || "default-key" })
246
+ @Encrypted({ secretKey })
232
247
  @Field("any")
233
248
  declare privateInfo: {
234
249
  address: string;
@@ -303,16 +318,17 @@ The generic parameters for `OneWayModifier<LockedType, Args, Meta, Options>` are
303
318
 
304
319
  A `TwoWayModifier` extends `OneWayModifier` with an `unlock` method for reversible transformations like encryption:
305
320
 
306
- ```typescript
321
+ ```ts docs-check
307
322
  import {
308
323
  TwoWayModifier,
309
324
  MixinSymbol,
310
325
  attachModifier,
311
326
  } from "@antelopejs/interface-database-decorators";
312
327
  import { MakePropertyDecorator } from "@antelopejs/interface-core/decorators";
328
+ import type { ValueProxy } from "@antelopejs/interface-database";
313
329
 
314
330
  class Base64Modifier extends TwoWayModifier<
315
- string,
331
+ string | undefined,
316
332
  [],
317
333
  {},
318
334
  { prefix?: string }
@@ -326,14 +342,17 @@ class Base64Modifier extends TwoWayModifier<
326
342
  return `${prefix}${Buffer.from(JSON.stringify(value)).toString("base64")}`;
327
343
  }
328
344
 
329
- public override unlock(locked: string) {
345
+ public override unlock(locked: string | undefined): unknown {
346
+ if (locked === undefined) return undefined;
330
347
  const prefix = this.options.prefix || "b64-";
331
348
  const encoded = locked.substring(prefix.length);
332
349
  return JSON.parse(Buffer.from(encoded, "base64").toString("utf8"));
333
350
  }
334
351
 
335
- public override unlockrequest(data: any) {
336
- return data;
352
+ public override unlockrequest(
353
+ data: ValueProxy<string | undefined>,
354
+ ): ValueProxy<unknown> {
355
+ return data.cast<unknown>();
337
356
  }
338
357
 
339
358
  [MixinSymbol] = class {};
@@ -351,6 +370,8 @@ const Base64Encoded = MakePropertyDecorator(
351
370
  );
352
371
  ```
353
372
 
373
+ Base64 is encoding, not encryption. This example's `unlockrequest()` leaves the encoded value unchanged in database expressions; only instance reads decode it.
374
+
354
375
  ### ContainerModifier
355
376
 
356
377
  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:
@@ -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
@@ -170,7 +182,7 @@ import { GetModel } from "@antelopejs/interface-database-decorators";
170
182
  const userModel = GetModel(UserModel, "instance-id");
171
183
  ```
172
184
 
173
- Model instances are cached by class and instance ID, so repeated calls with the same arguments return the same instance. The schema is resolved automatically from the `schemaName` property on the model class.
185
+ Model instances are cached by class and instance ID, so repeated calls with the same arguments return the same instance. A model built by `BasicDataModel` uses the schema its table class was bound to by `RegisterSchema`, so it stays on the declaring module's database even when another module calls `GetModel`; an unbound table class throws. A custom model class without a `tableClass` is resolved from its `schemaName` with `Schema.get`.
174
186
 
175
187
  ## Modifier Integration
176
188
 
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "..",
5
+ "noEmit": true,
6
+ "composite": false,
7
+ "incremental": false
8
+ },
9
+ "include": ["../src/**/*.ts", "./**/*.ts"]
10
+ }
package/package.json CHANGED
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "name": "@antelopejs/interface-database-decorators",
3
- "version": "0.1.7",
4
- "description": "AntelopeJS interface for database schema decorators and model definitions",
3
+ "version": "0.1.9",
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.9.1",
133
- "@antelopejs/interface-api": "^0.0.13",
134
- "@antelopejs/interface-core": "^0.1.1",
135
- "@antelopejs/interface-database": "^0.1.8",
136
- "@antelopejs/tooling-configs": "^0.0.6",
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.10",
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.13 <1.0.0",
156
- "@antelopejs/interface-core": ">=0.1.1 <1.0.0",
157
- "@antelopejs/interface-database": ">=0.1.8 <1.0.0"
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.10 <1.0.0"
158
163
  },
159
164
  "packageManager": "pnpm@10.6.5",
160
165
  "antelopeJs": {
@@ -137,6 +137,7 @@ class Chef extends Table.with(
137
137
  applies it to the whole group.
138
138
  - `@Fixture` data is only inserted by `RegisterSchema` when the table is empty (count === 0).
139
139
  - `GetModel` caches by model class + instanceId; the same pair always returns the same instance.
140
+ - `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.
140
141
  - Serialization of modified instances to plain JSON goes through `toPlainData` (auto-attached as `toJSON`).
141
142
 
142
143
  Deeper reference: this package's `docs/` chapters — Introduction, Table Definitions, Table Modifiers,