@antelopejs/interface-database-decorators 0.1.12 → 0.2.1

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.
Files changed (76) hide show
  1. package/README.md +11 -9
  2. package/dist/antelope.test.js +1 -1
  3. package/dist/common.d.ts +48 -2
  4. package/dist/common.js +51 -5
  5. package/dist/common.js.map +1 -1
  6. package/dist/database.js +1 -2
  7. package/dist/database.js.map +1 -1
  8. package/dist/internal/bound-schema.d.ts +8 -0
  9. package/dist/internal/bound-schema.js +14 -0
  10. package/dist/internal/bound-schema.js.map +1 -0
  11. package/dist/model.d.ts +21 -8
  12. package/dist/model.js +10 -7
  13. package/dist/model.js.map +1 -1
  14. package/dist/modifiers/autodate.d.ts +2 -2
  15. package/dist/modifiers/autodate.js.map +1 -1
  16. package/dist/modifiers/common.d.ts +37 -20
  17. package/dist/modifiers/common.js +77 -60
  18. package/dist/modifiers/common.js.map +1 -1
  19. package/dist/modifiers/encryption.js +26 -14
  20. package/dist/modifiers/encryption.js.map +1 -1
  21. package/dist/modifiers/hash.js +4 -1
  22. package/dist/modifiers/hash.js.map +1 -1
  23. package/dist/modifiers/internal/kinds.d.ts +14 -1
  24. package/dist/modifiers/internal/kinds.js +31 -0
  25. package/dist/modifiers/internal/kinds.js.map +1 -1
  26. package/dist/modifiers/internal/records.d.ts +40 -7
  27. package/dist/modifiers/internal/records.js +69 -14
  28. package/dist/modifiers/internal/records.js.map +1 -1
  29. package/dist/modifiers/localization.js +9 -2
  30. package/dist/modifiers/localization.js.map +1 -1
  31. package/dist/relation.d.ts +5 -0
  32. package/dist/relation.js +11 -0
  33. package/dist/relation.js.map +1 -1
  34. package/dist/schema.js +5 -6
  35. package/dist/schema.js.map +1 -1
  36. package/dist/table.d.ts +3 -2
  37. package/dist/table.js +27 -12
  38. package/dist/table.js.map +1 -1
  39. package/dist/tests/cross_instance.test.js +5 -2
  40. package/dist/tests/cross_instance.test.js.map +1 -1
  41. package/dist/tests/database.test.js +42 -34
  42. package/dist/tests/database.test.js.map +1 -1
  43. package/dist/tests/helpers/other-instance.js.map +1 -1
  44. package/dist/tests/integration.test.js +15 -4
  45. package/dist/tests/integration.test.js.map +1 -1
  46. package/dist/tests/metadata_inheritance.test.d.ts +1 -0
  47. package/dist/tests/metadata_inheritance.test.js +212 -0
  48. package/dist/tests/metadata_inheritance.test.js.map +1 -0
  49. package/dist/tests/modifiers/encryption_date_marker.test.d.ts +1 -0
  50. package/dist/tests/modifiers/encryption_date_marker.test.js +78 -0
  51. package/dist/tests/modifiers/encryption_date_marker.test.js.map +1 -0
  52. package/dist/tests/modifiers/inherited_names.test.d.ts +1 -0
  53. package/dist/tests/modifiers/inherited_names.test.js +96 -0
  54. package/dist/tests/modifiers/inherited_names.test.js.map +1 -0
  55. package/dist/tests/own_key_lookups.test.d.ts +1 -0
  56. package/dist/tests/own_key_lookups.test.js +49 -0
  57. package/dist/tests/own_key_lookups.test.js.map +1 -0
  58. package/dist/tests/row_forms.test.d.ts +1 -0
  59. package/dist/tests/row_forms.test.js +59 -0
  60. package/dist/tests/row_forms.test.js.map +1 -0
  61. package/dist/tests/stored_metadata.test.d.ts +1 -0
  62. package/dist/tests/stored_metadata.test.js +91 -0
  63. package/dist/tests/stored_metadata.test.js.map +1 -0
  64. package/dist/tests/subclass_schema_binding.test.d.ts +1 -0
  65. package/dist/tests/subclass_schema_binding.test.js +115 -0
  66. package/dist/tests/subclass_schema_binding.test.js.map +1 -0
  67. package/dist/tests/table.test.js +16 -0
  68. package/dist/tests/table.test.js.map +1 -1
  69. package/docs/1.introduction.md +24 -20
  70. package/docs/2.table-definitions.md +63 -41
  71. package/docs/3.table-modifiers.md +113 -104
  72. package/docs/4.data-models.md +63 -52
  73. package/docs/5.parameter-decoration.md +28 -24
  74. package/docs/tsconfig.json +3 -0
  75. package/package.json +10 -9
  76. package/skills/database-decorators-interface/SKILL.md +3 -2
