@run402/functions 2.2.2 → 2.4.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/dist/assets.d.ts CHANGED
@@ -27,6 +27,25 @@ export interface AssetPutOptions {
27
27
  * `immutableUrl` is null.
28
28
  */
29
29
  immutable?: boolean;
30
+ /**
31
+ * v1.50 — caller-provided per-key metadata persisted to
32
+ * `internal.blobs.metadata`. Flat object; values must be string, number,
33
+ * boolean, or string[]. Nested objects are rejected. Serialized size cap:
34
+ * 4 KB. Validated client-side before any HTTP call so bad shapes surface
35
+ * as `Error` ("INVALID_ASSET_METADATA: …") rather than HTTP 400 round-trips.
36
+ *
37
+ * Last-write-wins on re-upload — omitting `metadata` on a subsequent put
38
+ * for the same key clears any previously-stored metadata.
39
+ */
40
+ metadata?: Record<string, string | number | boolean | string[]>;
41
+ /**
42
+ * v1.50 — EXIF policy applied to the indexed `image_exif` JSONB on
43
+ * `internal.blobs`. `'keep'` (default) stores the full EXIF object;
44
+ * `'strip'` keeps only the allowlist (camera_make / camera_model /
45
+ * lens_model / exposure_time / f_number / iso / focal_length /
46
+ * datetime_*). Original CAS bytes are NEVER mutated under either policy.
47
+ */
48
+ exifPolicy?: "keep" | "strip";
30
49
  }
31
50
  /**
32
51
  * Resolved asset reference. Wire shape matches the AssetRef the SDK's
@@ -41,6 +60,36 @@ export interface AssetPutOptions {
41
60
  * (`immutableUrl`, `size`, `contentType`) aliases are both emitted so
42
61
  * existing callers and the SDK's surface keep working without translation.
43
62
  */
