@cubicweb/client 2.1.0 → 3.0.0-alpha.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,WAAW,EAEZ,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CAAC;AAEb;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;;;;;;;OASG;gBACS,MAAM,EAAE,MAAM;IAS1B,IAAI,MAAM,WAET;IAED,OAAO,CAAC,WAAW;IAInB;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAYnE;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAOlC;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB9D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAOnC,kBAAkB,CACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,iBAAiB,CAAC;IA2B7B,OAAO,CAAC,gBAAgB;CAgBzB"}
1
+ {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,WAAW,EAEZ,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CAAC;AAEb;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;;;;;;;OASG;gBACS,MAAM,EAAE,MAAM;IAS1B,IAAI,MAAM,WAET;IAED,OAAO,CAAC,WAAW;IAInB;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAYnE;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAOlC;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB9D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAOnC,kBAAkB,CACtB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,iBAAiB,CAAC;IA+B7B,OAAO,CAAC,gBAAgB;CAgBzB"}
package/lib/api/Api.js CHANGED
@@ -132,12 +132,17 @@ class Api {
132
132
  : value,
133
133
  ])),
134
134
  }));
135
- const resultSets = yield nonNullFetchApi(this._transactionApiUrl, {
136
- method: "POST",
137
- credentials: "include",
138
- body: JSON.stringify(data),
139
- });
140
- return new Transaction_1.TransactionResult(resultSets);
135
+ try {
136
+ const resultSets = yield nonNullFetchApi(this._transactionApiUrl, {
137
+ method: "POST",
138
+ credentials: "include",
139
+ body: JSON.stringify(data),
140
+ });
141
+ return new Transaction_1.TransactionResult(resultSets);
142
+ }
143
+ catch (e) {
144
+ this.handleUserErrors(e);
145
+ }
141
146
  });
142
147
  }
143
148
  handleUserErrors(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"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"}
@@ -33,23 +33,23 @@ export declare class EntitySchema<E extends EntityRawSchemaArray = EntityRawSche
33
33
  */
34
34
  get final(): ERawSchema["final"];
35
35
  /**
36
- * Gets the list of relation definitions schemas with this entity as subject.
37
- * In case a relation definition schema has this entity as both object and subject,
38
- * there will be dupicates when used along with `objectRelationsDefinitions`.
36
+ * Gets the list of attribute schemas (relation definition schemas with final at false)
37
+ * for this entity schema.
39
38
  */
40
- get subjectRelationDefinitions(): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
39
+ get attributes(): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
41
40
  subject: ERawSchema["type"];
42
- final: false;
43
- }>>[];
44
- /**
45
- * Gets the list of relation definitions schemas with this entity as object.
46
- * In case a relation definition schema has this entity as both object and subject,
47
- * there will be dupicates when used along with `subjectRelationDefinitions`.
48
- */
49
- get objectRelationsDefinitions(): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
50
- object: ERawSchema["type"];
51
- final: false;
41
+ final: true;
52
42
  }>>[];
43
+ get relationDefinitions(): {
44
+ subject: RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
45
+ subject: ERawSchema["type"];
46
+ final: false;
47
+ }>>[];
48
+ object: RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
49
+ object: ERawSchema["type"];
50
+ final: false;
51
+ }>>[];
52
+ };
53
53
  /**
54
54
  * Finds relations in the Schema matching the partial relation given.
55
55
  *
@@ -59,13 +59,5 @@ export declare class EntitySchema<E extends EntityRawSchemaArray = EntityRawSche
59
59
  matchRelationDefinitions<M extends RelationDefinitionMatcher<E>>(matcher: M): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
60
60
  subject: ERawSchema["type"];
61
61
  }>>[];
62
- /**
63
- * Gets the list of attribute schemas (relation definition schemas with final at false)
64
- * for this entity schema.
65
- */
66
- get attributes(): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
67
- subject: ERawSchema["type"];
68
- final: true;
69
- }>>[];
70
62
  }
71
63
  //# sourceMappingURL=EntitySchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntitySchema.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/EntitySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;;GAIG;AACH,qBAAa,YAAY,CACvB,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC,EACnF,UAAU,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAWtC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IAVzB;;;;;;;OAOG;gBAEO,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,eAAe,EAAE,UAAU;IAGrC;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,CAE7B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,UAAU,CAAC,aAAa,CAAC,CAE3C;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,CAE/B;IAED;;;;OAIG;IACH,IAAI,0BAA0B,IAAI,wBAAwB,CACxD,CAAC,EACD,CAAC,EACD,yBAAyB,CACvB,CAAC,EACD,CAAC,EACD;QAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAC9C,CACF,EAAE,CAKF;IAED;;;;OAIG;IACH,IAAI,0BAA0B,IAAI,wBAAwB,CACxD,CAAC,EACD,CAAC,EACD,yBAAyB,CACvB,CAAC,EACD,CAAC,EACD;QAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAC7C,CACF,EAAE,CAKF;IAED;;;;;OAKG;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,UAAU,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CACjE,EAAE;IAIH;;;OAGG;IACH,IAAI,UAAU,IAAI,wBAAwB,CACxC,CAAC,EACD,CAAC,EACD,yBAAyB,CACvB,CAAC,EACD,CAAC,EACD;QAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAC7C,CACF,EAAE,CAKF;CACF"}
