mates-fullstack 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +311 -0
- package/dist/arctic-auth.d.ts +101 -0
- package/dist/arctic-auth.d.ts.map +1 -0
- package/dist/arctic-auth.js +538 -0
- package/dist/arctic-auth.js.map +1 -0
- package/dist/asset-manifest.d.ts +14 -0
- package/dist/asset-manifest.d.ts.map +1 -0
- package/dist/asset-manifest.js +102 -0
- package/dist/asset-manifest.js.map +1 -0
- package/dist/browser.d.ts +18 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +25 -0
- package/dist/browser.js.map +1 -0
- package/dist/build-esbuild.d.ts +29 -0
- package/dist/build-esbuild.d.ts.map +1 -0
- package/dist/build-esbuild.js +699 -0
- package/dist/build-esbuild.js.map +1 -0
- package/dist/build-prod.d.ts +126 -0
- package/dist/build-prod.d.ts.map +1 -0
- package/dist/build-prod.js +1014 -0
- package/dist/build-prod.js.map +1 -0
- package/dist/cli-new.d.ts +14 -0
- package/dist/cli-new.d.ts.map +1 -0
- package/dist/cli-new.js +637 -0
- package/dist/cli-new.js.map +1 -0
- package/dist/client.d.ts +43 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +130 -0
- package/dist/client.js.map +1 -0
- package/dist/cors.d.ts +16 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +60 -0
- package/dist/cors.js.map +1 -0
- package/dist/ctx.d.ts +78 -0
- package/dist/ctx.d.ts.map +1 -0
- package/dist/ctx.js +280 -0
- package/dist/ctx.js.map +1 -0
- package/dist/dev-watcher.d.ts +23 -0
- package/dist/dev-watcher.d.ts.map +1 -0
- package/dist/dev-watcher.js +136 -0
- package/dist/dev-watcher.js.map +1 -0
- package/dist/docs-generator.d.ts +69 -0
- package/dist/docs-generator.d.ts.map +1 -0
- package/dist/docs-generator.js +557 -0
- package/dist/docs-generator.js.map +1 -0
- package/dist/docs-page.d.ts +20 -0
- package/dist/docs-page.d.ts.map +1 -0
- package/dist/docs-page.js +1152 -0
- package/dist/docs-page.js.map +1 -0
- package/dist/download.d.ts +78 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +202 -0
- package/dist/download.js.map +1 -0
- package/dist/env-loader.d.ts +76 -0
- package/dist/env-loader.d.ts.map +1 -0
- package/dist/env-loader.js +213 -0
- package/dist/env-loader.js.map +1 -0
- package/dist/errors.d.ts +146 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +386 -0
- package/dist/errors.js.map +1 -0
- package/dist/head.d.ts +31 -0
- package/dist/head.d.ts.map +1 -0
- package/dist/head.js +245 -0
- package/dist/head.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/internal-prefixes.d.ts +16 -0
- package/dist/internal-prefixes.d.ts.map +1 -0
- package/dist/internal-prefixes.js +16 -0
- package/dist/internal-prefixes.js.map +1 -0
- package/dist/internal.d.ts +25 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +25 -0
- package/dist/internal.js.map +1 -0
- package/dist/jwt.d.ts +166 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +261 -0
- package/dist/jwt.js.map +1 -0
- package/dist/log.d.ts +44 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +66 -0
- package/dist/log.js.map +1 -0
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +138 -0
- package/dist/logger.js.map +1 -0
- package/dist/main-runner.d.ts +59 -0
- package/dist/main-runner.d.ts.map +1 -0
- package/dist/main-runner.js +157 -0
- package/dist/main-runner.js.map +1 -0
- package/dist/mates-auth.d.ts +82 -0
- package/dist/mates-auth.d.ts.map +1 -0
- package/dist/mates-auth.js +323 -0
- package/dist/mates-auth.js.map +1 -0
- package/dist/middleware.d.ts +30 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +67 -0
- package/dist/middleware.js.map +1 -0
- package/dist/project-resolver.d.ts +102 -0
- package/dist/project-resolver.d.ts.map +1 -0
- package/dist/project-resolver.js +271 -0
- package/dist/project-resolver.js.map +1 -0
- package/dist/rate-limit.d.ts +37 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +109 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/redirect.d.ts +84 -0
- package/dist/redirect.d.ts.map +1 -0
- package/dist/redirect.js +105 -0
- package/dist/redirect.js.map +1 -0
- package/dist/renderer.d.ts +91 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +630 -0
- package/dist/renderer.js.map +1 -0
- package/dist/request-logger.d.ts +12 -0
- package/dist/request-logger.d.ts.map +1 -0
- package/dist/request-logger.js +55 -0
- package/dist/request-logger.js.map +1 -0
- package/dist/rest.d.ts +25 -0
- package/dist/rest.d.ts.map +1 -0
- package/dist/rest.js +93 -0
- package/dist/rest.js.map +1 -0
- package/dist/router.d.ts +71 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +222 -0
- package/dist/router.js.map +1 -0
- package/dist/rpc-registry.d.ts +84 -0
- package/dist/rpc-registry.d.ts.map +1 -0
- package/dist/rpc-registry.js +271 -0
- package/dist/rpc-registry.js.map +1 -0
- package/dist/rpc-runner.d.ts +82 -0
- package/dist/rpc-runner.d.ts.map +1 -0
- package/dist/rpc-runner.js +564 -0
- package/dist/rpc-runner.js.map +1 -0
- package/dist/sanitize.d.ts +61 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +193 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/security-headers.d.ts +114 -0
- package/dist/security-headers.d.ts.map +1 -0
- package/dist/security-headers.js +121 -0
- package/dist/security-headers.js.map +1 -0
- package/dist/server-fn.d.ts +323 -0
- package/dist/server-fn.d.ts.map +1 -0
- package/dist/server-fn.js +373 -0
- package/dist/server-fn.js.map +1 -0
- package/dist/server-public.d.ts +13 -0
- package/dist/server-public.d.ts.map +1 -0
- package/dist/server-public.js +12 -0
- package/dist/server-public.js.map +1 -0
- package/dist/server-timeout.d.ts +38 -0
- package/dist/server-timeout.d.ts.map +1 -0
- package/dist/server-timeout.js +46 -0
- package/dist/server-timeout.js.map +1 -0
- package/dist/server.d.ts +100 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1218 -0
- package/dist/server.js.map +1 -0
- package/dist/socket-router.d.ts +153 -0
- package/dist/socket-router.d.ts.map +1 -0
- package/dist/socket-router.js +612 -0
- package/dist/socket-router.js.map +1 -0
- package/dist/sso.d.ts +90 -0
- package/dist/sso.d.ts.map +1 -0
- package/dist/sso.js +261 -0
- package/dist/sso.js.map +1 -0
- package/dist/ssr-context.d.ts +49 -0
- package/dist/ssr-context.d.ts.map +1 -0
- package/dist/ssr-context.js +85 -0
- package/dist/ssr-context.js.map +1 -0
- package/dist/ssr-globals.d.ts +32 -0
- package/dist/ssr-globals.d.ts.map +1 -0
- package/dist/ssr-globals.js +1010 -0
- package/dist/ssr-globals.js.map +1 -0
- package/dist/ssr-template.d.ts +73 -0
- package/dist/ssr-template.d.ts.map +1 -0
- package/dist/ssr-template.js +507 -0
- package/dist/ssr-template.js.map +1 -0
- package/dist/stack-mapper.d.ts +25 -0
- package/dist/stack-mapper.d.ts.map +1 -0
- package/dist/stack-mapper.js +139 -0
- package/dist/stack-mapper.js.map +1 -0
- package/dist/stream.d.ts +89 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +299 -0
- package/dist/stream.js.map +1 -0
- package/dist/upload.d.ts +69 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +110 -0
- package/dist/upload.js.map +1 -0
- package/dist/validate.d.ts +58 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +89 -0
- package/dist/validate.js.map +1 -0
- package/dist/verify-package.d.ts +3 -0
- package/dist/verify-package.d.ts.map +1 -0
- package/dist/verify-package.js +128 -0
- package/dist/verify-package.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-page.js","sourceRoot":"","sources":["../src/docs-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mates-fullstack — download.ts
|
|
3
|
+
*
|
|
4
|
+
* The Download class for server functions that return file downloads.
|
|
5
|
+
* Returned by a server function, detected by rpc-runner,
|
|
6
|
+
* and written as a binary response with Content-Disposition: attachment.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { Download } from "mates-fullstack/server";
|
|
10
|
+
*
|
|
11
|
+
* export async function downloadReport(
|
|
12
|
+
* payload: { id: string },
|
|
13
|
+
* ctx: Context
|
|
14
|
+
* ) {
|
|
15
|
+
* const pdf = await generatePdf(payload.id);
|
|
16
|
+
* return new Download(pdf, { filename: "report.pdf" });
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* On the client, the RPC stub detects the binary response and
|
|
20
|
+
* triggers a browser download automatically — no client-side code needed.
|
|
21
|
+
*/
|
|
22
|
+
/// <reference types="node" />
|
|
23
|
+
/// <reference types="node" />
|
|
24
|
+
import type { ServerResponse } from "node:http";
|
|
25
|
+
/**
|
|
26
|
+
* Returned from a server function to trigger a file download in the browser.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* return new Download(pdfBuffer, { filename: "report.pdf" });
|
|
30
|
+
* return new Download(csvString, { filename: "export.csv", contentType: "text/csv" });
|
|
31
|
+
* return new Download(imageBuffer, { filename: "photo.jpg", contentType: "image/jpeg" });
|
|
32
|
+
*/
|
|
33
|
+
export declare class Download {
|
|
34
|
+
readonly data: Buffer;
|
|
35
|
+
readonly filename: string;
|
|
36
|
+
readonly contentType: string;
|
|
37
|
+
constructor(data: Buffer | Uint8Array | string, options: {
|
|
38
|
+
filename: string;
|
|
39
|
+
/**
|
|
40
|
+
* MIME type for the Content-Type header.
|
|
41
|
+
* Defaults to "application/octet-stream" (generic binary).
|
|
42
|
+
* Common values:
|
|
43
|
+
* - "application/pdf"
|
|
44
|
+
* - "text/csv"
|
|
45
|
+
* - "application/json"
|
|
46
|
+
* - "image/png"
|
|
47
|
+
* - "application/zip"
|
|
48
|
+
*/
|
|
49
|
+
contentType?: string;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Write a Download to a Node.js ServerResponse.
|
|
54
|
+
* Sets Content-Type, Content-Length, and Content-Disposition headers.
|
|
55
|
+
* Writes the binary data and ends the response.
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeDownload(download: Download, res: ServerResponse): void;
|
|
58
|
+
/**
|
|
59
|
+
* Trigger a file download in the browser from a fetch Response.
|
|
60
|
+
* Called by the RPC stub when it detects Content-Disposition: attachment.
|
|
61
|
+
*
|
|
62
|
+
* Creates a temporary blob URL, clicks a hidden <a> element, then cleans up.
|
|
63
|
+
*/
|
|
64
|
+
export declare function triggerBrowserDownload(response: Response, fallbackFilename?: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Returns true if the value is a Download instance.
|
|
67
|
+
* Used by rpc-runner to detect download returns.
|
|
68
|
+
*/
|
|
69
|
+
export declare function isDownload(value: unknown): value is Download;
|
|
70
|
+
/**
|
|
71
|
+
* Build a Content-Disposition header for a file download.
|
|
72
|
+
* Uses RFC 5987 encoding for filenames with non-ASCII characters.
|
|
73
|
+
*
|
|
74
|
+
* Always includes both the ASCII fallback (filename=) and
|
|
75
|
+
* the encoded form (filename*=) for maximum compatibility.
|
|
76
|
+
*/
|
|
77
|
+
export declare function buildContentDisposition(filename: string): string;
|
|
78
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIhD;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG3B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EAClC,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB;;;;;;;;;WASG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CAcJ;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,cAAc,GAClB,IAAI,CAaN;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,SAAa,GAC5B,IAAI,CAoBN;AAID;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAID;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuBhE"}
|
package/dist/download.js
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mates-fullstack — download.ts
|
|
3
|
+
*
|
|
4
|
+
* The Download class for server functions that return file downloads.
|
|
5
|
+
* Returned by a server function, detected by rpc-runner,
|
|
6
|
+
* and written as a binary response with Content-Disposition: attachment.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { Download } from "mates-fullstack/server";
|
|
10
|
+
*
|
|
11
|
+
* export async function downloadReport(
|
|
12
|
+
* payload: { id: string },
|
|
13
|
+
* ctx: Context
|
|
14
|
+
* ) {
|
|
15
|
+
* const pdf = await generatePdf(payload.id);
|
|
16
|
+
* return new Download(pdf, { filename: "report.pdf" });
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* On the client, the RPC stub detects the binary response and
|
|
20
|
+
* triggers a browser download automatically — no client-side code needed.
|
|
21
|
+
*/
|
|
22
|
+
// ─── Download class ───────────────────────────────────────────────────────────
|
|
23
|
+
/**
|
|
24
|
+
* Returned from a server function to trigger a file download in the browser.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* return new Download(pdfBuffer, { filename: "report.pdf" });
|
|
28
|
+
* return new Download(csvString, { filename: "export.csv", contentType: "text/csv" });
|
|
29
|
+
* return new Download(imageBuffer, { filename: "photo.jpg", contentType: "image/jpeg" });
|
|
30
|
+
*/
|
|
31
|
+
export class Download {
|
|
32
|
+
data;
|
|
33
|
+
filename;
|
|
34
|
+
contentType;
|
|
35
|
+
constructor(data, options) {
|
|
36
|
+
// Normalize all data types to Buffer
|
|
37
|
+
if (typeof data === "string") {
|
|
38
|
+
this.data = Buffer.from(data, "utf-8");
|
|
39
|
+
}
|
|
40
|
+
else if (data instanceof Uint8Array) {
|
|
41
|
+
this.data = Buffer.from(data);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.data = data;
|
|
45
|
+
}
|
|
46
|
+
this.filename = options.filename;
|
|
47
|
+
this.contentType = options.contentType ?? _guessContentType(options.filename);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// ─── Response writer ──────────────────────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* Write a Download to a Node.js ServerResponse.
|
|
53
|
+
* Sets Content-Type, Content-Length, and Content-Disposition headers.
|
|
54
|
+
* Writes the binary data and ends the response.
|
|
55
|
+
*/
|
|
56
|
+
export function writeDownload(download, res) {
|
|
57
|
+
if (res.headersSent)
|
|
58
|
+
return;
|
|
59
|
+
res.writeHead(200, {
|
|
60
|
+
"Content-Type": download.contentType,
|
|
61
|
+
"Content-Length": download.data.length,
|
|
62
|
+
"Content-Disposition": buildContentDisposition(download.filename),
|
|
63
|
+
// Prevent browser from caching downloads
|
|
64
|
+
"Cache-Control": "no-store",
|
|
65
|
+
"Pragma": "no-cache",
|
|
66
|
+
});
|
|
67
|
+
res.end(download.data);
|
|
68
|
+
}
|
|
69
|
+
// ─── Client-side helper ───────────────────────────────────────────────────────
|
|
70
|
+
/**
|
|
71
|
+
* Trigger a file download in the browser from a fetch Response.
|
|
72
|
+
* Called by the RPC stub when it detects Content-Disposition: attachment.
|
|
73
|
+
*
|
|
74
|
+
* Creates a temporary blob URL, clicks a hidden <a> element, then cleans up.
|
|
75
|
+
*/
|
|
76
|
+
export function triggerBrowserDownload(response, fallbackFilename = "download") {
|
|
77
|
+
// Extract filename from Content-Disposition header if present
|
|
78
|
+
const disposition = response.headers.get("content-disposition") ?? "";
|
|
79
|
+
const filename = _extractFilename(disposition) ?? fallbackFilename;
|
|
80
|
+
response.blob().then((blob) => {
|
|
81
|
+
const url = URL.createObjectURL(blob);
|
|
82
|
+
const a = document.createElement("a");
|
|
83
|
+
a.href = url;
|
|
84
|
+
a.download = filename;
|
|
85
|
+
a.style.display = "none";
|
|
86
|
+
document.body.appendChild(a);
|
|
87
|
+
a.click();
|
|
88
|
+
// Clean up after a short delay to allow the download to start
|
|
89
|
+
setTimeout(() => {
|
|
90
|
+
document.body.removeChild(a);
|
|
91
|
+
URL.revokeObjectURL(url);
|
|
92
|
+
}, 100);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// ─── Type guard ───────────────────────────────────────────────────────────────
|
|
96
|
+
/**
|
|
97
|
+
* Returns true if the value is a Download instance.
|
|
98
|
+
* Used by rpc-runner to detect download returns.
|
|
99
|
+
*/
|
|
100
|
+
export function isDownload(value) {
|
|
101
|
+
return value instanceof Download;
|
|
102
|
+
}
|
|
103
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
104
|
+
/**
|
|
105
|
+
* Build a Content-Disposition header for a file download.
|
|
106
|
+
* Uses RFC 5987 encoding for filenames with non-ASCII characters.
|
|
107
|
+
*
|
|
108
|
+
* Always includes both the ASCII fallback (filename=) and
|
|
109
|
+
* the encoded form (filename*=) for maximum compatibility.
|
|
110
|
+
*/
|
|
111
|
+
export function buildContentDisposition(filename) {
|
|
112
|
+
// Strip path separators and null bytes for security
|
|
113
|
+
const safe = filename
|
|
114
|
+
.replace(/[\\/]/g, "_")
|
|
115
|
+
.replace(/\0/g, "")
|
|
116
|
+
.trim();
|
|
117
|
+
// Check if filename is pure ASCII
|
|
118
|
+
const isAscii = /^[\x20-\x7E]+$/.test(safe);
|
|
119
|
+
if (isAscii) {
|
|
120
|
+
// Simple case — quote the filename in case it has spaces or special chars
|
|
121
|
+
const escaped = safe.replace(/["\\]/g, "\\$&");
|
|
122
|
+
return `attachment; filename="${escaped}"`;
|
|
123
|
+
}
|
|
124
|
+
// Non-ASCII filename — use RFC 5987 encoding
|
|
125
|
+
const encoded = encodeURIComponent(safe);
|
|
126
|
+
// ASCII fallback (replace non-ASCII with "?")
|
|
127
|
+
const asciiFallback = safe.replace(/[^\x20-\x7E]/g, "?");
|
|
128
|
+
const asciiEscaped = asciiFallback.replace(/["\\]/g, "\\$&");
|
|
129
|
+
return `attachment; filename="${asciiEscaped}"; filename*=UTF-8''${encoded}`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Extract filename from a Content-Disposition header string.
|
|
133
|
+
* Tries filename*= (RFC 5987) first, then filename=.
|
|
134
|
+
* Returns null if no filename is found.
|
|
135
|
+
*/
|
|
136
|
+
function _extractFilename(disposition) {
|
|
137
|
+
if (!disposition)
|
|
138
|
+
return null;
|
|
139
|
+
// Try filename*= (RFC 5987 encoded)
|
|
140
|
+
const encodedMatch = disposition.match(/filename\*=UTF-8''([^;]+)/i);
|
|
141
|
+
if (encodedMatch?.[1]) {
|
|
142
|
+
try {
|
|
143
|
+
return decodeURIComponent(encodedMatch[1]);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Fall through to plain filename
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Try filename= (plain, possibly quoted)
|
|
150
|
+
const plainMatch = disposition.match(/filename="?([^";]+)"?/i);
|
|
151
|
+
if (plainMatch?.[1]) {
|
|
152
|
+
return plainMatch[1].trim();
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Guess Content-Type from file extension.
|
|
158
|
+
* Falls back to application/octet-stream for unknown extensions.
|
|
159
|
+
*/
|
|
160
|
+
function _guessContentType(filename) {
|
|
161
|
+
const ext = filename.toLowerCase().split(".").pop() ?? "";
|
|
162
|
+
const mimeTypes = {
|
|
163
|
+
// Documents
|
|
164
|
+
pdf: "application/pdf",
|
|
165
|
+
doc: "application/msword",
|
|
166
|
+
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
167
|
+
xls: "application/vnd.ms-excel",
|
|
168
|
+
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
169
|
+
ppt: "application/vnd.ms-powerpoint",
|
|
170
|
+
pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
171
|
+
// Text
|
|
172
|
+
txt: "text/plain",
|
|
173
|
+
csv: "text/csv",
|
|
174
|
+
html: "text/html",
|
|
175
|
+
htm: "text/html",
|
|
176
|
+
xml: "application/xml",
|
|
177
|
+
json: "application/json",
|
|
178
|
+
// Images
|
|
179
|
+
png: "image/png",
|
|
180
|
+
jpg: "image/jpeg",
|
|
181
|
+
jpeg: "image/jpeg",
|
|
182
|
+
gif: "image/gif",
|
|
183
|
+
webp: "image/webp",
|
|
184
|
+
svg: "image/svg+xml",
|
|
185
|
+
ico: "image/x-icon",
|
|
186
|
+
avif: "image/avif",
|
|
187
|
+
// Archives
|
|
188
|
+
zip: "application/zip",
|
|
189
|
+
gz: "application/gzip",
|
|
190
|
+
tar: "application/x-tar",
|
|
191
|
+
// Audio / Video
|
|
192
|
+
mp3: "audio/mpeg",
|
|
193
|
+
mp4: "video/mp4",
|
|
194
|
+
webm: "video/webm",
|
|
195
|
+
// Fonts
|
|
196
|
+
woff: "font/woff",
|
|
197
|
+
woff2: "font/woff2",
|
|
198
|
+
ttf: "font/ttf",
|
|
199
|
+
};
|
|
200
|
+
return mimeTypes[ext] ?? "application/octet-stream";
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,iFAAiF;AAEjF;;;;;;;GAOG;AACH,MAAM,OAAO,QAAQ;IACV,IAAI,CAAS;IACb,QAAQ,CAAS;IACjB,WAAW,CAAS;IAE7B,YACE,IAAkC,EAClC,OAaC;QAED,qCAAqC;QACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChF,CAAC;CACF;AAED,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,GAAmB;IAEnB,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO;IAE5B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,QAAQ,CAAC,WAAW;QACpC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;QACtC,qBAAqB,EAAE,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjE,yCAAyC;QACzC,eAAe,EAAE,UAAU;QAC3B,QAAQ,EAAE,UAAU;KACrB,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAkB,EAClB,gBAAgB,GAAG,UAAU;IAE7B,8DAA8D;IAC9D,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC;IAEnE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QACb,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEV,8DAA8D;QAC9D,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,QAAQ,CAAC;AACnC,CAAC;AAED,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,oDAAoD;IACpD,MAAM,IAAI,GAAG,QAAQ;SAClB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,IAAI,EAAE,CAAC;IAEV,kCAAkC;IAClC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,OAAO,EAAE,CAAC;QACZ,0EAA0E;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,yBAAyB,OAAO,GAAG,CAAC;IAC7C,CAAC;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzC,8CAA8C;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE7D,OAAO,yBAAyB,YAAY,uBAAuB,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,oCAAoC;IACpC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACrE,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/D,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAE1D,MAAM,SAAS,GAA2B;QACxC,YAAY;QACZ,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,yEAAyE;QAC/E,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,mEAAmE;QACzE,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,2EAA2E;QACjF,OAAO;QACP,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,kBAAkB;QACxB,SAAS;QACT,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,YAAY;QAClB,WAAW;QACX,GAAG,EAAE,iBAAiB;QACtB,EAAE,EAAE,kBAAkB;QACtB,GAAG,EAAE,mBAAmB;QACxB,gBAAgB;QAChB,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,YAAY;QAClB,QAAQ;QACR,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,UAAU;KAChB,CAAC;IAEF,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mates-fullstack — env-loader.ts
|
|
3
|
+
*
|
|
4
|
+
* Loads .env files into process.env at startup.
|
|
5
|
+
* No external dependencies — pure Node.js fs + path.
|
|
6
|
+
*
|
|
7
|
+
* Loading order (later overrides earlier):
|
|
8
|
+
* 1. .env
|
|
9
|
+
* 2. .env.local
|
|
10
|
+
* 3. .env.{mode} (e.g. .env.production)
|
|
11
|
+
* 4. .env.{mode}.local (e.g. .env.production.local)
|
|
12
|
+
* 5. Existing process.env (always wins — platform/CI vars take precedence)
|
|
13
|
+
*
|
|
14
|
+
* MATES_PUBLIC_ prefix:
|
|
15
|
+
* Variables prefixed with MATES_PUBLIC_ are safe to expose to the
|
|
16
|
+
* browser bundle. All other variables stay server-only.
|
|
17
|
+
* The build plugin uses getPublicEnv() to inject them as
|
|
18
|
+
* import.meta.env.MATES_PUBLIC_* in the client bundle.
|
|
19
|
+
*
|
|
20
|
+
* Parsing rules:
|
|
21
|
+
* - Lines starting with # are comments
|
|
22
|
+
* - Empty lines are skipped
|
|
23
|
+
* - KEY=VALUE (split on first = only)
|
|
24
|
+
* - Quoted values: KEY="value with spaces" → strips quotes
|
|
25
|
+
* - Existing process.env values are never overwritten
|
|
26
|
+
* - Invalid lines (no =) are skipped with a warning
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Load .env files for the given mode into process.env.
|
|
30
|
+
* Call once at startup before anything reads process.env.
|
|
31
|
+
*
|
|
32
|
+
* Order: .env (base, lowest priority), .env.local, .env.{mode}, .env.{mode}.local (highest priority).
|
|
33
|
+
* Later files override earlier files. Original platform/CI env vars always win.
|
|
34
|
+
*
|
|
35
|
+
* @param projectRoot - Absolute path to the project root.
|
|
36
|
+
* @param mode - "development" or "production".
|
|
37
|
+
*/
|
|
38
|
+
export declare function loadEnv(projectRoot: string, mode: "development" | "production"): void;
|
|
39
|
+
/**
|
|
40
|
+
* Returns only the MATES_PUBLIC_ prefixed variables from process.env.
|
|
41
|
+
* These are safe to inject into the client bundle.
|
|
42
|
+
*
|
|
43
|
+
* Keys are returned as-is (with the MATES_PUBLIC_ prefix).
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // .env
|
|
47
|
+
* MATES_PUBLIC_STRIPE_KEY=pk_live_...
|
|
48
|
+
* DATABASE_URL=postgres://... ← not included
|
|
49
|
+
*
|
|
50
|
+
* getPublicEnv()
|
|
51
|
+
* // { MATES_PUBLIC_STRIPE_KEY: "pk_live_..." }
|
|
52
|
+
*/
|
|
53
|
+
export declare function getPublicEnv(): Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* Returns a define map for the bundler (esbuild/rolldown).
|
|
56
|
+
* Maps import.meta.env.MATES_PUBLIC_* to the actual values.
|
|
57
|
+
*
|
|
58
|
+
* Only MATES_PUBLIC_ variables are included — other env vars
|
|
59
|
+
* are never injected into the client bundle.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* // Returns:
|
|
63
|
+
* {
|
|
64
|
+
* "import.meta.env.MATES_PUBLIC_STRIPE_KEY": '"pk_live_..."',
|
|
65
|
+
* "import.meta.env.NODE_ENV": '"development"',
|
|
66
|
+
* }
|
|
67
|
+
*/
|
|
68
|
+
export declare function getBundlerDefines(mode: "development" | "production"): Record<string, string>;
|
|
69
|
+
/**
|
|
70
|
+
* Parse a .env file string into a key-value map.
|
|
71
|
+
* Exported for testing.
|
|
72
|
+
*
|
|
73
|
+
* Does NOT modify process.env — use loadEnv() for that.
|
|
74
|
+
*/
|
|
75
|
+
export declare function parseEnvFile(content: string): Record<string, string>;
|
|
76
|
+
//# sourceMappingURL=env-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-loader.d.ts","sourceRoot":"","sources":["../src/env-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAAG,YAAY,GACjC,IAAI,CAUN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,GAAG,YAAY,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoDpE"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mates-fullstack — env-loader.ts
|
|
3
|
+
*
|
|
4
|
+
* Loads .env files into process.env at startup.
|
|
5
|
+
* No external dependencies — pure Node.js fs + path.
|
|
6
|
+
*
|
|
7
|
+
* Loading order (later overrides earlier):
|
|
8
|
+
* 1. .env
|
|
9
|
+
* 2. .env.local
|
|
10
|
+
* 3. .env.{mode} (e.g. .env.production)
|
|
11
|
+
* 4. .env.{mode}.local (e.g. .env.production.local)
|
|
12
|
+
* 5. Existing process.env (always wins — platform/CI vars take precedence)
|
|
13
|
+
*
|
|
14
|
+
* MATES_PUBLIC_ prefix:
|
|
15
|
+
* Variables prefixed with MATES_PUBLIC_ are safe to expose to the
|
|
16
|
+
* browser bundle. All other variables stay server-only.
|
|
17
|
+
* The build plugin uses getPublicEnv() to inject them as
|
|
18
|
+
* import.meta.env.MATES_PUBLIC_* in the client bundle.
|
|
19
|
+
*
|
|
20
|
+
* Parsing rules:
|
|
21
|
+
* - Lines starting with # are comments
|
|
22
|
+
* - Empty lines are skipped
|
|
23
|
+
* - KEY=VALUE (split on first = only)
|
|
24
|
+
* - Quoted values: KEY="value with spaces" → strips quotes
|
|
25
|
+
* - Existing process.env values are never overwritten
|
|
26
|
+
* - Invalid lines (no =) are skipped with a warning
|
|
27
|
+
*/
|
|
28
|
+
import fs from "node:fs";
|
|
29
|
+
import path from "node:path";
|
|
30
|
+
import { devWarn } from "./log.js";
|
|
31
|
+
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Load .env files for the given mode into process.env.
|
|
34
|
+
* Call once at startup before anything reads process.env.
|
|
35
|
+
*
|
|
36
|
+
* Order: .env (base, lowest priority), .env.local, .env.{mode}, .env.{mode}.local (highest priority).
|
|
37
|
+
* Later files override earlier files. Original platform/CI env vars always win.
|
|
38
|
+
*
|
|
39
|
+
* @param projectRoot - Absolute path to the project root.
|
|
40
|
+
* @param mode - "development" or "production".
|
|
41
|
+
*/
|
|
42
|
+
export function loadEnv(projectRoot, mode) {
|
|
43
|
+
// Snapshot original env vars so platform/CI values are never overwritten
|
|
44
|
+
const originalKeys = new Set(Object.keys(process.env));
|
|
45
|
+
const files = [".env", ".env.local", `.env.${mode}`, `.env.${mode}.local`];
|
|
46
|
+
for (const filename of files) {
|
|
47
|
+
const filePath = path.join(projectRoot, filename);
|
|
48
|
+
_loadEnvFile(filePath, originalKeys);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns only the MATES_PUBLIC_ prefixed variables from process.env.
|
|
53
|
+
* These are safe to inject into the client bundle.
|
|
54
|
+
*
|
|
55
|
+
* Keys are returned as-is (with the MATES_PUBLIC_ prefix).
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // .env
|
|
59
|
+
* MATES_PUBLIC_STRIPE_KEY=pk_live_...
|
|
60
|
+
* DATABASE_URL=postgres://... ← not included
|
|
61
|
+
*
|
|
62
|
+
* getPublicEnv()
|
|
63
|
+
* // { MATES_PUBLIC_STRIPE_KEY: "pk_live_..." }
|
|
64
|
+
*/
|
|
65
|
+
export function getPublicEnv() {
|
|
66
|
+
const result = {};
|
|
67
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
68
|
+
if (key.startsWith("MATES_PUBLIC_") && typeof value === "string") {
|
|
69
|
+
result[key] = value;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Returns a define map for the bundler (esbuild/rolldown).
|
|
76
|
+
* Maps import.meta.env.MATES_PUBLIC_* to the actual values.
|
|
77
|
+
*
|
|
78
|
+
* Only MATES_PUBLIC_ variables are included — other env vars
|
|
79
|
+
* are never injected into the client bundle.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* // Returns:
|
|
83
|
+
* {
|
|
84
|
+
* "import.meta.env.MATES_PUBLIC_STRIPE_KEY": '"pk_live_..."',
|
|
85
|
+
* "import.meta.env.NODE_ENV": '"development"',
|
|
86
|
+
* }
|
|
87
|
+
*/
|
|
88
|
+
export function getBundlerDefines(mode) {
|
|
89
|
+
const defines = {};
|
|
90
|
+
// Always inject NODE_ENV
|
|
91
|
+
defines["import.meta.env.NODE_ENV"] = JSON.stringify(mode);
|
|
92
|
+
defines["process.env.NODE_ENV"] = JSON.stringify(mode);
|
|
93
|
+
// Inject MATES_PUBLIC_ vars
|
|
94
|
+
for (const [key, value] of Object.entries(getPublicEnv())) {
|
|
95
|
+
defines[`import.meta.env.${key}`] = JSON.stringify(value);
|
|
96
|
+
}
|
|
97
|
+
return defines;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Parse a .env file string into a key-value map.
|
|
101
|
+
* Exported for testing.
|
|
102
|
+
*
|
|
103
|
+
* Does NOT modify process.env — use loadEnv() for that.
|
|
104
|
+
*/
|
|
105
|
+
export function parseEnvFile(content) {
|
|
106
|
+
const result = {};
|
|
107
|
+
const lines = content.split(/\r?\n/);
|
|
108
|
+
for (let i = 0; i < lines.length; i++) {
|
|
109
|
+
const line = lines[i].trim();
|
|
110
|
+
// Skip empty lines and comments
|
|
111
|
+
if (!line || line.startsWith("#"))
|
|
112
|
+
continue;
|
|
113
|
+
// Find the first = sign
|
|
114
|
+
const eqIndex = line.indexOf("=");
|
|
115
|
+
if (eqIndex === -1) {
|
|
116
|
+
// No = found — malformed line, skip with warning
|
|
117
|
+
devWarn(`.env line ${i + 1} has no "=" — skipped: ${line}`);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const key = line.slice(0, eqIndex).trim();
|
|
121
|
+
let value = line.slice(eqIndex + 1).trim();
|
|
122
|
+
// Skip empty keys
|
|
123
|
+
if (!key)
|
|
124
|
+
continue;
|
|
125
|
+
// Validate key — must be a valid env var name
|
|
126
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
|
|
127
|
+
devWarn(`.env line ${i + 1} has invalid key "${key}" — skipped`);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
// Strip inline comments — only strip if # is preceded by whitespace
|
|
131
|
+
// e.g. KEY=value # comment → "value"
|
|
132
|
+
// but KEY=value#nospace stays as "value#nospace"
|
|
133
|
+
const commentMatch = value.match(/^(.*?)\s+#.*$/);
|
|
134
|
+
if (commentMatch) {
|
|
135
|
+
value = commentMatch[1].trim();
|
|
136
|
+
}
|
|
137
|
+
// Handle quoted values
|
|
138
|
+
value = _stripQuotes(value);
|
|
139
|
+
// Handle escaped characters inside double-quoted strings
|
|
140
|
+
// \n → newline, \t → tab, \\ → backslash
|
|
141
|
+
if (_isDoubleQuoted(line.slice(eqIndex + 1).trim())) {
|
|
142
|
+
value = _unescapeDoubleQuoted(value);
|
|
143
|
+
}
|
|
144
|
+
result[key] = value;
|
|
145
|
+
}
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
// ─── Internal helpers ─────────────────────────────────────────────────────────
|
|
149
|
+
/**
|
|
150
|
+
* Load a single .env file into process.env.
|
|
151
|
+
* Silently skips if the file does not exist.
|
|
152
|
+
* Later .env files can override earlier ones, but original platform/CI env vars always win.
|
|
153
|
+
*/
|
|
154
|
+
function _loadEnvFile(filePath, originalKeys) {
|
|
155
|
+
let content;
|
|
156
|
+
try {
|
|
157
|
+
content = fs.readFileSync(filePath, "utf-8");
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
// ENOENT → file doesn't exist, skip silently
|
|
161
|
+
if (err.code === "ENOENT")
|
|
162
|
+
return;
|
|
163
|
+
// Other read errors → warn but don't crash
|
|
164
|
+
devWarn(`could not read ${filePath}: ${err.message}`);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const parsed = parseEnvFile(content);
|
|
168
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
169
|
+
// Original platform/CI env vars always win — never overwrite
|
|
170
|
+
if (originalKeys?.has(key))
|
|
171
|
+
continue;
|
|
172
|
+
// For other keys, later files override earlier ones
|
|
173
|
+
process.env[key] = value;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Strip surrounding single or double quotes from a value string.
|
|
178
|
+
* Handles:
|
|
179
|
+
* "hello world" → hello world
|
|
180
|
+
* 'hello world' → hello world
|
|
181
|
+
* "it's fine" → it's fine
|
|
182
|
+
* unquoted → unquoted (unchanged)
|
|
183
|
+
*/
|
|
184
|
+
function _stripQuotes(value) {
|
|
185
|
+
if (value.length < 2)
|
|
186
|
+
return value;
|
|
187
|
+
const first = value[0];
|
|
188
|
+
const last = value[value.length - 1];
|
|
189
|
+
if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
|
|
190
|
+
return value.slice(1, -1);
|
|
191
|
+
}
|
|
192
|
+
return value;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Returns true if the raw value string (before stripping quotes) is double-quoted.
|
|
196
|
+
* Used to decide whether to unescape \n, \t etc.
|
|
197
|
+
*/
|
|
198
|
+
function _isDoubleQuoted(rawValue) {
|
|
199
|
+
return (rawValue.length >= 2 && rawValue.startsWith('"') && rawValue.endsWith('"'));
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Process escape sequences inside a double-quoted .env value.
|
|
203
|
+
* Only handles common cases: \n, \r, \t, \\, \".
|
|
204
|
+
*/
|
|
205
|
+
function _unescapeDoubleQuoted(value) {
|
|
206
|
+
return value
|
|
207
|
+
.replace(/\\n/g, "\n")
|
|
208
|
+
.replace(/\\r/g, "\r")
|
|
209
|
+
.replace(/\\t/g, "\t")
|
|
210
|
+
.replace(/\\"/g, '"')
|
|
211
|
+
.replace(/\\\\/g, "\\");
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=env-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-loader.js","sourceRoot":"","sources":["../src/env-loader.ts"],"names":[],"mappings":"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"}
|