@zipadee/javascript 0.0.13 → 0.0.15
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/index.d.ts +1 -1
- package/index.js +1 -1
- package/lib/serve.d.ts +27 -27
- package/lib/serve.d.ts.map +1 -1
- package/lib/serve.js +26 -32
- package/lib/serve.js.map +1 -1
- package/package.json +5 -5
package/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './lib/serve.js';
|
|
2
|
-
//# sourceMappingURL=index.d.ts.map
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './lib/serve.js';
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/lib/serve.d.ts
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import {type Middleware} from '@zipadee/core';
|
|
1
|
+
import { type Middleware } from '@zipadee/core';
|
|
2
2
|
export interface Options {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Root directory to restrict file access. Defaults to the current working
|
|
5
|
+
* directory.
|
|
6
|
+
*/
|
|
7
|
+
root?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Base path to resolve imports from. Defaults to the current working
|
|
10
|
+
* directory.
|
|
11
|
+
*/
|
|
12
|
+
base?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Imports resolved to outside of the base path will be prefixed with this
|
|
15
|
+
* string. Defaults to `/__root__`.
|
|
16
|
+
*/
|
|
17
|
+
rootPathPrefix?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Array of file extensions to transform. Defaults to `['.js', '.mjs']`.
|
|
20
|
+
*
|
|
21
|
+
* Other extensions are served as plain files.
|
|
22
|
+
*/
|
|
23
|
+
extensions?: Array<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Array of import conditions to support. Defaults to `['browser', 'import']`.
|
|
26
|
+
*/
|
|
27
|
+
conditions?: Array<string>;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Serve static JavaScript files from a `root` directory.
|
|
31
31
|
*/
|
|
32
32
|
export declare const serve: (opts: Options) => Middleware;
|
|
33
|
-
//# sourceMappingURL=serve.d.ts.map
|
|
33
|
+
//# sourceMappingURL=serve.d.ts.map
|
package/lib/serve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/lib/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/lib/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;AAmBzD,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5B;AAYD;;GAEG;AACH,eAAO,MAAM,KAAK,SAAU,OAAO,KAAG,UAgJrC,CAAC"}
|
package/lib/serve.js
CHANGED
|
@@ -4,7 +4,10 @@ import { send } from '@zipadee/static';
|
|
|
4
4
|
import fs from 'node:fs/promises';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { parse, init } from 'es-module-lexer';
|
|
7
|
-
import {
|
|
7
|
+
// import {moduleResolve, type ErrnoException} from 'import-meta-resolve';
|
|
8
|
+
import resolve from 'enhanced-resolve';
|
|
9
|
+
import baseFS from 'fs';
|
|
10
|
+
const { CachedInputFileSystem, ResolverFactory } = resolve;
|
|
8
11
|
await init;
|
|
9
12
|
// TODO:
|
|
10
13
|
// - Add caching for both specifier resolution and files
|
|
@@ -24,7 +27,14 @@ export const serve = (opts) => {
|
|
|
24
27
|
const rootPathPrefix = opts.rootPathPrefix ?? '/__root__';
|
|
25
28
|
const extensions = opts.extensions ?? ['.js', '.mjs'];
|
|
26
29
|
const conditionsArray = opts.conditions ?? ['browser', 'import'];
|
|
27
|
-
const conditions = new Set(conditionsArray);
|
|
30
|
+
// const conditions = new Set(conditionsArray);
|
|
31
|
+
const resolver = ResolverFactory.createResolver({
|
|
32
|
+
fileSystem: new CachedInputFileSystem(baseFS, 4000),
|
|
33
|
+
roots: [root, base],
|
|
34
|
+
extensions: ['.js', '.json'],
|
|
35
|
+
conditionNames: conditionsArray,
|
|
36
|
+
mainFields: ['module', 'browser', 'main'],
|
|
37
|
+
});
|
|
28
38
|
return async (req, res, next) => {
|
|
29
39
|
if (!(req.method === 'HEAD' || req.method === 'GET')) {
|
|
30
40
|
// TODO: implement HEAD?
|
|
@@ -88,7 +98,20 @@ export const serve = (opts) => {
|
|
|
88
98
|
// base path
|
|
89
99
|
importSpecifier = path.join(base, importSpecifier);
|
|
90
100
|
}
|
|
91
|
-
const
|
|
101
|
+
const resolveFromPath = path.dirname(filePath);
|
|
102
|
+
const resolvedImportURL = await new Promise((res, rej) => {
|
|
103
|
+
resolver.resolve({}, resolveFromPath, importSpecifier, {}, (err, result) => {
|
|
104
|
+
if (err) {
|
|
105
|
+
rej(err);
|
|
106
|
+
}
|
|
107
|
+
else if (result === undefined || result === false) {
|
|
108
|
+
rej(new Error('Could not resolve import'));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
res(new URL(result, fileURL));
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
92
115
|
const resolvedImportPath = resolvedImportURL.pathname;
|
|
93
116
|
if (!resolvedImportPath.startsWith(root)) {
|
|
94
117
|
throw new HttpError(500);
|
|
@@ -114,33 +137,4 @@ export const serve = (opts) => {
|
|
|
114
137
|
res.body = output + source.substring(lastIndex);
|
|
115
138
|
};
|
|
116
139
|
};
|
|
117
|
-
/**
|
|
118
|
-
* Tries to resolve an import specifier with moduleResolve().
|
|
119
|
-
*
|
|
120
|
-
* When `tryExtensions` is true, if resolution fails and the specifier has no
|
|
121
|
-
* extension, it will try again with a '.js' extension.
|
|
122
|
-
*
|
|
123
|
-
* @param importSpecifier
|
|
124
|
-
* @param fileURL
|
|
125
|
-
* @param conditions
|
|
126
|
-
* @returns
|
|
127
|
-
*/
|
|
128
|
-
const resolveImport = (importSpecifier, fileURL, conditions, tryExtensions = false) => {
|
|
129
|
-
try {
|
|
130
|
-
return moduleResolve(importSpecifier, fileURL, conditions);
|
|
131
|
-
}
|
|
132
|
-
catch (e) {
|
|
133
|
-
if (tryExtensions &&
|
|
134
|
-
e.code === 'ERR_MODULE_NOT_FOUND' &&
|
|
135
|
-
path.extname(importSpecifier) === '') {
|
|
136
|
-
try {
|
|
137
|
-
return moduleResolve(importSpecifier + '.js', fileURL, conditions);
|
|
138
|
-
}
|
|
139
|
-
catch (innerError) {
|
|
140
|
-
throw e;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
throw e;
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
140
|
//# sourceMappingURL=serve.js.map
|
package/lib/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/lib/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAkB,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,IAAI,GACL,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/lib/serve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zipadee/javascript",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@zipadee/core": "^0.0.
|
|
60
|
-
"@zipadee/static": "^0.0.
|
|
61
|
-
"
|
|
62
|
-
"
|
|
59
|
+
"@zipadee/core": "^0.0.15",
|
|
60
|
+
"@zipadee/static": "^0.0.15",
|
|
61
|
+
"enhanced-resolve": "^5.17.1",
|
|
62
|
+
"es-module-lexer": "^1.5.4"
|
|
63
63
|
}
|
|
64
64
|
}
|