1
+ {"version":3,"file":"EntitySchema.d.ts","sourceRoot":"","sources":["../../../src/schema/classes/EntitySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;;GAIG;AACH,qBAAa,YAAY,CACvB,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC,EACnF,UAAU,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAWtC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IAVzB;;;;;;;OAOG;gBAEO,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,eAAe,EAAE,UAAU;IAGrC;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,CAE7B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,UAAU,CAAC,aAAa,CAAC,CAE3C;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,CAE/B;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,wBAAwB,CACxC,CAAC,EACD,CAAC,EACD,yBAAyB,CACvB,CAAC,EACD,CAAC,EACD;QAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAC7C,CACF,EAAE,CAKF;IAED,IAAI,mBAAmB,IAAI;QACzB,OAAO,EAAE,wBAAwB,CAC/B,CAAC,EACD,CAAC,EACD,yBAAyB,CACvB,CAAC,EACD,CAAC,EACD;YAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,CAC9C,CACF,EAAE,CAAC;QACJ,MAAM,EAAE,wBAAwB,CAC9B,CAAC,EACD,CAAC,EACD,yBAAyB,CACvB,CAAC,EACD,CAAC,EACD;YAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,CAC7C,CACF,EAAE,CAAC;KACL,CAWA;IAED;;;;;OAKG;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,UAAU,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC,CACjE,EAAE;CAGJ"}
@@ -38,26 +38,26 @@ class EntitySchema {
38
38
  return this.entityRawSchema.final;
39
39
  }
40
40
  /**
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`.
41
+ * Gets the list of attribute schemas (relation definition schemas with final at false)
42
+ * for this entity schema.
44
43
  */
45
- get subjectRelationDefinitions() {
44
+ get attributes() {
46
45
  return this.schema.matchRelationDefinitions({
46
+ final: true,
47
47
  subject: this.type,
48
- final: false,
49
48
  });
50
49
  }
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
- });
50
+ get relationDefinitions() {
51
+ return {
52
+ subject: this.schema.matchRelationDefinitions({
53
+ subject: this.type,
54
+ final: false,
55
+ }),
56
+ object: this.schema.matchRelationDefinitions({
57
+ object: this.type,
58
+ final: false,
59
+ }),
60
+ };
61
61
  }
62
62
  /**
63
63
  * Finds relations in the Schema matching the partial relation given.
@@ -68,16 +68,6 @@ class EntitySchema {
68
68
  matchRelationDefinitions(matcher) {
69
69
  return this.schema.matchRelationDefinitions(matcher);
70
70
  }
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
71
  }
82
72
  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":";;;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;;;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;AAzGD,oCAyGC"}
@@ -3,6 +3,7 @@ import { RelationDefinitionRawSchemaArray, Cardinality } from "../raw/RelationDe
3
3
  import { IsLooseSchema, EntityRawSchemaByType } from "../raw/Utils";
4
4
  import { EntitySchema } from "./EntitySchema";
5
5
  import { Schema } from "./Schema";
6
+ import { EntityRole } from "./Utils";
6
7
  /**
7
8
  * Wrapper around raw relation definition schemas from the Schema.
8
9
  * You should never have to create this object yourself.
@@ -55,15 +56,10 @@ export declare class RelationDefinitionSchema<E extends EntityRawSchemaArray = E
55
56
  /**
56
57
  * The cardinality of this relation definition schema.
57
58
  */
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;
59
+ get cardinality(): {
60
+ subject: Cardinality;
61
+ object: Cardinality;
62
+ };
67
63
  /**
68
64
  * Gets the entity associated to this relation definition schema's subject.
69
65
  *
@@ -82,6 +78,6 @@ export declare class RelationDefinitionSchema<E extends EntityRawSchemaArray = E
82
78
  * @param role The point of view to use
83
79
  * @returns
84
80
  */
85
- isRequired(role: "subject" | "object"): boolean;
81
+ isRequired(role: EntityRole): boolean;
86
82
  }
87
83
  //# 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,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;AAClC,OAAO,EAAE,UAAU,EAAyB,MAAM,SAAS,CAAC;AAE5D;;;;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;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"}
@@ -67,19 +67,10 @@ class RelationDefinitionSchema {
67
67
  * The cardinality of this relation definition schema.
68
68
  */
69
69
  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];
70
+ return {
71
+ subject: this.relDef.cardinality[0],
72
+ object: this.relDef.cardinality[1],
73
+ };
83
74
  }