63
+ /**
64
+ * Per-variant entry returned in `AssetRef.variants` (gateway v1.49+).
65
+ *
66
+ * Each generated image variant carries its serving URL, immutable
67
+ * (sha-suffixed) URL, display-oriented dimensions, format, and its own
68
+ * content SHA. URLs are `null` when the source is private (`visibility:
69
+ * "private"`).
70
+ */
71
+ export interface AssetVariant {
72
+ kind: "thumb" | "medium" | "large" | "display_jpeg";
73
+ format: "webp" | "jpeg";
74
+ width_px: number;
75
+ height_px: number;
76
+ /** Hex sha256 of the encoded variant bytes. */
77
+ sha256: string;
78
+ url: string | null;
79
+ immutable_url: string | null;
80
+ cdn_url: string | null;
81
+ cdn_immutable_url: string | null;
82
+ }
83
+ /** v1.50 — descriptive image-intrinsic info. All fields optional; populated
84
+ * only for image uploads (image_format !== null). */
85
+ export interface ImageInfo {
86
+ has_alpha?: boolean;
87
+ color_space?: string;
88
+ animated?: boolean;
89
+ frame_count?: number;
90
+ bit_depth?: number;
91
+ orientation?: number;
92
+ }
44
93
  export interface AssetRef {
45
94
  key: string;
46
95
  sha256: string;
@@ -61,6 +110,47 @@ export interface AssetRef {
61
110
  size: number;
62
111
  contentType: string;
63
112
  contentSha256: string;
113
+ /** Caller-provided per-key metadata (`internal.blobs.metadata` JSONB).
114
+ * `null` when no metadata was supplied at the last upload. */
115
+ metadata?: Record<string, string | number | boolean | string[]> | null;
116
+ /** Bare image format (`internal.blobs.image_format`). One of `'jpeg' |
117
+ * 'png' | 'webp' | 'avif' | 'tiff' | 'svg' | 'bmp' | 'heic'`. `null` for
118
+ * non-images. */
119
+ image_format?: string | null;
120
+ /** Descriptive image-intrinsic fields (`internal.blobs.image_info`). */
121
+ image_info?: ImageInfo | null;
122
+ /** Extracted EXIF tags (`internal.blobs.image_exif`). Snake_case keys,
123
+ * policy-filtered per `image_exif_policy`. `null` when the image has no
124
+ * EXIF or no allowlisted tags survived `'strip'`. */
125
+ image_exif?: Record<string, unknown> | null;
126
+ /** Which EXIF policy was applied at upload (`'keep' | 'strip' | null`).
127
+ * `null` for non-images. */
128
+ image_exif_policy?: "keep" | "strip" | null;
129
+ /** Display-oriented width (post-EXIF rotate). */
130
+ width_px?: number;
131
+ /** Display-oriented height (post-EXIF rotate). */
132
+ height_px?: number;
133
+ /** ~30-byte LQIP placeholder. Decode client-side with the `blurhash` npm
134
+ * package; render before the real image is ready to eliminate CLS. */
135
+ blurhash?: string;
136
+ /** Pins the URLs and variant identities to a specific encoder generation.
137
+ * Bumping this string (gateway-side) produces new variant URLs without
138
+ * invalidating older ones. */
139
+ variant_spec_version?: string;
140
+ /** Browser-displayable URL. For jpeg/png/webp/avif sources this equals
141
+ * `cdn_url`. For HEIC/HEIF sources, this points at the JPEG `display_jpeg`
142
+ * variant so `<img src>` renders correctly without app-side branching. */
143
+ display_url?: string | null;
144
+ display_immutable_url?: string | null;
145
+ /** Keyed by variant kind. `thumb`/`medium`/`large` are present for any
146
+ * successfully-encoded image source ≥ 320×320. `display_jpeg` is present
147
+ * only for HEIC/HEIF sources. */
148
+ variants?: {
149
+ thumb?: AssetVariant;
150
+ medium?: AssetVariant;
151
+ large?: AssetVariant;
152
+ display_jpeg?: AssetVariant;
153
+ };
64
154
  }
65
155
  export declare const assets: {
66
156
  /**
@@ -76,5 +166,57 @@ export declare const assets: {
76
166
  * deploy-time behavior.
77
167
  */
78
168
  put(key: string, source: AssetPutSourceInput, opts?: AssetPutOptions): Promise<AssetRef>;
169
+ /**
170
+ * v1.50 — list blobs in the project's storage namespace.
171
+ *
172
+ * Defaults: `sort: 'key:asc'`, `limit: 100`. Supply `filter` to constrain
173
+ * results to indexed predicates (uploadedBy, tag, format, isImage, plus
174
+ * dimension ranges). Unknown filter keys throw before the HTTP call.
175
+ *
176
+ * Returns the rows in the order specified by `sort`, with a `next_cursor`
177
+ * for keyset pagination. The cursor is opaque — pass it back as-is on the
178
+ * next call.
179
+ */
180
+ list(opts?: AssetsListOptions): Promise<AssetsListResult>;
79
181
  };
182
+ export type AssetsListSort = "key:asc" | "createdAt:asc" | "createdAt:desc";
183
+ export interface AssetsListFilter {
184
+ uploaded_by?: string;
185
+ tag?: string;
186
+ format?: string;
187
+ is_image?: boolean;
188
+ min_width?: number;
189
+ max_width?: number;
190
+ min_height?: number;
191
+ max_height?: number;
192
+ }
193
+ export interface AssetsListOptions {
194
+ prefix?: string;
195
+ limit?: number;
196
+ cursor?: string;
197
+ sort?: AssetsListSort;
198
+ filter?: AssetsListFilter;
199
+ }
200
+ export interface AssetListRow {
201
+ key: string;
202
+ size_bytes: number;
203
+ content_type: string | null;
204
+ sha256: string | null;
205
+ visibility: AssetVisibility;
206
+ immutable_suffix: string | null;
207
+ created_at: string;
208
+ updated_at: string;
209
+ metadata: Record<string, string | number | boolean | string[]> | null;
210
+ width_px: number | null;
211
+ height_px: number | null;
212
+ blurhash: string | null;
213
+ image_format: string | null;
214
+ image_info: ImageInfo | null;
215
+ image_exif: Record<string, unknown> | null;
216
+ image_exif_policy: "keep" | "strip" | null;
217
+ }
218
+ export interface AssetsListResult {
219
+ blobs: AssetListRow[];
220
+ next_cursor: string | null;
221
+ }
80
222
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,eAAe,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAgGD,eAAO,MAAM,MAAM;IACjB;;;;;;;;;;;OAWG;aAEI,MAAM,UACH,mBAAmB,SACrB,eAAe,GACpB,OAAO,CAAC,QAAQ,CAAC;CAsCrB,CAAC"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
package/dist/assets.js CHANGED
@@ -62,6 +62,49 @@ function widenAssetRef(raw) {
62
62
  const immutableUrl = raw.immutable_url ?? null;
63
63
  const cdnUrl = raw.cdn_url ?? null;
64
64
  const cdnImmutableUrl = raw.cdn_immutable_url ?? null;
65
+ // v1.49 image-intrinsic pass-through. Only attach the fields if the gateway
66
+ // returned them (image MIMEs ≥ 320×320). For non-images the gateway omits
67
+ // them entirely; we mirror that by not adding `undefined` slots either.
68
+ const widthPx = typeof raw.width_px === "number" ? raw.width_px : undefined;
69
+ const heightPx = typeof raw.height_px === "number" ? raw.height_px : undefined;
70
+ const blurhash = typeof raw.blurhash === "string" ? raw.blurhash : undefined;
71
+ const variantSpecVersion = typeof raw.variant_spec_version === "string"
72
+ ? raw.variant_spec_version
73
+ : undefined;
74
+ const displayUrl = typeof raw.display_url === "string"
75
+ ? raw.display_url
76
+ : raw.display_url === null
77
+ ? null
78
+ : undefined;
79
+ const displayImmutableUrl = typeof raw.display_immutable_url === "string"
80
+ ? raw.display_immutable_url
81
+ : raw.display_immutable_url === null
82
+ ? null
83
+ : undefined;
84
+ let variants;
85
+ if (raw.variants && typeof raw.variants === "object" && !Array.isArray(raw.variants)) {
86
+ const src = raw.variants;
87
+ variants = {};
88
+ for (const kind of ["thumb", "medium", "large", "display_jpeg"]) {
89
+ const v = src[kind];
90
+ if (v && typeof v === "object" && !Array.isArray(v)) {
91
+ const variantRaw = v;
92
+ variants[kind] = {
93
+ kind,
94
+ format: (variantRaw.format === "jpeg" ? "jpeg" : "webp"),
95
+ width_px: Number(variantRaw.width_px ?? 0),
96
+ height_px: Number(variantRaw.height_px ?? 0),
97
+ sha256: String(variantRaw.sha256 ?? ""),
98
+ url: variantRaw.url ?? null,
99
+ immutable_url: variantRaw.immutable_url ?? null,
100
+ cdn_url: variantRaw.cdn_url ?? null,
101
+ cdn_immutable_url: variantRaw.cdn_immutable_url ?? null,
102
+ };
103
+ }
104
+ }
105
+ if (Object.keys(variants).length === 0)
106
+ variants = undefined;
107
+ }
65
108
  return {
66
109
  key: String(raw.key ?? ""),
67
110
  sha256: String(raw.sha256 ?? ""),
@@ -82,8 +125,117 @@ function widenAssetRef(raw) {
82
125
  size: Number(raw.size_bytes ?? 0),
83
126
  contentType: String(raw.content_type ?? "application/octet-stream"),
84
127
  contentSha256: String(raw.sha256 ?? ""),
128
+ ...(widthPx !== undefined ? { width_px: widthPx } : {}),
129
+ ...(heightPx !== undefined ? { height_px: heightPx } : {}),
130
+ ...(blurhash !== undefined ? { blurhash } : {}),
131
+ ...(variantSpecVersion !== undefined ? { variant_spec_version: variantSpecVersion } : {}),
132
+ ...(displayUrl !== undefined ? { display_url: displayUrl } : {}),
133
+ ...(displayImmutableUrl !== undefined ? { display_immutable_url: displayImmutableUrl } : {}),
134
+ ...(variants !== undefined ? { variants } : {}),
135
+ // v1.50 — pass-through caller metadata + image intrinsics. Gateway
136
+ // omits non-image fields entirely for non-image uploads; we mirror
137
+ // that by emitting `undefined` (omitted slot) rather than `null` for
138
+ // fields the gateway didn't return. The exception is `metadata`,
139
+ // which the gateway always returns (null if the caller supplied none).
140
+ ...(raw.metadata !== undefined
141
+ ? { metadata: raw.metadata }
142
+ : {}),
143
+ ...(raw.image_format !== undefined
144
+ ? { image_format: raw.image_format }
145
+ : {}),
146
+ ...(raw.image_info !== undefined
147
+ ? { image_info: raw.image_info }
148
+ : {}),
149
+ ...(raw.image_exif !== undefined
150
+ ? { image_exif: raw.image_exif }
151
+ : {}),
152
+ ...(raw.image_exif_policy !== undefined
153
+ ? { image_exif_policy: raw.image_exif_policy }
154
+ : {}),
85
155
  };
86
156
  }
157
+ // ---------------------------------------------------------------------------
158
+ // v1.50 — SDK-side metadata + exifPolicy validation. Mirrors the gateway's
159
+ // `services/asset-metadata-validation.ts` exactly so client errors surface
160
+ // before the HTTP call. We deliberately do NOT import from the gateway —
161
+ // `@run402/functions` is bundled into deployed function code and must have
162
+ // zero gateway-package dependencies.
163
+ // ---------------------------------------------------------------------------
164
+ const METADATA_MAX_BYTES = 4096;
165
+ /** Validate caller-supplied metadata. Throws Error("INVALID_ASSET_METADATA: …")
166
+ * on any rule violation. */
167
+ function validateMetadataClientSide(input) {
168
+ if (typeof input !== "object" || input === null || Array.isArray(input)) {
169
+ throw new Error("INVALID_ASSET_METADATA: metadata must be a flat JSON object");
170
+ }
171
+ const out = {};
172
+ for (const [key, value] of Object.entries(input)) {
173
+ if (typeof key !== "string" || key.length === 0) {
174
+ throw new Error("INVALID_ASSET_METADATA: metadata keys must be non-empty strings");
175
+ }
176
+ if (value === null || value === undefined)
177
+ continue;
178
+ if (Array.isArray(value)) {
179
+ for (let i = 0; i < value.length; i++) {
180
+ if (typeof value[i] !== "string") {
181
+ throw new Error(`INVALID_ASSET_METADATA: metadata.${key}[${i}] must be a string (no mixed-type arrays)`);
182
+ }
183
+ }
184
+ out[key] = value;
185
+ continue;
186
+ }
187
+ if (typeof value === "object") {
188
+ throw new Error(`INVALID_ASSET_METADATA: metadata.${key} must not be a nested object (flat shape only)`);
189
+ }
190
+ if (typeof value === "number") {
191
+ if (!Number.isFinite(value)) {
192
+ throw new Error(`INVALID_ASSET_METADATA: metadata.${key} number value must be finite`);
193
+ }
194
+ out[key] = value;
195
+ continue;
196
+ }
197
+ if (typeof value === "string" || typeof value === "boolean") {
198
+ out[key] = value;
199
+ continue;
200
+ }
201
+ throw new Error(`INVALID_ASSET_METADATA: metadata.${key} has unsupported value type ${typeof value}`);
202
+ }
203
+ const serialized = JSON.stringify(out);
204
+ // Use UTF-8 byte length (matches the gateway-side Buffer.byteLength check).
205
+ const byteLength = typeof TextEncoder !== "undefined"
206
+ ? new TextEncoder().encode(serialized).byteLength
207
+ : serialized.length;
208
+ if (byteLength > METADATA_MAX_BYTES) {
209
+ throw new Error(`INVALID_ASSET_METADATA: serialized size ${byteLength} bytes exceeds the ${METADATA_MAX_BYTES}-byte cap`);
210
+ }
211
+ return out;
212
+ }
213
+ /** Validate the exifPolicy enum value. Throws on invalid input. */
214
+ function validateExifPolicyClientSide(input) {
215
+ if (input === undefined || input === null || input === "")
216
+ return "keep";
217
+ if (input === "keep" || input === "strip")
218
+ return input;
219
+ throw new Error(`INVALID_EXIF_POLICY: exifPolicy must be 'keep' or 'strip'; got ${JSON.stringify(input)}`);
220
+ }
221
+ /** Encode a validated metadata object as the URL-safe base64 UTF-8 JSON
222
+ * header value the gateway expects on `x-run402-asset-metadata`. */
223
+ function encodeMetadataHeader(metadata) {
224
+ const json = JSON.stringify(metadata);
225
+ if (typeof Buffer !== "undefined") {
226
+ return Buffer.from(json, "utf8").toString("base64url");
227
+ }
228
+ // Browser / older Node fallback (Node 22 has Buffer.base64url natively).
229
+ // btoa works on Latin-1; use TextEncoder + manual base64url for safety.
230
+ const utf8 = new TextEncoder().encode(json);
231
+ let binary = "";
232
+ for (let i = 0; i < utf8.byteLength; i++)
233
+ binary += String.fromCharCode(utf8[i]);
234
+ return btoa(binary)
235
+ .replace(/\+/g, "-")
236
+ .replace(/\//g, "_")
237
+ .replace(/=+$/, "");
238
+ }
87
239
  async function readErrorMessage(res) {
88
240
  const text = await res.text();
89
241
  try {
@@ -119,19 +271,34 @@ export const assets = {
119
271
  const contentType = opts.contentType ?? guessContentType(key);
120
272
  const visibility = opts.visibility ?? "public";
121
273
  const immutable = opts.immutable ?? true;
274
+ // v1.50 — validate metadata + exifPolicy BEFORE the HTTP round-trip so
275
+ // bad client shapes surface as JS Errors with INVALID_ASSET_METADATA /
276
+ // INVALID_EXIF_POLICY codes rather than gateway 400s. Mirrors the
277
+ // gateway-side validator's rules exactly.
278
+ const validatedMetadata = opts.metadata !== undefined
279
+ ? validateMetadataClientSide(opts.metadata)
280
+ : null;
281
+ const exifPolicy = validateExifPolicyClientSide(opts.exifPolicy);
122
282
  // Slice into a fresh ArrayBuffer so the fetch body is a `BufferSource`
123
283
  // (Uint8Array<ArrayBufferLike> stopped matching the DOM `BodyInit` union
124
284
  // when TS 5.7 made TypedArrays generic over their backing buffer).
125
285
  const buf = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
286
+ const headers = {
287
+ Authorization: "Bearer " + config.SERVICE_KEY,
288
+ "Content-Type": contentType,
289
+ "x-run402-asset-key": key,
290
+ "x-run402-asset-visibility": visibility,
291
+ "x-run402-asset-immutable": immutable ? "true" : "false",
292
+ // Always send exif-policy; gateway defaults to 'keep' when absent,
293
+ // but explicit value makes the wire shape self-documenting.
294
+ "x-run402-asset-exif-policy": exifPolicy,
295
+ };
296
+ if (validatedMetadata !== null) {
297
+ headers["x-run402-asset-metadata"] = encodeMetadataHeader(validatedMetadata);
298
+ }
126
299
  const res = await fetch(config.API_BASE + "/apply/v1/service-asset-put", {
127
300
  method: "POST",
128
- headers: {
129
- Authorization: "Bearer " + config.SERVICE_KEY,
130
- "Content-Type": contentType,
131
- "x-run402-asset-key": key,
132
- "x-run402-asset-visibility": visibility,
133
- "x-run402-asset-immutable": immutable ? "true" : "false",
134
- },
301
+ headers,
135
302
  body: buf,
136
303
  });
137
304
  if (!res.ok) {
@@ -140,5 +307,118 @@ export const assets = {
140
307
  const raw = (await res.json());
141
308
  return widenAssetRef(raw);
142
309
  },
310
+ /**
311
+ * v1.50 — list blobs in the project's storage namespace.
312
+ *
313
+ * Defaults: `sort: 'key:asc'`, `limit: 100`. Supply `filter` to constrain
314
+ * results to indexed predicates (uploadedBy, tag, format, isImage, plus
315
+ * dimension ranges). Unknown filter keys throw before the HTTP call.
316
+ *
317
+ * Returns the rows in the order specified by `sort`, with a `next_cursor`
318
+ * for keyset pagination. The cursor is opaque — pass it back as-is on the
319
+ * next call.
320
+ */
321
+ async list(opts = {}) {
322
+ const validatedFilter = validateListFilterClientSide(opts.filter);
323
+ const validatedSort = validateListSortClientSide(opts.sort);
324
+ const params = new URLSearchParams();
325
+ if (opts.prefix !== undefined && opts.prefix !== "") {
326
+ params.set("prefix", opts.prefix);
327
+ }
328
+ if (opts.limit !== undefined) {
329
+ params.set("limit", String(opts.limit));
330
+ }
331
+ if (opts.cursor !== undefined && opts.cursor !== "") {
332
+ params.set("cursor", opts.cursor);
333
+ }
334
+ if (validatedSort !== "key:asc") {
335
+ // Default omitted; explicit non-default sent.
336
+ params.set("sort", validatedSort);
337
+ }
338
+ if (validatedFilter) {
339
+ for (const [k, v] of Object.entries(validatedFilter)) {
340
+ if (v === undefined)
341
+ continue;
342
+ params.set(`filter.${k}`, typeof v === "boolean" ? String(v) : String(v));
343
+ }
344
+ }
345
+ const url = config.API_BASE +
346
+ "/storage/v1/blobs" +
347
+ (params.toString() ? "?" + params.toString() : "");
348
+ const res = await fetch(url, {
349
+ method: "GET",
350
+ headers: { apikey: config.SERVICE_KEY },
351
+ });
352
+ if (!res.ok) {
353
+ throw new Error("Asset list failed (" + res.status + "): " + (await readErrorMessage(res)));
354
+ }
355
+ const json = (await res.json());
356
+ return {
357
+ blobs: json.blobs.map((row) => ({
358
+ key: String(row.key),
359
+ size_bytes: Number(row.size_bytes ?? 0),
360
+ content_type: row.content_type ?? null,
361
+ sha256: row.sha256 ?? null,
362
+ visibility: row.visibility ?? "public",
363
+ immutable_suffix: row.immutable_suffix ?? null,
364
+ created_at: String(row.created_at),
365
+ updated_at: String(row.updated_at),
366
+ metadata: row.metadata ??
367
+ null,
368
+ width_px: row.width_px ?? null,
369
+ height_px: row.height_px ?? null,
370
+ blurhash: row.blurhash ?? null,
371
+ image_format: row.image_format ?? null,
372
+ image_info: row.image_info ?? null,
373
+ image_exif: row.image_exif ?? null,
374
+ image_exif_policy: row.image_exif_policy ?? null,
375
+ })),
376
+ next_cursor: json.next_cursor,
377
+ };
378
+ },
143
379
  };
380
+ const ASSETS_LIST_FILTER_KEYS = [
381
+ "uploaded_by",
382
+ "tag",
383
+ "format",
384
+ "is_image",
385
+ "min_width",
386
+ "max_width",
387
+ "min_height",
388
+ "max_height",
389
+ ];
390
+ function validateListSortClientSide(input) {
391
+ if (input === undefined || input === null || input === "")
392
+ return "key:asc";
393
+ if (input === "key:asc" || input === "createdAt:asc" || input === "createdAt:desc") {
394
+ return input;
395
+ }
396
+ throw new Error(`INVALID_SORT: sort must be one of 'key:asc' | 'createdAt:asc' | 'createdAt:desc'; got ${JSON.stringify(input)}`);
397
+ }
398
+ function validateListFilterClientSide(input) {
399
+ if (input === undefined || input === null)
400
+ return null;
401
+ if (typeof input !== "object" || Array.isArray(input)) {
402
+ throw new Error("INVALID_FILTER_KEY: filter must be an object");
403
+ }
404
+ const allowed = new Set(ASSETS_LIST_FILTER_KEYS);
405
+ for (const key of Object.keys(input)) {
406
+ if (!allowed.has(key)) {
407
+ throw new Error(`INVALID_FILTER_KEY: unknown filter key '${key}'. Allowed: ${ASSETS_LIST_FILTER_KEYS.join(", ")}`);
408
+ }
409
+ }
410
+ // Type narrowing for each key (mirrors the gateway-side parser).
411
+ if (input.is_image !== undefined && typeof input.is_image !== "boolean") {
412
+ throw new Error("INVALID_FILTER_VALUE: filter.is_image must be a boolean");
413
+ }
414
+ for (const dimKey of ["min_width", "max_width", "min_height", "max_height"]) {
415
+ const v = input[dimKey];
416
+ if (v !== undefined) {
417
+ if (typeof v !== "number" || !Number.isFinite(v) || !Number.isInteger(v) || v < 0) {
418
+ throw new Error(`INVALID_FILTER_VALUE: filter.${dimKey} must be a non-negative integer; got ${JSON.stringify(v)}`);
419
+ }
420
+ }
421
+ }
422
+ return input;
423
+ }
144
424
  //# sourceMappingURL=assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoKrC,MAAM,mBAAmB,GAA2B;IAClD,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,0BAA0B;IAChC,GAAG,EAAE,yBAAyB;IAC9B,EAAE,EAAE,gCAAgC;IACpC,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,2BAA2B;IAChC,EAAE,EAAE,8BAA8B;IAClC,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,kBAAkB;IACvB,EAAE,EAAE,kBAAkB;CACvB,CAAC;AAEF,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,0BAA0B,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;AAChE,CAAC;AAED,SAAS,eAAe,CAAC,MAA2B;IAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,YAAY,UAAU,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAA4B;IACjD,MAAM,GAAG,GAAI,GAAG,CAAC,GAAqB,IAAI,IAAI,CAAC;IAC/C,MAAM,YAAY,GAAI,GAAG,CAAC,aAA+B,IAAI,IAAI,CAAC;IAClE,MAAM,MAAM,GAAI,GAAG,CAAC,OAAyB,IAAI,IAAI,CAAC;IACtD,MAAM,eAAe,GAAI,GAAG,CAAC,iBAAmC,IAAI,IAAI,CAAC;IAEzE,4EAA4E;IAC5E,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,kBAAkB,GAAG,OAAO,GAAG,CAAC,oBAAoB,KAAK,QAAQ;QACrE,CAAC,CAAC,GAAG,CAAC,oBAAoB;QAC1B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QACpD,CAAC,CAAC,GAAG,CAAC,WAAW;QACjB,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI;YACxB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,mBAAmB,GAAG,OAAO,GAAG,CAAC,qBAAqB,KAAK,QAAQ;QACvE,CAAC,CAAC,GAAG,CAAC,qBAAqB;QAC3B,CAAC,CAAC,GAAG,CAAC,qBAAqB,KAAK,IAAI;YAClC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,QAA8B,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAmC,CAAC;QACpD,QAAQ,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAU,EAAE,CAAC;YACzE,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,UAAU,GAAG,CAA4B,CAAC;gBAChD,QAAQ,CAAC,IAAI,CAAC,GAAG;oBACf,IAAI;oBACJ,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;oBACxD,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC;oBAC1C,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC;oBAC5C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;oBACvC,GAAG,EAAG,UAAU,CAAC,GAAqB,IAAI,IAAI;oBAC9C,aAAa,EAAG,UAAU,CAAC,aAA+B,IAAI,IAAI;oBAClE,OAAO,EAAG,UAAU,CAAC,OAAyB,IAAI,IAAI;oBACtD,iBAAiB,EAAG,UAAU,CAAC,iBAAmC,IAAI,IAAI;iBAC3E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,QAAQ,GAAG,SAAS,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACvC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B,CAAC;QACpE,UAAU,EAAG,GAAG,CAAC,UAA8B,IAAI,QAAQ;QAC3D,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,IAAI;QACjC,GAAG;QACH,aAAa,EAAE,YAAY;QAC3B,OAAO,EAAE,MAAM;QACf,iBAAiB,EAAE,eAAe;QAClC,GAAG,EAAG,GAAG,CAAC,GAAqB,IAAI,IAAI;QACvC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAChD,YAAY;QACZ,MAAM;QACN,eAAe;QACf,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B,CAAC;QACnE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,mEAAmE;QACnE,mEAAmE;QACnE,qEAAqE;QACrE,iEAAiE;QACjE,uEAAuE;QACvE,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAgC,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS;YAChC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAwC,EAAE;YAChE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAoC,EAAE;YAC1D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAoC,EAAE;YAC1D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAkD,EAAE;YAC/E,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,qCAAqC;AACrC,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;6BAC6B;AAC7B,SAAS,0BAA0B,CACjC,KAA8B;IAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,GAAG,GAAyD,EAAE,CAAC;IACrE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,IAAI,CAAC,2CAA2C,CACxF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAiB,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,gDAAgD,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,8BAA8B,CACtE,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5D,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,+BAA+B,OAAO,KAAK,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvC,4EAA4E;IAC5E,MAAM,UAAU,GACd,OAAO,WAAW,KAAK,WAAW;QAChC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU;QACjD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACxB,IAAI,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,2CAA2C,UAAU,sBAAsB,kBAAkB,WAAW,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mEAAmE;AACnE,SAAS,4BAA4B,CAAC,KAAc;IAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IACzE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,IAAI,KAAK,CACb,kEAAkE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;AACJ,CAAC;AAED;qEACqE;AACrE,SAAS,oBAAoB,CAC3B,QAA8D;IAE9D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IACD,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;QAAE,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,MAAM,CAAC;SAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAa;IAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAI7B,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,GAAG,CACP,GAAW,EACX,MAA2B,EAC3B,OAAwB,EAAE;QAE1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAoB,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAEzC,uEAAuE;QACvE,uEAAuE;QACvE,kEAAkE;QAClE,0CAA0C;QAC1C,MAAM,iBAAiB,GACrB,IAAI,CAAC,QAAQ,KAAK,SAAS;YACzB,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,UAAU,GAAG,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjE,uEAAuE;QACvE,yEAAyE;QACzE,mEAAmE;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAC5B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CACrB,CAAC;QAEjB,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,SAAS,GAAG,MAAM,CAAC,WAAW;YAC7C,cAAc,EAAE,WAAW;YAC3B,oBAAoB,EAAE,GAAG;YACzB,2BAA2B,EAAE,UAAU;YACvC,0BAA0B,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACxD,mEAAmE;YACnE,4DAA4D;YAC5D,4BAA4B,EAAE,UAAU;SACzC,CAAC;QACF,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO,CAAC,yBAAyB,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,6BAA6B,EAAE;YACvE,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC1E,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC1D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI,CAAC,OAA0B,EAAE;QACrC,MAAM,eAAe,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,8CAA8C;YAC9C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAS;gBAC9B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ;YACf,mBAAmB;YACnB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,qBAAqB,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC3E,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;QACF,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBACpB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;gBACvC,YAAY,EAAG,GAAG,CAAC,YAA8B,IAAI,IAAI;gBACzD,MAAM,EAAG,GAAG,CAAC,MAAwB,IAAI,IAAI;gBAC7C,UAAU,EAAG,GAAG,CAAC,UAA8B,IAAI,QAAQ;gBAC3D,gBAAgB,EAAG,GAAG,CAAC,gBAAkC,IAAI,IAAI;gBACjE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;gBAClC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;gBAClC,QAAQ,EACL,GAAG,CAAC,QAAwE;oBAC7E,IAAI;gBACN,QAAQ,EAAG,GAAG,CAAC,QAA0B,IAAI,IAAI;gBACjD,SAAS,EAAG,GAAG,CAAC,SAA2B,IAAI,IAAI;gBACnD,QAAQ,EAAG,GAAG,CAAC,QAA0B,IAAI,IAAI;gBACjD,YAAY,EAAG,GAAG,CAAC,YAA8B,IAAI,IAAI;gBACzD,UAAU,EAAG,GAAG,CAAC,UAA+B,IAAI,IAAI;gBACxD,UAAU,EAAG,GAAG,CAAC,UAA6C,IAAI,IAAI;gBACtE,iBAAiB,EACd,GAAG,CAAC,iBAA6C,IAAI,IAAI;aAC7D,CAAC,CAAC;YACH,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;CACF,CAAC;AAmBF,MAAM,uBAAuB,GAAG;IAC9B,aAAa;IACb,KAAK;IACL,QAAQ;IACR,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,YAAY;CACJ,CAAC;AAkCX,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,eAAe,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;QACnF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CACb,yFAAyF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACjH,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAmC;IAEnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,uBAA4C,CAAC,CAAC;IACtE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,2CAA2C,GAAG,eAAe,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,iEAAiE;IACjE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAU,EAAE,CAAC;QACrF,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,wCAAwC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAClG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export type { EmailSendOptions, EmailRawOptions, EmailTemplateOptions, EmailSend
6
6
  export { ai } from "./ai.js";
7
7
  export type { GenerateImageOptions, GenerateImageResult, ImageAspect, TranslateOptions, TranslateResult, ModerateResult, } from "./ai.js";
8
8
  export { assets } from "./assets.js";
9
- export type { AssetPutOptions, AssetPutSource, AssetPutSourceInput, AssetRef, AssetVisibility, } from "./assets.js";
9
+ export type { AssetPutOptions, AssetPutSource, AssetPutSourceInput, AssetRef, AssetVisibility, AssetVariant, AssetListRow, AssetsListFilter, AssetsListOptions, AssetsListResult, AssetsListSort, ImageInfo, } from "./assets.js";
10
10
  export { bytes, isRequest, json, routedHttp, text } from "./routed-http.js";
11
11
  export type { RoutedHttpHeaderList, RoutedHttpRequestV1, RoutedHttpResponseInit, RoutedHttpResponseV1, } from "./routed-http.js";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3G,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3G,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,YAAY,EAEZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAS7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAS7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgBrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC"}
@@ -31,6 +31,18 @@ export interface RoutedHttpRequestV1 {
31
31
  requestId: string;
32
32
  clientIp?: string;
33
33
  userAgent?: string;
34
+ /** Capability `routed-locale-context`. Canonical locale tag (byte-
35
+ * identical to an entry in the active release's `i18n.locales[]`)
36
+ * when the release declares an i18n slice, `null` otherwise.
37
+ * OPTIONAL on the type: gateways predating `@run402/functions`
38
+ * 2.3.0 omit this field entirely, and the additive-compat contract
39
+ * requires the runtime to treat absence as `null`. Read as
40
+ * `event.context.locale ?? null`. */
41
+ locale?: string | null;
42
+ /** Echoed verbatim from the active release's `i18n.defaultLocale`,
43
+ * `null` when the release has no i18n slice. Same additive-compat
44
+ * rules as `locale`. Read as `event.context.defaultLocale ?? null`. */
45
+ defaultLocale?: string | null;
34
46
  };
35
47
  }
36
48
  export interface RoutedHttpResponseV1 {
@@ -1 +1 @@
1
- {"version":3,"file":"routed-http.d.ts","sourceRoot":"","sources":["../src/routed-http.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,uBAAuB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,IAAI,EAAE,IAAI,GAAG;QACX,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC9B,WAAW,EAAE;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG;QACZ,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,IAAI,CAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,oBAAoB,CAMtB;AAED,wBAAgB,IAAI,CAClB,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,sBAA2B,GAChC,oBAAoB,CAMtB;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE,sBAA2B,GAChC,oBAAoB,CAEtB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAEtE;AAED,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
1
+ {"version":3,"file":"routed-http.d.ts","sourceRoot":"","sources":["../src/routed-http.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,uBAAuB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChC,IAAI,EAAE,IAAI,GAAG;QACX,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC9B,WAAW,EAAE;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;8CAMsC;QACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB;;gFAEwE;QACxE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG;QACZ,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,IAAI,CAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,oBAAoB,CAMtB;AAED,wBAAgB,IAAI,CAClB,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,sBAA2B,GAChC,oBAAoB,CAMtB;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE,sBAA2B,GAChC,oBAAoB,CAEtB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAEtE;AAED,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routed-http.js","sourceRoot":"","sources":["../src/routed-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAmDrC,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,OAA+B,EAAE;IAEjC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;QAC1E,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,KAAc,EACd,OAA+B,EAAE;IAEjC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE;QAC1D,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAiC,CAAC;QAChF,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAAiB,EACjB,OAA+B,EAAE;IAEjC,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,uBAAuB,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,SAAS;CACV,CAAC;AAEF,SAAS,QAAQ,CACf,KAAiB,EACjB,IAA4B;IAE5B,MAAM,SAAS,GAAG,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAyB;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;QAC1B,IAAI,EAAE;YACJ,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,IAAI,EAAE,SAAS,CAAC,UAAU;SAC3B;KACF,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAChE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAyC,EACzC,WAAmB;IAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,CAAC;IACnF,IAAI,CAAC,cAAc;QAAE,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"routed-http.js","sourceRoot":"","sources":["../src/routed-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA+DrC,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,OAA+B,EAAE;IAEjC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;QAC1E,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,KAAc,EACd,OAA+B,EAAE;IAEjC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE;QAC1D,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAiC,CAAC;QAChF,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAAiB,EACjB,OAA+B,EAAE;IAEjC,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,uBAAuB,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,SAAS;CACV,CAAC;AAEF,SAAS,QAAQ,CACf,KAAiB,EACjB,IAA4B;IAE5B,MAAM,SAAS,GAAG,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAyB;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;QAC1B,IAAI,EAAE;YACJ,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,IAAI,EAAE,SAAS,CAAC,UAAU;SAC3B;KACF,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAChE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAyC,EACzC,WAAmB;IAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,CAAC;IACnF,IAAI,CAAC,cAAc;QAAE,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@run402/functions",
3
- "version": "2.2.2",
3
+ "version": "2.4.0",
4
4
  "description": "In-function helper library for Run402 serverless functions — db, adminDb, getUser, email, ai, assets. Auto-bundled into deployed functions; also installable for local TypeScript autocomplete.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",