@cubicweb/client 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/Api.d.ts +1 -2
- package/lib/api/Api.d.ts.map +1 -1
- package/lib/api/Api.js +36 -10
- package/lib/api/Api.js.map +1 -1
- package/package.json +1 -1
- package/src/api/Api.ts +51 -14
package/lib/api/Api.d.ts
CHANGED
|
@@ -17,12 +17,11 @@ 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
|
|
20
|
+
schema(): Promise<RawSchema>;
|
|
21
21
|
login(login: string, password: string): Promise<boolean>;
|
|
22
22
|
transactionBegin(): Promise<string>;
|
|
23
23
|
transactionExecute(uuid: string, query: string, params: RQLParams): Promise<ResultSet>;
|
|
24
24
|
transactionCommit(uuid: string): Promise<null>;
|
|
25
25
|
transactionRollback(uuid: string): Promise<null>;
|
|
26
26
|
}
|
|
27
|
-
export declare const fetchApi: <R = unknown>(input: RequestInfo, init?: RequestInit | undefined) => Promise<R>;
|
|
28
27
|
//# 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,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;
|
|
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,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;IAQnC,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,SAAS,CAAC;IAQf,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
|
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.fetchApi = void 0;
|
|
13
12
|
class Api {
|
|
14
13
|
constructor(apiUrl) {
|
|
15
14
|
this.apiUrl = `${apiUrl}/v1`;
|
|
@@ -17,7 +16,7 @@ class Api {
|
|
|
17
16
|
}
|
|
18
17
|
execute(query, params) {
|
|
19
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
return (
|
|
19
|
+
return nonNullFetchApi(`${this.apiUrl}/rql`, {
|
|
21
20
|
method: "POST",
|
|
22
21
|
body: JSON.stringify({ query, params }),
|
|
23
22
|
credentials: "include", // FIXME is it secure?
|
|
@@ -26,7 +25,7 @@ class Api {
|
|
|
26
25
|
}
|
|
27
26
|
schema() {
|
|
28
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
return (
|
|
28
|
+
return nonNullFetchApi(`${this.apiUrl}/schema`, {
|
|
30
29
|
method: "GET",
|
|
31
30
|
credentials: "include",
|
|
32
31
|
});
|
|
@@ -34,7 +33,7 @@ class Api {
|
|
|
34
33
|
}
|
|
35
34
|
login(login, password) {
|
|
36
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
-
return
|
|
36
|
+
return fetchApi(`${this.apiUrl}/login`, {
|
|
38
37
|
method: "POST",
|
|
39
38
|
body: JSON.stringify({
|
|
40
39
|
login,
|
|
@@ -48,7 +47,7 @@ class Api {
|
|
|
48
47
|
}
|
|
49
48
|
transactionBegin() {
|
|
50
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
return (
|
|
50
|
+
return nonNullFetchApi(this.transactionApiUrl, {
|
|
52
51
|
method: "POST",
|
|
53
52
|
body: JSON.stringify({ action: "begin" }),
|
|
54
53
|
credentials: "include",
|
|
@@ -57,7 +56,7 @@ class Api {
|
|
|
57
56
|
}
|
|
58
57
|
transactionExecute(uuid, query, params) {
|
|
59
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
-
return (
|
|
59
|
+
return nonNullFetchApi(this.transactionApiUrl, {
|
|
61
60
|
method: "POST",
|
|
62
61
|
body: JSON.stringify({ action: "execute", uuid, query, params }),
|
|
63
62
|
credentials: "include",
|
|
@@ -66,7 +65,7 @@ class Api {
|
|
|
66
65
|
}
|
|
67
66
|
transactionCommit(uuid) {
|
|
68
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
return
|
|
68
|
+
return fetchApi(this.transactionApiUrl, {
|
|
70
69
|
method: "POST",
|
|
71
70
|
body: JSON.stringify({ action: "commit", uuid }),
|
|
72
71
|
credentials: "include",
|
|
@@ -75,7 +74,7 @@ class Api {
|
|
|
75
74
|
}
|
|
76
75
|
transactionRollback(uuid) {
|
|
77
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
return
|
|
77
|
+
return fetchApi(this.transactionApiUrl, {
|
|
79
78
|
method: "POST",
|
|
80
79
|
body: JSON.stringify({ action: "commit", uuid }),
|
|
81
80
|
credentials: "include",
|
|
@@ -84,11 +83,39 @@ class Api {
|
|
|
84
83
|
}
|
|
85
84
|
}
|
|
86
85
|
exports.default = Api;
|
|
86
|
+
const nonNullFetchApi = (input, init) => {
|
|
87
|
+
return new Promise((resolve, reject) => fetchApi(input, init)
|
|
88
|
+
.then((v) => {
|
|
89
|
+
if (v == null) {
|
|
90
|
+
const error = {
|
|
91
|
+
status: 500,
|
|
92
|
+
error: "Unexpected null response",
|
|
93
|
+
message: "Response was null but a value was expected",
|
|
94
|
+
};
|
|
95
|
+
reject(error);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
resolve(v);
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
.catch(reject));
|
|
102
|
+
};
|
|
87
103
|
const fetchApi = (input, init) => {
|
|
88
104
|
return new Promise((resolve, reject) => fetch(input, init).then((response) => {
|
|
89
105
|
const status = response.status;
|
|
90
106
|
if (status >= 200 && status < 300) {
|
|
91
|
-
|
|
107
|
+
if (status === 204) {
|
|
108
|
+
resolve(null);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
response
|
|
112
|
+
.json()
|
|
113
|
+
.then(resolve)
|
|
114
|
+
.catch((e) => {
|
|
115
|
+
console.error(e);
|
|
116
|
+
resolve(null);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
92
119
|
}
|
|
93
120
|
else {
|
|
94
121
|
response.json().then((data) => {
|
|
@@ -101,5 +128,4 @@ const fetchApi = (input, init) => {
|
|
|
101
128
|
}
|
|
102
129
|
}));
|
|
103
130
|
};
|
|
104
|
-
exports.fetchApi = fetchApi;
|
|
105
131
|
//# sourceMappingURL=Api.js.map
|
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/package.json
CHANGED
package/src/api/Api.ts
CHANGED
|
@@ -22,23 +22,23 @@ export default class Api {
|
|
|
22
22
|
this.transactionApiUrl = `${this.apiUrl}/transaction`;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
async execute(query: string, params: RQLParams) {
|
|
26
|
-
return
|
|
25
|
+
async execute(query: string, params: RQLParams): Promise<ResultSet> {
|
|
26
|
+
return nonNullFetchApi<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() {
|
|
34
|
-
return
|
|
33
|
+
async schema(): Promise<RawSchema> {
|
|
34
|
+
return nonNullFetchApi<RawSchema>(`${this.apiUrl}/schema`, {
|
|
35
35
|
method: "GET",
|
|
36
36
|
credentials: "include",
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
async login(login: string, password: string) {
|
|
41
|
-
return fetchApi<
|
|
40
|
+
async login(login: string, password: string): Promise<boolean> {
|
|
41
|
+
return fetchApi<null>(`${this.apiUrl}/login`, {
|
|
42
42
|
method: "POST",
|
|
43
43
|
body: JSON.stringify({
|
|
44
44
|
login,
|
|
@@ -50,23 +50,27 @@ export default class Api {
|
|
|
50
50
|
.catch(() => false);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
async transactionBegin() {
|
|
54
|
-
return
|
|
53
|
+
async transactionBegin(): Promise<string> {
|
|
54
|
+
return nonNullFetchApi<string>(this.transactionApiUrl, {
|
|
55
55
|
method: "POST",
|
|
56
56
|
body: JSON.stringify({ action: "begin" }),
|
|
57
57
|
credentials: "include",
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
async transactionExecute(
|
|
62
|
-
|
|
61
|
+
async transactionExecute(
|
|
62
|
+
uuid: string,
|
|
63
|
+
query: string,
|
|
64
|
+
params: RQLParams
|
|
65
|
+
): Promise<ResultSet> {
|
|
66
|
+
return nonNullFetchApi<ResultSet>(this.transactionApiUrl, {
|
|
63
67
|
method: "POST",
|
|
64
68
|
body: JSON.stringify({ action: "execute", uuid, query, params }),
|
|
65
69
|
credentials: "include",
|
|
66
70
|
});
|
|
67
71
|
}
|
|
68
72
|
|
|
69
|
-
async transactionCommit(uuid: string) {
|
|
73
|
+
async transactionCommit(uuid: string): Promise<null> {
|
|
70
74
|
return fetchApi<null>(this.transactionApiUrl, {
|
|
71
75
|
method: "POST",
|
|
72
76
|
body: JSON.stringify({ action: "commit", uuid }),
|
|
@@ -74,7 +78,7 @@ export default class Api {
|
|
|
74
78
|
});
|
|
75
79
|
}
|
|
76
80
|
|
|
77
|
-
async transactionRollback(uuid: string) {
|
|
81
|
+
async transactionRollback(uuid: string): Promise<null> {
|
|
78
82
|
return fetchApi<null>(this.transactionApiUrl, {
|
|
79
83
|
method: "POST",
|
|
80
84
|
body: JSON.stringify({ action: "commit", uuid }),
|
|
@@ -83,16 +87,49 @@ export default class Api {
|
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
|
|
86
|
-
|
|
90
|
+
const nonNullFetchApi = <R = unknown>(
|
|
87
91
|
input: RequestInfo,
|
|
88
92
|
init?: RequestInit
|
|
89
93
|
) => {
|
|
90
94
|
return new Promise(
|
|
91
95
|
(resolve: (value: R) => void, reject: (reason: ApiErrorResponse) => void) =>
|
|
96
|
+
fetchApi<R>(input, init)
|
|
97
|
+
.then((v) => {
|
|
98
|
+
if (v == null) {
|
|
99
|
+
const error: ApiErrorResponse = {
|
|
100
|
+
status: 500,
|
|
101
|
+
error: "Unexpected null response",
|
|
102
|
+
message: "Response was null but a value was expected",
|
|
103
|
+
};
|
|
104
|
+
reject(error);
|
|
105
|
+
} else {
|
|
106
|
+
resolve(v);
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
.catch(reject)
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const fetchApi = <R = unknown>(input: RequestInfo, init?: RequestInit) => {
|
|
114
|
+
return new Promise(
|
|
115
|
+
(
|
|
116
|
+
resolve: (value: R | null) => void,
|
|
117
|
+
reject: (reason: ApiErrorResponse) => void
|
|
118
|
+
) =>
|
|
92
119
|
fetch(input, init).then((response) => {
|
|
93
120
|
const status = response.status;
|
|
94
121
|
if (status >= 200 && status < 300) {
|
|
95
|
-
|
|
122
|
+
if (status === 204) {
|
|
123
|
+
resolve(null);
|
|
124
|
+
} else {
|
|
125
|
+
response
|
|
126
|
+
.json()
|
|
127
|
+
.then(resolve)
|
|
128
|
+
.catch((e) => {
|
|
129
|
+
console.error(e);
|
|
130
|
+
resolve(null);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
96
133
|
} else {
|
|
97
134
|
response.json().then((data: ApiError) => {
|
|
98
135
|
reject({
|