84
75
  /**
85
76
  * Gets the entity associated to this relation definition schema's subject.
@@ -114,14 +105,7 @@ class RelationDefinitionSchema {
114
105
  * @returns
115
106
  */
116
107
  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);
108
+ return (0, Utils_1.isCardinalityRequired)(this.cardinality[role]);
125
109
  }
126
110
  }
127
111
  exports.RelationDefinitionSchema = RelationDefinitionSchema;
@@ -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,yCAAuD;AASvD,mCAA4D;AAE5D;;;;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;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,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,IAAgB;QACzB,OAAO,IAAA,6BAAqB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AA1HD,4DA0HC"}
@@ -2,6 +2,10 @@ import { EntityRawSchemaArray } from "../raw/Entities";
2
2
  import { Cardinality, RelationDefinitionRawSchema, RelationDefinitionRawSchemaArray } from "../raw/RelationDefinitions";
3
3
  import { Schema } from "./Schema";
4
4
  import { EntitySchema } from "./EntitySchema";
5
+ /**
6
+ * An entity role in a relation.
7
+ */
8
+ export type EntityRole = "subject" | "object";
5
9
  /**
6
10
  * Returns the given schema using loose typing.
7
11
  * Can be useful when working with generic schemas
@@ -16,7 +20,109 @@ export declare const getLooseSchema: <E extends EntityRawSchemaArray = EntityRaw
16
20
  * @param cardinality The cardinality to check
17
21
  * @returns True if the cardinality is 1 or +
18
22
  */
19
- export declare function cardinalityRequired(cardinality: Cardinality): boolean;
23
+ export declare function isCardinalityRequired(cardinality: Cardinality): boolean;
24
+ /**
25
+ * Checks if the cardinality allows multiple entities to be present
26
+ *
27
+ * @param cardinality The cardinility to check
28
+ * @returns True if the cardinality is `*` or `+`
29
+ */
30
+ export declare const isCardinalityMultiple: (cardinality: Cardinality) => boolean;
31
+ /**
32
+ * Checks if the cardinality allows entities to be absent
33
+ *
34
+ * @param cardinality The cardinility to check
35
+ * @returns True if the cardinality is `?` or `*`
36
+ */
37
+ export declare const isCardinalityOptional: (cardinality: Cardinality) => boolean;
38
+ /**
39
+ * Reverses the given role name
40
+ *
41
+ * @param role The role to reverse
42
+ * @returns "object" if the given role was "subject", "subject" otherwise
43
+ */
44
+ export declare function getOppositeRelationRole(role: EntityRole): EntityRole;
45
+ /**
46
+ * Checks if the given relation type is reversed.
47
+ *
48
+ * A reversed relation means the relation is considered from the object entity
49
+ * point of view.
50
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
51
+ *
52
+ * @param relationType The relation type to check
53
+ * @returns True if the relation type starts with the reverse indicator
54
+ */
55
+ export declare const isRelationTypeReversed: (relationType: string) => boolean;
56
+ /**
57
+ * Gets the entity role in the given relation type by
58
+ * checking for the reverse indicator
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 "subject" if the relation is not reversed, "object" otherwise
66
+ */
67
+ export declare const getRoleFromRelationType: (relationType: string) => EntityRole;
68
+ /**
69
+ * Adds the reverse indicator from the relation type if it is not already present.
70
+ *
71
+ * A reversed relation means the relation is considered from the object entity
72
+ * point of view.
73
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
74
+ *
75
+ * @param relationType The relation type to transform
76
+ * @returns The relation type with the reverse indicator added or removed
77
+ */
78
+ export declare const getReverseRelationType: (relationType: string) => string;
79
+ /**
80
+ * Clears the reverse indicator from the relation type if it is present.
81
+ *
82
+ * A reversed relation means the relation is considered from the object entity
83
+ * point of view.
84
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
85
+ *
86
+ * @param relationType The relation type to transform
87
+ * @returns The relation type with the reverse indicator added or removed
88
+ */
89
+ export declare const getRawRelationType: (relationType: string) => string;
90
+ /**
91
+ * Returns the relation type with the reverse indicator added if necessary.
92
+ *
93
+ * A reversed relation means the relation is considered from the object entity
94
+ * point of view.
95
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
96
+ *
97
+ * @param relationType The relation type to transform
98
+ * @param role The entity role in the relation
99
+ * @returns A relation type with the reverse indicator if necessary
100
+ */
101
+ export declare const getRelationType: (relationType: string, role: EntityRole) => string;
102
+ /**
103
+ * Finds the relation matching the provided source, relation typ and target
104
+ *
105
+ * @param entitySchema The entity schema the relation is from
106
+ * @param sourceType The entity type acting as source for the relation
107
+ * @param relationType The type of the relation to use. Can have the reverse indicator to decide the role of the source/target entities
108
+ * @param targetType The entity type acting as target for the relation
109
+ * @returns The relation definition matching the triplet source relation target
110
+ */
111
+ export declare const getRelationDefinition: (entitySchema: EntitySchema, sourceType: string, relationType: string, targetType: string) => import("./RelationDefinitionSchema").RelationDefinitionSchema<EntityRawSchemaArray, RelationDefinitionRawSchemaArray<EntityRawSchemaArray>, Readonly<{
112
+ type: string;
113
+ description: string;
114
+ cardinality: "**" | "*1" | "*?" | "*+" | "1*" | "11" | "1?" | "1+" | "?*" | "?1" | "??" | "?+" | "+*" | "+1" | "+?" | "++";
115
+ subject: string;
116
+ } & ((import("../raw/RelationDefinitions").BuildObj & {
117
+ final: true;
118
+ constraints: import("../..").AttributeConstraint[];
119
+ options: import("../raw/RelationDefinitions").AttributeOptions;
120
+ }) | {
121
+ object: string;
122
+ final: false;
123
+ constraints: import("../..").RelationConstraint[];
124
+ options: import("../raw/RelationDefinitions").RelationOptions;
125
+ })>> | undefined;
20
126
  /**
21
127
  * Partial raw relation definition schema type.
22
128
  */
