@cubicweb/client 1.1.1 → 1.2.2
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/api/Api.d.ts +5 -3
- package/lib/api/Api.d.ts.map +1 -1
- package/lib/api/Api.js +28 -17
- package/lib/api/Api.js.map +1 -1
- package/lib/api/Client.js +1 -1
- package/lib/api/Client.js.map +1 -1
- package/lib/api/Transaction.d.ts +1 -1
- package/package.json +1 -1
- package/src/api/Api.ts +48 -20
- package/src/api/Client.ts +1 -1
package/lib/api/Api.d.ts
CHANGED
|
@@ -5,9 +5,10 @@ export interface RQLParams {
|
|
|
5
5
|
}
|
|
6
6
|
export declare type RqlRow = Array<string | number | boolean | null>;
|
|
7
7
|
export declare type ResultSet = Array<RqlRow>;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
declare type ApiError = {
|
|
9
|
+
title: string;
|
|
10
10
|
message: string;
|
|
11
|
+
data?: Record<string, unknown>;
|
|
11
12
|
};
|
|
12
13
|
export declare type ApiErrorResponse = {
|
|
13
14
|
status: number;
|
|
@@ -20,8 +21,9 @@ export default class Api {
|
|
|
20
21
|
schema(): Promise<RawSchema>;
|
|
21
22
|
login(login: string, password: string): Promise<boolean>;
|
|
22
23
|
transactionBegin(): Promise<string>;
|
|
23
|
-
transactionExecute(uuid: string, query: string, params: RQLParams): Promise<ResultSet>;
|
|
24
|
+
transactionExecute(uuid: string, query: string, params: RQLParams): Promise<ResultSet | null>;
|
|
24
25
|
transactionCommit(uuid: string): Promise<null>;
|
|
25
26
|
transactionRollback(uuid: string): Promise<null>;
|
|
26
27
|
}
|
|
28
|
+
export {};
|
|
27
29
|
//# sourceMappingURL=Api.d.ts.map
|
package/lib/api/Api.d.ts.map
CHANGED
|
@@ -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,
|
|
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,aAAK,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;AACF,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,CAKvB;gBAEU,MAAM,EAAE,MAAM;IAUpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ7D,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAO5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAaxD,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAOnC,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQtB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvD"}
|
package/lib/api/Api.js
CHANGED
|
@@ -11,8 +11,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
class Api {
|
|
13
13
|
constructor(apiUrl) {
|
|
14
|
+
this.transactionApiUrl = {
|
|
15
|
+
begin: "",
|
|
16
|
+
execute: "",
|
|
17
|
+
commit: "",
|
|
18
|
+
rollback: "",
|
|
19
|
+
};
|
|
14
20
|
this.apiUrl = `${apiUrl}/v1`;
|
|
15
|
-
this.transactionApiUrl = `${this.apiUrl}/transaction
|
|
21
|
+
Object.keys(this.transactionApiUrl).forEach((k) => (this.transactionApiUrl[k] = `${this.apiUrl}/transaction/${k}`));
|
|
16
22
|
}
|
|
17
23
|
execute(query, params) {
|
|
18
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -47,36 +53,35 @@ class Api {
|
|
|
47
53
|
}
|
|
48
54
|
transactionBegin() {
|
|
49
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
return nonNullFetchApi(this.transactionApiUrl, {
|
|
56
|
+
return nonNullFetchApi(this.transactionApiUrl.begin, {
|
|
51
57
|
method: "POST",
|
|
52
|
-
body: JSON.stringify({ action: "begin" }),
|
|
53
58
|
credentials: "include",
|
|
54
59
|
});
|
|
55
60
|
});
|
|
56
61
|
}
|
|
57
62
|
transactionExecute(uuid, query, params) {
|
|
58
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
return
|
|
64
|
+
return fetchApi(this.transactionApiUrl.execute, {
|
|
60
65
|
method: "POST",
|
|
61
|
-
body: JSON.stringify({
|
|
66
|
+
body: JSON.stringify({ uuid, query, params }),
|
|
62
67
|
credentials: "include",
|
|
63
68
|
});
|
|
64
69
|
});
|
|
65
70
|
}
|
|
66
71
|
transactionCommit(uuid) {
|
|
67
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
-
return fetchApi(this.transactionApiUrl, {
|
|
73
|
+
return fetchApi(this.transactionApiUrl.commit, {
|
|
69
74
|
method: "POST",
|
|
70
|
-
body: JSON.stringify({
|
|
75
|
+
body: JSON.stringify({ uuid }),
|
|
71
76
|
credentials: "include",
|
|
72
77
|
});
|
|
73
78
|
});
|
|
74
79
|
}
|
|
75
80
|
transactionRollback(uuid) {
|
|
76
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
return fetchApi(this.transactionApiUrl, {
|
|
82
|
+
return fetchApi(this.transactionApiUrl.rollback, {
|
|
78
83
|
method: "POST",
|
|
79
|
-
body: JSON.stringify({
|
|
84
|
+
body: JSON.stringify({ uuid }),
|
|
80
85
|
credentials: "include",
|
|
81
86
|
});
|
|
82
87
|
});
|
|
@@ -89,7 +94,7 @@ const nonNullFetchApi = (input, init) => {
|
|
|
89
94
|
if (v == null) {
|
|
90
95
|
const error = {
|
|
91
96
|
status: 500,
|
|
92
|
-
|
|
97
|
+
title: "Unexpected null response",
|
|
93
98
|
message: "Response was null but a value was expected",
|
|
94
99
|
};
|
|
95
100
|
reject(error);
|
|
@@ -101,7 +106,11 @@ const nonNullFetchApi = (input, init) => {
|
|
|
101
106
|
.catch(reject));
|
|
102
107
|
};
|
|
103
108
|
const fetchApi = (input, init) => {
|
|
104
|
-
|
|
109
|
+
let headers = init === null || init === void 0 ? void 0 : init.headers;
|
|
110
|
+
if ((init === null || init === void 0 ? void 0 : init.method) && init.method !== "GET" && init.method !== "DELETE") {
|
|
111
|
+
headers = Object.assign({ "Content-Type": "application/json;charset=UTF-8" }, init === null || init === void 0 ? void 0 : init.headers);
|
|
112
|
+
}
|
|
113
|
+
return new Promise((resolve, reject) => fetch(input, Object.assign(Object.assign({}, init), { headers })).then((response) => {
|
|
105
114
|
const status = response.status;
|
|
106
115
|
if (status >= 200 && status < 300) {
|
|
107
116
|
if (status === 204) {
|
|
@@ -118,12 +127,14 @@ const fetchApi = (input, init) => {
|
|
|
118
127
|
}
|
|
119
128
|
}
|
|
120
129
|
else {
|
|
121
|
-
response
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
130
|
+
response
|
|
131
|
+
.json()
|
|
132
|
+
.then((data) => {
|
|
133
|
+
reject(Object.assign({ status }, data));
|
|
134
|
+
})
|
|
135
|
+
.catch((e) => {
|
|
136
|
+
console.error(e);
|
|
137
|
+
reject({ status, title: "Error", message: "" });
|
|
127
138
|
});
|
|
128
139
|
}
|
|
129
140
|
}));
|
package/lib/api/Api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../src/api/Api.ts"],"names":[],"mappings":"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"}
|
package/lib/api/Client.js
CHANGED
package/lib/api/Client.js.map
CHANGED
|
@@ -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,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;
|
|
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,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;aAC5B;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AA7BD,yBA6BC"}
|
package/lib/api/Transaction.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export default class Transaction {
|
|
|
7
7
|
isClosed(): boolean;
|
|
8
8
|
get uuid(): string | null;
|
|
9
9
|
begin(): Promise<void>;
|
|
10
|
-
execute(query: string, params?: RQLParams): Promise<import("./Api").ResultSet>;
|
|
10
|
+
execute(query: string, params?: RQLParams): Promise<import("./Api").ResultSet | null>;
|
|
11
11
|
commit(): Promise<void>;
|
|
12
12
|
rollback(): Promise<void>;
|
|
13
13
|
private preventUsageIfClosed;
|
package/package.json
CHANGED
package/src/api/Api.ts
CHANGED
|
@@ -8,18 +8,32 @@ export interface RQLParams {
|
|
|
8
8
|
|
|
9
9
|
export type RqlRow = Array<string | number | boolean | null>;
|
|
10
10
|
export type ResultSet = Array<RqlRow>;
|
|
11
|
-
|
|
11
|
+
type ApiError = {
|
|
12
|
+
title: string;
|
|
13
|
+
message: string;
|
|
14
|
+
data?: Record<string, unknown>;
|
|
15
|
+
};
|
|
12
16
|
export type ApiErrorResponse = {
|
|
13
17
|
status: number;
|
|
14
18
|
} & ApiError;
|
|
15
19
|
|
|
16
20
|
export default class Api {
|
|
17
21
|
private apiUrl: string;
|
|
18
|
-
private transactionApiUrl
|
|
22
|
+
private transactionApiUrl = {
|
|
23
|
+
begin: "",
|
|
24
|
+
execute: "",
|
|
25
|
+
commit: "",
|
|
26
|
+
rollback: "",
|
|
27
|
+
};
|
|
19
28
|
|
|
20
29
|
constructor(apiUrl: string) {
|
|
21
30
|
this.apiUrl = `${apiUrl}/v1`;
|
|
22
|
-
this.transactionApiUrl
|
|
31
|
+
Object.keys(this.transactionApiUrl).forEach(
|
|
32
|
+
(k) =>
|
|
33
|
+
(this.transactionApiUrl[
|
|
34
|
+
k as keyof typeof this.transactionApiUrl
|
|
35
|
+
] = `${this.apiUrl}/transaction/${k}`)
|
|
36
|
+
);
|
|
23
37
|
}
|
|
24
38
|
|
|
25
39
|
async execute(query: string, params: RQLParams): Promise<ResultSet> {
|
|
@@ -51,9 +65,8 @@ export default class Api {
|
|
|
51
65
|
}
|
|
52
66
|
|
|
53
67
|
async transactionBegin(): Promise<string> {
|
|
54
|
-
return nonNullFetchApi<string>(this.transactionApiUrl, {
|
|
68
|
+
return nonNullFetchApi<string>(this.transactionApiUrl.begin, {
|
|
55
69
|
method: "POST",
|
|
56
|
-
body: JSON.stringify({ action: "begin" }),
|
|
57
70
|
credentials: "include",
|
|
58
71
|
});
|
|
59
72
|
}
|
|
@@ -62,26 +75,26 @@ export default class Api {
|
|
|
62
75
|
uuid: string,
|
|
63
76
|
query: string,
|
|
64
77
|
params: RQLParams
|
|
65
|
-
): Promise<ResultSet> {
|
|
66
|
-
return
|
|
78
|
+
): Promise<ResultSet | null> {
|
|
79
|
+
return fetchApi<ResultSet>(this.transactionApiUrl.execute, {
|
|
67
80
|
method: "POST",
|
|
68
|
-
body: JSON.stringify({
|
|
81
|
+
body: JSON.stringify({ uuid, query, params }),
|
|
69
82
|
credentials: "include",
|
|
70
83
|
});
|
|
71
84
|
}
|
|
72
85
|
|
|
73
86
|
async transactionCommit(uuid: string): Promise<null> {
|
|
74
|
-
return fetchApi<null>(this.transactionApiUrl, {
|
|
87
|
+
return fetchApi<null>(this.transactionApiUrl.commit, {
|
|
75
88
|
method: "POST",
|
|
76
|
-
body: JSON.stringify({
|
|
89
|
+
body: JSON.stringify({ uuid }),
|
|
77
90
|
credentials: "include",
|
|
78
91
|
});
|
|
79
92
|
}
|
|
80
93
|
|
|
81
94
|
async transactionRollback(uuid: string): Promise<null> {
|
|
82
|
-
return fetchApi<null>(this.transactionApiUrl, {
|
|
95
|
+
return fetchApi<null>(this.transactionApiUrl.rollback, {
|
|
83
96
|
method: "POST",
|
|
84
|
-
body: JSON.stringify({
|
|
97
|
+
body: JSON.stringify({ uuid }),
|
|
85
98
|
credentials: "include",
|
|
86
99
|
});
|
|
87
100
|
}
|
|
@@ -98,7 +111,7 @@ const nonNullFetchApi = <R = unknown>(
|
|
|
98
111
|
if (v == null) {
|
|
99
112
|
const error: ApiErrorResponse = {
|
|
100
113
|
status: 500,
|
|
101
|
-
|
|
114
|
+
title: "Unexpected null response",
|
|
102
115
|
message: "Response was null but a value was expected",
|
|
103
116
|
};
|
|
104
117
|
reject(error);
|
|
@@ -111,12 +124,22 @@ const nonNullFetchApi = <R = unknown>(
|
|
|
111
124
|
};
|
|
112
125
|
|
|
113
126
|
const fetchApi = <R = unknown>(input: RequestInfo, init?: RequestInit) => {
|
|
127
|
+
let headers = init?.headers;
|
|
128
|
+
if (init?.method && init.method !== "GET" && init.method !== "DELETE") {
|
|
129
|
+
headers = {
|
|
130
|
+
"Content-Type": "application/json;charset=UTF-8",
|
|
131
|
+
...init?.headers,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
114
134
|
return new Promise(
|
|
115
135
|
(
|
|
116
136
|
resolve: (value: R | null) => void,
|
|
117
137
|
reject: (reason: ApiErrorResponse) => void
|
|
118
138
|
) =>
|
|
119
|
-
fetch(input,
|
|
139
|
+
fetch(input, {
|
|
140
|
+
...init,
|
|
141
|
+
headers,
|
|
142
|
+
}).then((response) => {
|
|
120
143
|
const status = response.status;
|
|
121
144
|
if (status >= 200 && status < 300) {
|
|
122
145
|
if (status === 204) {
|
|
@@ -131,13 +154,18 @@ const fetchApi = <R = unknown>(input: RequestInfo, init?: RequestInit) => {
|
|
|
131
154
|
});
|
|
132
155
|
}
|
|
133
156
|
} else {
|
|
134
|
-
response
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
157
|
+
response
|
|
158
|
+
.json()
|
|
159
|
+
.then((data: ApiError) => {
|
|
160
|
+
reject({
|
|
161
|
+
status,
|
|
162
|
+
...data,
|
|
163
|
+
});
|
|
164
|
+
})
|
|
165
|
+
.catch((e) => {
|
|
166
|
+
console.error(e);
|
|
167
|
+
reject({ status, title: "Error", message: "" });
|
|
139
168
|
});
|
|
140
|
-
});
|
|
141
169
|
}
|
|
142
170
|
})
|
|
143
171
|
);
|