@zipadee/javascript 0.0.7 → 0.0.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/lib/serve.d.ts +8 -2
- package/lib/serve.d.ts.map +1 -1
- package/lib/serve.js +11 -6
- package/lib/serve.js.map +1 -1
- package/package.json +3 -3
package/lib/serve.d.ts
CHANGED
|
@@ -16,9 +16,15 @@ export interface Options {
|
|
|
16
16
|
*/
|
|
17
17
|
rootPathPrefix?: string;
|
|
18
18
|
/**
|
|
19
|
-
* Array of file extensions to
|
|
19
|
+
* Array of file extensions to transform. Defaults to `['.js', '.mjs']`.
|
|
20
|
+
*
|
|
21
|
+
* Other extensions are served as plain files.
|
|
20
22
|
*/
|
|
21
|
-
extensions?: string
|
|
23
|
+
extensions?: Array<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Array of import conditions to support. Defaults to `['browser', 'import']`.
|
|
26
|
+
*/
|
|
27
|
+
conditions?: Array<string>;
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
24
30
|
* Serve static JavaScript files from a `root` directory.
|
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;AAezD,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,UAyGrC,CAAC"}
|
package/lib/serve.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HttpError } from '@zipadee/core';
|
|
2
2
|
import { decodePath, pathIsHidden, resolvePath, stat, } from '@zipadee/static/lib/utils.js';
|
|
3
|
+
import { send } from '@zipadee/static';
|
|
3
4
|
import fs from 'node:fs/promises';
|
|
4
5
|
import path from 'node:path';
|
|
5
6
|
import { parse, init } from 'es-module-lexer';
|
|
@@ -22,6 +23,8 @@ export const serve = (opts) => {
|
|
|
22
23
|
const base = opts.base === undefined ? root : resolvePath(root, opts.base);
|
|
23
24
|
const rootPathPrefix = opts.rootPathPrefix ?? '/__root__';
|
|
24
25
|
const extensions = opts.extensions ?? ['.js', '.mjs'];
|
|
26
|
+
const conditionsArray = opts.conditions ?? ['browser', 'import'];
|
|
27
|
+
const conditions = new Set(conditionsArray);
|
|
25
28
|
return async (req, res, next) => {
|
|
26
29
|
if (!(req.method === 'HEAD' || req.method === 'GET')) {
|
|
27
30
|
// TODO: implement HEAD?
|
|
@@ -30,10 +33,7 @@ export const serve = (opts) => {
|
|
|
30
33
|
let filePath = decodePath(req.path);
|
|
31
34
|
const mountedPath = req.url.pathname.substring(0, req.url.pathname.length - filePath.length);
|
|
32
35
|
const parsedPath = path.parse(filePath);
|
|
33
|
-
|
|
34
|
-
if (!extensions.includes(parsedPath.ext)) {
|
|
35
|
-
return await next();
|
|
36
|
-
}
|
|
36
|
+
const transform = extensions.includes(parsedPath.ext);
|
|
37
37
|
if (filePath.startsWith(rootPathPrefix)) {
|
|
38
38
|
filePath = filePath.substring(rootPathPrefix.length);
|
|
39
39
|
filePath = filePath.slice(parsedPath.root.length);
|
|
@@ -43,13 +43,18 @@ export const serve = (opts) => {
|
|
|
43
43
|
filePath = filePath.slice(parsedPath.root.length);
|
|
44
44
|
filePath = resolvePath(base, filePath);
|
|
45
45
|
}
|
|
46
|
-
if (pathIsHidden(
|
|
46
|
+
if (pathIsHidden(root, filePath)) {
|
|
47
47
|
return await next();
|
|
48
48
|
}
|
|
49
49
|
const stats = await stat(filePath);
|
|
50
50
|
if (stats.isDirectory()) {
|
|
51
51
|
return await next();
|
|
52
52
|
}
|
|
53
|
+
if (!transform) {
|
|
54
|
+
const relativePath = path.relative(root, filePath);
|
|
55
|
+
await send(req, res, relativePath, { root });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
53
58
|
const source = await fs.readFile(filePath, 'utf8');
|
|
54
59
|
const [imports, _exports, _facade, _hasModuleSyntax] = parse(source, filePath);
|
|
55
60
|
let output = '';
|
|
@@ -67,7 +72,7 @@ export const serve = (opts) => {
|
|
|
67
72
|
continue;
|
|
68
73
|
}
|
|
69
74
|
const fileURL = new URL(filePath, 'file://');
|
|
70
|
-
const resolvedImportURL = moduleResolve(importSpecifier, fileURL);
|
|
75
|
+
const resolvedImportURL = moduleResolve(importSpecifier, fileURL, conditions);
|
|
71
76
|
const resolvedImportPath = resolvedImportURL.pathname;
|
|
72
77
|
if (!resolvedImportPath.startsWith(root)) {
|
|
73
78
|
throw new HttpError(500);
|
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,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAElD,MAAM,IAAI,CAAC;
|
|
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.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@zipadee/core": "^0.0.
|
|
60
|
-
"@zipadee/static": "^0.0.
|
|
59
|
+
"@zipadee/core": "^0.0.9",
|
|
60
|
+
"@zipadee/static": "^0.0.9",
|
|
61
61
|
"import-meta-resolve": "^4.1.0"
|
|
62
62
|
}
|
|
63
63
|
}
|