package/README.md CHANGED
@@ -1,13 +1,15 @@
1
- # @antelopejs/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 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/g4pFt6eXqu"><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>
4
+ <a href="https://www.npmjs.com/package/@antelopejs/interface-database-decorators"><img data-illustration 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 data-illustration 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/g4pFt6eXqu"><img data-illustration 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 data-illustration alt="Docs" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
8
8
  </div>
9
9
 
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.
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
+
12
+ Part of [AntelopeJS](https://github.com/AntelopeJS/antelopejs). Used by [AntelopeJS DMS](https://github.com/AntelopeJS/dms), the open-source back office for your PostgreSQL, MongoDB or RethinkDB database.
11
13
 
12
14
  ## What it offers
13
15
 
@@ -88,15 +90,15 @@ export async function start() {
88
90
 
89
91
  ## Compatibility
90
92
 
91
- Requires AntelopeJS core `1.x` and the following peer dependencies:
93
+ The package declares these `@antelopejs/*` peer dependencies:
92
94
 
93
95
  <!-- antelopejs-docs-compat:start -->
94
96
 
95
97
  | Package | Supported | Tested with |
96
98
  | -------------------------------- | ----------------- | ----------- |
97
99
  | `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` | `0.0.15` |
98
- | `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.2.4` |
99
- | `@antelopejs/interface-database` | `>=0.1.11 <1.0.0` | `0.1.11` |
100
+ | `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.4.0` |
101
+ | `@antelopejs/interface-database` | `>=0.1.11 <1.0.0` | `0.3.0` |
100
102
 
101
103
  <!-- antelopejs-docs-compat:end -->
102
104
 
@@ -21,7 +21,7 @@ exports.default = (0, config_1.defineConfig)({
21
21
  source: {
22
22
  type: "package",
23
23
  package: "@antelopejs/api",
24
- version: "1.3.0",
24
+ version: "1.6.0",
25
25
  },
26
26
  config: {
27
27
  servers: [{ protocol: "http", host: "127.0.0.1", port: 5010 }],
package/dist/common.d.ts CHANGED
@@ -4,23 +4,69 @@ export type Constructible<T = object, A extends unknown[] = unknown[]> = new (..
4
4
  export type DeepPartial<T> = {
5
5
  [K in keyof T]?: T[K] extends Array<infer U1> ? Array<DeepPartial<U1>> : T[K] extends ReadonlyArray<infer U2> ? ReadonlyArray<DeepPartial<U2>> : T[K] extends object ? DeepPartial<T[K]> : T[K];
6
6
  };
7
- export type DatumGeneratorOutput = Record<string, unknown> | Array<Record<string, unknown>> | undefined;
7
+ /**
8
+ * A table row as `toPlainData` gives it: the fields of `T` that are set, by
9
+ * name, without the row's prototype.
10
+ */
11
+ export type PlainRow<T> = {
12
+ [K in Extract<keyof T, string>]?: T[K];
13
+ };
14
+ /**
15
+ * A table row as `fromPlainData` reads it: every field is optional and may be
16
+ * partial, and a field under a container modifier, such as a localized one, may
17
+ * hold its value per key.
18
+ */
19
+ export type PlainData<T> = {
20
+ [K in Extract<keyof T, string>]?: T[K] | DeepPartial<T>[K] | Record<string, DeepPartial<T>[K]>;
21
+ };
22
+ /**
23
+ * The rows a fixture generator gives for its table: one, several or none.
24
+ */
25
+ export type DatumGeneratorOutput<Row extends object = object> = Row | Row[] | undefined;
26
+ /**
27
+ * A fixture generator of a table class, called with the class registered into
28
+ * the schema: the decorated class or a subclass of it.
29
+ */
8
30
  export type DatumGenerator = (tableClass: Constructible) => DatumGeneratorOutput | Promise<DatumGeneratorOutput>;
9
31
  export interface MetadataClass<TMetadata> extends Constructible<TMetadata> {
10
32
  key: symbol;
33
+ /**
34
+ * Builds the metadata a subclass starts from out of its parent's, copying
35
+ * whatever a decorator on the subclass would write to. Without it, the
36
+ * subclass shares its parent's metadata object.
37
+ */
38
+ inherit?: (parent: TMetadata) => TMetadata;
39
+ /**
40
+ * Brings metadata stored under the shared key by an older copy of the
41
+ * package to this copy's shape. Returns `stored` itself when it is already
42
+ * current.
43
+ */
44
+ upgrade?: (stored: TMetadata) => TMetadata;
11
45
  }
12
46
  /**
13
47
  * Table class Metadata.
14
48
  */
15
49
  export declare class DatumStaticMetadata {
16
50
  static key: symbol;
51
+ /**
52
+ * The metadata of a subclass of a table: a copy of its parent's, so that
53
+ * decorators on the subclass never write into the parent or its siblings.
54
+ * The bound schema is not copied: `RegisterSchema` binds the parent after a
55
+ * subclass may have been read, so the subclass looks the schema up by name.
56
+ */
57
+ static inherit(parent: DatumStaticMetadata): DatumStaticMetadata;
58
+ /**
59
+ * Copies 0.1.8 and 0.1.9 of the package store the metadata without
60
+ * `uniqueIndexes`, under the same key and class shape as this copy.
61
+ */
62
+ static upgrade(stored: DatumStaticMetadata): DatumStaticMetadata;
17
63
  tableName?: string;
18
64
  schemaName?: string;
19
65
  readonly indexes: Record<string, Array<string>>;
20
66
  readonly crossInstanceIndexes: Set<string>;
21
67
  readonly uniqueIndexes: Set<string>;
22
68
  readonly fields: Record<string, FieldType>;
23
- primary: string;
69
+ primary: "_id";
24
70
  generator?: DatumGenerator;
25
71
  /**
26
72
  * Schema the table was registered into by `RegisterSchema`.
package/dist/common.js CHANGED
@@ -2,11 +2,47 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DatumStaticMetadata = void 0;
4
4
  exports.getMetadata = getMetadata;
5
+ const kinds_1 = require("./modifiers/internal/kinds");
5
6
  /**
6
7
  * Table class Metadata.
7
8
  */
8
9
  class DatumStaticMetadata {
9
10
  static key = Symbol.for("@antelopejs/interface-database-decorators/DatumStaticMetadata@1");
11
+ /**
12
+ * The metadata of a subclass of a table: a copy of its parent's, so that
13
+ * decorators on the subclass never write into the parent or its siblings.
14
+ * The bound schema is not copied: `RegisterSchema` binds the parent after a
15
+ * subclass may have been read, so the subclass looks the schema up by name.
16
+ */
17
+ static inherit(parent) {
18
+ const copy = new DatumStaticMetadata();
19
+ copy.tableName = parent.tableName;
20
+ copy.schemaName = parent.schemaName;
21
+ for (const [group, keys] of Object.entries(parent.indexes)) {
22
+ copy.indexes[group] = [...keys];
23
+ }
24
+ for (const group of parent.crossInstanceIndexes) {
25
+ copy.crossInstanceIndexes.add(group);
26
+ }
27
+ for (const group of parent.uniqueIndexes) {
28
+ copy.uniqueIndexes.add(group);
29
+ }
30
+ for (const [name, type] of Object.entries(parent.fields)) {
31
+ copy.fields[name] = type;
32
+ }
33
+ copy.primary = parent.primary;
34
+ copy.generator = parent.generator;
35
+ return copy;
36
+ }
37
+ /**
38
+ * Copies 0.1.8 and 0.1.9 of the package store the metadata without
39
+ * `uniqueIndexes`, under the same key and class shape as this copy.
40
+ */
41
+ static upgrade(stored) {
42
+ return Object.hasOwn(stored, "uniqueIndexes")
43
+ ? stored
44
+ : Object.assign(new DatumStaticMetadata(), stored);
45
+ }
10
46
  tableName;
11
47
  schemaName;
12
48
  indexes = {};
@@ -20,7 +56,7 @@ class DatumStaticMetadata {
20
56
  */
21
57
  schema;
22
58
  addIndex(key, group, isCrossInstance = false, isUnique = false) {
23
- if (!(group in this.indexes)) {
59
+ if (!Object.hasOwn(this.indexes, group)) {
24
60
  this.indexes[group] = [];
25
61
  }
26
62
  this.indexes[group].push(key);
@@ -33,16 +69,26 @@ class DatumStaticMetadata {
33
69
  }
34
70
  }
35
71
  exports.DatumStaticMetadata = DatumStaticMetadata;
72
+ // oxlint-disable-next-line typescript/no-unnecessary-type-parameters -- exported; replacing TTarget with `object` clears this row and adds 6 (1 no-object-parameters, 5 no-unsafe-argument for the any-typed constructor callers pass)
36
73
  function getMetadata(target, metadataClass, inherit = true) {
74
+ // SAFETY: getMetadata alone defines metadata under metadataClass.key, always a TMetadata (new metadataClass, its inherit or its upgrade), so the read is a TMetadata or undefined; reflect-metadata types it any.
37
75
  const existingMetadata = Reflect.getOwnMetadata(metadataClass.key, target);
38
76
  if (existingMetadata) {
39
- return existingMetadata;
77
+ const upgraded = metadataClass.upgrade?.(existingMetadata);
78
+ if (upgraded && upgraded !== existingMetadata) {
79
+ Reflect.defineMetadata(metadataClass.key, upgraded, target);
80
+ }
81
+ return upgraded ?? existingMetadata;
40
82
  }
41
83
  const prototype = Object.getPrototypeOf(target);
42
- const inheritedMetadata = inherit && prototype
43
- ? Reflect.getOwnMetadata(metadataClass.key, prototype)
84
+ const inheritedMetadata = inherit &&
85
+ (0, kinds_1.isObjectLike)(prototype) &&
86
+ Reflect.hasOwnMetadata(metadataClass.key, prototype)
87
+ ? getMetadata(prototype, metadataClass, false)
44
88
  : undefined;
45
- const metadata = inheritedMetadata ?? new metadataClass(target);
89
+ const metadata = inheritedMetadata && metadataClass.inherit
90
+ ? metadataClass.inherit(inheritedMetadata)
91
+ : (inheritedMetadata ?? new metadataClass(target));
46
92
  Reflect.defineMetadata(metadataClass.key, metadata, target);
47
93
  return metadata;
48
94
  }
@@ -1 +1 @@
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,GAAkB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,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":"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"}
package/dist/database.js CHANGED
@@ -73,10 +73,9 @@ async function insertFixtureData(schema, tableName, tableClass, generator) {
73
73
  if (rows.length === 0) {
74
74
  return;
75
75
  }
76
- const payload = rows.length === 1 ? rows[0] : rows;
77
76
  const table = schema.instance().table(tableName);
78
77
  try {
79
- await table.insert(payload);
78
+ await table.insert(rows.length === 1 ? rows[0] : rows);
80
79
  }
81
80
  catch (error) {
82
81
  if ((await table.count()) === 0)
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ /** @internal @packageDocumentation */
2
+ import type { DatumStaticMetadata } from "../common";
3
+ /**
4
+ * The schema a table is bound to: the one `RegisterSchema` bound it to, else
5
+ * the one registered under its schema name. A subclass starts without a bound
6
+ * schema, so it follows its parent's schema whenever `RegisterSchema` binds it.
7
+ */
8
+ export declare function boundSchema({ schema, schemaName }: DatumStaticMetadata): import("@antelopejs/interface-database/dist/staged-query/schema").Schema<any, import("@antelopejs/interface-database").SchemaDefinition> | undefined;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /** @internal @packageDocumentation */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.boundSchema = boundSchema;
5
+ const interface_database_1 = require("@antelopejs/interface-database");
6
+ /**
7
+ * The schema a table is bound to: the one `RegisterSchema` bound it to, else
8
+ * the one registered under its schema name. A subclass starts without a bound
9
+ * schema, so it follows its parent's schema whenever `RegisterSchema` binds it.
10
+ */
11
+ function boundSchema({ schema, schemaName }) {
12
+ return (schema ?? (schemaName === undefined ? undefined : interface_database_1.Schema.get(schemaName)));
13
+ }
14
+ //# sourceMappingURL=bound-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bound-schema.js","sourceRoot":"","sources":["../../src/internal/bound-schema.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAWtC,kCAIC;AAbD,uEAAwD;AAIxD;;;;GAIG;AACH,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAuB;IACrE,OAAO,CACL,MAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAC1E,CAAC;AACJ,CAAC"}
package/dist/model.d.ts CHANGED
@@ -2,16 +2,21 @@ import type * as DatabaseDev from "@antelopejs/interface-database";
2
2
  import { type InstanceId } from "@antelopejs/interface-database";
3
3
  import { type RequestContext } from "@antelopejs/interface-api";
4
4
  import { type Class } from "@antelopejs/interface-core/decorators";
5
- import { type Constructible, type DeepPartial } from "./common";
5
+ import { type StoredRow } from "./modifiers/common";
6
+ import { type Constructible, DatumStaticMetadata, type DeepPartial, type PlainData } from "./common";
6
7
  export type DataModel<T = any> = {
7
- readonly schemaName: string;
8
+ /**
9
+ * Schema the table class registers into with `@RegisterTable`; `undefined`
10
+ * for a table class that does not.
11
+ */
12
+ readonly schemaName: string | undefined;
8
13
  readonly tableClass?: Constructible;
9
14
  new (database: DatabaseDev.SchemaInstance<any>): {
10
15
  readonly database: DatabaseDev.SchemaInstance<any>;
11
16
  readonly table: DatabaseDev.Table<T>;
12
17
  };
13
18
  fromDatabase(obj: any): T | undefined;
14
- fromPlainData(obj: any): T;
19
+ fromPlainData(obj: PlainData<T> | T): T;
15
20
  };
16
21
  export type FieldError = {
17
22
  field: string;
@@ -26,6 +31,11 @@ export type ValidationResult = {
26
31
  export type ValidateInputOptions = {
27
32
  partial?: boolean;
28
33
  };
34
+ /**
35
+ * One key {@link BasicDataModel}'s `getBy` matches against an index: a value,
36
+ * or a value proxy, as `Table.getAll` takes it.
37
+ */
38
+ export type IndexKey = Exclude<Parameters<DatabaseDev.Table<object>["getAll"]>[0], unknown[]>;
29
39
  /**
30
40
  * Utility Class factory to create a basic Data Model with 1 table.
31
41
  *
@@ -53,7 +63,7 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
53
63
  * @param keys Index value(s)
54
64
  * @returns Array of Table class instances.
55
65
  */
56
- getBy(index: keyof T, ...keys: any[]): PromiseLike<T[]>;
66
+ getBy(index: Extract<keyof T, string>, ...keys: IndexKey[]): PromiseLike<T[]>;
57
67
  /**
58
68
  * Get all the elements from the table.
59
69
  *
@@ -77,7 +87,7 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
77
87
  * @returns Update result
78
88
  */
79
89
  update(id: string, obj: DeepPartial<T>, options?: ValidateOptions): Promise<number>;
80
- update(obj: DeepPartial<T>, options?: ValidateOptions): Promise<number>;
90
+ update(obj: DeepPartial<T> & KeyedRow, options?: ValidateOptions): Promise<number>;
81
91
  /**
82
92
  * Delete an element from the table.
83
93
  *
@@ -86,7 +96,7 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
86
96
  */
87
97
  delete(id: string): Promise<number>;
88
98
  };
89
- readonly schemaName: string;
99
+ readonly schemaName: string | undefined;
90
100
  /**
91
101
  * Table class this model was built from.
92
102
  */
@@ -97,7 +107,7 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
97
107
  * @param obj Plain data object containing the table fields
98
108
  * @returns Table class instance
99
109
  */
100
- fromPlainData(obj: any): T;
110
+ fromPlainData(obj: PlainData<T> | T): T;
101
111
  /**
102
112
  * Converts an object acquired from the database into a Table class instance.
103
113
  *
@@ -111,7 +121,7 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
111
121
  * @param obj Table class instance
112
122
  * @returns Database-ready data
113
123
  */
114
- toDatabase(obj: any): Record<string, any>;
124
+ toDatabase(obj: PlainData<T> | T): StoredRow<T>;
115
125
  /**
116
126
  * Validates a plain object against every io-ts codec attached via `@Field`.
117
127
  * Pass `{ partial: true }` to skip fields not present on `obj` (patch semantics).
@@ -121,8 +131,11 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
121
131
  export type ValidateOptions = {
122
132
  validate?: boolean;
123
133
  };
134
+ /** The part of a row an update without an id finds the row by. */
135
+ type KeyedRow = Record<DatumStaticMetadata["primary"], string>;
124
136
  export declare function GetModel<M extends InstanceType<DataModel>>(cl: DataModel & Class<M>, instanceId?: InstanceId): M;
125
137
  export declare const Model: (cl: DataModel<any> & Class<{
126
138
  readonly database: DatabaseDev.SchemaInstance<any>;
127
139
  readonly table: DatabaseDev.Table<any>;
128
140
  }>, instanceIdOrCallback?: DatabaseDev.InstanceId | ((ctx: RequestContext) => InstanceId | undefined) | undefined) => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
141
+ export {};
package/dist/model.js CHANGED
@@ -12,6 +12,7 @@ const interface_api_1 = require("@antelopejs/interface-api");
12
12
  const decorators_1 = require("@antelopejs/interface-core/decorators");
13
13
  const common_1 = require("./modifiers/common");
14
14
  const kinds_1 = require("./modifiers/internal/kinds");
15
+ const bound_schema_1 = require("./internal/bound-schema");
15
16
  const records_1 = require("./modifiers/internal/records");
16
17
  const common_2 = require("./common");
17
18
  function isCodec(type) {
@@ -83,7 +84,9 @@ function BasicDataModel(dataType, tableName) {
83
84
  * Validates a plain object against every io-ts codec attached via `@Field`.
84
85
  * Pass `{ partial: true }` to skip fields not present on `obj` (patch semantics).
85
86
  */
86
- static validate(obj, options) {
87
+ static validate(
88
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- validate is the parser: it narrows obj with isRecord and decodes every field with its codec before reading it
89
+ obj, options) {
87
90
  const fields = metadata.fields;
88
91
  const errors = [];
89
92
  const partial = options?.partial === true;
@@ -106,6 +109,7 @@ function BasicDataModel(dataType, tableName) {
106
109
  table;
107
110
  constructor(database) {
108
111
  this.database = database;
112
+ // oxlint-disable-next-line typescript/no-unsafe-assignment -- database is a SchemaInstance<any>, so its table is a Table<any>; a schema instance covers every table of its schema, so no type parameter of it states that this class's table holds this class's rows
109
113
  this.table = database.table(name);
110
114
  }
111
115
  /**
@@ -159,7 +163,7 @@ function BasicDataModel(dataType, tableName) {
159
163
  const converter = (entry) => {
160
164
  const instance = Model.fromPlainData(entry);
161
165
  (0, common_1.triggerEvent)(instance, "insert");
162
- return Model.toDatabase(instance);
166
+ return (0, common_1.toDatabase)(instance);
163
167
  };
164
168
  return this.table
165
169
  .insert(Array.isArray(obj) ? obj.map(converter) : converter(obj))
@@ -177,17 +181,16 @@ function BasicDataModel(dataType, tableName) {
177
181
  (0, common_1.triggerEvent)(instance, "update");
178
182
  return this.table
179
183
  .get(parsed.id)
180
- .update(withoutEmptyInternal(Model.toDatabase(instance)))
184
+ .update(withoutEmptyInternal((0, common_1.toDatabase)(instance)))
181
185
  .run();
182
186
  }
183
187
  const instance = Model.fromPlainData(parsed.data);
184
188
  (0, common_1.triggerEvent)(instance, "update");
185
- // SAFETY: parsed.data is the DeepPartial<T> object the caller passed as the first argument (the id form was handled above), so reading the property named by the table's primary key is defined and gives undefined when absent; the next line asserts it is present.
186
189
  const id = parsed.data[primaryKey];
187
190
  (0, node_assert_1.default)(id !== undefined, "Missing primary key in object update.");
188
191
  return this.table
189
192
  .get(id)
190
- .update(withoutEmptyInternal(Model.toDatabase(instance)))
193
+ .update(withoutEmptyInternal((0, common_1.toDatabase)(instance)))
191
194
  .run();
192
195
  }
193
196
  /**
@@ -237,11 +240,11 @@ function parseUpdateArgs(args) {
237
240
  }
238
241
  function schemaOf(cl) {
239
242
  if (!cl.tableClass) {
240
- const schema = interface_database_1.Schema.get(cl.schemaName);
243
+ const schema = cl.schemaName === undefined ? undefined : interface_database_1.Schema.get(cl.schemaName);
241
244
  (0, node_assert_1.default)(schema, `Schema not found for '${cl.schemaName}'`);
242
245
  return schema;
243
246
  }
244
- const schema = (0, common_2.getMetadata)(cl.tableClass, common_2.DatumStaticMetadata).schema;
247
+ const schema = (0, bound_schema_1.boundSchema)((0, common_2.getMetadata)(cl.tableClass, common_2.DatumStaticMetadata));
245
248
  (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`);
246
249
  return schema;
247
250
  }
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":"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"}
@@ -12,8 +12,8 @@ type Options = {
12
12
  * does not require the Table class to incorporate a mixin.
13
13
  */
14
14
  export declare class AutoDateModifier extends Modifier<object, Options> {
15
- insert(object: Record<string, unknown>, field: string): void;
16
- update(object: Record<string, unknown>, field: string): void;
15
+ insert<F extends string>(object: Partial<Record<F, Date>>, field: F): void;
16
+ update<F extends string>(object: Partial<Record<F, Date>>, field: F): void;
17
17
  }
18
18
  /**
19
19
  * Mark a Database Table class field as an automatic creation timestamp.
@@ -1 +1 @@
1
- {"version":3,"file":"autodate.js","sourceRoot":"","sources":["../../src/modifiers/autodate.ts"],"names":[],"mappings":";;;AAAA,sEAA8E;AAE9E,qCAAoD;AASpD;;;;;;GAMG;AACH,MAAa,gBAAiB,SAAQ,iBAAyB;IACtD,MAAM,CAAC,MAA+B,EAAE,KAAa;QAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,MAA+B,EAAE,KAAa;QAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAZD,4CAYC;AAED;;;;;GAKG;AACU,QAAA,YAAY,GAAG,IAAA,kCAAqB,EAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IACxE,IAAA,uBAAc,EAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE;QAChE,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACU,QAAA,UAAU,GAAG,IAAA,kCAAqB,EAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IACtE,IAAA,uBAAc,EAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE;QAChE,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"autodate.js","sourceRoot":"","sources":["../../src/modifiers/autodate.ts"],"names":[],"mappings":";;;AAAA,sEAA8E;AAE9E,qCAAoD;AASpD;;;;;;GAMG;AACH,MAAa,gBAAiB,SAAQ,iBAAyB;IACtD,MAAM,CAAmB,MAAgC,EAAE,KAAQ;QACxE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAmB,MAAgC,EAAE,KAAQ;QACxE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAZD,4CAYC;AAED;;;;;GAKG;AACU,QAAA,YAAY,GAAG,IAAA,kCAAqB,EAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IACxE,IAAA,uBAAc,EAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE;QAChE,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACU,QAAA,UAAU,GAAG,IAAA,kCAAqB,EAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;IACtE,IAAA,uBAAc,EAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE;QAChE,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type * as DatabaseDev from "@antelopejs/interface-database";
2
- import { type Constructible } from "../common";
2
+ import { type Constructible, type PlainData, type PlainRow } from "../common";
3
+ import { type InternalHolder, type InternalRecord, type ModifierState } from "./internal/records";
3
4
  export declare const MixinSymbol: unique symbol;
4
5
  export type MixinType<T> = T extends {
5
6
  [MixinSymbol]: infer A;
@@ -26,21 +27,35 @@ export declare class ContainerModifier<Meta extends object = object, Options ext
26
27
  unlock(locked_value: Record<string, unknown>, key: string): unknown;
27
28
  unlockrequest(data: DatabaseDev.ValueProxy<Record<string, unknown>>, _meta: DatabaseDev.ValueProxy<Meta>, key: DatabaseDev.ValueProxyOrValue<string>): DatabaseDev.ValueProxy<unknown>;
28
29
  }
29
- interface InternalType {
30
- meta: Record<string, object>;
31
- data: Record<string, any>;
32
- }
30
+ /**
31
+ * A table row as the database stores it: the fields of `T` that are set, with
32
+ * no prototype, and its modified fields locked in `_internal` instead of at the
33
+ * top level.
34
+ */
35
+ export type StoredRow<T> = Partial<T> & InternalHolder;
36
+ /**
37
+ * A modifier method run for an event of the table instance (`insert`,
38
+ * `toDatabase`, ...), with the modifier as `this`.
39
+ */
40
+ export type ModifierEvent = (this: Modifier, object: {
41
+ constructor: any;
42
+ }, field: PropertyKey, ...args: unknown[]) => void;
33
43
  interface ModifiedField {
34
44
  id: string;
35
45
  modifier: Modifier;
36
46
  metaRef: {
37
- _ref: any;
47
+ _ref: ModifierState | undefined;
38
48
  };
39
49
  }
40
50
  export declare class ModifiersStaticMetadata {
41
51
  static key: symbol;
52
+ /**
53
+ * The metadata of a subclass of a table: a copy of its parent's lists, so
54
+ * modifiers attached on the subclass never reach the parent or its siblings.
55
+ */
56
+ static inherit(parent: ModifiersStaticMetadata): ModifiersStaticMetadata;
42
57
  fields: Record<string, Array<ModifiedField>>;
43
- events: Map<string, [field: string, modified: ModifiedField][]>;
58
+ events: Map<string, [field: string, modified: ModifiedField, handler: ModifierEvent][]>;
44
59
  }
45
60
  export declare class ModifiersDynamicMetadata {
46
61
  static key: symbol;
@@ -49,26 +64,30 @@ export declare class ModifiersDynamicMetadata {
49
64
  * Values assigned to a field before its modifiers could lock them, by field
50
65
  * name. Reads return them; `unlock` and `lock` assign them again.
51
66
  */
52
- floating: Record<string, any>;
53
- fields: Record<string, Record<string, any[]>>;
67
+ floating: Record<string, unknown>;
68
+ /**
69
+ * The arguments each modifier of a field was unlocked or locked with, by
70
+ * field name, then by modifier name.
71
+ */
72
+ fields: Record<string, Record<string, unknown[]>>;
54
73
  constructor(target: any);
55
74
  canGet(field: PropertyKey): boolean;
56
- get(field: PropertyKey, internal: InternalType): any;
75
+ get(field: PropertyKey, internal: InternalRecord): unknown;
57
76
  canSet(field: PropertyKey): boolean;
58
- set(field: PropertyKey, internal: InternalType, value: unknown): void;
77
+ set(field: PropertyKey, internal: InternalRecord, value: unknown): void;
59
78
  }
60
79
  /**
61
80
  * Builds a table instance from unlocked plain data: each key is assigned, so
62
81
  * modifiers lock the fields they can. Then runs the `fromPlainData` event.
63
82
  */
64
- export declare function fromPlainData<T extends Constructible>(rawObject: Record<string, any>, TableClass: T): InstanceType<T>;
83
+ export declare function fromPlainData<T extends object>(rawObject: PlainData<T>, TableClass: Constructible<T>): T;
65
84
  /**
66
85
  * Converts a table instance to unlocked plain data, without `_internal`. A
67
86
  * field still locked comes out `undefined`. Then runs the `toPlainData` event.
68
87
  */
69
88
  export declare function toPlainData<T extends {
70
89
  constructor: any;
71
- }>(object: T): Record<string, any>;
90
+ }>(object: T): PlainRow<T>;
72
91
  /**
73
92
  * Builds a table instance from a stored record, its modified fields still
74
93
  * locked in `_internal`. Then runs the `fromDatabase` event.
@@ -78,23 +97,21 @@ export declare function fromDatabase<T extends Constructible>(rawObject: any, Ta
78
97
  * Converts a table instance to the locked record to store, `_internal`
79
98
  * included and floating values left out. Then runs the `toDatabase` event.
80
99
  */
81
- export declare function toDatabase<T extends {
82
- constructor: any;
83
- }>(object: T): Record<string, any>;
100
+ export declare function toDatabase<T extends InternalHolder>(object: T): T & InternalHolder;
84
101
  type ExtractModifierOptions<T> = T extends Modifier<any, infer Options> ? Options : undefined;
85
102
  type ExtractModifierArgs<T> = T extends OneWayModifier<any, infer Args> ? Args : [];
86
- export declare function attachModifier<T extends Constructible, M extends Constructible<Modifier>>(TableClass: T, Modifier: M, field: keyof InstanceType<T>, options: ExtractModifierOptions<InstanceType<M>>): void;
103
+ export declare function attachModifier<M extends Constructible<Modifier>>(TableClass: Function, Modifier: M, field: PropertyKey, options: ExtractModifierOptions<InstanceType<M>>): void;
87
104
  export declare function getModifiedFields<T extends {
88
105
  constructor: any;
89
- }, M extends Constructible<Modifier>>(object: T, Modifier: M): (keyof T)[];
106
+ }>(object: T, Modifier: Constructible<Modifier>): (keyof T)[];
90
107
  export declare function unlock<T extends {
91
108
  constructor: any;
92
109
  }, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>>): void;
93
110
  type ModifierWithProxyArgs = {
94
111
  modifier: Constructible<TwoWayModifier<any, any[], any, any>>;
95
- args: DatabaseDev.ValueProxyOrValue<any>[];
112
+ args: unknown[];
96
113
  };
97
- export declare function unlockrequest<T extends {}, K extends keyof T>(table: Constructible<T>, object: DatabaseDev.ValueProxy<T>, field: K, modifiers: ModifierWithProxyArgs[]): DatabaseDev.ValueProxy<T[K]>;
114
+ export declare function unlockrequest<T extends {}, K extends keyof T>(table: Constructible, object: DatabaseDev.ValueProxy<T>, field: K, modifiers: ModifierWithProxyArgs[]): DatabaseDev.ValueProxy<T[K]>;
98
115
  export declare function lock<T extends {
99
116
  constructor: any;
100
117
  }, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>> | []): void;