@t4h.framework/http 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/activities/AbstractHttpRequestActivity.d.ts +14 -0
- package/dist/activities/AbstractHttpRequestActivity.d.ts.map +1 -1
- package/dist/activities/AbstractHttpRequestActivity.js +10 -1
- package/dist/activities/AbstractHttpRequestActivity.js.map +1 -1
- package/dist/http.d.ts +2 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +2 -0
- package/dist/http.js.map +1 -1
- package/dist/models/HttpBodyRef.d.ts +5 -0
- package/dist/models/HttpBodyRef.d.ts.map +1 -0
- package/dist/models/HttpBodyRef.js +4 -0
- package/dist/models/HttpBodyRef.js.map +1 -0
- package/dist/models/HttpBodyUpload.d.ts +33 -0
- package/dist/models/HttpBodyUpload.d.ts.map +1 -0
- package/dist/models/HttpBodyUpload.js +95 -0
- package/dist/models/HttpBodyUpload.js.map +1 -0
- package/dist/tools/resolve-body-refs.d.ts +3 -0
- package/dist/tools/resolve-body-refs.d.ts.map +1 -0
- package/dist/tools/resolve-body-refs.js +18 -0
- package/dist/tools/resolve-body-refs.js.map +1 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @t4h.framework/http
|
|
2
2
|
|
|
3
|
+
## 0.6.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#175](https://github.com/tech4humans-brasil/framework/pull/175) [`6e6d3de`](https://github.com/tech4humans-brasil/framework/commit/6e6d3de20895bae1b6faf1bdc32aa4f7c136ef0f) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds `HttpBodyRef`, a value in a JSON body resolved when the request is made,
|
|
8
|
+
and a raw `{ binary }` request body.
|
|
9
|
+
|
|
10
|
+
The body of a request is the activity's input, and inputs are persisted. That
|
|
11
|
+
makes two common attachment shapes traps. An encoded file writes the whole file
|
|
12
|
+
into the history, once per request. And a pre-signed URL expires: between
|
|
13
|
+
persisting the input and the request going out there is a queue with no bound
|
|
14
|
+
on how long it holds a message, so a URL minted beforehand can arrive expired.
|
|
15
|
+
|
|
16
|
+
`HttpBodyRef` keeps both out of the history — what is persisted is what the
|
|
17
|
+
subclass serializes, the recipe rather than the result. It is the body
|
|
18
|
+
counterpart of `HttpAuth`, which for the same reason stores how to get a token
|
|
19
|
+
and never the token. `HttpBodyUpload` is the ready-made case: it asks an
|
|
20
|
+
endpoint for a signed destination, uploads the `Binary`, and resolves to the
|
|
21
|
+
URL, configured by data so one class covers any mint-then-upload flow.
|
|
22
|
+
|
|
23
|
+
A `{ binary }` body streams from storage to the wire instead of being buffered.
|
|
24
|
+
|
|
25
|
+
- Updated dependencies [[`7cd75e4`](https://github.com/tech4humans-brasil/framework/commit/7cd75e4f557d9f5fbe3e486d5a3981186fa38797)]:
|
|
26
|
+
- @t4h.framework/fs@0.9.5
|
|
27
|
+
|
|
3
28
|
## 0.6.3
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
@@ -17,14 +17,22 @@ export type HttpBody = {
|
|
|
17
17
|
json: Serializable;
|
|
18
18
|
text?: never;
|
|
19
19
|
form?: never;
|
|
20
|
+
binary?: never;
|
|
20
21
|
} | {
|
|
21
22
|
json?: never;
|
|
22
23
|
text: string;
|
|
23
24
|
form?: never;
|
|
25
|
+
binary?: never;
|
|
24
26
|
} | {
|
|
25
27
|
json?: never;
|
|
26
28
|
text?: never;
|
|
27
29
|
form: HttpRequestActivityInputBodyFormData;
|
|
30
|
+
binary?: never;
|
|
31
|
+
} | {
|
|
32
|
+
json?: never;
|
|
33
|
+
text?: never;
|
|
34
|
+
form?: never;
|
|
35
|
+
binary: Binary;
|
|
28
36
|
};
|
|
29
37
|
export type HttpRequestActivityInput = {
|
|
30
38
|
url: string;
|
|
@@ -63,6 +71,12 @@ export declare abstract class AbstractHttpRequestActivity<TArgs extends readonly
|
|
|
63
71
|
} | {
|
|
64
72
|
body: FormData;
|
|
65
73
|
headers?: undefined;
|
|
74
|
+
} | {
|
|
75
|
+
body: import("node:stream").Readable;
|
|
76
|
+
headers: {
|
|
77
|
+
'Content-Type': string;
|
|
78
|
+
'Content-Length': string;
|
|
79
|
+
};
|
|
66
80
|
}>;
|
|
67
81
|
run(input: TInput): Promise<TSerializableOutput>;
|
|
68
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractHttpRequestActivity.d.ts","sourceRoot":"","sources":["../../src/activities/AbstractHttpRequestActivity.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,MAAM,EACN,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAA;AAK5B,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractHttpRequestActivity.d.ts","sourceRoot":"","sources":["../../src/activities/AbstractHttpRequestActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { uuidv7 } from 'uuidv7';
|
|
|
7
7
|
import { Body } from '../models/Body.js';
|
|
8
8
|
import { HttpAuth } from '../models/HttpAuth.js';
|
|
9
9
|
import { HttpClientRequestClaim } from '../models/HttpClientRequestClaim.js';
|
|
10
|
+
import { resolveBodyRefs } from '../tools/resolve-body-refs.js';
|
|
10
11
|
import { withDefaultUserAgent } from '../tools/with-default-user-agent.js';
|
|
11
12
|
const CLAIMS_KEY = Symbol('http-request-activity-claims');
|
|
12
13
|
export class AbstractHttpRequestActivity extends SyncActivity {
|
|
@@ -45,7 +46,7 @@ export class AbstractHttpRequestActivity extends SyncActivity {
|
|
|
45
46
|
headers: undefined,
|
|
46
47
|
};
|
|
47
48
|
if (body.json !== undefined) {
|
|
48
|
-
const json = JSON.stringify(body.json);
|
|
49
|
+
const json = JSON.stringify(await resolveBodyRefs(body.json));
|
|
49
50
|
const buffer = Buffer.from(json);
|
|
50
51
|
return {
|
|
51
52
|
body: buffer,
|
|
@@ -69,6 +70,14 @@ export class AbstractHttpRequestActivity extends SyncActivity {
|
|
|
69
70
|
const form = await this.getFormData(body.form);
|
|
70
71
|
return { body: form };
|
|
71
72
|
}
|
|
73
|
+
if (body.binary !== undefined)
|
|
74
|
+
return {
|
|
75
|
+
body: await body.binary.stream(),
|
|
76
|
+
headers: {
|
|
77
|
+
'Content-Type': body.binary.contentType,
|
|
78
|
+
'Content-Length': body.binary.contentLength.toString(),
|
|
79
|
+
},
|
|
80
|
+
};
|
|
72
81
|
throw new Error('Invalid body');
|
|
73
82
|
}
|
|
74
83
|
async run(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractHttpRequestActivity.js","sourceRoot":"","sources":["../../src/activities/AbstractHttpRequestActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,OAAO,EACL,YAAY,EACZ,MAAM,EAEN,KAAK,GACN,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractHttpRequestActivity.js","sourceRoot":"","sources":["../../src/activities/AbstractHttpRequestActivity.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from './activities/AbstractHttpRequestActivity.js';
|
|
2
2
|
export * from './activities/HttpRequestActivity.js';
|
|
3
3
|
export * from './models/Body.js';
|
|
4
|
+
export * from './models/HttpBodyRef.js';
|
|
5
|
+
export * from './models/HttpBodyUpload.js';
|
|
4
6
|
export * from './models/HttpAuth.js';
|
|
5
7
|
export * from './models/HttpClient.js';
|
|
6
8
|
export * from './models/HttpClientRequestClaim.js';
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qCAAqC,CAAA;AACnD,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oCAAoC,CAAA;AAClD,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0CAA0C,CAAA;AACxD,cAAc,8CAA8C,CAAA"}
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qCAAqC,CAAA;AACnD,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oCAAoC,CAAA;AAClD,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0CAA0C,CAAA;AACxD,cAAc,8CAA8C,CAAA"}
|
package/dist/http.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from './activities/AbstractHttpRequestActivity.js';
|
|
2
2
|
export * from './activities/HttpRequestActivity.js';
|
|
3
3
|
export * from './models/Body.js';
|
|
4
|
+
export * from './models/HttpBodyRef.js';
|
|
5
|
+
export * from './models/HttpBodyUpload.js';
|
|
4
6
|
export * from './models/HttpAuth.js';
|
|
5
7
|
export * from './models/HttpClient.js';
|
|
6
8
|
export * from './models/HttpClientRequestClaim.js';
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qCAAqC,CAAA;AACnD,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oCAAoC,CAAA;AAClD,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0CAA0C,CAAA;AACxD,cAAc,8CAA8C,CAAA"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qCAAqC,CAAA;AACnD,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oCAAoC,CAAA;AAClD,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0CAA0C,CAAA;AACxD,cAAc,8CAA8C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpBodyRef.d.ts","sourceRoot":"","sources":["../../src/models/HttpBodyRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE1E,8BAAsB,WAAW,CAC/B,CAAC,SAAS,YAAY,GAAG,MAAM,CAC/B,SAAQ,iBAAiB;aACT,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpBodyRef.js","sourceRoot":"","sources":["../../src/models/HttpBodyRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,qBAAqB,CAAA;AAE1E,MAAM,OAAgB,WAEpB,SAAQ,iBAAiB;CAE1B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Binary, type Deserializer, type PromiseLikeType, type Serializable, type Serializer } from '@t4h.framework/core';
|
|
2
|
+
import { HttpBodyRef } from './HttpBodyRef.js';
|
|
3
|
+
import type { HttpMethod } from '../activities/AbstractHttpRequestActivity.js';
|
|
4
|
+
export type HttpBodyUploadConfig = {
|
|
5
|
+
signer: {
|
|
6
|
+
url: string;
|
|
7
|
+
method?: HttpMethod;
|
|
8
|
+
json?: Serializable;
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
};
|
|
11
|
+
urlPath?: string;
|
|
12
|
+
upload?: {
|
|
13
|
+
method?: HttpMethod;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
type HttpBodyUploadSerialized = {
|
|
18
|
+
binary: Serializable;
|
|
19
|
+
config: HttpBodyUploadConfig;
|
|
20
|
+
};
|
|
21
|
+
export declare class HttpBodyUpload extends HttpBodyRef<string> {
|
|
22
|
+
readonly binary: Binary;
|
|
23
|
+
readonly config: HttpBodyUploadConfig;
|
|
24
|
+
private readonly claims;
|
|
25
|
+
constructor(binary: Binary, config: HttpBodyUploadConfig);
|
|
26
|
+
toSerializable(serializer: Serializer): Promise<HttpBodyUploadSerialized>;
|
|
27
|
+
protected fromSerializable(serialized: PromiseLikeType<ReturnType<this['toSerializable']>>, deserializer: Deserializer): Promise<void>;
|
|
28
|
+
resolve(): Promise<string>;
|
|
29
|
+
private toSignedUrl;
|
|
30
|
+
private upload;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=HttpBodyUpload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpBodyUpload.d.ts","sourceRoot":"","sources":["../../src/models/HttpBodyUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAK9E,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,IAAI,CAAC,EAAE,YAAY,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,CAAA;CACF,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,oBAAoB,CAAA;CAC7B,CAAA;AAYD,qBAAa,cAAe,SAAQ,WAAW,CAAC,MAAM,CAAC;aAInC,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,oBAAoB;IAJ9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;gBAGnD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB;IAKjC,cAAc,CACzB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,wBAAwB,CAAC;cAOpB,gBAAgB,CAC9B,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC/D,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC;IAOH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAQzB,WAAW;YAoDX,MAAM;CA0BrB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Claim, } from '@t4h.framework/core';
|
|
2
|
+
import { HttpBodyRef } from './HttpBodyRef.js';
|
|
3
|
+
import { HttpClientRequestClaim } from './HttpClientRequestClaim.js';
|
|
4
|
+
import { withDefaultUserAgent } from '../tools/with-default-user-agent.js';
|
|
5
|
+
const SIGNER_ERROR_BODY_LIMIT = 512;
|
|
6
|
+
function pick(value, path) {
|
|
7
|
+
return path.split('.').reduce((current, key) => {
|
|
8
|
+
if (current === null)
|
|
9
|
+
return undefined;
|
|
10
|
+
if (typeof current !== 'object')
|
|
11
|
+
return undefined;
|
|
12
|
+
return current[key];
|
|
13
|
+
}, value);
|
|
14
|
+
}
|
|
15
|
+
export class HttpBodyUpload extends HttpBodyRef {
|
|
16
|
+
binary;
|
|
17
|
+
config;
|
|
18
|
+
claims = new Claim({ http: HttpClientRequestClaim });
|
|
19
|
+
constructor(binary, config) {
|
|
20
|
+
super();
|
|
21
|
+
this.binary = binary;
|
|
22
|
+
this.config = config;
|
|
23
|
+
}
|
|
24
|
+
async toSerializable(serializer) {
|
|
25
|
+
return {
|
|
26
|
+
binary: await serializer(this.binary),
|
|
27
|
+
config: this.config,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async fromSerializable(serialized, deserializer) {
|
|
31
|
+
const binary = await deserializer(serialized.binary);
|
|
32
|
+
Object.defineProperty(this, 'binary', { value: binary });
|
|
33
|
+
Object.defineProperty(this, 'config', { value: serialized.config });
|
|
34
|
+
}
|
|
35
|
+
async resolve() {
|
|
36
|
+
const url = await this.toSignedUrl();
|
|
37
|
+
await this.upload(url);
|
|
38
|
+
return url;
|
|
39
|
+
}
|
|
40
|
+
async toSignedUrl() {
|
|
41
|
+
const { signer } = this.config;
|
|
42
|
+
const body = signer.json === undefined
|
|
43
|
+
? undefined
|
|
44
|
+
: Buffer.from(JSON.stringify(signer.json));
|
|
45
|
+
const response = await this.claims.http.request({
|
|
46
|
+
url: new URL(signer.url),
|
|
47
|
+
method: signer.method ?? 'POST',
|
|
48
|
+
body,
|
|
49
|
+
redirect: 'follow',
|
|
50
|
+
retry: true,
|
|
51
|
+
headers: withDefaultUserAgent({
|
|
52
|
+
...(body && {
|
|
53
|
+
'Content-Type': 'application/json',
|
|
54
|
+
'Content-Length': body.byteLength.toString(),
|
|
55
|
+
}),
|
|
56
|
+
Accept: 'application/json',
|
|
57
|
+
...signer.headers,
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
const text = Buffer.concat(await response.body.toArray()).toString('utf-8');
|
|
61
|
+
if (response.status < 200 || response.status >= 300)
|
|
62
|
+
throw new Error(`Signed upload request to ${signer.url} failed with status ${response.status}: ${text.slice(0, SIGNER_ERROR_BODY_LIMIT)}`);
|
|
63
|
+
const path = this.config.urlPath ?? 'url';
|
|
64
|
+
let url;
|
|
65
|
+
try {
|
|
66
|
+
url = pick(JSON.parse(text), path);
|
|
67
|
+
}
|
|
68
|
+
catch (cause) {
|
|
69
|
+
throw new Error(`Signed upload request to ${signer.url} returned a body that is not valid JSON: ${text.slice(0, SIGNER_ERROR_BODY_LIMIT)}`, { cause });
|
|
70
|
+
}
|
|
71
|
+
if (typeof url !== 'string' || !url)
|
|
72
|
+
throw new Error(`Signed upload request to ${signer.url} returned no URL at "${path}": ${text.slice(0, SIGNER_ERROR_BODY_LIMIT)}`);
|
|
73
|
+
return url;
|
|
74
|
+
}
|
|
75
|
+
async upload(url) {
|
|
76
|
+
const { upload } = this.config;
|
|
77
|
+
const response = await this.claims.http.request({
|
|
78
|
+
url: new URL(url),
|
|
79
|
+
method: upload?.method ?? 'PUT',
|
|
80
|
+
body: await this.binary.stream(),
|
|
81
|
+
redirect: 'follow',
|
|
82
|
+
retry: true,
|
|
83
|
+
headers: withDefaultUserAgent({
|
|
84
|
+
'Content-Type': this.binary.contentType,
|
|
85
|
+
'Content-Length': this.binary.contentLength.toString(),
|
|
86
|
+
...upload?.headers,
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
if (response.status < 200 || response.status >= 300) {
|
|
90
|
+
const text = Buffer.concat(await response.body.toArray()).toString('utf-8');
|
|
91
|
+
throw new Error(`Upload to the signed URL failed with status ${response.status}: ${text.slice(0, SIGNER_ERROR_BODY_LIMIT)}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=HttpBodyUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpBodyUpload.js","sourceRoot":"","sources":["../../src/models/HttpBodyUpload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-body-refs.d.ts","sourceRoot":"","sources":["../../src/tools/resolve-body-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,wBAAsB,eAAe,CACnC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAkBvB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { HttpBodyRef } from '../models/HttpBodyRef.js';
|
|
2
|
+
export async function resolveBodyRefs(value) {
|
|
3
|
+
if (value instanceof HttpBodyRef)
|
|
4
|
+
return await value.resolve();
|
|
5
|
+
if (Array.isArray(value))
|
|
6
|
+
return await Promise.all(value.map(item => resolveBodyRefs(item)));
|
|
7
|
+
if (value === null)
|
|
8
|
+
return value;
|
|
9
|
+
if (typeof value !== 'object')
|
|
10
|
+
return value;
|
|
11
|
+
if (value.constructor !== Object)
|
|
12
|
+
return value;
|
|
13
|
+
const out = {};
|
|
14
|
+
for (const [key, item] of Object.entries(value))
|
|
15
|
+
out[key] = await resolveBodyRefs(item);
|
|
16
|
+
return out;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=resolve-body-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-body-refs.js","sourceRoot":"","sources":["../../src/tools/resolve-body-refs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAmB;IAEnB,IAAI,KAAK,YAAY,WAAW;QAAE,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;IAE9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEpE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAEhC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IAE9C,MAAM,GAAG,GAAiC,EAAE,CAAA;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,eAAe,CAAC,IAAoB,CAAC,CAAA;IAExD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t4h.framework/http",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "HTTP module for the T4H Framework",
|
|
5
5
|
"homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/http",
|
|
6
6
|
"bugs": "https://github.com/tech4humans-brasil/framework/issues",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@t4h.framework/cache": "^0.6.4",
|
|
42
42
|
"@t4h.framework/core": "^0.14.0",
|
|
43
|
-
"@t4h.framework/fs": "^0.9.
|
|
43
|
+
"@t4h.framework/fs": "^0.9.5",
|
|
44
44
|
"@types/type-is": "^1.6.7",
|
|
45
45
|
"@vitest/coverage-v8": "^4.0.18",
|
|
46
46
|
"typescript": "^5.9.3",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@t4h.framework/cache": "^0.6.4",
|
|
51
51
|
"@t4h.framework/core": "^0.14.0",
|
|
52
|
-
"@t4h.framework/fs": "^0.9.
|
|
52
|
+
"@t4h.framework/fs": "^0.9.5"
|
|
53
53
|
},
|
|
54
54
|
"packageManager": "yarn@4.12.0",
|
|
55
55
|
"engines": {
|