partial-content 1.0.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/CHANGELOG.md +31 -0
- package/LICENSE +21 -0
- package/README.md +601 -0
- package/SECURITY.md +92 -0
- package/dist/azure.d.ts +79 -0
- package/dist/azure.d.ts.map +1 -0
- package/dist/azure.js +251 -0
- package/dist/azure.js.map +1 -0
- package/dist/content-disposition.d.ts +74 -0
- package/dist/content-disposition.d.ts.map +1 -0
- package/dist/content-disposition.js +253 -0
- package/dist/content-disposition.js.map +1 -0
- package/dist/fs.d.ts +86 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +375 -0
- package/dist/fs.js.map +1 -0
- package/dist/gcs.d.ts +72 -0
- package/dist/gcs.d.ts.map +1 -0
- package/dist/gcs.js +202 -0
- package/dist/gcs.js.map +1 -0
- package/dist/hono.d.ts +92 -0
- package/dist/hono.d.ts.map +1 -0
- package/dist/hono.js +61 -0
- package/dist/hono.js.map +1 -0
- package/dist/http.d.ts +70 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +281 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +541 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +1218 -0
- package/dist/kernel.js.map +1 -0
- package/dist/memory.d.ts +55 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +107 -0
- package/dist/memory.js.map +1 -0
- package/dist/mime.d.ts +49 -0
- package/dist/mime.d.ts.map +1 -0
- package/dist/mime.js +150 -0
- package/dist/mime.js.map +1 -0
- package/dist/node.d.ts +84 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +215 -0
- package/dist/node.js.map +1 -0
- package/dist/object-store.d.ts +472 -0
- package/dist/object-store.d.ts.map +1 -0
- package/dist/object-store.js +335 -0
- package/dist/object-store.js.map +1 -0
- package/dist/r2.d.ts +94 -0
- package/dist/r2.d.ts.map +1 -0
- package/dist/r2.js +150 -0
- package/dist/r2.js.map +1 -0
- package/dist/s3.d.ts +49 -0
- package/dist/s3.d.ts.map +1 -0
- package/dist/s3.js +263 -0
- package/dist/s3.js.map +1 -0
- package/dist/web.d.ts +336 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +1094 -0
- package/dist/web.js.map +1 -0
- package/docs/DESIGN.md +426 -0
- package/package.json +182 -0
- package/src/azure.ts +329 -0
- package/src/content-disposition.ts +300 -0
- package/src/fs.ts +469 -0
- package/src/gcs.ts +290 -0
- package/src/hono.ts +123 -0
- package/src/http.ts +351 -0
- package/src/index.ts +85 -0
- package/src/kernel.ts +1498 -0
- package/src/memory.ts +148 -0
- package/src/mime.ts +160 -0
- package/src/node.ts +261 -0
- package/src/object-store.ts +665 -0
- package/src/r2.ts +232 -0
- package/src/s3.ts +324 -0
- package/src/web.ts +1603 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory ObjectStore for partial-content.
|
|
3
|
+
*
|
|
4
|
+
* A complete, spec-faithful store over a plain object map. Built for:
|
|
5
|
+
* - **Consumer test suites** -- exercise your serving routes (ranges,
|
|
6
|
+
* conditionals, pinned-read retries) without a storage backend.
|
|
7
|
+
* - **Demos and examples** -- a working store in three lines.
|
|
8
|
+
* - **Small embedded assets** -- serve a handful of in-process files with
|
|
9
|
+
* the full 200/206/304 protocol.
|
|
10
|
+
*
|
|
11
|
+
* Faithful to the contract: real Content-Range fabrication, `ifMatch`
|
|
12
|
+
* pinning (mismatch throws {@link ObjectChangedError}, so retry logic is
|
|
13
|
+
* testable), and per-object validators.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { memoryStore } from "partial-content/memory";
|
|
18
|
+
* import { serveObject } from "partial-content/web";
|
|
19
|
+
*
|
|
20
|
+
* const store = memoryStore({
|
|
21
|
+
* objects: {
|
|
22
|
+
* "hello.txt": { body: "Hello, world!", etag: '"v1"' },
|
|
23
|
+
* },
|
|
24
|
+
* });
|
|
25
|
+
* const handler = serveObject(store);
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @packageDocumentation
|
|
29
|
+
*/
|
|
30
|
+
import { ObjectNotFoundError, ObjectChangedError, type ObjectStore } from "./index.js";
|
|
31
|
+
export { ObjectNotFoundError, ObjectChangedError };
|
|
32
|
+
/** A stored object: body plus optional validators and integrity metadata. */
|
|
33
|
+
export interface MemoryObject {
|
|
34
|
+
/** Object content. Strings are encoded as UTF-8. */
|
|
35
|
+
body: Uint8Array | string;
|
|
36
|
+
/** Raw ETag (quoted, like a backend would return). */
|
|
37
|
+
etag?: string;
|
|
38
|
+
/** Last-Modified (any `Date.parse`-able string). */
|
|
39
|
+
lastModified?: string;
|
|
40
|
+
/** RFC 9530 raw base64 SHA-256 digest of the body. */
|
|
41
|
+
digest?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface MemoryStoreOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Key -> object map. Held BY REFERENCE: mutate it between requests to
|
|
46
|
+
* simulate uploads, overwrites (change `etag` to trigger pinned-read
|
|
47
|
+
* retries), and deletions.
|
|
48
|
+
*/
|
|
49
|
+
objects: Record<string, MemoryObject>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create an {@link ObjectStore} over an in-memory object map.
|
|
53
|
+
*/
|
|
54
|
+
export declare function memoryStore(opts: MemoryStoreOptions): ObjectStore;
|
|
55
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,WAAW,EAIjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;AAInD,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACvC;AAID;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CA6EjE"}
|
package/dist/memory.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory ObjectStore for partial-content.
|
|
3
|
+
*
|
|
4
|
+
* A complete, spec-faithful store over a plain object map. Built for:
|
|
5
|
+
* - **Consumer test suites** -- exercise your serving routes (ranges,
|
|
6
|
+
* conditionals, pinned-read retries) without a storage backend.
|
|
7
|
+
* - **Demos and examples** -- a working store in three lines.
|
|
8
|
+
* - **Small embedded assets** -- serve a handful of in-process files with
|
|
9
|
+
* the full 200/206/304 protocol.
|
|
10
|
+
*
|
|
11
|
+
* Faithful to the contract: real Content-Range fabrication, `ifMatch`
|
|
12
|
+
* pinning (mismatch throws {@link ObjectChangedError}, so retry logic is
|
|
13
|
+
* testable), and per-object validators.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { memoryStore } from "partial-content/memory";
|
|
18
|
+
* import { serveObject } from "partial-content/web";
|
|
19
|
+
*
|
|
20
|
+
* const store = memoryStore({
|
|
21
|
+
* objects: {
|
|
22
|
+
* "hello.txt": { body: "Hello, world!", etag: '"v1"' },
|
|
23
|
+
* },
|
|
24
|
+
* });
|
|
25
|
+
* const handler = serveObject(store);
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @packageDocumentation
|
|
29
|
+
*/
|
|
30
|
+
import { ObjectNotFoundError, ObjectChangedError, } from "./index.js";
|
|
31
|
+
// Re-export for convenience
|
|
32
|
+
export { ObjectNotFoundError, ObjectChangedError };
|
|
33
|
+
// ─── Factory ────────────────────────────────────────────────────────────────
|
|
34
|
+
/**
|
|
35
|
+
* Create an {@link ObjectStore} over an in-memory object map.
|
|
36
|
+
*/
|
|
37
|
+
export function memoryStore(opts) {
|
|
38
|
+
const encoder = new TextEncoder();
|
|
39
|
+
// Cache the UTF-8 encoding of string bodies so a hot-served asset is not
|
|
40
|
+
// re-encoded on every head + get. The map is keyed by the entry and holds
|
|
41
|
+
// the exact string it encoded: the objects map is mutable by reference
|
|
42
|
+
// (the documented way to simulate overwrites), so a changed body misses
|
|
43
|
+
// the cache and re-encodes rather than serving stale bytes.
|
|
44
|
+
const encodeCache = new WeakMap();
|
|
45
|
+
function lookup(key) {
|
|
46
|
+
// Own-property check: the map is a caller-supplied plain object, so an
|
|
47
|
+
// inherited key ("constructor", "__proto__", "toString") would otherwise
|
|
48
|
+
// return a truthy prototype member and crash downstream as a 502 instead
|
|
49
|
+
// of answering the honest 404.
|
|
50
|
+
const entry = Object.hasOwn(opts.objects, key) ? opts.objects[key] : undefined;
|
|
51
|
+
if (!entry)
|
|
52
|
+
throw new ObjectNotFoundError(key);
|
|
53
|
+
if (typeof entry.body !== "string")
|
|
54
|
+
return { entry, bytes: entry.body };
|
|
55
|
+
const cached = encodeCache.get(entry);
|
|
56
|
+
if (cached && cached.source === entry.body)
|
|
57
|
+
return { entry, bytes: cached.bytes };
|
|
58
|
+
const bytes = encoder.encode(entry.body);
|
|
59
|
+
encodeCache.set(entry, { source: entry.body, bytes });
|
|
60
|
+
return { entry, bytes };
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
supportsRange: true,
|
|
64
|
+
async headObject(key, opts) {
|
|
65
|
+
opts?.signal?.throwIfAborted();
|
|
66
|
+
const { entry, bytes } = lookup(key);
|
|
67
|
+
return {
|
|
68
|
+
contentLength: bytes.length,
|
|
69
|
+
etag: entry.etag,
|
|
70
|
+
lastModified: entry.lastModified,
|
|
71
|
+
digest: entry.digest,
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
async getObject(key, getOpts) {
|
|
75
|
+
const { range, signal, ifMatch } = getOpts ?? {};
|
|
76
|
+
signal?.throwIfAborted();
|
|
77
|
+
const { entry, bytes } = lookup(key);
|
|
78
|
+
// Pinned read: the object must still match the caller's validator.
|
|
79
|
+
if (ifMatch && entry.etag !== ifMatch) {
|
|
80
|
+
throw new ObjectChangedError(key);
|
|
81
|
+
}
|
|
82
|
+
if (range && range.start >= bytes.length) {
|
|
83
|
+
// Unsatisfiable ranges are the orchestrator's job to reject
|
|
84
|
+
// (parseRangeHeader 416s them first); a direct caller gets a loud
|
|
85
|
+
// error instead of an empty body with lying bounds.
|
|
86
|
+
throw new RangeError(`memoryStore ${key}: range start ${range.start} is beyond object size ${bytes.length}`);
|
|
87
|
+
}
|
|
88
|
+
// subarray() clamps to the object size and returns a view (no copy);
|
|
89
|
+
// the served bytes are read-only, so a view is safe. Derive the reported
|
|
90
|
+
// range from the actual slice so ObjectStream.range is the SERVED bounds.
|
|
91
|
+
const slice = range ? bytes.subarray(range.start, range.end + 1) : bytes;
|
|
92
|
+
return {
|
|
93
|
+
// In-memory bytes are ArrayBuffer-backed (TextEncoder output or the
|
|
94
|
+
// caller's view); narrow so the body is `new Response(...)`-assignable
|
|
95
|
+
// under DOM lib (F5).
|
|
96
|
+
body: slice,
|
|
97
|
+
contentLength: slice.length,
|
|
98
|
+
totalSize: bytes.length,
|
|
99
|
+
range: range ? { start: range.start, end: range.start + slice.length - 1 } : undefined,
|
|
100
|
+
etag: entry.etag,
|
|
101
|
+
lastModified: entry.lastModified,
|
|
102
|
+
digest: entry.digest,
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/mime.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal MIME type lookup for file serving.
|
|
3
|
+
*
|
|
4
|
+
* A curated extension -> MIME map covering the formats that actually flow
|
|
5
|
+
* through document/media serving: office documents, images, audio/video,
|
|
6
|
+
* archives, fonts, and web assets. Deliberately small and auditable rather
|
|
7
|
+
* than exhaustive -- for the long tail, pass an explicit `mime` to the
|
|
8
|
+
* serve handler or bring a full database (`mime-types`, `mrmime`).
|
|
9
|
+
*
|
|
10
|
+
* Zero dependencies, aligned with IANA registrations and the WHATWG
|
|
11
|
+
* mimesniff living standard.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { serveObject } from "partial-content/node";
|
|
16
|
+
* import { fsStore } from "partial-content/fs";
|
|
17
|
+
* import { lookupMime } from "partial-content/mime";
|
|
18
|
+
*
|
|
19
|
+
* const handler = serveObject(fsStore({ root: "/data" }), {
|
|
20
|
+
* key: (req) => req.params.key,
|
|
21
|
+
* mime: (req) => lookupMime(req.params.key),
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Look up the MIME type for a filename, path, storage key, or bare extension.
|
|
29
|
+
*
|
|
30
|
+
* Matching is case-insensitive and uses the LAST dot segment, so keys like
|
|
31
|
+
* `2025/reports/Q4 Report.PDF` and `archive.tar.gz` resolve correctly
|
|
32
|
+
* (`application/pdf`, `application/gzip`).
|
|
33
|
+
*
|
|
34
|
+
* Returns `undefined` for unknown or missing extensions so the caller
|
|
35
|
+
* controls the fallback (the serve handlers default to
|
|
36
|
+
* `application/octet-stream`, the safe choice for unknown content).
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* lookupMime("report.pdf"); // "application/pdf"
|
|
41
|
+
* lookupMime("Q4 Report.PDF"); // "application/pdf"
|
|
42
|
+
* lookupMime("archive.tar.gz"); // "application/gzip"
|
|
43
|
+
* lookupMime("pdf"); // "application/pdf" (bare extension)
|
|
44
|
+
* lookupMime("unknown.xyz"); // undefined
|
|
45
|
+
* lookupMime("no-extension"); // undefined (unless it IS an extension)
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function lookupMime(filenameOrExt: string | null | undefined): string | undefined;
|
|
49
|
+
//# sourceMappingURL=mime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../src/mime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAqGH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAYvF"}
|
package/dist/mime.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal MIME type lookup for file serving.
|
|
3
|
+
*
|
|
4
|
+
* A curated extension -> MIME map covering the formats that actually flow
|
|
5
|
+
* through document/media serving: office documents, images, audio/video,
|
|
6
|
+
* archives, fonts, and web assets. Deliberately small and auditable rather
|
|
7
|
+
* than exhaustive -- for the long tail, pass an explicit `mime` to the
|
|
8
|
+
* serve handler or bring a full database (`mime-types`, `mrmime`).
|
|
9
|
+
*
|
|
10
|
+
* Zero dependencies, aligned with IANA registrations and the WHATWG
|
|
11
|
+
* mimesniff living standard.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { serveObject } from "partial-content/node";
|
|
16
|
+
* import { fsStore } from "partial-content/fs";
|
|
17
|
+
* import { lookupMime } from "partial-content/mime";
|
|
18
|
+
*
|
|
19
|
+
* const handler = serveObject(fsStore({ root: "/data" }), {
|
|
20
|
+
* key: (req) => req.params.key,
|
|
21
|
+
* mime: (req) => lookupMime(req.params.key),
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
// ─── Extension Map ──────────────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Extension (lowercase, no dot) -> MIME type.
|
|
30
|
+
*
|
|
31
|
+
* Security-relevant choices:
|
|
32
|
+
* - `html`/`htm`/`xhtml` are intentionally ABSENT: serving stored user
|
|
33
|
+
* uploads as `text/html` is stored XSS. If you serve trusted HTML, pass
|
|
34
|
+
* the MIME explicitly so the decision is visible at the call site.
|
|
35
|
+
* - Several mapped types are ACTIVE CONTENT that can execute script when
|
|
36
|
+
* rendered `inline` from your own origin. For untrusted uploads serve
|
|
37
|
+
* them `attachment` (the library's default disposition) or behind a
|
|
38
|
+
* strict CSP -- never plain `inline`:
|
|
39
|
+
* - `svg` -> `image/svg+xml` (embedded `<script>`, event handlers)
|
|
40
|
+
* - `pdf` -> `application/pdf` (embedded JavaScript in the viewer)
|
|
41
|
+
* - `xml` -> `application/xml` (`<?xml-stylesheet?>` can run XSLT)
|
|
42
|
+
* `X-Content-Type-Options: nosniff` and the default `attachment`
|
|
43
|
+
* disposition already protect the built-in serve path; the warning
|
|
44
|
+
* matters when a caller overrides `disposition: "inline"`.
|
|
45
|
+
*/
|
|
46
|
+
const MIME_TYPES = {
|
|
47
|
+
// Documents
|
|
48
|
+
pdf: "application/pdf",
|
|
49
|
+
txt: "text/plain",
|
|
50
|
+
md: "text/markdown",
|
|
51
|
+
csv: "text/csv",
|
|
52
|
+
json: "application/json",
|
|
53
|
+
xml: "application/xml",
|
|
54
|
+
rtf: "application/rtf",
|
|
55
|
+
epub: "application/epub+zip",
|
|
56
|
+
ics: "text/calendar",
|
|
57
|
+
vcf: "text/vcard",
|
|
58
|
+
// Office (OOXML + legacy + OpenDocument)
|
|
59
|
+
doc: "application/msword",
|
|
60
|
+
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
61
|
+
xls: "application/vnd.ms-excel",
|
|
62
|
+
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
63
|
+
ppt: "application/vnd.ms-powerpoint",
|
|
64
|
+
pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
65
|
+
odt: "application/vnd.oasis.opendocument.text",
|
|
66
|
+
ods: "application/vnd.oasis.opendocument.spreadsheet",
|
|
67
|
+
odp: "application/vnd.oasis.opendocument.presentation",
|
|
68
|
+
// Images
|
|
69
|
+
png: "image/png",
|
|
70
|
+
jpg: "image/jpeg",
|
|
71
|
+
jpeg: "image/jpeg",
|
|
72
|
+
gif: "image/gif",
|
|
73
|
+
webp: "image/webp",
|
|
74
|
+
avif: "image/avif",
|
|
75
|
+
svg: "image/svg+xml",
|
|
76
|
+
ico: "image/x-icon",
|
|
77
|
+
bmp: "image/bmp",
|
|
78
|
+
tif: "image/tiff",
|
|
79
|
+
tiff: "image/tiff",
|
|
80
|
+
heic: "image/heic",
|
|
81
|
+
// Audio
|
|
82
|
+
mp3: "audio/mpeg",
|
|
83
|
+
wav: "audio/wav",
|
|
84
|
+
ogg: "audio/ogg",
|
|
85
|
+
oga: "audio/ogg",
|
|
86
|
+
m4a: "audio/mp4",
|
|
87
|
+
aac: "audio/aac",
|
|
88
|
+
flac: "audio/flac",
|
|
89
|
+
opus: "audio/opus",
|
|
90
|
+
// Video
|
|
91
|
+
mp4: "video/mp4",
|
|
92
|
+
m4v: "video/mp4",
|
|
93
|
+
webm: "video/webm",
|
|
94
|
+
mov: "video/quicktime",
|
|
95
|
+
avi: "video/x-msvideo",
|
|
96
|
+
mkv: "video/x-matroska",
|
|
97
|
+
ogv: "video/ogg",
|
|
98
|
+
// Archives
|
|
99
|
+
zip: "application/zip",
|
|
100
|
+
gz: "application/gzip",
|
|
101
|
+
tar: "application/x-tar",
|
|
102
|
+
"7z": "application/x-7z-compressed",
|
|
103
|
+
rar: "application/vnd.rar",
|
|
104
|
+
// Fonts
|
|
105
|
+
woff: "font/woff",
|
|
106
|
+
woff2: "font/woff2",
|
|
107
|
+
ttf: "font/ttf",
|
|
108
|
+
otf: "font/otf",
|
|
109
|
+
// Web assets
|
|
110
|
+
js: "text/javascript",
|
|
111
|
+
mjs: "text/javascript",
|
|
112
|
+
css: "text/css",
|
|
113
|
+
wasm: "application/wasm",
|
|
114
|
+
};
|
|
115
|
+
// ─── Public API ─────────────────────────────────────────────────────────────
|
|
116
|
+
/**
|
|
117
|
+
* Look up the MIME type for a filename, path, storage key, or bare extension.
|
|
118
|
+
*
|
|
119
|
+
* Matching is case-insensitive and uses the LAST dot segment, so keys like
|
|
120
|
+
* `2025/reports/Q4 Report.PDF` and `archive.tar.gz` resolve correctly
|
|
121
|
+
* (`application/pdf`, `application/gzip`).
|
|
122
|
+
*
|
|
123
|
+
* Returns `undefined` for unknown or missing extensions so the caller
|
|
124
|
+
* controls the fallback (the serve handlers default to
|
|
125
|
+
* `application/octet-stream`, the safe choice for unknown content).
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* lookupMime("report.pdf"); // "application/pdf"
|
|
130
|
+
* lookupMime("Q4 Report.PDF"); // "application/pdf"
|
|
131
|
+
* lookupMime("archive.tar.gz"); // "application/gzip"
|
|
132
|
+
* lookupMime("pdf"); // "application/pdf" (bare extension)
|
|
133
|
+
* lookupMime("unknown.xyz"); // undefined
|
|
134
|
+
* lookupMime("no-extension"); // undefined (unless it IS an extension)
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export function lookupMime(filenameOrExt) {
|
|
138
|
+
if (!filenameOrExt)
|
|
139
|
+
return undefined;
|
|
140
|
+
const lastDot = filenameOrExt.lastIndexOf(".");
|
|
141
|
+
// No dot: treat the whole input as a bare extension ("pdf" -> pdf).
|
|
142
|
+
// Trailing dot ("file.") yields an empty extension -> undefined.
|
|
143
|
+
const ext = lastDot === -1
|
|
144
|
+
? filenameOrExt
|
|
145
|
+
: filenameOrExt.slice(lastDot + 1);
|
|
146
|
+
if (!ext)
|
|
147
|
+
return undefined;
|
|
148
|
+
return MIME_TYPES[ext.toLowerCase()];
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=mime.js.map
|
package/dist/mime.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mime.js","sourceRoot":"","sources":["../src/mime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,GAA2B;IACzC,YAAY;IACZ,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,sBAAsB;IAC5B,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,YAAY;IAEjB,yCAAyC;IACzC,GAAG,EAAE,oBAAoB;IACzB,IAAI,EAAE,yEAAyE;IAC/E,GAAG,EAAE,0BAA0B;IAC/B,IAAI,EAAE,mEAAmE;IACzE,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE,2EAA2E;IACjF,GAAG,EAAE,yCAAyC;IAC9C,GAAG,EAAE,gDAAgD;IACrD,GAAG,EAAE,iDAAiD;IAEtD,SAAS;IACT,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAElB,QAAQ;IACR,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAElB,QAAQ;IACR,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,WAAW;IAEhB,WAAW;IACX,GAAG,EAAE,iBAAiB;IACtB,EAAE,EAAE,kBAAkB;IACtB,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE,6BAA6B;IACnC,GAAG,EAAE,qBAAqB;IAE1B,QAAQ;IACR,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IAEf,aAAa;IACb,EAAE,EAAE,iBAAiB;IACrB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,kBAAkB;CACzB,CAAC;AAEF,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,UAAU,CAAC,aAAwC;IACjE,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAErC,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,oEAAoE;IACpE,iEAAiE;IACjE,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js HTTP adapter for partial-content.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the gap between Node.js `IncomingMessage`/`ServerResponse` and the
|
|
5
|
+
* Fetch-based `partial-content/web` handler. Works with Express, Fastify
|
|
6
|
+
* (in compatibility mode), Koa, raw `http.createServer`, and any Node.js
|
|
7
|
+
* HTTP framework that exposes the standard request/response objects.
|
|
8
|
+
*
|
|
9
|
+
* @example Express
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import express from "express";
|
|
12
|
+
* import { serveObject } from "partial-content/node";
|
|
13
|
+
* import { fsStore } from "partial-content/fs";
|
|
14
|
+
*
|
|
15
|
+
* const store = fsStore({ root: "./uploads" });
|
|
16
|
+
* const app = express();
|
|
17
|
+
*
|
|
18
|
+
* app.get("/files/:key", serveObject(store, {
|
|
19
|
+
* key: (req) => req.params.key,
|
|
20
|
+
* disposition: "inline",
|
|
21
|
+
* }));
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @example raw http.createServer
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createServer } from "node:http";
|
|
27
|
+
* import { serveObject } from "partial-content/node";
|
|
28
|
+
* import { s3Store } from "partial-content/s3";
|
|
29
|
+
*
|
|
30
|
+
* const store = s3Store({ client, bucket: "docs" });
|
|
31
|
+
* const handler = serveObject(store, {
|
|
32
|
+
* key: (req) => new URL(req.url!, `http://${req.headers.host}`).pathname.slice(1),
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* createServer((req, res) => handler(req, res)).listen(3000);
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @packageDocumentation
|
|
39
|
+
*/
|
|
40
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
41
|
+
import { type ServeObjectOptions } from "./web.js";
|
|
42
|
+
import type { ObjectStore } from "./index.js";
|
|
43
|
+
export interface NodeServeOptions extends ServeObjectOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Extract the storage key from the incoming request.
|
|
46
|
+
* The request object is the raw Node.js IncomingMessage, so you have
|
|
47
|
+
* access to URL, params (if using Express/Fastify), headers, etc.
|
|
48
|
+
*/
|
|
49
|
+
key: (req: IncomingMessage) => string | Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Extract the MIME type from the request.
|
|
52
|
+
* When omitted, defaults to "application/octet-stream".
|
|
53
|
+
*/
|
|
54
|
+
mime?: (req: IncomingMessage) => string | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Extract the filename from the request (for Content-Disposition).
|
|
57
|
+
* When omitted, no filename is set.
|
|
58
|
+
*/
|
|
59
|
+
filename?: (req: IncomingMessage) => string | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Max milliseconds to wait for a single backpressure `drain` while streaming
|
|
62
|
+
* before treating the client as stalled and tearing the transfer down.
|
|
63
|
+
*
|
|
64
|
+
* A client that stops reading but holds its socket open (a slow-read attack)
|
|
65
|
+
* fills the send buffer, so `res.write()` returns false and `drain` never
|
|
66
|
+
* fires. Without a bound the stream pump would wait forever, pinning the
|
|
67
|
+
* backend storage socket (and its connection-pool slot). A stall reliably
|
|
68
|
+
* tears down via the existing error path (cancel the reader, destroy the
|
|
69
|
+
* response). Set to `0` to disable and rely on an upstream proxy / socket
|
|
70
|
+
* timeout instead.
|
|
71
|
+
*
|
|
72
|
+
* @default 60000
|
|
73
|
+
*/
|
|
74
|
+
writeStallTimeoutMs?: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create a Node.js request handler that serves files from an {@link ObjectStore}.
|
|
78
|
+
*
|
|
79
|
+
* Converts Node.js `IncomingMessage` to a Fetch `Request`, delegates to the
|
|
80
|
+
* web adapter's `serveObject`, then writes the Fetch `Response` back to the
|
|
81
|
+
* Node.js `ServerResponse`.
|
|
82
|
+
*/
|
|
83
|
+
export declare function serveObject(store: ObjectStore, opts: NodeServeOptions): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
84
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAyC,KAAK,kBAAkB,EAAqB,MAAM,UAAU,CAAC;AAC7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;;;OAIG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExD;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,SAAS,CAAC;IAExD;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,gBAAgB,IAOpB,KAAK,eAAe,EACpB,KAAK,cAAc,KAClB,OAAO,CAAC,IAAI,CAAC,CA0JjB"}
|