@@ -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,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;AAO9C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,4PAO1B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAEvE;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,gBAAiB,WAAW,KAAG,OAEhE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,gBAAiB,WAAW,KAAG,OAEhE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,iBAAkB,MAAM,KAAG,OAE7D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,KAAG,UAE9D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,iBAAkB,MAAM,KAAG,MAM7D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,iBAAkB,MAAM,KAAG,MAMzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,iBAAkB,MAAM,QAAQ,UAAU,WAIrE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,iBAClB,YAAY,cACd,MAAM,gBACJ,MAAM,cACR,MAAM;;;;;;;;;;;;;;gBAYnB,CAAC;AAEF;;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,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAttributeRichString = exports.hasAttributeWithName = exports.cardinalityRequired = exports.getLooseSchema = void 0;
3
+ exports.isAttributeRichString = exports.hasAttributeWithName = exports.getRelationDefinition = exports.getRelationType = exports.getRawRelationType = exports.getReverseRelationType = exports.getRoleFromRelationType = exports.isRelationTypeReversed = exports.getOppositeRelationRole = exports.isCardinalityOptional = exports.isCardinalityMultiple = exports.isCardinalityRequired = exports.getLooseSchema = void 0;
4
+ // This prefix is often applied to relation types as convention
5
+ // indicating a relation is viewed from the object's point of view
6
+ // We do not export it and instead encourage users to use the utility functions
7
+ const REVERSE_INDICATOR = "reverse_";
4
8
  /**
5
9
  * Returns the given schema using loose typing.
6
10
  * Can be useful when working with generic schemas
@@ -18,10 +22,146 @@ exports.getLooseSchema = getLooseSchema;
18
22
  * @param cardinality The cardinality to check
19
23
  * @returns True if the cardinality is 1 or +
20
24
  */
