@particle-academy/prism 0.2.0 → 0.3.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/README.md +1 -1
- package/dist/errors.d.ts +8 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/public-url.d.ts +10 -0
- package/dist/internal/public-url.d.ts.map +1 -0
- package/dist/internal/public-url.js +63 -0
- package/dist/internal/public-url.js.map +1 -0
- package/dist/value-objects/media/media.d.ts +12 -0
- package/dist/value-objects/media/media.d.ts.map +1 -1
- package/dist/value-objects/media/media.js +79 -2
- package/dist/value-objects/media/media.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/errors.d.ts
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* code is the contract and the message is not: treat `PrismError.code` as
|
|
8
8
|
* stable and `PrismError.message` as free to change in any release.
|
|
9
9
|
*/
|
|
10
|
-
export type
|
|
10
|
+
export type UrlRefusalCode = 'scheme_not_allowed' | 'private_address_refused' | 'host_did_not_resolve' | 'redirect_refused' | 'too_many_redirects';
|
|
11
|
+
export type PrismErrorCode = UrlRefusalCode
|
|
11
12
|
/** `prompt` and `messages` were both set on the same pending request. */
|
|
12
|
-
'prompt_and_messages'
|
|
13
|
+
| 'prompt_and_messages'
|
|
13
14
|
/** The provider stopped because it ran out of output tokens. */
|
|
14
15
|
| 'max_tokens_exceeded'
|
|
15
16
|
/** The provider returned a payload that is missing, empty or carries an error. */
|
|
@@ -116,4 +117,9 @@ export declare class PrismError extends Error {
|
|
|
116
117
|
static toolLoopNotSupported(): PrismError;
|
|
117
118
|
static canonicalJsonUnencodable(path: string, value: unknown): PrismError;
|
|
118
119
|
}
|
|
120
|
+
/** A public-media fetch refusal; the code is stable and the message is not. */
|
|
121
|
+
export declare class PrismUrlRefused extends PrismError {
|
|
122
|
+
readonly code: UrlRefusalCode;
|
|
123
|
+
constructor(code: UrlRefusalCode, message: string);
|
|
124
|
+
}
|
|
119
125
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -112,4 +112,13 @@ export class PrismError extends Error {
|
|
|
112
112
|
return new PrismError('canonical_json_unencodable', `Cannot canonically encode ${typeof value} at ${path}: JSON.stringify would drop or rewrite it. Use an explicit null if the key should carry null, or omit the key entirely.`);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
/** A public-media fetch refusal; the code is stable and the message is not. */
|
|
116
|
+
export class PrismUrlRefused extends PrismError {
|
|
117
|
+
code;
|
|
118
|
+
constructor(code, message) {
|
|
119
|
+
super(code, message);
|
|
120
|
+
this.code = code;
|
|
121
|
+
this.name = 'PrismUrlRefused';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
115
124
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Prism } from './prism.js';
|
|
2
|
-
export { PrismError } from './errors.js';
|
|
3
|
-
export type { PrismErrorCode, PrismErrorOptions } from './errors.js';
|
|
2
|
+
export { PrismError, PrismUrlRefused } from './errors.js';
|
|
3
|
+
export type { PrismErrorCode, PrismErrorOptions, UrlRefusalCode } from './errors.js';
|
|
4
4
|
export { FinishReason, StructuredMode, ToolChoice, finishReasonFromValue, toolChoiceFromName } from './enums.js';
|
|
5
5
|
export { Tool } from './tool.js';
|
|
6
6
|
export type { ToolHandler } from './tool.js';
|
|
@@ -76,6 +76,8 @@ export { ModerationResult } from './value-objects/moderation-result.js';
|
|
|
76
76
|
export { buildModerationBody, parseModerationResponse } from './providers/openai/moderation.js';
|
|
77
77
|
export { Media, guessMimeType } from './value-objects/media/media.js';
|
|
78
78
|
export type { MediaKind } from './value-objects/media/media.js';
|
|
79
|
+
export type { PublicFetchOptions } from './value-objects/media/media.js';
|
|
80
|
+
export type { HostResolver } from './internal/public-url.js';
|
|
79
81
|
export { Image } from './value-objects/media/image.js';
|
|
80
82
|
export { Audio } from './value-objects/media/audio.js';
|
|
81
83
|
export { Document } from './value-objects/media/document.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Prism } from './prism.js';
|
|
2
|
-
export { PrismError } from './errors.js';
|
|
2
|
+
export { PrismError, PrismUrlRefused } from './errors.js';
|
|
3
3
|
export { FinishReason, StructuredMode, ToolChoice, finishReasonFromValue, toolChoiceFromName } from './enums.js';
|
|
4
4
|
export { Tool } from './tool.js';
|
|
5
5
|
export { BooleanSchema, NumberSchema, StringSchema } from './schema/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Override resolution for a service mesh or tests; every address is checked. */
|
|
2
|
+
export interface HostResolver {
|
|
3
|
+
resolve(host: string): readonly string[] | Promise<readonly string[]>;
|
|
4
|
+
}
|
|
5
|
+
export declare const dnsHostResolver: HostResolver;
|
|
6
|
+
/** Validate the literal and every DNS answer before the caller sends HTTP.
|
|
7
|
+
* Resolution is not connection pinning: DNS rebinding remains possible.
|
|
8
|
+
*/
|
|
9
|
+
export declare function assertPublicUrl(url: string, resolver: HostResolver): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=public-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-url.d.ts","sourceRoot":"","sources":["../../src/internal/public-url.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,eAAe,EAAE,YAQ7B,CAAC;AA0BF;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { lookup } from 'node:dns/promises';
|
|
2
|
+
import { BlockList, isIP } from 'node:net';
|
|
3
|
+
import { PrismUrlRefused } from '../errors.js';
|
|
4
|
+
export const dnsHostResolver = {
|
|
5
|
+
async resolve(host) {
|
|
6
|
+
try {
|
|
7
|
+
return (await lookup(host, { all: true, verbatim: true })).map(record => record.address);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
// Private/reserved ranges, plus all IPv4-compatible IPv6 spellings. PHP's
|
|
15
|
+
// textual filter refuses ::127.0.0.1 but admits its compressed form ::7f00:1;
|
|
16
|
+
// WHATWG URL parsing normalizes the former to the latter. Refuse the entire
|
|
17
|
+
// compatible range consistently, including addresses PHP would admit.
|
|
18
|
+
// Keep lists separate: Node maps IPv4 into IPv6 for BlockList comparisons, so
|
|
19
|
+
// blocking mapped IPv6 in a shared list would also block public IPv4.
|
|
20
|
+
const ipv4 = new BlockList();
|
|
21
|
+
for (const [address, prefix] of [
|
|
22
|
+
['0.0.0.0', 8], ['10.0.0.0', 8], ['127.0.0.0', 8],
|
|
23
|
+
['169.254.0.0', 16], ['172.16.0.0', 12], ['192.168.0.0', 16], ['240.0.0.0', 4],
|
|
24
|
+
])
|
|
25
|
+
ipv4.addSubnet(address, prefix, 'ipv4');
|
|
26
|
+
const ipv6 = new BlockList();
|
|
27
|
+
for (const [address, prefix] of [
|
|
28
|
+
['::', 96], ['::ffff:0:0', 96], ['fc00::', 7], ['fe80::', 10],
|
|
29
|
+
])
|
|
30
|
+
ipv6.addSubnet(address, prefix, 'ipv6');
|
|
31
|
+
function assertPublicAddress(address) {
|
|
32
|
+
const family = isIP(address);
|
|
33
|
+
if (address.includes('%') || family === 0 ||
|
|
34
|
+
(family === 4 ? ipv4.check(address, 'ipv4') : ipv6.check(address, 'ipv6'))) {
|
|
35
|
+
throw new PrismUrlRefused('private_address_refused', 'A guarded fetch refuses private, reserved or invalid addresses.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Validate the literal and every DNS answer before the caller sends HTTP.
|
|
39
|
+
* Resolution is not connection pinning: DNS rebinding remains possible.
|
|
40
|
+
*/
|
|
41
|
+
export async function assertPublicUrl(url, resolver) {
|
|
42
|
+
let parsed;
|
|
43
|
+
try {
|
|
44
|
+
if (!/^https?:\/\//i.test(url))
|
|
45
|
+
throw new Error('Not an absolute HTTP URL');
|
|
46
|
+
parsed = new URL(url);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw new PrismUrlRefused('scheme_not_allowed', 'A guarded fetch needs an absolute http or https URL.');
|
|
50
|
+
}
|
|
51
|
+
const host = parsed.hostname.replace(/^\[|\]$/g, '');
|
|
52
|
+
if (isIP(host) !== 0) {
|
|
53
|
+
assertPublicAddress(host);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const addresses = await resolver.resolve(host);
|
|
57
|
+
if (addresses.length === 0) {
|
|
58
|
+
throw new PrismUrlRefused('host_did_not_resolve', 'The hostname did not resolve to a verifiable public address.');
|
|
59
|
+
}
|
|
60
|
+
for (const address of addresses)
|
|
61
|
+
assertPublicAddress(address);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=public-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-url.js","sourceRoot":"","sources":["../../src/internal/public-url.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { JsonObject } from '../../json.js';
|
|
2
|
+
import type { HostResolver } from '../../internal/public-url.js';
|
|
3
|
+
export interface PublicFetchOptions {
|
|
4
|
+
resolver?: HostResolver;
|
|
5
|
+
/** Number of redirect hops allowed after the initial request. Default: 5. */
|
|
6
|
+
maxRedirects?: number;
|
|
7
|
+
}
|
|
2
8
|
/** The kinds of payload a message part can be, minus text. */
|
|
3
9
|
export type MediaKind = 'image' | 'audio' | 'document' | 'video';
|
|
4
10
|
/**
|
|
@@ -85,6 +91,12 @@ export declare abstract class Media {
|
|
|
85
91
|
* replays it is the hazard, not the fetch itself.
|
|
86
92
|
*/
|
|
87
93
|
fetch(): Promise<this>;
|
|
94
|
+
/**
|
|
95
|
+
* Opt-in URL guard: check the literal and all DNS answers before each hop.
|
|
96
|
+
* Redirects are followed manually so their destinations are checked too.
|
|
97
|
+
* DNS resolution is not pinned to the connection; this is not a sandbox.
|
|
98
|
+
*/
|
|
99
|
+
fetchPublic(options?: PublicFetchOptions): Promise<this>;
|
|
88
100
|
/**
|
|
89
101
|
* The serialized form.
|
|
90
102
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8DAA8D;AAC9D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,8BAAsB,KAAK;;IA4BvB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA3B7B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAevB,GAAG,GAAE,MAAM,GAAG,IAAW,EAClC,MAAM,GAAE,MAAM,GAAG,IAAW,EAC5B,QAAQ,GAAE,MAAM,GAAG,IAAW;IAMhC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;IAOxE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,CAAC;IAUrH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,KAAK,EAC/B,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,EACtF,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,GAAG,IAAW,GAC7B,CAAC;IAIJ,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,CAAC;IAOjH;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,CAAC;IAqBzG,gDAAgD;IAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAIpE,8DAA8D;IAC9D,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMtB,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,MAAM,IAAI,MAAM,GAAG,IAAI;IAIvB,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,QAAQ,IAAI,OAAO;IAInB,MAAM,IAAI,OAAO;IAIjB,KAAK,IAAI,OAAO;IAIhB,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,OAAO;IAIxB,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,UAAU,IAAI,UAAU,GAAG,IAAI;IAkB/B;;;;;OAKG;IACH,MAAM,IAAI,MAAM,GAAG,IAAI;IAcvB;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B;;;;OAIG;IACG,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8ClE;;;;;;;;OAQG;IACH,QAAQ,IAAI,UAAU;IAWtB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC;IAY9E,4FAA4F;IAC5F,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAQnG,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ3E,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG1C;AA6BD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { extname } from 'node:path';
|
|
3
|
-
import { PrismError } from '../../errors.js';
|
|
3
|
+
import { PrismError, PrismUrlRefused } from '../../errors.js';
|
|
4
|
+
import { assertPublicUrl, dnsHostResolver } from '../../internal/public-url.js';
|
|
4
5
|
/**
|
|
5
6
|
* A binary payload, however it was given to us.
|
|
6
7
|
*
|
|
@@ -166,11 +167,63 @@ export class Media {
|
|
|
166
167
|
}
|
|
167
168
|
const response = await globalThis.fetch(this.url);
|
|
168
169
|
if (!response.ok) {
|
|
169
|
-
throw PrismError.unfetchableMedia(`${this.url} responded ${response.status}`);
|
|
170
|
+
throw PrismError.unfetchableMedia(`${safeUrl(this.url)} responded ${response.status}`);
|
|
170
171
|
}
|
|
171
172
|
this.setRawContent(new Uint8Array(await response.arrayBuffer()), this.#mimeType ?? response.headers.get('content-type'));
|
|
172
173
|
return this;
|
|
173
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Opt-in URL guard: check the literal and all DNS answers before each hop.
|
|
177
|
+
* Redirects are followed manually so their destinations are checked too.
|
|
178
|
+
* DNS resolution is not pinned to the connection; this is not a sandbox.
|
|
179
|
+
*/
|
|
180
|
+
async fetchPublic(options = {}) {
|
|
181
|
+
if (this.url === null) {
|
|
182
|
+
throw PrismError.unfetchableMedia('this payload has no url');
|
|
183
|
+
}
|
|
184
|
+
const maxRedirects = options.maxRedirects ?? 5;
|
|
185
|
+
if (!Number.isSafeInteger(maxRedirects) || maxRedirects < 0) {
|
|
186
|
+
throw new RangeError('maxRedirects must be a nonnegative safe integer.');
|
|
187
|
+
}
|
|
188
|
+
const resolver = options.resolver ?? dnsHostResolver;
|
|
189
|
+
let url = this.url;
|
|
190
|
+
for (let hop = 0; hop <= maxRedirects; hop++) {
|
|
191
|
+
try {
|
|
192
|
+
await assertPublicUrl(url, resolver);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (hop > 0 && error instanceof PrismUrlRefused) {
|
|
196
|
+
throw new PrismUrlRefused('redirect_refused', `${safeUrl(this.url)} redirected to a refused destination.`);
|
|
197
|
+
}
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
const response = await globalThis.fetch(url, { redirect: 'manual' });
|
|
201
|
+
const location = response.headers.get('location');
|
|
202
|
+
if (response.status >= 300 && response.status < 400 && location !== null && location !== '') {
|
|
203
|
+
// We do not consume redirect bodies; release their transport before
|
|
204
|
+
// following another hop or refusing the redirect chain.
|
|
205
|
+
await response.body?.cancel();
|
|
206
|
+
if (hop === maxRedirects) {
|
|
207
|
+
throw new PrismUrlRefused('too_many_redirects', `${safeUrl(this.url)} redirected more than ${maxRedirects} times.`);
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
url = new URL(location, url).href;
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
throw new PrismUrlRefused('redirect_refused', `${safeUrl(this.url)} redirected to an invalid URL.`);
|
|
214
|
+
}
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
if (!response.ok) {
|
|
218
|
+
await response.body?.cancel();
|
|
219
|
+
throw PrismError.unfetchableMedia(`${safeUrl(url)} responded ${response.status}`);
|
|
220
|
+
}
|
|
221
|
+
this.setRawContent(new Uint8Array(await response.arrayBuffer()), this.#mimeType ?? response.headers.get('content-type'));
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
224
|
+
// Every redirect at the bound throws above; this is unreachable.
|
|
225
|
+
throw new PrismUrlRefused('too_many_redirects', 'The guarded fetch exhausted its redirect bound.');
|
|
226
|
+
}
|
|
174
227
|
/**
|
|
175
228
|
* The serialized form.
|
|
176
229
|
*
|
|
@@ -264,4 +317,28 @@ const MIME_TYPES = {
|
|
|
264
317
|
export function guessMimeType(path) {
|
|
265
318
|
return MIME_TYPES[extname(path).toLowerCase()] ?? null;
|
|
266
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* A url with its secret-bearing parts removed, for a message that gets logged.
|
|
322
|
+
*
|
|
323
|
+
* An error message is logged and shipped to an error tracker as a matter of
|
|
324
|
+
* course, and a url carries credentials often enough that it belongs in
|
|
325
|
+
* neither: userinfo holds them outright (`https://user:pass@host/…`), and a
|
|
326
|
+
* presigned object-storage url puts a bearer-equivalent token in the query
|
|
327
|
+
* string. Scheme, host, port and path say WHICH fetch failed, which is the
|
|
328
|
+
* whole job of the message.
|
|
329
|
+
*
|
|
330
|
+
* A query string that was present is marked rather than dropped silently —
|
|
331
|
+
* "there was one, and it is not shown" is a different fact from "there was
|
|
332
|
+
* none". Matches `Media::safeUrl()` in the PHP reference.
|
|
333
|
+
*/
|
|
334
|
+
function safeUrl(url) {
|
|
335
|
+
let parsed;
|
|
336
|
+
try {
|
|
337
|
+
parsed = new URL(url);
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
return '[unreadable url]';
|
|
341
|
+
}
|
|
342
|
+
return `${parsed.protocol}//${parsed.host}${parsed.pathname}${parsed.search === '' ? '' : '?[redacted]'}`;
|
|
343
|
+
}
|
|
267
344
|
//# sourceMappingURL=media.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@particle-academy/prism",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "TypeScript port of Prism — a unified API layer over LLM providers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"private": false,
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"engines": {
|
|
14
|
-
"node": ">=
|
|
14
|
+
"node": ">=22"
|
|
15
15
|
},
|
|
16
16
|
"main": "./dist/index.js",
|
|
17
17
|
"types": "./dist/index.d.ts",
|