@cubicweb/client 2.1.1 → 3.0.0-alpha.11

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 (64) hide show
  1. package/README.md +28 -16
  2. package/lib/Errors.js +3 -9
  3. package/lib/Errors.js.map +1 -1
  4. package/lib/api/Api.d.ts +35 -15
  5. package/lib/api/Api.d.ts.map +1 -1
  6. package/lib/api/Api.js +152 -133
  7. package/lib/api/Api.js.map +1 -1
  8. package/lib/api/Client.d.ts +20 -9
  9. package/lib/api/Client.d.ts.map +1 -1
  10. package/lib/api/Client.js +40 -49
  11. package/lib/api/Client.js.map +1 -1
  12. package/lib/api/Transaction.d.ts +33 -20
  13. package/lib/api/Transaction.d.ts.map +1 -1
  14. package/lib/api/Transaction.js +50 -46
  15. package/lib/api/Transaction.js.map +1 -1
  16. package/lib/index.d.ts +13 -13
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +12 -33
  19. package/lib/index.js.map +1 -1
  20. package/lib/schema/classes/EntitySchema.d.ts +21 -27
  21. package/lib/schema/classes/EntitySchema.d.ts.map +1 -1
  22. package/lib/schema/classes/EntitySchema.js +20 -30
  23. package/lib/schema/classes/EntitySchema.js.map +1 -1
  24. package/lib/schema/classes/RelationDefinitionSchema.d.ts +13 -15
  25. package/lib/schema/classes/RelationDefinitionSchema.d.ts.map +1 -1
  26. package/lib/schema/classes/RelationDefinitionSchema.js +14 -30
  27. package/lib/schema/classes/RelationDefinitionSchema.js.map +1 -1
  28. package/lib/schema/classes/Schema.d.ts +9 -7
  29. package/lib/schema/classes/Schema.d.ts.map +1 -1
  30. package/lib/schema/classes/Schema.js +10 -11
  31. package/lib/schema/classes/Schema.js.map +1 -1
  32. package/lib/schema/classes/Utils.d.ts +139 -5
  33. package/lib/schema/classes/Utils.d.ts.map +1 -1
  34. package/lib/schema/classes/Utils.js +157 -11
  35. package/lib/schema/classes/Utils.js.map +1 -1
  36. package/lib/schema/raw/Constraints.d.ts +17 -9
  37. package/lib/schema/raw/Constraints.d.ts.map +1 -1
  38. package/lib/schema/raw/Constraints.js +1 -2
  39. package/lib/schema/raw/Entities.d.ts +4 -0
  40. package/lib/schema/raw/Entities.d.ts.map +1 -1
  41. package/lib/schema/raw/Entities.js +1 -2
  42. package/lib/schema/raw/RelationDefinitions.d.ts +17 -4
  43. package/lib/schema/raw/RelationDefinitions.d.ts.map +1 -1
  44. package/lib/schema/raw/RelationDefinitions.js +1 -2
  45. package/lib/schema/raw/Schema.d.ts +4 -2
  46. package/lib/schema/raw/Schema.d.ts.map +1 -1
  47. package/lib/schema/raw/Schema.js +1 -2
  48. package/lib/schema/raw/Utils.d.ts +7 -1
  49. package/lib/schema/raw/Utils.d.ts.map +1 -1
  50. package/lib/schema/raw/Utils.js +1 -2
  51. package/package.json +6 -9
  52. package/src/api/Api.ts +110 -57
  53. package/src/api/Client.ts +36 -19
  54. package/src/api/Transaction.ts +56 -37
  55. package/src/index.ts +13 -13
  56. package/src/schema/classes/EntitySchema.ts +43 -46
  57. package/src/schema/classes/RelationDefinitionSchema.ts +16 -31
  58. package/src/schema/classes/Schema.ts +12 -7
  59. package/src/schema/classes/Utils.ts +182 -5
  60. package/src/schema/raw/Constraints.ts +20 -8
  61. package/src/schema/raw/Entities.ts +4 -0
  62. package/src/schema/raw/RelationDefinitions.ts +17 -4
  63. package/src/schema/raw/Schema.ts +4 -2
  64. package/src/schema/raw/Utils.ts +7 -1
@@ -1,12 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntitySchema = void 0;
4
1
  /**
5
2
  * Wrapper around raw entity schemas from the Schema.
6
3
  * You should never have to create this object yourself.
7
4
  * Instead, retrieve these objects from the methods in the `Schema` class.
5
+ *
6
+ * @category Schema
8
7
  */
