@venizia/ignis-connectors 0.2.1-0 → 0.2.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/dist/cjs/http/common/types.d.ts +11 -0
- package/dist/cjs/http/common/types.d.ts.map +1 -1
- package/dist/cjs/http/datasource.d.ts +26 -2
- package/dist/cjs/http/datasource.d.ts.map +1 -1
- package/dist/cjs/http/datasource.js +125 -13
- package/dist/cjs/http/datasource.js.map +1 -1
- package/dist/cjs/http/repository.d.ts +165 -4
- package/dist/cjs/http/repository.d.ts.map +1 -1
- package/dist/cjs/http/repository.js +87 -3
- package/dist/cjs/http/repository.js.map +1 -1
- package/dist/esm/http/common/types.d.ts +11 -0
- package/dist/esm/http/common/types.d.ts.map +1 -1
- package/dist/esm/http/datasource.d.ts +26 -2
- package/dist/esm/http/datasource.d.ts.map +1 -1
- package/dist/esm/http/datasource.js +125 -13
- package/dist/esm/http/datasource.js.map +1 -1
- package/dist/esm/http/repository.d.ts +165 -4
- package/dist/esm/http/repository.d.ts.map +1 -1
- package/dist/esm/http/repository.js +87 -3
- package/dist/esm/http/repository.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,6 +8,12 @@ export interface IAuthToken {
|
|
|
8
8
|
export type TAuthTokenResolver = () => IAuthToken | undefined;
|
|
9
9
|
/** Not `Record` alone: header names are case-insensitive, and an object merge appends two spellings. */
|
|
10
10
|
export type THttpHeaders = Headers | Array<[string, string]> | Record<string, string>;
|
|
11
|
+
/**
|
|
12
|
+
* A request body. A plain object or array goes out as JSON; a string, `Blob`, `FormData`,
|
|
13
|
+
* `URLSearchParams`, `ArrayBuffer` or typed array goes out as it is. Never a stream: the 401 retry
|
|
14
|
+
* sends the same body twice.
|
|
15
|
+
*/
|
|
16
|
+
export type THttpBody = string | object;
|
|
11
17
|
export interface IHttpDataSourceSettings {
|
|
12
18
|
baseUrl: string;
|
|
13
19
|
/** Sent on every request. `x-request-count` is refused - the connector owns it. */
|
|
@@ -28,6 +34,11 @@ export interface IHttpReadResult<R> {
|
|
|
28
34
|
skip?: number;
|
|
29
35
|
dataLength: number;
|
|
30
36
|
}
|
|
37
|
+
/** What a write answers: the rows the server returned, and its `x-response-count`. */
|
|
38
|
+
export interface IHttpWriteResult<R> {
|
|
39
|
+
data: R;
|
|
40
|
+
count: number;
|
|
41
|
+
}
|
|
31
42
|
export type THttpQuery<E extends object> = {
|
|
32
43
|
filter?: TFilter<E>;
|
|
33
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/http/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG,MAAM,UAAU,GAAG,SAAS,CAAC;AAE9D,wGAAwG;AACxG,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/http/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG,MAAM,UAAU,GAAG,SAAS,CAAC;AAE9D,wGAAwG;AACxG,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB,mFAAmF;IACnF,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,qCAAqC;IACrC,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAEvC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CACnD;AAED,wGAAwG;AACxG,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AbstractDataSource } from '@venizia/ignis-kernel/repository';
|
|
2
2
|
import { NodeFetchNetworkRequest } from '@venizia/ignis-helpers/core';
|
|
3
|
-
import type { IAuthToken, IHttpDataSourceSettings, IHttpReadResult } from './common/types';
|
|
3
|
+
import type { IAuthToken, IHttpDataSourceSettings, IHttpReadResult, IHttpWriteResult, THttpBody, THttpHeaders } from './common/types';
|
|
4
4
|
/** Reads an IGNIS REST server through the repository contract. Targets IGNIS, not any REST API. */
|
|
5
5
|
export declare class HttpDataSource extends AbstractDataSource<IHttpDataSourceSettings> {
|
|
6
6
|
name: string;
|
|
@@ -21,22 +21,46 @@ export declare class HttpDataSource extends AbstractDataSource<IHttpDataSourceSe
|
|
|
21
21
|
protected resolveAuthToken(): IAuthToken | undefined;
|
|
22
22
|
protected buildHeaders(opts: {
|
|
23
23
|
token?: IAuthToken;
|
|
24
|
+
requestHeaders?: Array<[string, string]>;
|
|
25
|
+
isJsonBody?: boolean;
|
|
24
26
|
}): Headers;
|
|
25
27
|
buildUrl(opts: {
|
|
26
28
|
paths: Array<string>;
|
|
27
29
|
query?: Record<string, unknown>;
|
|
28
30
|
}): string;
|
|
29
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* The raw `Response`, on any method - for what the repository verbs do not cover, like an export
|
|
33
|
+
* or a PUT to a hand-written route. Auth and the 401 retry apply; the retry resends the same body.
|
|
34
|
+
*/
|
|
30
35
|
request(opts: {
|
|
31
36
|
paths: Array<string>;
|
|
32
37
|
query?: Record<string, unknown>;
|
|
33
38
|
method?: string;
|
|
39
|
+
body?: THttpBody;
|
|
40
|
+
headers?: THttpHeaders;
|
|
34
41
|
}): Promise<Response>;
|
|
42
|
+
/** A failed response as an error carrying the server's own status, message and message code. */
|
|
43
|
+
protected toResponseError(opts: {
|
|
44
|
+
response: Response;
|
|
45
|
+
url: string;
|
|
46
|
+
verb: string;
|
|
47
|
+
}): Promise<import("@venizia/ignis-helpers/core").ApplicationError>;
|
|
35
48
|
/** Rows plus the total from `Content-Range`, reported absent when the header is. */
|
|
36
49
|
read<R>(opts: {
|
|
37
50
|
paths: Array<string>;
|
|
38
51
|
query?: Record<string, unknown>;
|
|
39
52
|
shape?: 'list' | 'one';
|
|
40
53
|
}): Promise<IHttpReadResult<R>>;
|
|
54
|
+
/**
|
|
55
|
+
* A write, and what it answered: the body as the rows, the count from `x-response-count`. The
|
|
56
|
+
* connector asks for bare rows, so an IGNIS write answers the row or the rows, never the envelope.
|
|
57
|
+
*/
|
|
58
|
+
write<R>(opts: {
|
|
59
|
+
paths: Array<string>;
|
|
60
|
+
query?: Record<string, unknown>;
|
|
61
|
+
method: string;
|
|
62
|
+
body?: THttpBody;
|
|
63
|
+
headers?: THttpHeaders;
|
|
64
|
+
}): Promise<IHttpWriteResult<R>>;
|
|
41
65
|
}
|
|
42
66
|
//# sourceMappingURL=datasource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,eAAe,
|
|
1
|
+
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,YAAY,EACb,MAAM,gBAAgB,CAAC;AAyLxB,mGAAmG;AACnG,qBAAa,cAAe,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAS,KAAK,CAAC;IAE9B,SAAS,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC3C,uFAAuF;IACvF,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,sGAAsG;IACtG,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAEzB,IAAI,EAAE,uBAAuB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAkBvD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,eAAe;;;IAIxB,SAAS,CAAC,gBAAgB,IAAI,UAAU,GAAG,SAAS;IAIpD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE;QAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACzC,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO;IA8BX,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM;IA2BjF;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,CAAC,EAAE,YAAY,CAAC;KACxB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgCrB,gGAAgG;cAChF,eAAe,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAevF,oFAAoF;IAC9E,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;KACxB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAsB/B;;;OAGG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE;QACnB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,CAAC,EAAE,YAAY,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAyBjC"}
|
|
@@ -80,6 +80,69 @@ const toHeaderEntries = (opts) => {
|
|
|
80
80
|
}
|
|
81
81
|
return [...merged.entries()];
|
|
82
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* The body as `fetch` takes it. Anything `fetch` already sends as a body passes through untouched,
|
|
85
|
+
* so `FormData` keeps the multipart boundary its own content-type carries; any other object is JSON.
|
|
86
|
+
* Serialised ONCE, so the 401 retry sends the same bytes.
|
|
87
|
+
*/
|
|
88
|
+
const toRequestBody = (opts) => {
|
|
89
|
+
const { body } = opts;
|
|
90
|
+
if (body === undefined) {
|
|
91
|
+
return { payload: undefined, isJson: false };
|
|
92
|
+
}
|
|
93
|
+
const isSentAsIs = typeof body === 'string' ||
|
|
94
|
+
body instanceof Blob ||
|
|
95
|
+
body instanceof FormData ||
|
|
96
|
+
body instanceof URLSearchParams ||
|
|
97
|
+
body instanceof ArrayBuffer;
|
|
98
|
+
if (isSentAsIs) {
|
|
99
|
+
return { payload: body, isJson: false };
|
|
100
|
+
}
|
|
101
|
+
// A typed array may sit on a SharedArrayBuffer, which `fetch` refuses; a Blob copy never does.
|
|
102
|
+
if (ArrayBuffer.isView(body)) {
|
|
103
|
+
return {
|
|
104
|
+
payload: new Blob([new Uint8Array(body.buffer, body.byteOffset, body.byteLength).slice()]),
|
|
105
|
+
isJson: false,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return { payload: JSON.stringify(body), isJson: true };
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* The IGNIS error envelope - `{ message, normalized: { code }, requestId }` - read off a failed
|
|
112
|
+
* response. A body that is not that envelope yields nothing, and the status alone still describes it.
|
|
113
|
+
*/
|
|
114
|
+
const readServerError = async (opts) => {
|
|
115
|
+
const text = await opts.response.text().catch(() => '');
|
|
116
|
+
let parsed;
|
|
117
|
+
try {
|
|
118
|
+
parsed = text ? JSON.parse(text) : undefined;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return {};
|
|
122
|
+
}
|
|
123
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
124
|
+
return {};
|
|
125
|
+
}
|
|
126
|
+
const message = Reflect.get(parsed, 'message');
|
|
127
|
+
const requestId = Reflect.get(parsed, 'requestId');
|
|
128
|
+
const normalized = Reflect.get(parsed, 'normalized');
|
|
129
|
+
const code = normalized && typeof normalized === 'object' ? Reflect.get(normalized, 'code') : undefined;
|
|
130
|
+
return {
|
|
131
|
+
message: typeof message === 'string' ? message : undefined,
|
|
132
|
+
code: typeof code === 'string' ? code : undefined,
|
|
133
|
+
requestId: typeof requestId === 'string' ? requestId : undefined,
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
/** The connector always sends `x-request-count: false`; a caller header carrying it would contradict that. */
|
|
137
|
+
const assertNoRequestCountHeader = (opts) => {
|
|
138
|
+
const { entries, name } = opts;
|
|
139
|
+
if (entries.some(([headerName]) => headerName === common_1.HTTP.Headers.REQUEST_COUNT_DATA)) {
|
|
140
|
+
throw (0, core_2.getError)({
|
|
141
|
+
statusCode: common_1.HTTP.ResultCodes.RS_5.InternalServerError,
|
|
142
|
+
message: `[${name}] ${common_1.HTTP.Headers.REQUEST_COUNT_DATA} is owned by HttpDataSource and always sent as false: rows come back bare, the total in Content-Range.`,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
};
|
|
83
146
|
/** Reads an IGNIS REST server through the repository contract. Targets IGNIS, not any REST API. */
|
|
84
147
|
class HttpDataSource extends repository_1.AbstractDataSource {
|
|
85
148
|
constructor(opts) {
|
|
@@ -87,12 +150,7 @@ class HttpDataSource extends repository_1.AbstractDataSource {
|
|
|
87
150
|
this.schema = {};
|
|
88
151
|
const { name = 'http', ...settings } = opts;
|
|
89
152
|
const configured = toHeaderEntries({ headers: settings.headers });
|
|
90
|
-
|
|
91
|
-
throw (0, core_2.getError)({
|
|
92
|
-
statusCode: common_1.HTTP.ResultCodes.RS_5.InternalServerError,
|
|
93
|
-
message: `[${name}] ${common_1.HTTP.Headers.REQUEST_COUNT_DATA} is owned by HttpDataSource and always sent as false: rows come back bare, the total in Content-Range.`,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
153
|
+
assertNoRequestCountHeader({ entries: configured, name });
|
|
96
154
|
this.configuredHeaders = configured;
|
|
97
155
|
this.name = name;
|
|
98
156
|
this.settings = settings;
|
|
@@ -110,8 +168,15 @@ class HttpDataSource extends repository_1.AbstractDataSource {
|
|
|
110
168
|
return this.settings.authToken ?? this.settings.authTokenResolver?.();
|
|
111
169
|
}
|
|
112
170
|
buildHeaders(opts) {
|
|
113
|
-
const { token } = opts;
|
|
171
|
+
const { token, requestHeaders, isJsonBody } = opts;
|
|
114
172
|
const headers = new Headers(this.configuredHeaders);
|
|
173
|
+
// A request's own headers win over the configured ones; the connector's below win over both.
|
|
174
|
+
for (const [name, value] of requestHeaders ?? []) {
|
|
175
|
+
headers.set(name, value);
|
|
176
|
+
}
|
|
177
|
+
if (isJsonBody && !headers.has(common_1.HTTP.Headers.CONTENT_TYPE)) {
|
|
178
|
+
headers.set(common_1.HTTP.Headers.CONTENT_TYPE, 'application/json');
|
|
179
|
+
}
|
|
115
180
|
// Set last: under the envelope a record read answers `{ count, data }`.
|
|
116
181
|
headers.set(common_1.HTTP.Headers.REQUEST_COUNT_DATA, 'false');
|
|
117
182
|
if (!token) {
|
|
@@ -145,13 +210,24 @@ class HttpDataSource extends repository_1.AbstractDataSource {
|
|
|
145
210
|
}
|
|
146
211
|
return url.toString();
|
|
147
212
|
}
|
|
148
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* The raw `Response`, on any method - for what the repository verbs do not cover, like an export
|
|
215
|
+
* or a PUT to a hand-written route. Auth and the 401 retry apply; the retry resends the same body.
|
|
216
|
+
*/
|
|
149
217
|
async request(opts) {
|
|
218
|
+
const requestHeaders = toHeaderEntries({ headers: opts.headers });
|
|
219
|
+
assertNoRequestCountHeader({ entries: requestHeaders, name: this.name });
|
|
150
220
|
const url = this.buildUrl(opts);
|
|
221
|
+
const { payload, isJson } = toRequestBody({ body: opts.body });
|
|
151
222
|
const send = () => this.network.getNetworkService().send({
|
|
152
223
|
url,
|
|
153
224
|
method: (opts.method ?? common_1.HTTP.Methods.GET),
|
|
154
|
-
|
|
225
|
+
body: payload,
|
|
226
|
+
headers: this.buildHeaders({
|
|
227
|
+
token: this.resolveAuthToken(),
|
|
228
|
+
requestHeaders,
|
|
229
|
+
isJsonBody: isJson,
|
|
230
|
+
}),
|
|
155
231
|
});
|
|
156
232
|
let response = await send();
|
|
157
233
|
if (response.status === common_1.HTTP.ResultCodes.RS_4.Unauthorized && this.settings.onUnauthorized) {
|
|
@@ -162,14 +238,25 @@ class HttpDataSource extends repository_1.AbstractDataSource {
|
|
|
162
238
|
}
|
|
163
239
|
return response;
|
|
164
240
|
}
|
|
241
|
+
/** A failed response as an error carrying the server's own status, message and message code. */
|
|
242
|
+
async toResponseError(opts) {
|
|
243
|
+
const { response, url, verb } = opts;
|
|
244
|
+
const server = await readServerError({ response });
|
|
245
|
+
const described = describeUrl({ url, status: response.status });
|
|
246
|
+
return (0, core_2.getError)({
|
|
247
|
+
statusCode: response.status,
|
|
248
|
+
message: server.message
|
|
249
|
+
? `[${this.name}][${verb}] ${response.status} | ${described} | ${server.message}`
|
|
250
|
+
: `[${this.name}][${verb}] ${response.status} | ${described}`,
|
|
251
|
+
messageCode: server.code,
|
|
252
|
+
extra: server.requestId ? { requestId: server.requestId } : undefined,
|
|
253
|
+
});
|
|
254
|
+
}
|
|
165
255
|
/** Rows plus the total from `Content-Range`, reported absent when the header is. */
|
|
166
256
|
async read(opts) {
|
|
167
257
|
const response = await this.request(opts);
|
|
168
258
|
if (!response.ok) {
|
|
169
|
-
throw (
|
|
170
|
-
statusCode: response.status,
|
|
171
|
-
message: `[${this.name}][read] ${response.status} | ${describeUrl({ url: this.buildUrl(opts), status: response.status })}`,
|
|
172
|
-
});
|
|
259
|
+
throw await this.toResponseError({ response, url: this.buildUrl(opts), verb: 'read' });
|
|
173
260
|
}
|
|
174
261
|
const body = await response.json();
|
|
175
262
|
const contentRange = response.headers.get(common_1.HTTP.Headers.CONTENT_RANGE) ?? undefined;
|
|
@@ -184,6 +271,31 @@ class HttpDataSource extends repository_1.AbstractDataSource {
|
|
|
184
271
|
dataLength: Array.isArray(data) ? data.length : 1,
|
|
185
272
|
};
|
|
186
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* A write, and what it answered: the body as the rows, the count from `x-response-count`. The
|
|
276
|
+
* connector asks for bare rows, so an IGNIS write answers the row or the rows, never the envelope.
|
|
277
|
+
*/
|
|
278
|
+
async write(opts) {
|
|
279
|
+
const response = await this.request(opts);
|
|
280
|
+
if (!response.ok) {
|
|
281
|
+
throw await this.toResponseError({ response, url: this.buildUrl(opts), verb: 'write' });
|
|
282
|
+
}
|
|
283
|
+
// A 204, or a route that answers nothing, has no body to parse.
|
|
284
|
+
const text = await response.text();
|
|
285
|
+
const data = text ? JSON.parse(text) : null;
|
|
286
|
+
const countHeader = response.headers.get(common_1.HTTP.Headers.RESPONSE_COUNT_DATA);
|
|
287
|
+
const counted = countHeader === null ? Number.NaN : Number(countHeader);
|
|
288
|
+
return {
|
|
289
|
+
data,
|
|
290
|
+
count: Number.isFinite(counted)
|
|
291
|
+
? counted
|
|
292
|
+
: Array.isArray(data)
|
|
293
|
+
? data.length
|
|
294
|
+
: data === null
|
|
295
|
+
? 0
|
|
296
|
+
: 1,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
187
299
|
}
|
|
188
300
|
exports.HttpDataSource = HttpDataSource;
|
|
189
301
|
//# sourceMappingURL=datasource.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AbstractEntity } from '@venizia/ignis-kernel/repository';
|
|
2
|
-
import type { IReadableRepository, TCount, TDataWithRange, TFilter, TSchemaType, TWhere } from '@venizia/ignis-kernel/repository';
|
|
3
1
|
import type { AnyType } from '@venizia/ignis-helpers/common';
|
|
2
|
+
import type { IDeletableRepository, IReadableRepository, IUpdatableRepository, TCount, TDataWithRange, TFilter, TSchemaType, TWhere } from '@venizia/ignis-kernel/repository';
|
|
3
|
+
import { AbstractEntity } from '@venizia/ignis-kernel/repository';
|
|
4
|
+
import type { IHttpWriteResult } from './common/types';
|
|
4
5
|
import type { HttpDataSource } from './datasource';
|
|
5
6
|
/** A remote resource has a name but no local schema. */
|
|
6
7
|
export declare class HttpResourceEntity extends AbstractEntity {
|
|
@@ -8,8 +9,12 @@ export declare class HttpResourceEntity extends AbstractEntity {
|
|
|
8
9
|
type: TSchemaType;
|
|
9
10
|
}): T;
|
|
10
11
|
}
|
|
11
|
-
/**
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* One remote resource, read and written through the IGNIS CRUD routes, in the `@venizia/ignis-filter`
|
|
14
|
+
* vocabulary. `P` is what a write sends - a partial row by default, since the server fills ids and
|
|
15
|
+
* defaults. There is no `createAll`: the IGNIS REST contract has no bulk-create route.
|
|
16
|
+
*/
|
|
17
|
+
export declare class HttpRepository<E extends object = AnyType, P extends object = Partial<E>> implements IReadableRepository<E, {}>, IUpdatableRepository<E, P, {}>, IDeletableRepository<E, {}> {
|
|
13
18
|
dataSource: HttpDataSource;
|
|
14
19
|
entity: AbstractEntity;
|
|
15
20
|
protected resource: string;
|
|
@@ -55,5 +60,161 @@ export declare class HttpRepository<E extends object = AnyType> implements IRead
|
|
|
55
60
|
filter?: TFilter<E>;
|
|
56
61
|
options?: {};
|
|
57
62
|
}): Promise<R | null>;
|
|
63
|
+
/** `<resource>/<id>`, the id encoded: an id carrying `/` or `?` would otherwise name another route. */
|
|
64
|
+
protected getIdPaths(opts: {
|
|
65
|
+
id: string | number;
|
|
66
|
+
}): Array<string>;
|
|
67
|
+
/** The IGNIS bulk routes answer an empty `where` with a 400; refused here before a request is spent. */
|
|
68
|
+
protected assertBulkWhere(opts: {
|
|
69
|
+
method: string;
|
|
70
|
+
where?: TWhere<E>;
|
|
71
|
+
}): TWhere<E>;
|
|
72
|
+
/** The server always answers the rows; `shouldReturn: false` drops them here, as a database repository would not fetch them. */
|
|
73
|
+
protected toWriteResult<R>(opts: {
|
|
74
|
+
result: IHttpWriteResult<R>;
|
|
75
|
+
options?: {
|
|
76
|
+
shouldReturn?: boolean;
|
|
77
|
+
};
|
|
78
|
+
}): TCount & {
|
|
79
|
+
data: R | null;
|
|
80
|
+
};
|
|
81
|
+
/** POST `/<resource>`. */
|
|
82
|
+
create<R = E>(opts: {
|
|
83
|
+
data: P;
|
|
84
|
+
options?: {
|
|
85
|
+
shouldReturn?: true;
|
|
86
|
+
};
|
|
87
|
+
}): Promise<TCount & {
|
|
88
|
+
data: R;
|
|
89
|
+
}>;
|
|
90
|
+
updateById(opts: {
|
|
91
|
+
id: string | number;
|
|
92
|
+
data: Partial<P>;
|
|
93
|
+
options: {
|
|
94
|
+
shouldReturn: false;
|
|
95
|
+
};
|
|
96
|
+
}): Promise<TCount & {
|
|
97
|
+
data: undefined | null;
|
|
98
|
+
}>;
|
|
99
|
+
updateById<R = E>(opts: {
|
|
100
|
+
id: string | number;
|
|
101
|
+
data: Partial<P>;
|
|
102
|
+
options?: {
|
|
103
|
+
shouldReturn?: true;
|
|
104
|
+
};
|
|
105
|
+
}): Promise<TCount & {
|
|
106
|
+
data: R;
|
|
107
|
+
}>;
|
|
108
|
+
updateAll(opts: {
|
|
109
|
+
data: Partial<P>;
|
|
110
|
+
where: TWhere<E>;
|
|
111
|
+
options: {
|
|
112
|
+
shouldReturn: false;
|
|
113
|
+
force?: boolean;
|
|
114
|
+
};
|
|
115
|
+
}): Promise<TCount & {
|
|
116
|
+
data: undefined | null;
|
|
117
|
+
}>;
|
|
118
|
+
updateAll<R = E>(opts: {
|
|
119
|
+
data: Partial<P>;
|
|
120
|
+
where: TWhere<E>;
|
|
121
|
+
options?: {
|
|
122
|
+
shouldReturn?: true;
|
|
123
|
+
force?: boolean;
|
|
124
|
+
};
|
|
125
|
+
}): Promise<TCount & {
|
|
126
|
+
data: Array<R> | null;
|
|
127
|
+
}>;
|
|
128
|
+
updateBy(opts: {
|
|
129
|
+
data: Partial<P>;
|
|
130
|
+
where: TWhere<E>;
|
|
131
|
+
options: {
|
|
132
|
+
shouldReturn: false;
|
|
133
|
+
force?: boolean;
|
|
134
|
+
};
|
|
135
|
+
}): Promise<TCount & {
|
|
136
|
+
data: undefined | null;
|
|
137
|
+
}>;
|
|
138
|
+
updateBy<R = E>(opts: {
|
|
139
|
+
data: Partial<P>;
|
|
140
|
+
where: TWhere<E>;
|
|
141
|
+
options?: {
|
|
142
|
+
shouldReturn?: true;
|
|
143
|
+
force?: boolean;
|
|
144
|
+
};
|
|
145
|
+
}): Promise<TCount & {
|
|
146
|
+
data: Array<R> | null;
|
|
147
|
+
}>;
|
|
148
|
+
protected patchWhere(opts: {
|
|
149
|
+
method: string;
|
|
150
|
+
data: Partial<P>;
|
|
151
|
+
where: TWhere<E>;
|
|
152
|
+
options?: {
|
|
153
|
+
shouldReturn?: boolean;
|
|
154
|
+
};
|
|
155
|
+
}): Promise<TCount & {
|
|
156
|
+
data: AnyType;
|
|
157
|
+
}>;
|
|
158
|
+
deleteById(opts: {
|
|
159
|
+
id: string | number;
|
|
160
|
+
options: {
|
|
161
|
+
shouldReturn: false;
|
|
162
|
+
};
|
|
163
|
+
}): Promise<TCount & {
|
|
164
|
+
data: undefined | null;
|
|
165
|
+
}>;
|
|
166
|
+
deleteById<R = E>(opts: {
|
|
167
|
+
id: string | number;
|
|
168
|
+
options?: {
|
|
169
|
+
shouldReturn?: true;
|
|
170
|
+
};
|
|
171
|
+
}): Promise<TCount & {
|
|
172
|
+
data: R;
|
|
173
|
+
}>;
|
|
174
|
+
deleteAll(opts: {
|
|
175
|
+
where?: TWhere<E>;
|
|
176
|
+
options: {
|
|
177
|
+
shouldReturn: false;
|
|
178
|
+
force?: boolean;
|
|
179
|
+
};
|
|
180
|
+
}): Promise<TCount & {
|
|
181
|
+
data: undefined | null;
|
|
182
|
+
}>;
|
|
183
|
+
deleteAll<R = E>(opts: {
|
|
184
|
+
where?: TWhere<E>;
|
|
185
|
+
options?: {
|
|
186
|
+
shouldReturn?: true;
|
|
187
|
+
force?: boolean;
|
|
188
|
+
};
|
|
189
|
+
}): Promise<TCount & {
|
|
190
|
+
data: Array<R> | null;
|
|
191
|
+
}>;
|
|
192
|
+
deleteBy(opts: {
|
|
193
|
+
where?: TWhere<E>;
|
|
194
|
+
options: {
|
|
195
|
+
shouldReturn: false;
|
|
196
|
+
force?: boolean;
|
|
197
|
+
};
|
|
198
|
+
}): Promise<TCount & {
|
|
199
|
+
data: undefined | null;
|
|
200
|
+
}>;
|
|
201
|
+
deleteBy<R = E>(opts: {
|
|
202
|
+
where?: TWhere<E>;
|
|
203
|
+
options?: {
|
|
204
|
+
shouldReturn?: true;
|
|
205
|
+
force?: boolean;
|
|
206
|
+
};
|
|
207
|
+
}): Promise<TCount & {
|
|
208
|
+
data: Array<R> | null;
|
|
209
|
+
}>;
|
|
210
|
+
protected deleteWhere(opts: {
|
|
211
|
+
method: string;
|
|
212
|
+
where?: TWhere<E>;
|
|
213
|
+
options?: {
|
|
214
|
+
shouldReturn?: boolean;
|
|
215
|
+
};
|
|
216
|
+
}): Promise<TCount & {
|
|
217
|
+
data: AnyType;
|
|
218
|
+
}>;
|
|
58
219
|
}
|
|
59
220
|
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/http/repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/http/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HttpRepository = exports.HttpResourceEntity = void 0;
|
|
4
4
|
const common_1 = require("@venizia/ignis-helpers/common");
|
|
5
|
-
const repository_1 = require("@venizia/ignis-kernel/repository");
|
|
6
5
|
const core_1 = require("@venizia/ignis-helpers/core");
|
|
6
|
+
const repository_1 = require("@venizia/ignis-kernel/repository");
|
|
7
7
|
/** A remote resource has a name but no local schema. */
|
|
8
8
|
class HttpResourceEntity extends repository_1.AbstractEntity {
|
|
9
9
|
getSchema(_opts) {
|
|
@@ -11,7 +11,11 @@ class HttpResourceEntity extends repository_1.AbstractEntity {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.HttpResourceEntity = HttpResourceEntity;
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* One remote resource, read and written through the IGNIS CRUD routes, in the `@venizia/ignis-filter`
|
|
16
|
+
* vocabulary. `P` is what a write sends - a partial row by default, since the server fills ids and
|
|
17
|
+
* defaults. There is no `createAll`: the IGNIS REST contract has no bulk-create route.
|
|
18
|
+
*/
|
|
15
19
|
class HttpRepository {
|
|
16
20
|
constructor(opts) {
|
|
17
21
|
this.dataSource = opts.dataSource;
|
|
@@ -103,12 +107,92 @@ class HttpRepository {
|
|
|
103
107
|
}
|
|
104
108
|
async findById(opts) {
|
|
105
109
|
const rs = await this.dataSource.read({
|
|
106
|
-
paths:
|
|
110
|
+
paths: this.getIdPaths({ id: opts.id }),
|
|
107
111
|
query: { filter: opts.filter ?? {} },
|
|
108
112
|
shape: 'one',
|
|
109
113
|
});
|
|
110
114
|
return rs.data ?? null;
|
|
111
115
|
}
|
|
116
|
+
/** `<resource>/<id>`, the id encoded: an id carrying `/` or `?` would otherwise name another route. */
|
|
117
|
+
getIdPaths(opts) {
|
|
118
|
+
return [this.resource, encodeURIComponent(String(opts.id))];
|
|
119
|
+
}
|
|
120
|
+
/** The IGNIS bulk routes answer an empty `where` with a 400; refused here before a request is spent. */
|
|
121
|
+
assertBulkWhere(opts) {
|
|
122
|
+
const { method, where } = opts;
|
|
123
|
+
if (!where || Object.keys(where).length === 0) {
|
|
124
|
+
throw (0, core_1.getError)({
|
|
125
|
+
statusCode: common_1.HTTP.ResultCodes.RS_4.BadRequest,
|
|
126
|
+
message: `[${this.resource}][${method}] where is required for a bulk write | The IGNIS bulk routes refuse an empty where, and force cannot cross HTTP`,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return where;
|
|
130
|
+
}
|
|
131
|
+
/** The server always answers the rows; `shouldReturn: false` drops them here, as a database repository would not fetch them. */
|
|
132
|
+
toWriteResult(opts) {
|
|
133
|
+
const { result, options } = opts;
|
|
134
|
+
return { count: result.count, data: options?.shouldReturn === false ? null : result.data };
|
|
135
|
+
}
|
|
136
|
+
/** POST `/<resource>`. */
|
|
137
|
+
async create(opts) {
|
|
138
|
+
const result = await this.dataSource.write({
|
|
139
|
+
paths: [this.resource],
|
|
140
|
+
method: common_1.HTTP.Methods.POST,
|
|
141
|
+
body: opts.data,
|
|
142
|
+
});
|
|
143
|
+
return { count: result.count, data: result.data };
|
|
144
|
+
}
|
|
145
|
+
/** PATCH `/<resource>/<id>`. */
|
|
146
|
+
async updateById(opts) {
|
|
147
|
+
const result = await this.dataSource.write({
|
|
148
|
+
paths: this.getIdPaths({ id: opts.id }),
|
|
149
|
+
method: common_1.HTTP.Methods.PATCH,
|
|
150
|
+
body: opts.data,
|
|
151
|
+
});
|
|
152
|
+
return this.toWriteResult({ result, options: opts.options });
|
|
153
|
+
}
|
|
154
|
+
/** PATCH `/<resource>`, the `where` in the body beside the data - a long id list outgrows a URL. */
|
|
155
|
+
async updateAll(opts) {
|
|
156
|
+
return this.patchWhere({ ...opts, method: 'updateAll' });
|
|
157
|
+
}
|
|
158
|
+
/** Alias for `updateAll`. */
|
|
159
|
+
async updateBy(opts) {
|
|
160
|
+
return this.patchWhere({ ...opts, method: 'updateBy' });
|
|
161
|
+
}
|
|
162
|
+
async patchWhere(opts) {
|
|
163
|
+
const where = this.assertBulkWhere({ method: opts.method, where: opts.where });
|
|
164
|
+
const result = await this.dataSource.write({
|
|
165
|
+
paths: [this.resource],
|
|
166
|
+
method: common_1.HTTP.Methods.PATCH,
|
|
167
|
+
body: { ...opts.data, where },
|
|
168
|
+
});
|
|
169
|
+
return this.toWriteResult({ result, options: opts.options });
|
|
170
|
+
}
|
|
171
|
+
/** DELETE `/<resource>/<id>`. */
|
|
172
|
+
async deleteById(opts) {
|
|
173
|
+
const result = await this.dataSource.write({
|
|
174
|
+
paths: this.getIdPaths({ id: opts.id }),
|
|
175
|
+
method: common_1.HTTP.Methods.DELETE,
|
|
176
|
+
});
|
|
177
|
+
return this.toWriteResult({ result, options: opts.options });
|
|
178
|
+
}
|
|
179
|
+
/** DELETE `/<resource>`, the `where` in the body. */
|
|
180
|
+
async deleteAll(opts) {
|
|
181
|
+
return this.deleteWhere({ ...opts, method: 'deleteAll' });
|
|
182
|
+
}
|
|
183
|
+
/** Alias for `deleteAll`. */
|
|
184
|
+
async deleteBy(opts) {
|
|
185
|
+
return this.deleteWhere({ ...opts, method: 'deleteBy' });
|
|
186
|
+
}
|
|
187
|
+
async deleteWhere(opts) {
|
|
188
|
+
const where = this.assertBulkWhere({ method: opts.method, where: opts.where });
|
|
189
|
+
const result = await this.dataSource.write({
|
|
190
|
+
paths: [this.resource],
|
|
191
|
+
method: common_1.HTTP.Methods.DELETE,
|
|
192
|
+
body: { where },
|
|
193
|
+
});
|
|
194
|
+
return this.toWriteResult({ result, options: opts.options });
|
|
195
|
+
}
|
|
112
196
|
}
|
|
113
197
|
exports.HttpRepository = HttpRepository;
|
|
114
198
|
//# sourceMappingURL=repository.js.map
|