21
- function cardinalityRequired(cardinality) {
25
+ function isCardinalityRequired(cardinality) {
22
26
  return cardinality === "1" || cardinality === "+";
23
27
  }
24
- exports.cardinalityRequired = cardinalityRequired;
28
+ exports.isCardinalityRequired = isCardinalityRequired;
29
+ /**
30
+ * Checks if the cardinality allows multiple entities to be present
31
+ *
32
+ * @param cardinality The cardinility to check
33
+ * @returns True if the cardinality is `*` or `+`
34
+ */
35
+ const isCardinalityMultiple = (cardinality) => {
36
+ return cardinality === "*" || cardinality === "+";
37
+ };
38
+ exports.isCardinalityMultiple = isCardinalityMultiple;
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
+ const isCardinalityOptional = (cardinality) => {
46
+ return cardinality === "?" || cardinality === "*";
47
+ };
48
+ exports.isCardinalityOptional = isCardinalityOptional;
49
+ /**
50
+ * Reverses the given role name
51
+ *
52
+ * @param role The role to reverse
53
+ * @returns "object" if the given role was "subject", "subject" otherwise
54
+ */
55
+ function getOppositeRelationRole(role) {
56
+ return role === "subject" ? "object" : "subject";
57
+ }
58
+ exports.getOppositeRelationRole = getOppositeRelationRole;
59
+ /**
60
+ * Checks if the given relation type is reversed.
61
+ *
62
+ * A reversed relation means the relation is considered from the object entity
63
+ * point of view.
64
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
65
+ *
66
+ * @param relationType The relation type to check
67
+ * @returns True if the relation type starts with the reverse indicator
68
+ */
69
+ const isRelationTypeReversed = (relationType) => {
70
+ return relationType.startsWith(REVERSE_INDICATOR);
71
+ };
72
+ exports.isRelationTypeReversed = isRelationTypeReversed;
73
+ /**
74
+ * Gets the entity role in the given relation type by
75
+ * checking for the reverse indicator
76
+ *
77
+ * A reversed relation means the relation is considered from the object entity
78
+ * point of view.
79
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
80
+ *
81
+ * @param relationType The relation type to check
82
+ * @returns "subject" if the relation is not reversed, "object" otherwise
83
+ */
84
+ const getRoleFromRelationType = (relationType) => {
85
+ return (0, exports.isRelationTypeReversed)(relationType) ? "object" : "subject";
86
+ };
87
+ exports.getRoleFromRelationType = getRoleFromRelationType;
88
+ /**
89
+ * Adds the reverse indicator from the relation type if it is not already present.
90
+ *
91
+ * A reversed relation means the relation is considered from the object entity
92
+ * point of view.
93
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
94
+ *
95
+ * @param relationType The relation type to transform
96
+ * @returns The relation type with the reverse indicator added or removed
97
+ */
98
+ const getReverseRelationType = (relationType) => {
99
+ if (!(0, exports.isRelationTypeReversed)(relationType)) {
100
+ return `${REVERSE_INDICATOR}${relationType}`;
101
+ }
102
+ else {
103
+ return relationType;
104
+ }
105
+ };
106
+ exports.getReverseRelationType = getReverseRelationType;
107
+ /**
108
+ * Clears the reverse indicator from the relation type if it is present.
109
+ *
110
+ * A reversed relation means the relation is considered from the object entity
111
+ * point of view.
112
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
113
+ *
114
+ * @param relationType The relation type to transform
115
+ * @returns The relation type with the reverse indicator added or removed
116
+ */
117
+ const getRawRelationType = (relationType) => {
118
+ if ((0, exports.isRelationTypeReversed)(relationType)) {
119
+ return relationType.replace(REVERSE_INDICATOR, "");
120
+ }
121
+ else {
122
+ return relationType;
123
+ }
124
+ };
125
+ exports.getRawRelationType = getRawRelationType;
126
+ /**
127
+ * Returns the relation type with the reverse indicator added if necessary.
128
+ *
129
+ * A reversed relation means the relation is considered from the object entity
130
+ * point of view.
131
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
132
+ *
133
+ * @param relationType The relation type to transform
134
+ * @param role The entity role in the relation
135
+ * @returns A relation type with the reverse indicator if necessary
136
+ */
137
+ const getRelationType = (relationType, role) => {
138
+ return role === "subject"
139
+ ? relationType
140
+ : (0, exports.getReverseRelationType)(relationType);
141
+ };
142
+ exports.getRelationType = getRelationType;
143
+ /**
144
+ * Finds the relation matching the provided source, relation typ and target
145
+ *
146
+ * @param entitySchema The entity schema the relation is from
147
+ * @param sourceType The entity type acting as source for the relation
148
+ * @param relationType The type of the relation to use. Can have the reverse indicator to decide the role of the source/target entities
149
+ * @param targetType The entity type acting as target for the relation
150
+ * @returns The relation definition matching the triplet source relation target
151
+ */
152
+ const getRelationDefinition = (entitySchema, sourceType, relationType, targetType) => {
153
+ const role = (0, exports.getRoleFromRelationType)(relationType);
154
+ const match = entitySchema.matchRelationDefinitions({
155
+ [role]: sourceType,
156
+ type: (0, exports.getRawRelationType)(relationType),
157
+ [getOppositeRelationRole(role)]: targetType,
158
+ });
159
+ if (match.length > 0) {
160
+ return match[0];
161
+ }
162
+ return undefined;
163
+ };
164
+ exports.getRelationDefinition = getRelationDefinition;
25
165
  function hasAttributeWithName(entitySchema, attributeNameSearched) {
26
166
  for (const entityAttribute of entitySchema.attributes) {
27
167
  if (entityAttribute.type == attributeNameSearched) {
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/schema/classes/Utils.ts"],"names":[],"mappings":";;;AASA;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAI5B,MAAoB,EACpB,EAAE;IACF,OAAO,MAA2B,CAAC;AACrC,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB;AAEF;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,WAAwB;IAC1D,OAAO,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,CAAC;AACpD,CAAC;AAFD,kDAEC;AAqBD,SAAgB,oBAAoB,CAClC,YAA0B,EAC1B,qBAA6B;IAE7B,KAAK,MAAM,eAAe,IAAI,YAAY,CAAC,UAAU,EAAE;QACrD,IAAI,eAAe,CAAC,IAAI,IAAI,qBAAqB,EAAE;YACjD,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,oDAUC;AAED,SAAgB,qBAAqB,CACnC,YAA0B,EAC1B,qBAA6B;IAE7B,OAAO,oBAAoB,CAAC,YAAY,EAAE,qBAAqB,GAAG,SAAS,CAAC,CAAC;AAC/E,CAAC;AALD,sDAKC"}
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/schema/classes/Utils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { EntityRole } from "../classes/Utils";
1
2
  import { AttributeConstraint, RelationConstraint } from "./Constraints";
2
3
  import { EntityRawSchema, EntityRawSchemaArray } from "./Entities";
3
4
  /**
@@ -85,8 +86,8 @@ export type AttributeOptions = {
85
86
  export type RelationOptions = {
86
87
  symmetric?: boolean;
87
88
  inlined?: boolean;
88
- fulltext_container?: "subject" | "object";
89
- composite?: "subject" | "object";
89
+ fulltext_container?: EntityRole;
90
+ composite?: EntityRole;
90
91
  };
91
92
  /**
92
93
  * Type representing a relation definition schema.
@@ -1 +1 @@
1
- {"version":3,"file":"RelationDefinitions.d.ts","sourceRoot":"","sources":["../../../src/schema/raw/RelationDefinitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationDefinitions.d.ts","sourceRoot":"","sources":["../../../src/schema/raw/RelationDefinitions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@cubicweb/client",
3
3
  "description": "Official JS client for CubicWeb API",
4
4
  "author": "Logilab",
5
- "version": "2.1.0",
5
+ "version": "3.0.0-alpha.4",
6
6
  "license": "LGPL-3.0-or-later",
7
7
  "main": "lib/index.js",
8
8
  "types": "lib/index.d.ts",
package/src/api/Api.ts CHANGED
@@ -182,15 +182,19 @@ export default class Api {
182
182
  ])
183
183
  ),
184
184
  }));
185
- const resultSets = await nonNullFetchApi<ReadonlyArray<ResultSet>>(
186
- this._transactionApiUrl,
187
- {
188
- method: "POST",
189
- credentials: "include",
190
- body: JSON.stringify(data),
191
- }
192
- );
193
- return new TransactionResult(resultSets);
185
+ try {
186
+ const resultSets = await nonNullFetchApi<ReadonlyArray<ResultSet>>(
187
+ this._transactionApiUrl,
188
+ {
189
+ method: "POST",
190
+ credentials: "include",
191
+ body: JSON.stringify(data),
192
+ }
193
+ );
194
+ return new TransactionResult(resultSets);
195
+ } catch (e) {
196
+ this.handleUserErrors(e);
197
+ }
194
198
  }
195
199
 
196
200
  private handleUserErrors(error: unknown): never {
@@ -49,43 +49,54 @@ export class EntitySchema<
49
49
  }
50
50
 
51
51
  /**
52
- * Gets the list of relation definitions schemas with this entity as subject.
53
- * In case a relation definition schema has this entity as both object and subject,
54
- * there will be dupicates when used along with `objectRelationsDefinitions`.
52
+ * Gets the list of attribute schemas (relation definition schemas with final at false)
53
+ * for this entity schema.
55
54
  */
56
- get subjectRelationDefinitions(): RelationDefinitionSchema<
55
+ get attributes(): RelationDefinitionSchema<
57
56
  E,
58
57
  R,
59
58
  MatchedRelationDefinition<
60
59
  E,
61
60
  R,
62
- { subject: ERawSchema["type"]; final: false }
61
+ { subject: ERawSchema["type"]; final: true }
63
62
  >
64
63
  >[] {
65
64
  return this.schema.matchRelationDefinitions({
65
+ final: true,
66
66
  subject: this.type,
67
- final: false,
68
67
  });
69
68
  }
70
69
 
71
- /**
72
- * Gets the list of relation definitions schemas with this entity as object.
73
- * In case a relation definition schema has this entity as both object and subject,
74
- * there will be dupicates when used along with `subjectRelationDefinitions`.
75
- */
76
- get objectRelationsDefinitions(): RelationDefinitionSchema<
77
- E,
78
- R,
79
- MatchedRelationDefinition<
70
+ get relationDefinitions(): {
71
+ subject: RelationDefinitionSchema<
80
72
  E,
81
73
  R,
82
- { object: ERawSchema["type"]; final: false }
83
- >
84
- >[] {
85
- return this.schema.matchRelationDefinitions({
86
- object: this.type,
87
- final: false,
88
- });
74
+ MatchedRelationDefinition<
75
+ E,
76
+ R,
77
+ { subject: ERawSchema["type"]; final: false }
78
+ >
79
+ >[];
80
+ object: RelationDefinitionSchema<
81
+ E,
82
+ R,
83
+ MatchedRelationDefinition<
84
+ E,
85
+ R,
86
+ { object: ERawSchema["type"]; final: false }
87
+ >
88
+ >[];
89
+ } {
90
+ return {
91
+ subject: this.schema.matchRelationDefinitions({
92
+ subject: this.type,
93
+ final: false,
94
+ }),
95
+ object: this.schema.matchRelationDefinitions({
96
+ object: this.type,
97
+ final: false,
98
+ }),
99
+ };
89
100
  }
90
101
 
91
102
  /**
@@ -103,23 +114,4 @@ export class EntitySchema<
103
114
  >[] {
104
115
  return this.schema.matchRelationDefinitions(matcher);
105
116
  }
106
-
107
- /**
108
- * Gets the list of attribute schemas (relation definition schemas with final at false)
109
- * for this entity schema.
110
- */
111
- get attributes(): RelationDefinitionSchema<
112
- E,
113
- R,
114
- MatchedRelationDefinition<
115
- E,
116
- R,
117
- { subject: ERawSchema["type"]; final: true }
118
- >
119
- >[] {
120
- return this.schema.matchRelationDefinitions({
121
- final: true,
122
- subject: this.type,
123
- });
124
- }
125
117
  }
@@ -7,7 +7,7 @@ import {
7
7
  import { IsLooseSchema, EntityRawSchemaByType } from "../raw/Utils";
8
8
  import { EntitySchema } from "./EntitySchema";
9
9
  import { Schema } from "./Schema";
10
- import { cardinalityRequired } from "./Utils";
10
+ import { EntityRole, isCardinalityRequired } from "./Utils";
11
11
 
12
12
  /**
13
13
  * Wrapper around raw relation definition schemas from the Schema.
@@ -84,22 +84,11 @@ export class RelationDefinitionSchema<
84
84
  /**
85
85
  * The cardinality of this relation definition schema.
86
86
  */
87
- get cardinality(): RDef["cardinality"] {
88
- return this.relDef.cardinality;
89
- }
90
-
91
- /**
92
- * The cardinality of this relation definition schema's subject.
93
- */
94
- get subjectCardinality(): Cardinality {
95
- return this.relDef.cardinality[0] as Cardinality;
96
- }
97
-
98
- /**
99
- * The cardinality of this relation definition schema's object.
100
- */
101
- get objectCardinality(): Cardinality {
102
- return this.relDef.cardinality[1] as Cardinality;
87
+ get cardinality(): { subject: Cardinality; object: Cardinality } {
88
+ return {
89
+ subject: this.relDef.cardinality[0] as Cardinality,
90
+ object: this.relDef.cardinality[1] as Cardinality,
91
+ };
103
92
  }
104
93
 
105
94
  /**
@@ -144,13 +133,7 @@ export class RelationDefinitionSchema<
144
133
  * @param role The point of view to use
145
134
  * @returns
146
135
  */
147
- isRequired(role: "subject" | "object") {
148
- let cardinality: Cardinality;
149
- if (role === "subject") {
150
- cardinality = this.subjectCardinality;
151
- } else {
152
- cardinality = this.objectCardinality;
153
- }
154
- return cardinalityRequired(cardinality);
136
+ isRequired(role: EntityRole) {
137
+ return isCardinalityRequired(this.cardinality[role]);
155
138
  }
156
139
  }
@@ -7,6 +7,16 @@ import {
7
7
  import { Schema } from "./Schema";
8
8
  import { EntitySchema } from "./EntitySchema";
9
9
 
10
+ // This prefix is often applied to relation types as convention
11
+ // indicating a relation is viewed from the object's point of view
12
+ // We do not export it and instead encourage users to use the utility functions
13
+ const REVERSE_INDICATOR = "reverse_";
14
+
15
+ /**
16
+ * An entity role in a relation.
17
+ */
18
+ export type EntityRole = "subject" | "object";
19
+
10
20
  /**
11
21
  * Returns the given schema using loose typing.
12
22
  * Can be useful when working with generic schemas
@@ -29,10 +39,149 @@ export const getLooseSchema = <
29
39
  * @param cardinality The cardinality to check
30
40
  * @returns True if the cardinality is 1 or +
31
41
  */
32
- export function cardinalityRequired(cardinality: Cardinality): boolean {
42
+ export function isCardinalityRequired(cardinality: Cardinality): boolean {
33
43
  return cardinality === "1" || cardinality === "+";
34
44
  }
35
45
 
46
+ /**
47
+ * Checks if the cardinality allows multiple entities to be present
48
+ *
49
+ * @param cardinality The cardinility to check
50
+ * @returns True if the cardinality is `*` or `+`
51
+ */
52
+ export const isCardinalityMultiple = (cardinality: Cardinality): boolean => {
53
+ return cardinality === "*" || cardinality === "+";
54
+ };
55
+
56
+ /**
57
+ * Checks if the cardinality allows entities to be absent
58
+ *
59
+ * @param cardinality The cardinility to check
60
+ * @returns True if the cardinality is `?` or `*`
61
+ */
62
+ export const isCardinalityOptional = (cardinality: Cardinality): boolean => {
63
+ return cardinality === "?" || cardinality === "*";
64
+ };
65
+
66
+ /**
67
+ * Reverses the given role name
68
+ *
69
+ * @param role The role to reverse
70
+ * @returns "object" if the given role was "subject", "subject" otherwise
71
+ */
72
+ export function getOppositeRelationRole(role: EntityRole): EntityRole {
73
+ return role === "subject" ? "object" : "subject";
74
+ }
75
+
76
+ /**
77
+ * Checks if the given relation type is reversed.
78
+ *
79
+ * A reversed relation means the relation is considered from the object entity
80
+ * point of view.
81
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
82
+ *
83
+ * @param relationType The relation type to check
84
+ * @returns True if the relation type starts with the reverse indicator
85
+ */
86
+ export const isRelationTypeReversed = (relationType: string): boolean => {
87
+ return relationType.startsWith(REVERSE_INDICATOR);
88
+ };
89
+
90
+ /**
91
+ * Gets the entity role in the given relation type by
92
+ * checking for the reverse indicator
93
+ *
94
+ * A reversed relation means the relation is considered from the object entity
95
+ * point of view.
96
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
97
+ *
98
+ * @param relationType The relation type to check
99
+ * @returns "subject" if the relation is not reversed, "object" otherwise
100
+ */
101
+ export const getRoleFromRelationType = (relationType: string): EntityRole => {
102
+ return isRelationTypeReversed(relationType) ? "object" : "subject";
103
+ };
104
+
105
+ /**
106
+ * Adds the reverse indicator from the relation type if it is not already present.
107
+ *
108
+ * A reversed relation means the relation is considered from the object entity
109
+ * point of view.
110
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
111
+ *
112
+ * @param relationType The relation type to transform
113
+ * @returns The relation type with the reverse indicator added or removed
114
+ */
115
+ export const getReverseRelationType = (relationType: string): string => {
116
+ if (!isRelationTypeReversed(relationType)) {
117
+ return `${REVERSE_INDICATOR}${relationType}`;
118
+ } else {
119
+ return relationType;
120
+ }
121
+ };
122
+
123
+ /**
124
+ * Clears the reverse indicator from the relation type if it is present.
125
+ *
126
+ * A reversed relation means the relation is considered from the object entity
127
+ * point of view.
128
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
129
+ *
130
+ * @param relationType The relation type to transform
131
+ * @returns The relation type with the reverse indicator added or removed
132
+ */
133
+ export const getRawRelationType = (relationType: string): string => {
134
+ if (isRelationTypeReversed(relationType)) {
135
+ return relationType.replace(REVERSE_INDICATOR, "");
136
+ } else {
137
+ return relationType;
138
+ }
139
+ };
140
+
141
+ /**
142
+ * Returns the relation type with the reverse indicator added if necessary.
143
+ *
144
+ * A reversed relation means the relation is considered from the object entity
145
+ * point of view.
146
+ * The reverse indicator is a prefix added as a convention in CubicWeb.
147
+ *
148
+ * @param relationType The relation type to transform
149
+ * @param role The entity role in the relation
150
+ * @returns A relation type with the reverse indicator if necessary
151
+ */
152
+ export const getRelationType = (relationType: string, role: EntityRole) => {
153
+ return role === "subject"
154
+ ? relationType
155
+ : getReverseRelationType(relationType);
156
+ };
157
+
158
+ /**
159
+ * Finds the relation matching the provided source, relation typ and target
160
+ *
161
+ * @param entitySchema The entity schema the relation is from
162
+ * @param sourceType The entity type acting as source for the relation
163
+ * @param relationType The type of the relation to use. Can have the reverse indicator to decide the role of the source/target entities
164
+ * @param targetType The entity type acting as target for the relation
165
+ * @returns The relation definition matching the triplet source relation target
166
+ */
167
+ export const getRelationDefinition = (
168
+ entitySchema: EntitySchema,
169
+ sourceType: string,
170
+ relationType: string,
171
+ targetType: string
172
+ ) => {
173
+ const role = getRoleFromRelationType(relationType);
174
+ const match = entitySchema.matchRelationDefinitions({
175
+ [role]: sourceType,
176
+ type: getRawRelationType(relationType),
177
+ [getOppositeRelationRole(role)]: targetType,
178
+ });
179
+ if (match.length > 0) {
180
+ return match[0];
181
+ }
182
+ return undefined;
183
+ };
184
+
36
185
  /**
37
186
  * Partial raw relation definition schema type.
38
187
  */
@@ -1,3 +1,4 @@
1
+ import { EntityRole } from "../classes/Utils";
1
2
  import { AttributeConstraint, RelationConstraint } from "./Constraints";
2
3
  import { EntityRawSchema, EntityRawSchemaArray } from "./Entities";
3
4
 
@@ -122,8 +123,8 @@ export type AttributeOptions = {
122
123
  export type RelationOptions = {
123
124
  symmetric?: boolean;
124
125
  inlined?: boolean;
125
- fulltext_container?: "subject" | "object";
126
- composite?: "subject" | "object";
126
+ fulltext_container?: EntityRole;
127
+ composite?: EntityRole;
127
128
  };
128
129
 
129
130
  /**