9
- class EntitySchema {
8
+ export class EntitySchema {
9
+ schema;
10
+ entityRawSchema;
10
11
  /**
11
12
  * Wrapper around raw entity schemas from the Schema.
12
13
  * You should never have to create this object yourself.
@@ -38,26 +39,26 @@ class EntitySchema {
38
39
  return this.entityRawSchema.final;
39
40
  }
40
41
  /**
41
- * Gets the list of relation definitions schemas with this entity as subject.
42
- * In case a relation definition schema has this entity as both object and subject,
43
- * there will be dupicates when used along with `objectRelationsDefinitions`.
42
+ * Gets the list of attribute schemas (relation definition schemas with final at false)
43
+ * for this entity schema.
44
44
  */
45
- get subjectRelationDefinitions() {
45
+ get attributes() {
46
46
  return this.schema.matchRelationDefinitions({
47
+ final: true,
47
48
  subject: this.type,
48
- final: false,
49
49
  });
50
50
  }
51
- /**
52
- * Gets the list of relation definitions schemas with this entity as object.
53
- * In case a relation definition schema has this entity as both object and subject,
54
- * there will be dupicates when used along with `subjectRelationDefinitions`.
55
- */
56
- get objectRelationsDefinitions() {
57
- return this.schema.matchRelationDefinitions({
58
- object: this.type,
59
- final: false,
60
- });
51
+ get relationDefinitions() {
52
+ return {
53
+ subject: this.schema.matchRelationDefinitions({
54
+ subject: this.type,
55
+ final: false,
56
+ }),
57
+ object: this.schema.matchRelationDefinitions({
58
+ object: this.type,
59
+ final: false,
60
+ }),
61
+ };
61
62
  }
62
63
  /**
63
64
  * Finds relations in the Schema matching the partial relation given.
@@ -68,16 +69,5 @@ class EntitySchema {
68
69
  matchRelationDefinitions(matcher) {
69
70
  return this.schema.matchRelationDefinitions(matcher);
70
71
  }
71
- /**
72
- * Gets the list of attribute schemas (relation definition schemas with final at false)
73
- * for this entity schema.
74
- */
75
- get attributes() {
76
- return this.schema.matchRelationDefinitions({
77
- final: true,
78
- subject: this.type,
79
- });
80
- }
81
72
  }
82
- exports.EntitySchema = EntitySchema;
83
73
  //# sourceMappingURL=EntitySchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntitySchema.js","sourceRoot":"","sources":["../../../src/schema/classes/EntitySchema.ts"],"names":[],"mappings":";;;AAMA;;;;GAIG;AACH,MAAa,YAAY;IAKvB;;;;;;;OAOG;IACH,YACU,MAAoB,EACpB,eAA2B;QAD3B,WAAM,GAAN,MAAM,CAAc;QACpB,oBAAe,GAAf,eAAe,CAAY;IAClC,CAAC;IAEJ;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,IAAI,0BAA0B;QAS5B,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,IAAI,0BAA0B;QAS5B,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CACtB,OAAU;QAMV,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QASZ,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1C,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AAjHD,oCAiHC"}
1
+ {"version":3,"file":"EntitySchema.js","sourceRoot":"","sources":["../../../src/schema/classes/EntitySchema.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IAcb;IACA;IAVV;;;;;;;OAOG;IACH,YACU,MAAoB,EACpB,eAA2B;QAD3B,WAAM,GAAN,MAAM,CAAc;QACpB,oBAAe,GAAf,eAAe,CAAY;IAClC,CAAC;IAEJ;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QASZ,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1C,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,mBAAmB;QAoBrB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;gBAC5C,OAAO,EAAE,IAAI,CAAC,IAAI;gBAClB,KAAK,EAAE,KAAK;aACb,CAAC;YACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;gBAC3C,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,KAAK,EAAE,KAAK;aACb,CAAC;SACH,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CACtB,OAAU;QAMV,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -1,12 +1,15 @@
1
- import { EntityRawSchemaArray } from "../raw/Entities";
2
- import { RelationDefinitionRawSchemaArray, Cardinality } from "../raw/RelationDefinitions";
3
- import { IsLooseSchema, EntityRawSchemaByType } from "../raw/Utils";
4
- import { EntitySchema } from "./EntitySchema";
5
- import { Schema } from "./Schema";
1
+ import { EntityRawSchemaArray } from "../raw/Entities.js";
2
+ import { RelationDefinitionRawSchemaArray, Cardinality } from "../raw/RelationDefinitions.js";
3
+ import { IsLooseSchema, EntityRawSchemaByType } from "../raw/Utils.js";
4
+ import { EntitySchema } from "./EntitySchema.js";
5
+ import { Schema } from "./Schema.js";
6
+ import { EntityRole } from "./Utils.js";
6
7
  /**
7
8
  * Wrapper around raw relation definition schemas from the Schema.
8
9
  * You should never have to create this object yourself.
9
10
  * Instead, retrieve these objects from the methods in the `Schema` class.
11
+ *
12
+ * @category Schema
10
13
  */
11
14
  export declare class RelationDefinitionSchema<E extends EntityRawSchemaArray = EntityRawSchemaArray, R extends RelationDefinitionRawSchemaArray<E> = RelationDefinitionRawSchemaArray<E>, RDef extends R[number] = R[number]> {
12
15
  private schema;
@@ -55,15 +58,10 @@ export declare class RelationDefinitionSchema<E extends EntityRawSchemaArray = E
55
58
  /**
56
59
  * The cardinality of this relation definition schema.
57
60
  */
58
- get cardinality(): RDef["cardinality"];
59
- /**
60
- * The cardinality of this relation definition schema's subject.
61
- */
62
- get subjectCardinality(): Cardinality;
63
- /**
64
- * The cardinality of this relation definition schema's object.
65
- */
66
- get objectCardinality(): Cardinality;
61
+ get cardinality(): {
62
+ subject: Cardinality;
63
+ object: Cardinality;
64
+ };
67
65
  /**
68
66
  * Gets the entity associated to this relation definition schema's subject.
69
67
  *
@@ -82,6 +80,6 @@ export declare class RelationDefinitionSchema<E extends EntityRawSchemaArray = E
82
80
  * @param role The point of view to use
83
81
  * @returns
84
82
  */
85
- isRequired(role: "subject" | "object"): boolean;
83
+ isRequired(role: EntityRole): boolean;
86
84
  }
87
85
  //# sourceMappingURL=RelationDefinitionSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RelationDefinitionSchema.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/RelationDefinitionSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,gCAAgC,EAChC,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,wBAAwB,CACnC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC,EACnF,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAUtB,OAAO,CAAC,MAAM;IAAgB,OAAO,CAAC,MAAM;IARxD;;;;;;;OAOG;gBACiB,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAU,MAAM,EAAE,IAAI;IAE9D;;OAEG;IACH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAEvB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,CAErC;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAEzB;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAE7B;IAED;;;;OAIG;IACH,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,CAErC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,IAAI,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS,CAM/D;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,CAErC;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,WAAW,CAEpC;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,WAAW,CAEnC;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GACxC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAC7B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAShE;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GACvC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAC7B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAS/D;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ;CAStC"}
1
+ {"version":3,"file":"RelationDefinitionSchema.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/RelationDefinitionSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,gCAAgC,EAChC,WAAW,EACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAyB,MAAM,YAAY,CAAC;AAE/D;;;;;;GAMG;AACH,qBAAa,wBAAwB,CACnC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC,EACnF,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAUtB,OAAO,CAAC,MAAM;IAAgB,OAAO,CAAC,MAAM;IARxD;;;;;;;OAOG;gBACiB,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAU,MAAM,EAAE,IAAI;IAE9D;;OAEG;IACH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAEvB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,CAErC;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAEzB;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAE7B;IAED;;;;OAIG;IACH,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,CAErC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,IAAI,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,SAAS,CAM/D;IAED;;OAEG;IACH,IAAI,WAAW,IAAI;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,CAK/D;IAED;;;;OAIG;IACH,IAAI,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GACxC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAC7B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAShE;IAED;;;;OAIG;IACH,IAAI,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GACvC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAC7B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAS/D;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU;CAG5B"}
@@ -1,14 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationDefinitionSchema = void 0;
4
- const Errors_1 = require("../../Errors");
5
- const Utils_1 = require("./Utils");
1
+ import { InconsistentSchemaError } from "../../Errors.js";
2
+ import { isCardinalityRequired } from "./Utils.js";
6
3
  /**
7
4
  * Wrapper around raw relation definition schemas from the Schema.
8
5
  * You should never have to create this object yourself.
9
6
  * Instead, retrieve these objects from the methods in the `Schema` class.
7
+ *
8
+ * @category Schema
10
9
  */
11
- class RelationDefinitionSchema {
10
+ export class RelationDefinitionSchema {
11
+ schema;
12
+ relDef;
12
13
  /**
13
14
  * Wrapper around raw relation definition schemas from the Schema.
14
15
  * You should never have to create this object yourself.
@@ -67,19 +68,10 @@ class RelationDefinitionSchema {
67
68
  * The cardinality of this relation definition schema.
68
69
  */
69
70
  get cardinality() {
70
- return this.relDef.cardinality;
71
- }
72
- /**
73
- * The cardinality of this relation definition schema's subject.
74
- */
75
- get subjectCardinality() {
76
- return this.relDef.cardinality[0];
77
- }
78
- /**
79
- * The cardinality of this relation definition schema's object.
80
- */
81
- get objectCardinality() {
82
- return this.relDef.cardinality[1];
71
+ return {
72
+ subject: this.relDef.cardinality[0],
73
+ object: this.relDef.cardinality[1],
74
+ };
83
75
  }
84
76
  /**
85
77
  * Gets the entity associated to this relation definition schema's subject.
@@ -89,7 +81,7 @@ class RelationDefinitionSchema {
89
81
  get subject() {
90
82
  const subjectSchema = this.schema.getEntity(this.relDef.subject);
91
83
  if (subjectSchema === null) {
92
- throw new Errors_1.InconsistentSchemaError(`entity type ${this.relDef.subject} used as subject of relation ${this.type} is not declared`);
84
+ throw new InconsistentSchemaError(`entity type ${this.relDef.subject} used as subject of relation ${this.type} is not declared`);
93
85
  }
94
86
  // @ts-ignore: Cannot be null as we checked for this above
95
87
  return subjectSchema;
@@ -102,7 +94,7 @@ class RelationDefinitionSchema {
102
94
  get object() {
103
95
  const objectSchema = this.schema.getEntity(this.relDef.object);
104
96
  if (objectSchema === null) {
105
- throw new Errors_1.InconsistentSchemaError(`entity type ${this.relDef.object} used as object of relation ${this.type} is not declared`);
97
+ throw new InconsistentSchemaError(`entity type ${this.relDef.object} used as object of relation ${this.type} is not declared`);
106
98
  }
107
99
  // @ts-ignore: Cannot be null as we checked for this above
108
100
  return objectSchema;
@@ -114,15 +106,7 @@ class RelationDefinitionSchema {
114
106
  * @returns
115
107
  */
116
108
  isRequired(role) {
117
- let cardinality;
118
- if (role === "subject") {
119
- cardinality = this.subjectCardinality;
120
- }
121
- else {
122
- cardinality = this.objectCardinality;
123
- }
124
- return (0, Utils_1.cardinalityRequired)(cardinality);
109
+ return isCardinalityRequired(this.cardinality[role]);
125
110
  }
126
111
  }
127
- exports.RelationDefinitionSchema = RelationDefinitionSchema;
128
112
  //# sourceMappingURL=RelationDefinitionSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RelationDefinitionSchema.js","sourceRoot":"","sources":["../../../src/schema/classes/RelationDefinitionSchema.ts"],"names":[],"mappings":";;;AAAA,yCAAuD;AASvD,mCAA8C;AAE9C;;;;GAIG;AACH,MAAa,wBAAwB;IAKnC;;;;;;;OAOG;IACH,YAAoB,MAAoB,EAAU,MAAY;QAA1C,WAAM,GAAN,MAAM,CAAc;QAAU,WAAM,GAAN,MAAM,CAAM;IAAG,CAAC;IAElE;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QAGT,OAAO,CACL,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAgB,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAgB,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QAGT,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,MAAM,IAAI,gCAAuB,CAC/B,eAAe,IAAI,CAAC,MAAM,CAAC,OAAO,gCAAgC,IAAI,CAAC,IAAI,kBAAkB,CAC9F,CAAC;SACH;QACD,0DAA0D;QAC1D,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QAGR,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,MAAM,IAAI,gCAAuB,CAC/B,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,+BAA+B,IAAI,CAAC,IAAI,kBAAkB,CAC5F,CAAC;SACH;QACD,0DAA0D;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAA0B;QACnC,IAAI,WAAwB,CAAC;QAC7B,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;SACvC;aAAM;YACL,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACtC;QACD,OAAO,IAAA,2BAAmB,EAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF;AA3ID,4DA2IC"}
1
+ {"version":3,"file":"RelationDefinitionSchema.js","sourceRoot":"","sources":["../../../src/schema/classes/RelationDefinitionSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAS1D,OAAO,EAAc,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,OAAO,wBAAwB;IAaf;IAA8B;IARlD;;;;;;;OAOG;IACH,YAAoB,MAAoB,EAAU,MAAY;QAA1C,WAAM,GAAN,MAAM,CAAc;QAAU,WAAM,GAAN,MAAM,CAAM;IAAG,CAAC;IAElE;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QAGT,OAAO,CACL,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAgB;YAClD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAgB;SAClD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QAGT,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,MAAM,IAAI,uBAAuB,CAC/B,eAAe,IAAI,CAAC,MAAM,CAAC,OAAO,gCAAgC,IAAI,CAAC,IAAI,kBAAkB,CAC9F,CAAC;SACH;QACD,0DAA0D;QAC1D,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QAGR,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,MAAM,IAAI,uBAAuB,CAC/B,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,+BAA+B,IAAI,CAAC,IAAI,kBAAkB,CAC5F,CAAC;SACH;QACD,0DAA0D;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAgB;QACzB,OAAO,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -1,15 +1,17 @@
1
- import { EntityRawSchemaArray } from "../raw/Entities";
2
- import { RelationDefinitionRawSchemaArray } from "../raw/RelationDefinitions";
3
- import { RawSchema } from "../raw/Schema";
4
- import { EntityRawSchemaByType, IsETypeInStrictSchema, IsLooseSchema } from "../raw/Utils";
5
- import { EntitySchema } from "./EntitySchema";
6
- import { RelationDefinitionSchema } from "./RelationDefinitionSchema";
7
- import { RelationDefinitionMatcher, MatchedRelationDefinition } from "./Utils";
1
+ import { EntityRawSchemaArray } from "../raw/Entities.js";
2
+ import { RelationDefinitionRawSchemaArray } from "../raw/RelationDefinitions.js";
3
+ import { RawSchema } from "../raw/Schema.js";
4
+ import { EntityRawSchemaByType, IsETypeInStrictSchema, IsLooseSchema } from "../raw/Utils.js";
5
+ import { EntitySchema } from "./EntitySchema.js";
6
+ import { RelationDefinitionSchema } from "./RelationDefinitionSchema.js";
7
+ import { RelationDefinitionMatcher, MatchedRelationDefinition } from "./Utils.js";
8
8
  declare const rawSchemaKey: unique symbol;
9
9
  /**
10
10
  * Wrapper around the raw JSON Schema.
11
11
  * It is recommended to use this class instead of the raw JSON Schema
12
12
  * as it is more robust to schema changes and provides utility functions.
13
+ *
14
+ * @category Schema
13
15
  */
14
16
  export declare class Schema<E extends EntityRawSchemaArray = EntityRawSchemaArray, R extends RelationDefinitionRawSchemaArray<E> = RelationDefinitionRawSchemaArray<E>> {
15
17
  [rawSchemaKey]: RawSchema<E, R>;
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAEL,gCAAgC,EACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE/E,QAAA,MAAM,YAAY,EAAE,OAAO,MAA2C,CAAC;AAEvE;;;;GAIG;AACH,qBAAa,MAAM,CACjB,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC;IAEnF,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhC;;;;;;OAMG;gBACS,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAItC;;OAEG;IACH,IAAI,QAAQ,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAI9C;IAED;;;OAGG;IACH,IAAI,oBAAoB,IAAI,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAItE;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,SAAS,MAAM,EAC5B,UAAU,EAAE,KAAK,GAChB,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GAC5B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GACpC,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,GAC5C,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GACnD,IAAI;IAiBR;;;;;;OAMG;IACH,wBAAwB,CAAC,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAC7D,OAAO,EAAE,CAAC,GACT,wBAAwB,CACzB,CAAC,EACD,CAAC,EACD,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAChE,EAAE;CAmBJ"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAEL,gCAAgC,EACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,YAAY,EAAE,OAAO,MAA2C,CAAC;AAEvE;;;;;;GAMG;AACH,qBAAa,MAAM,CACjB,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC;IAEnF,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhC;;;;;;OAMG;gBACS,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAItC;;OAEG;IACH,IAAI,QAAQ,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAI9C;IAED;;;OAGG;IACH,IAAI,oBAAoB,IAAI,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAItE;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,SAAS,MAAM,EAC5B,UAAU,EAAE,KAAK,GAChB,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GAC5B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GACpC,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,GAC5C,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GACnD,IAAI;IAiBR;;;;;;OAMG;IACH,wBAAwB,CAAC,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAC7D,OAAO,EAAE,CAAC,GACT,wBAAwB,CACzB,CAAC,EACD,CAAC,EACD,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CAChE,EAAE;CAmBJ"}
@@ -1,15 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Schema = void 0;
4
- const EntitySchema_1 = require("./EntitySchema");
5
- const RelationDefinitionSchema_1 = require("./RelationDefinitionSchema");
1
+ import { EntitySchema } from "./EntitySchema.js";
2
+ import { RelationDefinitionSchema } from "./RelationDefinitionSchema.js";
6
3
  const rawSchemaKey = Symbol("Indexer of the rawSchema");
7
4
  /**
8
5
  * Wrapper around the raw JSON Schema.
9
6
  * It is recommended to use this class instead of the raw JSON Schema
10
7
  * as it is more robust to schema changes and provides utility functions.
8
+ *
9
+ * @category Schema
11
10
  */
12
- class Schema {
11
+ export class Schema {
12
+ [rawSchemaKey];
13
13
  /**
14
14
  * Wrapper around the raw JSON Schema.
15
15
  * It is recommended to use this class instead of the raw JSON Schema
@@ -24,14 +24,14 @@ class Schema {
24
24
  * Returns the list of entity schemas in the schema using the EntitySchema abstraction class.
25
25
  */
26
26
  get entities() {
27
- return this[rawSchemaKey].entities.map((eSchema) => new EntitySchema_1.EntitySchema(this, eSchema));
27
+ return this[rawSchemaKey].entities.map((eSchema) => new EntitySchema(this, eSchema));
28
28
  }
29
29
  /**
30
30
  * Returns the list of relation definitions schemas in the schema
31
31
  * using the RelationDefinitionSchema abstraction class.
32
32
  */
33
33
  get relationsDefinitions() {
34
- return this[rawSchemaKey].relations_definitions.map((rdefSchema) => new RelationDefinitionSchema_1.RelationDefinitionSchema(this, rdefSchema));
34
+ return this[rawSchemaKey].relations_definitions.map((rdefSchema) => new RelationDefinitionSchema(this, rdefSchema));
35
35
  }
36
36
  /**
37
37
  * Returns the entity schema for the given entity type if it exists.
@@ -50,7 +50,7 @@ class Schema {
50
50
  return null;
51
51
  }
52
52
  // @ts-ignore: see above
53
- return new EntitySchema_1.EntitySchema(this, entityRawSchema);
53
+ return new EntitySchema(this, entityRawSchema);
54
54
  }
55
55
  /**
56
56
  * Finds relations definition schemas in the Schema matching the
@@ -68,8 +68,7 @@ class Schema {
68
68
  }
69
69
  return true;
70
70
  });
71
- return matchArray.map((m) => new RelationDefinitionSchema_1.RelationDefinitionSchema(this, m));
71
+ return matchArray.map((m) => new RelationDefinitionSchema(this, m));
72
72
  }
73
73
  }
74
- exports.Schema = Schema;
75
74
  //# sourceMappingURL=Schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/schema/classes/Schema.ts"],"names":[],"mappings":";;;AAWA,iDAA8C;AAC9C,yEAAsE;AAGtE,MAAM,YAAY,GAAkB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAa,MAAM;IAMjB;;;;;;OAMG;IACH,YAAY,SAA0B;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CACpC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,2BAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,GAAG,CACjD,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,mDAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CACP,UAAiB;QAMjB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CACxD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,CACzC,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,eAAe,EAAE;YACpB,qEAAqE;YACrE,qDAAqD;YACrD,0CAA0C;YAC1C,OAAO,IAAI,CAAC;SACb;QACD,wBAAwB;QACxB,OAAO,IAAI,2BAAY,CACrB,IAAI,EACJ,eAAkD,CACnD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CACtB,OAAU;QAMV,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAChE,CAAC,MAAM,EAAE,EAAE;YACT,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAC3B,OAAO,CACoC,EAAE;gBAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;oBAChC,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAKA,CAAC;QACJ,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,mDAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;CACF;AAnGD,wBAmGC"}
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/schema/classes/Schema.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMzE,MAAM,YAAY,GAAkB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IAIjB,CAAC,YAAY,CAAC,CAAkB;IAEhC;;;;;;OAMG;IACH,YAAY,SAA0B;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CACpC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,GAAG,CACjD,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CACP,UAAiB;QAMjB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CACxD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,CACzC,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,eAAe,EAAE;YACpB,qEAAqE;YACrE,qDAAqD;YACrD,0CAA0C;YAC1C,OAAO,IAAI,CAAC;SACb;QACD,wBAAwB;QACxB,OAAO,IAAI,YAAY,CACrB,IAAI,EACJ,eAAkD,CACnD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CACtB,OAAU;QAMV,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAChE,CAAC,MAAM,EAAE,EAAE;YACT,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAC3B,OAAO,CACoC,EAAE;gBAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;oBAChC,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAKA,CAAC;QACJ,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -1,13 +1,21 @@
1
- import { EntityRawSchemaArray } from "../raw/Entities";
2
- import { Cardinality, RelationDefinitionRawSchema, RelationDefinitionRawSchemaArray } from "../raw/RelationDefinitions";
3
- import { Schema } from "./Schema";
4
- import { EntitySchema } from "./EntitySchema";
1
+ import { EntityRawSchemaArray } from "../raw/Entities.js";
2
+ import { Cardinality, RelationDefinitionRawSchema, RelationDefinitionRawSchemaArray } from "../raw/RelationDefinitions.js";
3
+ import { Schema } from "./Schema.js";
4
+ import { EntitySchema } from "./EntitySchema.js";
5
+ /**
6
+ * An entity role in a relation.
7
+ *
8
+ * @category Utils
9
+ */
10
+ export type EntityRole = "subject" | "object";
5
11
  /**
6
12
  * Returns the given schema using loose typing.
7
13
  * Can be useful when working with generic schemas
8
14
  *
9
15
  * @param schema The schema to create a loose type for
10
16
  * @returns A loosely typed schema
17
+ *
18
+ * @category Utils
11
19
  */
12
20
  export declare const getLooseSchema: <E extends EntityRawSchemaArray = EntityRawSchemaArray, R extends RelationDefinitionRawSchemaArray<E> = RelationDefinitionRawSchemaArray<E>>(schema: Schema<E, R>) => Schema<EntityRawSchemaArray, RelationDefinitionRawSchemaArray<EntityRawSchemaArray>>;
13
21
  /**
@@ -15,10 +23,134 @@ export declare const getLooseSchema: <E extends EntityRawSchemaArray = EntityRaw
15
23
  *
16
24
  * @param cardinality The cardinality to check
17
25
  * @returns True if the cardinality is 1 or +
26
+ *
27
+ * @category Utils
28
+ */
29
+ export declare function isCardinalityRequired(cardinality: Cardinality): boolean;
30
+ /**
31
+ * Checks if the cardinality allows multiple entities to be present
32
+ *
33
+ * @param cardinality The cardinility to check
34
+ * @returns True if the cardinality is `*` or `+`
35
+ *
36
+ * @category Utils
37
+ */
38
+ export declare const isCardinalityMultiple: (cardinality: Cardinality) => boolean;
39
+ /**
40
+ * Checks if the cardinality allows entities to be absent
41
+ *
42
+ * @param cardinality The cardinility to check
43
+ * @returns True if the cardinality is `?` or `*`
44
+ *
45
+ * @category Utils
46
+ */
47
+ export declare const isCardinalityOptional: (cardinality: Cardinality) => boolean;
48
+ /**
49
+ * Reverses the given role name
50
+ *
51
+ * @param role The role to reverse
52
+ * @returns "object" if the given role was "subject", "subject" otherwise
53
+ *
54
+ * @category Utils
55
+ */
56
+ export declare function getOppositeRelationRole(role: EntityRole): EntityRole;
57
+ /**
58
+ * Checks if the given relation type is reversed.
59
+ *
60
+ * A reversed relation means the relation is considered from the object entity
61
+ * point of view.
62
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
63
+ *
64
+ * @param relationType The relation type to check
65
+ * @returns True if the relation type starts with the reverse indicator
66
+ *
67
+ * @category Utils
68
+ */
69
+ export declare const isRelationTypeReversed: (relationType: string) => boolean;
70
+ /**
71
+ * Gets the entity role in the given relation type by
72
+ * checking for the reverse indicator
73
+ *
74
+ * A reversed relation means the relation is considered from the object entity
75
+ * point of view.
76
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
77
+ *
78
+ * @param relationType The relation type to check
79
+ * @returns "subject" if the relation is not reversed, "object" otherwise
80
+ *
81
+ * @category Utils
82
+ */
83
+ export declare const getRoleFromRelationType: (relationType: string) => EntityRole;
84
+ /**
85
+ * Adds the reverse indicator from the relation type if it is not already present.
86
+ *
87
+ * A reversed relation means the relation is considered from the object entity
88
+ * point of view.
89
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
90
+ *
91
+ * @param relationType The relation type to transform
92
+ * @returns The relation type with the reverse indicator added or removed
93
+ *
94
+ * @category Utils
95
+ */
96
+ export declare const getReverseRelationType: (relationType: string) => string;
97
+ /**
98
+ * Clears the reverse indicator from the relation type if it is present.
99
+ *
100
+ * A reversed relation means the relation is considered from the object entity
101
+ * point of view.
102
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
103
+ *
104
+ * @param relationType The relation type to transform
105
+ * @returns The relation type with the reverse indicator added or removed
106
+ *
107
+ * @category Utils
108
+ */
109
+ export declare const getRawRelationType: (relationType: string) => string;
110
+ /**
111
+ * Returns the relation type with the reverse indicator added if necessary.
112
+ *
113
+ * A reversed relation means the relation is considered from the object entity
114
+ * point of view.
115
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
116
+ *
117
+ * @param relationType The relation type to transform
118
+ * @param role The entity role in the relation
119
+ * @returns A relation type with the reverse indicator if necessary
120
+ *
121
+ * @category Utils
18
122
  */
19
- export declare function cardinalityRequired(cardinality: Cardinality): boolean;
123
+ export declare const getRelationType: (relationType: string, role: EntityRole) => string;
124
+ /**
125
+ * Finds the relation matching the provided source, relation typ and target
126
+ *
127
+ * @param entitySchema The entity schema the relation is from
128
+ * @param sourceType The entity type acting as source for the relation
129
+ * @param relationType The type of the relation to use. Can have the reverse indicator to decide the role of the source/target entities
130
+ * @param targetType The entity type acting as target for the relation
131
+ * @returns The relation definition matching the triplet source relation target
132
+ *
133
+ * @category Utils
134
+ */
135
+ export declare const getRelationDefinition: (entitySchema: EntitySchema, sourceType: string, relationType: string, targetType: string) => import("./RelationDefinitionSchema.js").RelationDefinitionSchema<EntityRawSchemaArray, RelationDefinitionRawSchemaArray<EntityRawSchemaArray>, Readonly<{
136
+ type: string;
137
+ description: string;
138
+ cardinality: "**" | "*1" | "*?" | "*+" | "1*" | "11" | "1?" | "1+" | "?*" | "?1" | "??" | "?+" | "+*" | "+1" | "+?" | "++";
139
+ subject: string;
140
+ } & ((import("../raw/RelationDefinitions.js").BuildObj & {
141
+ final: true;
142
+ constraints: import("../raw/Constraints.js").AttributeConstraint[];
143
+ options: import("../raw/RelationDefinitions.js").AttributeOptions;
144
+ }) | {
145
+ object: string;
146
+ final: false;
147
+ constraints: import("../raw/Constraints.js").RelationConstraint[];
148
+ options: import("../raw/RelationDefinitions.js").RelationOptions;
149
+ })>> | undefined;
20
150
  /**
21
151
  * Partial raw relation definition schema type.
152
+ *
153
+ * @category Utils
22
154
  */
23
155
  export type RelationDefinitionMatcher<E extends EntityRawSchemaArray> = Partial<RelationDefinitionRawSchema<E>>;
24
156
  /**
@@ -26,6 +158,8 @@ export type RelationDefinitionMatcher<E extends EntityRawSchemaArray> = Partial<
26
158
  * If it finds a relation definition matching the partial one given, it will return its type.
27
159
  * If it cannot find any relation definition matching, it will return the `never` type
28
160
  * and TypeScript will give compile errors.
161
+ *
162
+ * @category Utils
29
163
  */
30
164
  export type MatchedRelationDefinition<E extends EntityRawSchemaArray, R extends RelationDefinitionRawSchemaArray<EntityRawSchemaArray>, M extends RelationDefinitionMatcher<E>> = R[number] extends infer RDef ? (RDef extends M ? RDef : never) : never;
31
165
  export declare function hasAttributeWithName(entitySchema: EntitySchema, attributeNameSearched: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,gCAAgC,EACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,4PAO1B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAErE;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,oBAAoB,IAAI,OAAO,CAC7E,2BAA2B,CAAC,CAAC,CAAC,CAC/B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,CACnC,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,gCAAgC,CAAC,oBAAoB,CAAC,EAChE,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,IACpC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAE3E,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAOT;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAET"}
1
+ {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,gCAAgC,EACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,4PAO1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAEvE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,gBAAiB,WAAW,KAAG,OAEhE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,gBAAiB,WAAW,KAAG,OAEhE,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,iBAAkB,MAAM,KAAG,OAE7D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,KAAG,UAE9D,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,iBAAkB,MAAM,KAAG,MAM7D,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,iBAAkB,MAAM,KAAG,MAMzD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,iBAAkB,MAAM,QAAQ,UAAU,WAIrE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,iBAClB,YAAY,cACd,MAAM,gBACJ,MAAM,cACR,MAAM;;;;;;;;;;;;;;gBAYnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,oBAAoB,IAAI,OAAO,CAC7E,2BAA2B,CAAC,CAAC,CAAC,CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,CACnC,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,gCAAgC,CAAC,oBAAoB,CAAC,EAChE,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,IACpC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAE3E,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAOT;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAET"}