almostnode 0.2.8 → 0.2.9
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 +3 -1
- package/dist/CNAME +1 -0
- package/dist/assets/{runtime-worker-D8VYeuKv.js → runtime-worker-ujGAG2t7.js} +129 -6
- package/dist/assets/runtime-worker-ujGAG2t7.js.map +1 -0
- package/dist/index.cjs +125 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +130 -7
- package/dist/index.mjs.map +1 -1
- package/dist/og-image.png +0 -0
- package/dist/runtime.d.ts +6 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/shims/http.d.ts.map +1 -1
- package/dist/shims/ws.d.ts.map +1 -1
- package/dist/types/package-json.d.ts +1 -0
- package/dist/types/package-json.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/runtime.ts +177 -10
- package/src/shims/http.ts +4 -1
- package/src/shims/ws.ts +5 -2
- package/src/types/package-json.ts +1 -0
- package/dist/assets/runtime-worker-D8VYeuKv.js.map +0 -1
|
Binary file
|
package/dist/runtime.d.ts
CHANGED
|
@@ -43,6 +43,12 @@ export declare class Runtime {
|
|
|
43
43
|
* Set up a polyfilled TextDecoder that handles binary encodings
|
|
44
44
|
*/
|
|
45
45
|
private setupTextDecoderPolyfill;
|
|
46
|
+
/**
|
|
47
|
+
* Polyfill V8's Error.captureStackTrace and Error.prepareStackTrace for Safari/WebKit.
|
|
48
|
+
* Express's `depd` and other npm packages use these V8-specific APIs which don't
|
|
49
|
+
* exist in Safari, causing "callSite.getFileName is not a function" errors.
|
|
50
|
+
*/
|
|
51
|
+
private setupStackTracePolyfill;
|
|
46
52
|
/**
|
|
47
53
|
* Execute code as a module (synchronous - backward compatible)
|
|
48
54
|
*/
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAY,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AAMrF,OAAO,EAAiB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAqLzD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACtB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/shims/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/shims/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAsB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,MAAM,EAAuB,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/shims/http.ts"],"names":[],"mappings":"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"}
|
package/dist/shims/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/shims/ws.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoCxC,qBAAa,SAAU,SAAQ,YAAY;IACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK;IACzB,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK;IAE3B,QAAQ,CAAC,UAAU,KAAwB;IAC3C,QAAQ,CAAC,IAAI,KAAkB;IAC/B,QAAQ,CAAC,OAAO,KAAqB;IACrC,QAAQ,CAAC,MAAM,KAAoB;IAEnC,UAAU,EAAE,MAAM,CAAwB;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,EAAE,MAAM,CAAM;IACxB,cAAc,EAAE,MAAM,CAAK;IAC3B,UAAU,EAAE,MAAM,GAAG,aAAa,CAAU;IAE5C,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAqC;IAGtD,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IACrD,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAChD,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;gBAE7C,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAatD,OAAO,CAAC,QAAQ;IAuFhB,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/shims/ws.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoCxC,qBAAa,SAAU,SAAQ,YAAY;IACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK;IACzB,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK;IAE3B,QAAQ,CAAC,UAAU,KAAwB;IAC3C,QAAQ,CAAC,IAAI,KAAkB;IAC/B,QAAQ,CAAC,OAAO,KAAqB;IACrC,QAAQ,CAAC,MAAM,KAAoB;IAEnC,UAAU,EAAE,MAAM,CAAwB;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,EAAE,MAAM,CAAM;IACxB,cAAc,EAAE,MAAM,CAAK;IAC3B,UAAU,EAAE,MAAM,GAAG,aAAa,CAAU;IAE5C,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAqC;IAGtD,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IACrD,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAChD,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;gBAE7C,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAatD,OAAO,CAAC,QAAQ;IAuFhB,OAAO,CAAC,cAAc;IA6DtB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI;IA4BnD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAmC3C,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAIZ,SAAS,IAAI,IAAI;IAgBjB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIzC,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;CAKrC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAa;IACpC,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,eAAe,CAAgD;gBAE3D,OAAO,GAAE,aAAkB;IAcvC,OAAO,CAAC,cAAc;IAgDtB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAM5D,aAAa,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAClD,IAAI;IAgBP,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAuBlC,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAQpE;AAGD,eAAe,SAAS,CAAC;AACzB,eAAO,MAAM,MAAM,wBAAkB,CAAC;AAGtC,eAAO,MAAM,qBAAqB,aAEjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/types/package-json.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/types/package-json.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
package/package.json
CHANGED
package/src/runtime.ts
CHANGED
|
@@ -457,16 +457,26 @@ function createRequire(
|
|
|
457
457
|
return null;
|
|
458
458
|
};
|
|
459
459
|
|
|
460
|
+
// Apply browser field object remapping for a resolved file within a package
|
|
461
|
+
const applyBrowserFieldRemap = (resolvedPath: string, pkg: PackageJson, pkgRoot: string): string | null => {
|
|
462
|
+
if (!pkg.browser || typeof pkg.browser !== 'object') return resolvedPath;
|
|
463
|
+
const browserMap = pkg.browser as Record<string, string | false>;
|
|
464
|
+
// Build relative path from package root (e.g., "./lib/node.js")
|
|
465
|
+
const relPath = './' + pathShim.relative(pkgRoot, resolvedPath);
|
|
466
|
+
// Also check without extension for common patterns
|
|
467
|
+
const relPathNoExt = relPath.replace(/\.(js|json|cjs|mjs)$/, '');
|
|
468
|
+
for (const key of [relPath, relPathNoExt]) {
|
|
469
|
+
if (key in browserMap) {
|
|
470
|
+
if (browserMap[key] === false) return null; // Module excluded in browser
|
|
471
|
+
return tryResolveFile(pathShim.join(pkgRoot, browserMap[key] as string));
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return resolvedPath;
|
|
475
|
+
};
|
|
476
|
+
|
|
460
477
|
// Helper to resolve from a node_modules directory
|
|
461
478
|
const tryResolveFromNodeModules = (nodeModulesDir: string, moduleId: string): string | null => {
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
// Check if path exists (as file or directory)
|
|
465
|
-
const resolved = tryResolveFile(fullPath);
|
|
466
|
-
if (resolved) return resolved;
|
|
467
|
-
|
|
468
|
-
// Check if this is a package (has package.json)
|
|
469
|
-
// For sub-paths like "pkg/sub", we need to find the package root first
|
|
479
|
+
// Determine the package name and root
|
|
470
480
|
const parts = moduleId.split('/');
|
|
471
481
|
const pkgName = parts[0].startsWith('@') && parts.length > 1
|
|
472
482
|
? `${parts[0]}/${parts[1]}` // Scoped package
|
|
@@ -475,6 +485,7 @@ function createRequire(
|
|
|
475
485
|
const pkgRoot = pathShim.join(nodeModulesDir, pkgName);
|
|
476
486
|
const pkgPath = pathShim.join(pkgRoot, 'package.json');
|
|
477
487
|
|
|
488
|
+
// Check package.json first — it controls entry points (browser, main, exports)
|
|
478
489
|
const pkg = getParsedPackageJson(pkgPath);
|
|
479
490
|
if (pkg) {
|
|
480
491
|
// Use resolve.exports to handle the exports field
|
|
@@ -494,15 +505,27 @@ function createRequire(
|
|
|
494
505
|
}
|
|
495
506
|
}
|
|
496
507
|
|
|
497
|
-
// If this is the package root (no sub-path), use main entry
|
|
508
|
+
// If this is the package root (no sub-path), use browser/main entry
|
|
498
509
|
if (pkgName === moduleId) {
|
|
499
|
-
|
|
510
|
+
// Prefer browser field (string form) since we're running in a browser
|
|
511
|
+
let main: string | undefined;
|
|
512
|
+
if (typeof pkg.browser === 'string') {
|
|
513
|
+
main = pkg.browser;
|
|
514
|
+
}
|
|
515
|
+
if (!main) {
|
|
516
|
+
main = pkg.main || 'index.js';
|
|
517
|
+
}
|
|
500
518
|
const mainPath = pathShim.join(pkgRoot, main);
|
|
501
519
|
const resolvedMain = tryResolveFile(mainPath);
|
|
502
520
|
if (resolvedMain) return resolvedMain;
|
|
503
521
|
}
|
|
504
522
|
}
|
|
505
523
|
|
|
524
|
+
// Fall back to direct file/directory resolution (for sub-paths or packages without package.json)
|
|
525
|
+
const fullPath = pathShim.join(nodeModulesDir, moduleId);
|
|
526
|
+
const resolved = tryResolveFile(fullPath);
|
|
527
|
+
if (resolved) return resolved;
|
|
528
|
+
|
|
506
529
|
return null;
|
|
507
530
|
};
|
|
508
531
|
|
|
@@ -866,6 +889,10 @@ export class Runtime {
|
|
|
866
889
|
// Initialize esbuild shim with VFS for file access
|
|
867
890
|
esbuildShim.setVFS(vfs);
|
|
868
891
|
|
|
892
|
+
// Polyfill Error.captureStackTrace/prepareStackTrace for Safari/WebKit
|
|
893
|
+
// (V8-specific API used by Express's depd and other npm packages)
|
|
894
|
+
this.setupStackTracePolyfill();
|
|
895
|
+
|
|
869
896
|
// Polyfill TextDecoder to handle base64/base64url/hex gracefully
|
|
870
897
|
// (Some CLI tools incorrectly try to use TextDecoder for these)
|
|
871
898
|
this.setupTextDecoderPolyfill();
|
|
@@ -941,6 +968,146 @@ export class Runtime {
|
|
|
941
968
|
globalThis.TextDecoder = PolyfillTextDecoder as unknown as typeof TextDecoder;
|
|
942
969
|
}
|
|
943
970
|
|
|
971
|
+
/**
|
|
972
|
+
* Polyfill V8's Error.captureStackTrace and Error.prepareStackTrace for Safari/WebKit.
|
|
973
|
+
* Express's `depd` and other npm packages use these V8-specific APIs which don't
|
|
974
|
+
* exist in Safari, causing "callSite.getFileName is not a function" errors.
|
|
975
|
+
*/
|
|
976
|
+
private setupStackTracePolyfill(): void {
|
|
977
|
+
// Only polyfill if not already available (i.e., not V8/Chrome)
|
|
978
|
+
if (typeof (Error as any).captureStackTrace === 'function') return;
|
|
979
|
+
|
|
980
|
+
// Set a default stackTraceLimit so Math.max(10, undefined) doesn't produce NaN
|
|
981
|
+
// (depd and other packages read this value)
|
|
982
|
+
if ((Error as any).stackTraceLimit === undefined) {
|
|
983
|
+
(Error as any).stackTraceLimit = 10;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
// Parse a stack trace string into structured frames
|
|
987
|
+
function parseStack(stack: string): Array<{fn: string, file: string, line: number, col: number}> {
|
|
988
|
+
if (!stack) return [];
|
|
989
|
+
const frames: Array<{fn: string, file: string, line: number, col: number}> = [];
|
|
990
|
+
const lines = stack.split('\n');
|
|
991
|
+
|
|
992
|
+
for (const raw of lines) {
|
|
993
|
+
const line = raw.trim();
|
|
994
|
+
if (!line || line.startsWith('Error') || line.startsWith('TypeError')) continue;
|
|
995
|
+
|
|
996
|
+
let fn = '', file = '', lineNo = 0, colNo = 0;
|
|
997
|
+
|
|
998
|
+
// Safari format: "functionName@file:line:col" or "@file:line:col"
|
|
999
|
+
const safariMatch = line.match(/^(.*)@(.*?):(\d+):(\d+)$/);
|
|
1000
|
+
if (safariMatch) {
|
|
1001
|
+
fn = safariMatch[1] || '';
|
|
1002
|
+
file = safariMatch[2];
|
|
1003
|
+
lineNo = parseInt(safariMatch[3], 10);
|
|
1004
|
+
colNo = parseInt(safariMatch[4], 10);
|
|
1005
|
+
frames.push({ fn, file, line: lineNo, col: colNo });
|
|
1006
|
+
continue;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
// Chrome format: "at functionName (file:line:col)" or "at file:line:col"
|
|
1010
|
+
const chromeMatch = line.match(/^at\s+(?:(.+?)\s+\()?(.*?):(\d+):(\d+)\)?$/);
|
|
1011
|
+
if (chromeMatch) {
|
|
1012
|
+
fn = chromeMatch[1] || '';
|
|
1013
|
+
file = chromeMatch[2];
|
|
1014
|
+
lineNo = parseInt(chromeMatch[3], 10);
|
|
1015
|
+
colNo = parseInt(chromeMatch[4], 10);
|
|
1016
|
+
frames.push({ fn, file, line: lineNo, col: colNo });
|
|
1017
|
+
continue;
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
return frames;
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
// Create a mock CallSite object from a parsed frame
|
|
1024
|
+
function createCallSite(frame: {fn: string, file: string, line: number, col: number}) {
|
|
1025
|
+
return {
|
|
1026
|
+
getFileName: () => frame.file || null,
|
|
1027
|
+
getLineNumber: () => frame.line || null,
|
|
1028
|
+
getColumnNumber: () => frame.col || null,
|
|
1029
|
+
getFunctionName: () => frame.fn || null,
|
|
1030
|
+
getMethodName: () => frame.fn || null,
|
|
1031
|
+
getTypeName: () => null,
|
|
1032
|
+
getThis: () => undefined,
|
|
1033
|
+
getFunction: () => undefined,
|
|
1034
|
+
getEvalOrigin: () => undefined,
|
|
1035
|
+
isNative: () => false,
|
|
1036
|
+
isConstructor: () => false,
|
|
1037
|
+
isToplevel: () => !frame.fn,
|
|
1038
|
+
isEval: () => false,
|
|
1039
|
+
toString: () => frame.fn
|
|
1040
|
+
? `${frame.fn} (${frame.file}:${frame.line}:${frame.col})`
|
|
1041
|
+
: `${frame.file}:${frame.line}:${frame.col}`,
|
|
1042
|
+
};
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// Helper: parse stack and create CallSite objects, used by both captureStackTrace and .stack getter
|
|
1046
|
+
function buildCallSites(stack: string, constructorOpt?: Function) {
|
|
1047
|
+
const frames = parseStack(stack);
|
|
1048
|
+
let startIdx = 0;
|
|
1049
|
+
if (constructorOpt && constructorOpt.name) {
|
|
1050
|
+
for (let i = 0; i < frames.length; i++) {
|
|
1051
|
+
if (frames[i].fn === constructorOpt.name) {
|
|
1052
|
+
startIdx = i + 1;
|
|
1053
|
+
break;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
return frames.slice(startIdx).map(createCallSite);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
// Symbol to store raw stack string, used by the .stack getter
|
|
1061
|
+
const stackSymbol = Symbol('rawStack');
|
|
1062
|
+
|
|
1063
|
+
// Intercept .stack on Error.prototype so that packages using the V8 pattern
|
|
1064
|
+
// "Error.prepareStackTrace = fn; new Error().stack" also get CallSite objects.
|
|
1065
|
+
// In V8, reading .stack lazily triggers prepareStackTrace; Safari doesn't do this.
|
|
1066
|
+
Object.defineProperty(Error.prototype, 'stack', {
|
|
1067
|
+
get() {
|
|
1068
|
+
const rawStack = (this as any)[stackSymbol];
|
|
1069
|
+
if (rawStack !== undefined && typeof (Error as any).prepareStackTrace === 'function') {
|
|
1070
|
+
const callSites = buildCallSites(rawStack);
|
|
1071
|
+
try {
|
|
1072
|
+
return (Error as any).prepareStackTrace(this, callSites);
|
|
1073
|
+
} catch {
|
|
1074
|
+
return rawStack;
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
return rawStack;
|
|
1078
|
+
},
|
|
1079
|
+
set(value: string) {
|
|
1080
|
+
(this as any)[stackSymbol] = value;
|
|
1081
|
+
},
|
|
1082
|
+
configurable: true,
|
|
1083
|
+
enumerable: false,
|
|
1084
|
+
});
|
|
1085
|
+
|
|
1086
|
+
// Polyfill Error.captureStackTrace
|
|
1087
|
+
(Error as any).captureStackTrace = function(target: any, constructorOpt?: Function) {
|
|
1088
|
+
// Temporarily clear prepareStackTrace to get the raw stack string
|
|
1089
|
+
// (otherwise our .stack getter would call prepareStackTrace recursively)
|
|
1090
|
+
const savedPrepare = (Error as any).prepareStackTrace;
|
|
1091
|
+
(Error as any).prepareStackTrace = undefined;
|
|
1092
|
+
const err = new Error();
|
|
1093
|
+
const rawStack = err.stack || '';
|
|
1094
|
+
(Error as any).prepareStackTrace = savedPrepare;
|
|
1095
|
+
|
|
1096
|
+
// If prepareStackTrace is set, provide structured call sites
|
|
1097
|
+
if (typeof savedPrepare === 'function') {
|
|
1098
|
+
const callSites = buildCallSites(rawStack, constructorOpt);
|
|
1099
|
+
try {
|
|
1100
|
+
target.stack = savedPrepare(target, callSites);
|
|
1101
|
+
} catch (e) {
|
|
1102
|
+
console.warn('[almostnode] Error.prepareStackTrace threw:', e);
|
|
1103
|
+
target.stack = rawStack;
|
|
1104
|
+
}
|
|
1105
|
+
} else {
|
|
1106
|
+
target.stack = rawStack;
|
|
1107
|
+
}
|
|
1108
|
+
};
|
|
1109
|
+
}
|
|
1110
|
+
|
|
944
1111
|
/**
|
|
945
1112
|
* Execute code as a module (synchronous - backward compatible)
|
|
946
1113
|
*/
|
package/src/shims/http.ts
CHANGED
|
@@ -11,8 +11,11 @@ import { createHash } from './crypto';
|
|
|
11
11
|
// Save the browser's native WebSocket at module load time, BEFORE any CLI bundle
|
|
12
12
|
// can overwrite it (e.g. Convex CLI does `globalThis.WebSocket = bundledWs`).
|
|
13
13
|
// This ensures our WebSocket bridge always uses the real browser implementation.
|
|
14
|
+
// Only capture in a real browser — Node.js 21+ has native WebSocket but it connects
|
|
15
|
+
// to real servers, which isn't what the shim needs.
|
|
16
|
+
const _isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
14
17
|
const _BrowserWebSocket: typeof globalThis.WebSocket | null =
|
|
15
|
-
typeof globalThis.WebSocket === 'function' ? globalThis.WebSocket : null;
|
|
18
|
+
_isBrowser && typeof globalThis.WebSocket === 'function' ? globalThis.WebSocket : null;
|
|
16
19
|
|
|
17
20
|
export type RequestListener = (req: IncomingMessage, res: ServerResponse) => void;
|
|
18
21
|
|
package/src/shims/ws.ts
CHANGED
|
@@ -168,8 +168,11 @@ export class WebSocket extends EventEmitter {
|
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
private _connectNative(): void {
|
|
171
|
-
// Check that the browser's native WebSocket is available and is not our own shim
|
|
172
|
-
|
|
171
|
+
// Check that the browser's native WebSocket is available and is not our own shim.
|
|
172
|
+
// Only use native WebSocket in a real browser — Node.js 21+ has native WebSocket
|
|
173
|
+
// but it connects to real servers, which breaks tests and isn't what the shim needs.
|
|
174
|
+
const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
175
|
+
const NativeWS = isBrowser && typeof globalThis.WebSocket === 'function' && globalThis.WebSocket !== (WebSocket as any)
|
|
173
176
|
? globalThis.WebSocket
|
|
174
177
|
: null;
|
|
175
178
|
|