@cubicweb/client 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/Errors.d.ts CHANGED
@@ -1,9 +1,6 @@
1
1
  export declare class InconsistentSchemaError extends Error {
2
2
  constructor(message: string);
3
3
  }
4
- export declare class RelationNotFoundError extends Error {
5
- constructor(relationType: string, role: "object" | "subject", entityType: string);
6
- }
7
4
  export declare class TransactionClosedError extends Error {
8
5
  constructor();
9
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAE5C,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,UAAU,EAAE,MAAM;CAOrB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD"}
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD"}
package/lib/Errors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TransactionClosedError = exports.RelationNotFoundError = exports.InconsistentSchemaError = void 0;
3
+ exports.TransactionClosedError = exports.InconsistentSchemaError = void 0;
4
4
  class InconsistentSchemaError extends Error {
5
5
  constructor(message) {
6
6
  super(`Inconsistent schema: ${message}`);
@@ -8,13 +8,6 @@ class InconsistentSchemaError extends Error {
8
8
  }
9
9
  }
10
10
  exports.InconsistentSchemaError = InconsistentSchemaError;
11
- class RelationNotFoundError extends Error {
12
- constructor(relationType, role, entityType) {
13
- super(`Relation Not Found: relation type ${relationType} with entity type ${entityType} as ${role} is not declared`);
14
- Object.setPrototypeOf(this, new.target.prototype);
15
- }
16
- }
17
- exports.RelationNotFoundError = RelationNotFoundError;
18
11
  class TransactionClosedError extends Error {
19
12
  constructor() {
20
13
  super("Trying to use a closed transaction");
package/lib/Errors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AALD,0DAKC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YACE,YAAoB,EACpB,IAA0B,EAC1B,UAAkB;QAElB,KAAK,CACH,qCAAqC,YAAY,qBAAqB,UAAU,OAAO,IAAI,kBAAkB,CAC9G,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAXD,sDAWC;AAED,MAAa,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AALD,wDAKC"}
1
+ {"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AALD,0DAKC;AAED,MAAa,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AALD,wDAKC"}
package/lib/api/Api.d.ts CHANGED
@@ -17,11 +17,12 @@ export default class Api {
17
17
  private transactionApiUrl;
18
18
  constructor(apiUrl: string);
19
19
  execute(query: string, params: RQLParams): Promise<ResultSet>;
20
- schema(): Promise<RawSchema>;
21
- transactionBegin(): Promise<Response>;
20
+ schema(): Promise<RawSchema<import("../schema/SchemaJSON").EntityRawSchemaArray, import("../schema/SchemaJSON").RelationDefinitionRawSchemaArray<import("../schema/SchemaJSON").EntityRawSchemaArray>>>;
21
+ login(login: string, password: string): Promise<boolean>;
22
+ transactionBegin(): Promise<string>;
22
23
  transactionExecute(uuid: string, query: string, params: RQLParams): Promise<ResultSet>;
23
- transactionCommit(uuid: string): Promise<Response>;
24
- transactionRollback(uuid: string): Promise<Response>;
24
+ transactionCommit(uuid: string): Promise<null>;
25
+ transactionRollback(uuid: string): Promise<null>;
25
26
  }
26
- export declare const fetchApi: (input: RequestInfo, init?: RequestInit | undefined) => Promise<ResultSet>;
27
+ export declare const fetchApi: <R = unknown>(input: RequestInfo, init?: RequestInit | undefined) => Promise<R>;
27
28
  //# sourceMappingURL=Api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,oBAAY,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;AAC7D,oBAAY,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,oBAAY,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CAAC;AAEb,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,MAAM;IAKpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IAQxC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAM5B,gBAAgB;IAShB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IASjE,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAS9B,mBAAmB,CAAC,IAAI,EAAE,MAAM;CAQvC;AAED,eAAO,MAAM,QAAQ,UAAW,WAAW,uDAqB1C,CAAC"}
1
+ {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,oBAAY,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,oBAAY,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;AAC7D,oBAAY,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,oBAAY,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CAAC;AAEb,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,MAAM;IAKpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IAQxC,MAAM;IAON,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAarC,gBAAgB;IAQhB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IAQjE,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAQ9B,mBAAmB,CAAC,IAAI,EAAE,MAAM;CAOvC;AAED,eAAO,MAAM,QAAQ,uBACZ,WAAW,+CAoBnB,CAAC"}
package/lib/api/Api.js CHANGED
@@ -26,47 +26,58 @@ class Api {
26
26
  }
27
27
  schema() {
28
28
  return __awaiter(this, void 0, void 0, function* () {
29
- const res = yield fetch(`${this.apiUrl}/schema`);
30
- const schema = yield res.json();
31
- return schema;
29
+ return (0, exports.fetchApi)(`${this.apiUrl}/schema`, {
30
+ method: "GET",
31
+ credentials: "include",
32
+ });
33
+ });
34
+ }
35
+ login(login, password) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ return (0, exports.fetchApi)(`${this.apiUrl}/login`, {
38
+ method: "POST",
39
+ body: JSON.stringify({
40
+ login,
41
+ password,
42
+ }),
43
+ credentials: "include",
44
+ })
45
+ .then(() => true)
46
+ .catch(() => false);
32
47
  });
33
48
  }
34
49
  transactionBegin() {
35
50
  return __awaiter(this, void 0, void 0, function* () {
36
- const body = JSON.stringify({ action: "begin" });
37
- return yield fetch(this.transactionApiUrl, {
51
+ return (0, exports.fetchApi)(this.transactionApiUrl, {
38
52
  method: "POST",
39
- body,
53
+ body: JSON.stringify({ action: "begin" }),
40
54
  credentials: "include",
41
55
  });
42
56
  });
43
57
  }
44
58
  transactionExecute(uuid, query, params) {
45
59
  return __awaiter(this, void 0, void 0, function* () {
46
- const body = JSON.stringify({ action: "execute", uuid, query, params });
47
60
  return (0, exports.fetchApi)(this.transactionApiUrl, {
48
61
  method: "POST",
49
- body,
62
+ body: JSON.stringify({ action: "execute", uuid, query, params }),
50
63
  credentials: "include",
51
64
  });
52
65
  });
53
66
  }
54
67
  transactionCommit(uuid) {
55
68
  return __awaiter(this, void 0, void 0, function* () {
56
- const body = JSON.stringify({ action: "commit", uuid });
57
- return yield fetch(this.transactionApiUrl, {
69
+ return (0, exports.fetchApi)(this.transactionApiUrl, {
58
70
  method: "POST",
59
- body,
71
+ body: JSON.stringify({ action: "commit", uuid }),
60
72
  credentials: "include",
61
73
  });
62
74
  });
63
75
  }
64
76
  transactionRollback(uuid) {
65
77
  return __awaiter(this, void 0, void 0, function* () {
66
- const body = JSON.stringify({ action: "commit", uuid });
67
- return yield fetch(this.transactionApiUrl, {
78
+ return (0, exports.fetchApi)(this.transactionApiUrl, {
68
79
  method: "POST",
69
- body,
80
+ body: JSON.stringify({ action: "commit", uuid }),
70
81
  credentials: "include",
71
82
  });
72
83
  });
@@ -76,7 +87,7 @@ exports.default = Api;
76
87
  const fetchApi = (input, init) => {
77
88
  return new Promise((resolve, reject) => fetch(input, init).then((response) => {
78
89
  const status = response.status;
79
- if (status === 200) {
90
+ if (status >= 200 && status < 300) {
80
91
  response.json().then(resolve);
81
92
  }
82
93
  else {
@@ -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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"}
@@ -5,7 +5,8 @@ export default class Client {
5
5
  private api;
6
6
  constructor(apiUrl: string);
7
7
  execute(query: string, params?: RQLParams): Promise<import("./Api").ResultSet>;
8
- schema(): Promise<Schema>;
8
+ schema(): Promise<Schema<import("..").EntityRawSchemaArray, import("..").RelationDefinitionRawSchemaArray<import("..").EntityRawSchemaArray>>>;
9
+ login(login: string, password: string): Promise<boolean>;
9
10
  transaction<T>(callback: (tr: Transaction) => Promise<T>): Promise<T>;
10
11
  }
11
12
  //# sourceMappingURL=Client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,GAAG,CAAM;gBAEL,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAc;IAI7C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAKzB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAS5E"}
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,GAAG,CAAM;gBAEL,MAAM,EAAE,MAAM;IAIpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAc;IAI7C,MAAM;IAKN,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIrC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAS5E"}
package/lib/api/Client.js CHANGED
@@ -30,6 +30,11 @@ class Client {
30
30
  return new Schema_1.Schema(schema);
31
31
  });
32
32
  }
33
+ login(login, password) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ return yield this.api.login(login, password);
36
+ });
37
+ }
33
38
  transaction(callback) {
34
39
  return __awaiter(this, void 0, void 0, function* () {
35
40
  const transaction = new Transaction_1.default(this.api);
@@ -1 +1 @@
1
- {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,6CAA0C;AAC1C,gDAAuC;AACvC,gEAAwC;AAExC,MAAqB,MAAM;IAGzB,YAAY,MAAc;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEK,OAAO,CAAC,KAAa,EAAE,SAAoB,EAAE;;YACjD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;KAAA;IAEK,MAAM;;YACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEK,WAAW,CAAI,QAAyC;;YAC5D,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE;gBAC3B,WAAW,CAAC,MAAM,EAAE,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AAzBD,yBAyBC"}
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/api/Client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,6CAA0C;AAC1C,gDAAuC;AACvC,gEAAwC;AAExC,MAAqB,MAAM;IAGzB,YAAY,MAAc;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAEK,OAAO,CAAC,KAAa,EAAE,SAAoB,EAAE;;YACjD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;KAAA;IAEK,MAAM;;YACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEK,KAAK,CAAC,KAAa,EAAE,QAAgB;;YACzC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;KAAA;IAEK,WAAW,CAAI,QAAyC;;YAC5D,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE;gBAC3B,WAAW,CAAC,MAAM,EAAE,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AA7BD,yBA6BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/api/Transaction.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,OAAO,OAAO,WAAW;IAIlB,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEJ,GAAG,EAAE,GAAG;IAE5B,QAAQ;IAIR,IAAI,IAAI,kBAEP;IAEK,KAAK;IAOL,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAc;IAK7C,MAAM;IAMN,QAAQ;IAMd,OAAO,CAAC,oBAAoB;CAK7B"}
1
+ {"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/api/Transaction.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,OAAO,OAAO,WAAW;IAIlB,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEJ,GAAG,EAAE,GAAG;IAE5B,QAAQ;IAIR,IAAI,IAAI,kBAEP;IAEK,KAAK;IAKL,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,SAAc;IAK7C,MAAM;IAMN,QAAQ;IAMd,OAAO,CAAC,oBAAoB;CAK7B"}
@@ -25,9 +25,7 @@ class Transaction {
25
25
  begin() {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
27
  this._closed = false;
28
- const response = yield this.api.transactionBegin();
29
- const json = yield response.json();
30
- this._uuid = json;
28
+ this._uuid = yield this.api.transactionBegin();
31
29
  });
32
30
  }
33
31
  execute(query, params = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/api/Transaction.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAmD;AAGnD,MAAqB,WAAW;IAI9B,YAAoB,GAAQ;QAAR,QAAG,GAAH,GAAG,CAAK;QAHpB,UAAK,GAAkB,IAAI,CAAC;QAC5B,YAAO,GAAG,KAAK,CAAC;IAEO,CAAC;IAEhC,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEK,KAAK;;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;KAAA;IAEK,OAAO,CAAC,KAAa,EAAE,SAAoB,EAAE;;YACjD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;KAAA;IAEK,MAAM;;YACV,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;KAAA;IAEK,QAAQ;;YACZ,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;KAAA;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,IAAI,+BAAsB,EAAE,CAAC;SACpC;IACH,CAAC;CACF;AA3CD,8BA2CC"}
1
+ {"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/api/Transaction.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAmD;AAGnD,MAAqB,WAAW;IAI9B,YAAoB,GAAQ;QAAR,QAAG,GAAH,GAAG,CAAK;QAHpB,UAAK,GAAkB,IAAI,CAAC;QAC5B,YAAO,GAAG,KAAK,CAAC;IAEO,CAAC;IAEhC,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEK,KAAK;;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjD,CAAC;KAAA;IAEK,OAAO,CAAC,KAAa,EAAE,SAAoB,EAAE;;YACjD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;KAAA;IAEK,MAAM;;YACV,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;KAAA;IAEK,QAAQ;;YACZ,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;KAAA;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,IAAI,+BAAsB,EAAE,CAAC;SACpC;IACH,CAAC;CACF;AAzCD,8BAyCC"}
@@ -71,47 +71,18 @@ ERawSchema extends E[number] = E[number]> {
71
71
  object: ERawSchema["type"];
72
72
  }>>[];
73
73
  /**
74
- * Finds the first relation of the given type with this entity as subject
74
+ * Finds relations in the Schema matching the partial relation given
75
75
  *
76
- * @param relationType The relation type to find
77
- * @throws RelationNotFoundError if the current entity is not a subject of the given relation
78
- * @returns The found relation
76
+ * @param matcher Partial relation definition to match against
77
+ * @returns Matched relation schema classes
79
78
  */
80
- getSubjectRelationDefinition<RelationType extends MatchedRelationDefinition<E, R, {
81
- subject: ERawSchema["type"];
82
- }>["type"]>(relationType: RelationType): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
79
+ matchRelationDefinitions<M extends RelationDefinitionMatcher<E>>(matcher: M): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
83
80
  subject: ERawSchema["type"];
84
- type: RelationType;
85
- }>>;
86
- /**
87
- * Finds the first relation of the given type with this entity as object
88
- *
89
- * @param relationType The relation type to find
90
- * @throws RelationNotFoundError if the current entity is not an object of the given relation
91
- * @returns The found relation
92
- */
93
- getObjectRelationDefinition<RelationType extends MatchedRelationDefinition<E, R, {
94
- object: ERawSchema["type"];
95
- }>["type"]>(relationType: RelationType): RelationDefinitionSchema<E, R, MatchedRelationDefinition<E, R, {
96
- object: ERawSchema["type"];
97
- type: RelationType;
98
- }>>;
81
+ }>>[];
99
82
  /**
100
83
  * Gets the list of attributes names for this entity
101
84
  */
102
85
  get attributes(): RelationDefinitionSchema<E, R, R[number]>[];
103
- /**
104
- * Checks whether the current entity is required for the given relation and role
105
- *
106
- * @param relationType The relation to check
107
- * @param role The role for this entity in the given relation
108
- * @returns True if this entity is required in the relation for the given role
109
- */
110
- isRelationRequired<RelationType extends MatchedRelationDefinition<E, R, {
111
- subject: ERawSchema["type"];
112
- } | {
113
- object: ERawSchema["type"];
114
- }>["type"]>(relationType: RelationType, role: "subject" | "object"): boolean;
115
86
  }
116
87
  /**
117
88
  * Wrapper around raw relation definitions from the Schema
@@ -162,6 +133,13 @@ RDef extends R[number] = R[number]> {
162
133
  * @throws InconsistentSchemaError if the relation's object is not a valid entity
163
134
  */
164
135
  get object(): IsLooseSchema<E> extends true ? EntitySchema<E, R, E[number]> : EntitySchema<E, R, EntityRawSchemaByType<E, RDef["object"]>>;
136
+ /**
137
+ * Checks if the relation is required when using the subject or object pointof view
138
+ *
139
+ * @param role The point of view to use
140
+ * @returns
141
+ */
142
+ isRequired(role: "subject" | "object"): boolean;
165
143
  }
166
144
  export declare type RelationDefinitionMatcher<E extends EntityRawSchemaArray> = Partial<RelationDefinitionRawSchema<E>>;
167
145
  export declare type MatchedRelationDefinition<E extends EntityRawSchemaArray, R extends RelationDefinitionRawSchemaArray<EntityRawSchemaArray>, M extends RelationDefinitionMatcher<E>> = R[number] extends infer RDef ? (RDef extends M ? RDef : never) : never;
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"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"}
@@ -113,38 +113,13 @@ class EntitySchema {
113
113
  });
114
114
  }
115
115
  /**
116
- * Finds the first relation of the given type with this entity as subject
117
- *
118
- * @param relationType The relation type to find
119
- * @throws RelationNotFoundError if the current entity is not a subject of the given relation
120
- * @returns The found relation
121
- */
122
- getSubjectRelationDefinition(relationType) {
123
- const resultArray = this.schema.matchRelationDefinitions({
124
- subject: this.type,
125
- type: relationType,
126
- });
127
- if (resultArray.length > 0) {
128
- return resultArray[0];
129
- }
130
- throw new Errors_1.RelationNotFoundError(relationType, "subject", this.type);
131
- }
132
- /**
133
- * Finds the first relation of the given type with this entity as object
116
+ * Finds relations in the Schema matching the partial relation given
134
117
  *
135
- * @param relationType The relation type to find
136
- * @throws RelationNotFoundError if the current entity is not an object of the given relation
137
- * @returns The found relation
118
+ * @param matcher Partial relation definition to match against
119
+ * @returns Matched relation schema classes
138
120
  */
139
- getObjectRelationDefinition(relationType) {
140
- const resultArray = this.schema.matchRelationDefinitions({
141
- object: this.type,
142
- type: relationType,
143
- });
144
- if (resultArray.length > 0) {
145
- return resultArray[0];
146
- }
147
- throw new Errors_1.RelationNotFoundError(relationType, "object", this.type);
121
+ matchRelationDefinitions(matcher) {
122
+ return this.schema.matchRelationDefinitions(matcher);
148
123
  }
149
124
  /**
150
125
  * Gets the list of attributes names for this entity
@@ -155,26 +130,6 @@ class EntitySchema {
155
130
  subject: this.type,
156
131
  });
157
132
  }
158
- /**
159
- * Checks whether the current entity is required for the given relation and role
160
- *
161
- * @param relationType The relation to check
162
- * @param role The role for this entity in the given relation
163
- * @returns True if this entity is required in the relation for the given role
164
- */
165
- isRelationRequired(relationType, role) {
166
- let relation;
167
- let cardinality;
168
- if (role === "subject") {
169
- relation = this.getSubjectRelationDefinition(relationType);
170
- cardinality = relation.cardinality[0];
171
- }
172
- else {
173
- relation = this.getObjectRelationDefinition(relationType);
174
- cardinality = relation.cardinality[1];
175
- }
176
- return cardinalityRequired(cardinality);
177
- }
178
133
  }
179
134
  exports.EntitySchema = EntitySchema;
180
135
  /**
@@ -255,6 +210,22 @@ class RelationDefinitionSchema {
255
210
  // @ts-ignore
256
211
  return objectSchema;
257
212
  }
213
+ /**
214
+ * Checks if the relation is required when using the subject or object pointof view
215
+ *
216
+ * @param role The point of view to use
217
+ * @returns
218
+ */
219
+ isRequired(role) {
220
+ let cardinality;
221
+ if (role === "subject") {
222
+ cardinality = this.cardinality[0];
223
+ }
224
+ else {
225
+ cardinality = this.cardinality[1];
226
+ }
227
+ return cardinalityRequired(cardinality);
228
+ }
258
229
  }
259
230
  exports.RelationDefinitionSchema = RelationDefinitionSchema;
260
231
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/schema/Schema.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": "1.0.4",
5
+ "version": "1.1.0",
6
6
  "license": "LGPL-3.0-or-later",
7
7
  "main": "lib/index.js",
8
8
  "types": "lib/index.d.ts",
package/src/Errors.ts CHANGED
@@ -5,19 +5,6 @@ export class InconsistentSchemaError extends Error {
5
5
  }
6
6
  }
7
7
 
8
- export class RelationNotFoundError extends Error {
9
- constructor(
10
- relationType: string,
11
- role: "object" | "subject",
12
- entityType: string
13
- ) {
14
- super(
15
- `Relation Not Found: relation type ${relationType} with entity type ${entityType} as ${role} is not declared`
16
- );
17
- Object.setPrototypeOf(this, new.target.prototype);
18
- }
19
- }
20
-
21
8
  export class TransactionClosedError extends Error {
22
9
  constructor() {
23
10
  super("Trying to use a closed transaction");
package/src/api/Api.ts CHANGED
@@ -23,65 +23,75 @@ export default class Api {
23
23
  }
24
24
 
25
25
  async execute(query: string, params: RQLParams) {
26
- return fetchApi(`${this.apiUrl}/rql`, {
26
+ return fetchApi<ResultSet>(`${this.apiUrl}/rql`, {
27
27
  method: "POST",
28
28
  body: JSON.stringify({ query, params }),
29
29
  credentials: "include", // FIXME is it secure?
30
30
  });
31
31
  }
32
32
 
33
- async schema(): Promise<RawSchema> {
34
- const res = await fetch(`${this.apiUrl}/schema`);
35
- const schema = await res.json();
36
- return schema as RawSchema;
33
+ async schema() {
34
+ return fetchApi<RawSchema>(`${this.apiUrl}/schema`, {
35
+ method: "GET",
36
+ credentials: "include",
37
+ });
38
+ }
39
+
40
+ async login(login: string, password: string) {
41
+ return fetchApi<boolean>(`${this.apiUrl}/login`, {
42
+ method: "POST",
43
+ body: JSON.stringify({
44
+ login,
45
+ password,
46
+ }),
47
+ credentials: "include",
48
+ })
49
+ .then(() => true)
50
+ .catch(() => false);
37
51
  }
38
52
 
39
53
  async transactionBegin() {
40
- const body = JSON.stringify({ action: "begin" });
41
- return await fetch(this.transactionApiUrl, {
54
+ return fetchApi<string>(this.transactionApiUrl, {
42
55
  method: "POST",
43
- body,
56
+ body: JSON.stringify({ action: "begin" }),
44
57
  credentials: "include",
45
58
  });
46
59
  }
47
60
 
48
61
  async transactionExecute(uuid: string, query: string, params: RQLParams) {
49
- const body = JSON.stringify({ action: "execute", uuid, query, params });
50
- return fetchApi(this.transactionApiUrl, {
62
+ return fetchApi<ResultSet>(this.transactionApiUrl, {
51
63
  method: "POST",
52
- body,
64
+ body: JSON.stringify({ action: "execute", uuid, query, params }),
53
65
  credentials: "include",
54
66
  });
55
67
  }
56
68
 
57
69
  async transactionCommit(uuid: string) {
58
- const body = JSON.stringify({ action: "commit", uuid });
59
- return await fetch(this.transactionApiUrl, {
70
+ return fetchApi<null>(this.transactionApiUrl, {
60
71
  method: "POST",
61
- body,
72
+ body: JSON.stringify({ action: "commit", uuid }),
62
73
  credentials: "include",
63
74
  });
64
75
  }
65
76
 
66
77
  async transactionRollback(uuid: string) {
67
- const body = JSON.stringify({ action: "commit", uuid });
68
- return await fetch(this.transactionApiUrl, {
78
+ return fetchApi<null>(this.transactionApiUrl, {
69
79
  method: "POST",
70
- body,
80
+ body: JSON.stringify({ action: "commit", uuid }),
71
81
  credentials: "include",
72
82
  });
73
83
  }
74
84
  }
75
85
 
76
- export const fetchApi = (input: RequestInfo, init?: RequestInit) => {
86
+ export const fetchApi = <R = unknown>(
87
+ input: RequestInfo,
88
+ init?: RequestInit
89
+ ) => {
77
90
  return new Promise(
78
- (
79
- resolve: (value: ResultSet) => void,
80
- reject: (reason: ApiErrorResponse) => void
81
- ) =>
91
+ (resolve: (value: R) => void, reject: (reason: ApiErrorResponse) => void) =>
82
92
  fetch(input, init).then((response) => {
83
93
  const status = response.status;
84
- if (status === 200) {
94
+ if (status >= 200 && status < 300) {
85
95
  response.json().then(resolve);
86
96
  } else {
87
97
  response.json().then((data: ApiError) => {
package/src/api/Client.ts CHANGED
@@ -13,11 +13,15 @@ export default class Client {
13
13
  return await this.api.execute(query, params);
14
14
  }
15
15
 
16
- async schema(): Promise<Schema> {
16
+ async schema() {
17
17
  const schema = await this.api.schema();
18
18
  return new Schema(schema);
19
19
  }
20
20
 
21
+ async login(login: string, password: string) {
22
+ return await this.api.login(login, password);
23
+ }
24
+
21
25
  async transaction<T>(callback: (tr: Transaction) => Promise<T>): Promise<T> {
22
26
  const transaction = new Transaction(this.api);
23
27
  await transaction.begin();
@@ -17,9 +17,7 @@ export default class Transaction {
17
17
 
18
18
  async begin() {
19
19
  this._closed = false;
20
- const response = await this.api.transactionBegin();
21
- const json = await response.json();
22
- this._uuid = json;
20
+ this._uuid = await this.api.transactionBegin();
23
21
  }
24
22
 
25
23
  async execute(query: string, params: RQLParams = {}) {
@@ -1,5 +1,5 @@
1
1
  import { Cardinality } from "..";
2
- import { InconsistentSchemaError, RelationNotFoundError } from "../Errors";
2
+ import { InconsistentSchemaError } from "../Errors";
3
3
  import {
4
4
  RawSchema,
5
5
  RelationDefinitionRawSchema,
@@ -186,71 +186,19 @@ export class EntitySchema<
186
186
  }
187
187
 
188
188
  /**
189
- * Finds the first relation of the given type with this entity as subject
190
- *
191
- * @param relationType The relation type to find
192
- * @throws RelationNotFoundError if the current entity is not a subject of the given relation
193
- * @returns The found relation
194
- */
195
- getSubjectRelationDefinition<
196
- RelationType extends MatchedRelationDefinition<
197
- E,
198
- R,
199
- { subject: ERawSchema["type"] }
200
- >["type"]
201
- >(
202
- relationType: RelationType
203
- ): RelationDefinitionSchema<
204
- E,
205
- R,
206
- MatchedRelationDefinition<
207
- E,
208
- R,
209
- { subject: ERawSchema["type"]; type: RelationType }
210
- >
211
- > {
212
- const resultArray = this.schema.matchRelationDefinitions({
213
- subject: this.type,
214
- type: relationType,
215
- });
216
- if (resultArray.length > 0) {
217
- return resultArray[0];
218
- }
219
- throw new RelationNotFoundError(relationType, "subject", this.type);
220
- }
221
-
222
- /**
223
- * Finds the first relation of the given type with this entity as object
189
+ * Finds relations in the Schema matching the partial relation given
224
190
  *
225
- * @param relationType The relation type to find
226
- * @throws RelationNotFoundError if the current entity is not an object of the given relation
227
- * @returns The found relation
191
+ * @param matcher Partial relation definition to match against
192
+ * @returns Matched relation schema classes
228
193
  */
229
- getObjectRelationDefinition<
230
- RelationType extends MatchedRelationDefinition<
231
- E,
232
- R,
233
- { object: ERawSchema["type"] }
234
- >["type"]
235
- >(
236
- relationType: RelationType
194
+ matchRelationDefinitions<M extends RelationDefinitionMatcher<E>>(
195
+ matcher: M
237
196
  ): RelationDefinitionSchema<
238
197
  E,
239
198
  R,
240
- MatchedRelationDefinition<
241
- E,
242
- R,
243
- { object: ERawSchema["type"]; type: RelationType }
244
- >
245
- > {
246
- const resultArray = this.schema.matchRelationDefinitions({
247
- object: this.type,
248
- type: relationType,
249
- });
250
- if (resultArray.length > 0) {
251
- return resultArray[0];
252
- }
253
- throw new RelationNotFoundError(relationType, "object", this.type);
199
+ MatchedRelationDefinition<E, R, { subject: ERawSchema["type"] }>
200
+ >[] {
201
+ return this.schema.matchRelationDefinitions(matcher);
254
202
  }
255
203
 
256
204
  /**
@@ -262,32 +210,6 @@ export class EntitySchema<
262
210
  subject: this.type,
263
211
  });
264
212
  }
265
-
266
- /**
267
- * Checks whether the current entity is required for the given relation and role
268
- *
269
- * @param relationType The relation to check
270
- * @param role The role for this entity in the given relation
271
- * @returns True if this entity is required in the relation for the given role
272
- */
273
- isRelationRequired<
274
- RelationType extends MatchedRelationDefinition<
275
- E,
276
- R,
277
- { subject: ERawSchema["type"] } | { object: ERawSchema["type"] }
278
- >["type"]
279
- >(relationType: RelationType, role: "subject" | "object"): boolean {
280
- let relation;
281
- let cardinality: Cardinality;
282
- if (role === "subject") {
283
- relation = this.getSubjectRelationDefinition(relationType);
284
- cardinality = relation.cardinality[0];
285
- } else {
286
- relation = this.getObjectRelationDefinition(relationType);
287
- cardinality = relation.cardinality[1];
288
- }
289
- return cardinalityRequired(cardinality);
290
- }
291
213
  }
292
214
 
293
215
  /**
@@ -391,6 +313,22 @@ export class RelationDefinitionSchema<
391
313
  // @ts-ignore
392
314
  return objectSchema;
393
315
  }
316
+
317
+ /**
318
+ * Checks if the relation is required when using the subject or object pointof view
319
+ *
320
+ * @param role The point of view to use
321
+ * @returns
322
+ */
323
+ isRequired(role: "subject" | "object") {
324
+ let cardinality: Cardinality;
325
+ if (role === "subject") {
326
+ cardinality = this.cardinality[0] as Cardinality;
327
+ } else {
328
+ cardinality = this.cardinality[1] as Cardinality;
329
+ }
330
+ return cardinalityRequired(cardinality);
331
+ }
394
332
  }
395
333
 
396
334
  /**