@jsenv/plugin-commonjs 1.2.1 → 1.2.2
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/package.json +16 -5
- package/src/cjs_to_esm_raw.js +1 -1
- package/src/main.js +2 -0
- package/src/rollup_plugin_commonjs_named_exports.js +59 -56
- package/main.js +0 -2
- package/scripts/test.mjs +0 -14
- package/tests/cjs_cache/cjs_cache.manual_test.mjs +0 -17
- package/tests/cjs_cache/cjs_cache.test.mjs +0 -79
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js +0 -3
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/decompose.js +0 -405
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/decompose.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/escapeString.js +0 -28
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/global-value-path.js +0 -60
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/global-value-path.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/isComposite.js +0 -18
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/internal/sortRecipe.js +0 -76
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/uneval.js +0 -212
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/uneval.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/ast/src/html/html_src_set.js +0 -18
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/helpers/event_source/event_source.js +0 -197
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/autoreload_preference.js +0 -11
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/event_source_client.js +0 -195
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/event_source_client.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/reload.js +0 -106
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/reload.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/dev_sse/client/url_helpers.js +0 -20
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/error_in_document.js +0 -198
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/error_in_notification.js +0 -21
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/html_supervisor_installer.js +0 -256
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/html_supervisor_installer.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/html_supervisor_setup.js +0 -82
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/uneval_exception.js +0 -10
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/html_supervisor/client/uneval_exception.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/import_meta_hot/client/import_meta_hot.js +0 -82
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/file.cjs +0 -9
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/file.cjs.map +0 -12
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html +0 -16
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html@L10-L14.js +0 -5
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html@L3-L8.js +0 -7
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html@L3-L8.js.map +0 -12
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.js +0 -5
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.js.map +0 -9
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/__compile_context__.json +0 -3
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/file.development.cjs +0 -7
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/file.development.cjs__compile_info__.json +0 -17
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/file.development.map +0 -1
- package/tests/cjs_cache/client/dep.cjs +0 -1
- package/tests/cjs_cache/client/file.cjs +0 -1
- package/tests/cjs_cache/client/main.html +0 -17
- package/tests/cjs_cache/client/main.js +0 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/plugin-commonjs",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -11,22 +11,33 @@
|
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
13
|
"type": "module",
|
|
14
|
-
"
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"import": "./src/main.js"
|
|
17
|
+
},
|
|
18
|
+
"./*": "./*"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"/src/"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"test": "node --conditions=development ./scripts/test.mjs"
|
|
25
|
+
},
|
|
15
26
|
"dependencies": {
|
|
16
27
|
"@jsenv/filesystem": "4.1.9",
|
|
17
28
|
"@jsenv/log": "3.3.3",
|
|
18
29
|
"@jsenv/url-meta": "7.0.2",
|
|
19
30
|
"@jsenv/urls": "1.2.8",
|
|
20
|
-
"@rollup/plugin-commonjs": "24.0.
|
|
31
|
+
"@rollup/plugin-commonjs": "24.0.1",
|
|
21
32
|
"@rollup/plugin-json": "6.0.0",
|
|
22
33
|
"@rollup/plugin-node-resolve": "15.0.1",
|
|
23
34
|
"@rollup/plugin-replace": "5.0.2",
|
|
24
35
|
"cjs-module-lexer": "1.2.2",
|
|
25
36
|
"is-valid-identifier": "2.0.2",
|
|
26
37
|
"resolve": "1.22.1",
|
|
27
|
-
"rollup": "3.
|
|
38
|
+
"rollup": "3.10.1",
|
|
28
39
|
"rollup-plugin-node-globals": "1.4.0",
|
|
29
|
-
"rollup-plugin-polyfill-node": "0.
|
|
40
|
+
"rollup-plugin-polyfill-node": "0.12.0",
|
|
30
41
|
"vm2": "3.9.13"
|
|
31
42
|
},
|
|
32
43
|
"devDependencies": {
|
package/src/cjs_to_esm_raw.js
CHANGED
|
@@ -74,6 +74,7 @@ export const commonJsToJsModuleRaw = async ({
|
|
|
74
74
|
})
|
|
75
75
|
|
|
76
76
|
const { default: commonjs } = await import("@rollup/plugin-commonjs")
|
|
77
|
+
// https://github.com/rollup/plugins/tree/master/packages/commonjs
|
|
77
78
|
const commonJsRollupPlugin = commonjs({
|
|
78
79
|
extensions: [".js", ".cjs"],
|
|
79
80
|
// esmExternals: true,
|
|
@@ -89,7 +90,6 @@ export const commonJsToJsModuleRaw = async ({
|
|
|
89
90
|
const commonJsNamedExportsRollupPlugin = rollupPluginCommonJsNamedExports({
|
|
90
91
|
logger,
|
|
91
92
|
})
|
|
92
|
-
|
|
93
93
|
const { default: rollupPluginNodePolyfills } = await import(
|
|
94
94
|
"rollup-plugin-polyfill-node"
|
|
95
95
|
)
|
package/src/main.js
ADDED
|
@@ -2,63 +2,71 @@
|
|
|
2
2
|
|
|
3
3
|
import { readFileSync } from "node:fs"
|
|
4
4
|
import { fileURLToPath, pathToFileURL } from "node:url"
|
|
5
|
+
import path from "node:path"
|
|
5
6
|
import { VM as VM2 } from "vm2"
|
|
6
7
|
import resolve from "resolve"
|
|
7
8
|
import isValidIdentifier from "is-valid-identifier"
|
|
8
9
|
import { init, parse } from "cjs-module-lexer"
|
|
9
10
|
|
|
11
|
+
const importWrapper = {
|
|
12
|
+
wrap: (specifier) => {
|
|
13
|
+
return `cjs_scan:${specifier}`
|
|
14
|
+
},
|
|
15
|
+
unwrap: (specifier) => {
|
|
16
|
+
return specifier.slice("cjs_scan:".length)
|
|
17
|
+
},
|
|
18
|
+
isWrapped: (specifier) => {
|
|
19
|
+
return specifier.startsWith("cjs_scan:")
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
|
|
10
23
|
export const rollupPluginCommonJsNamedExports = ({ logger }) => {
|
|
11
|
-
const
|
|
12
|
-
const cjsScannedNamedExports = {}
|
|
24
|
+
const scanResults = {}
|
|
13
25
|
|
|
14
26
|
return {
|
|
27
|
+
name: "scan_cjs_named_exports",
|
|
15
28
|
async buildStart({ input }) {
|
|
16
29
|
await init()
|
|
17
|
-
|
|
18
30
|
Object.keys(input).forEach((key) => {
|
|
19
31
|
const inputFilePath = input[key]
|
|
20
|
-
const
|
|
21
|
-
|
|
32
|
+
const namedCjs =
|
|
33
|
+
detectStaticExports({ logger, filePath: inputFilePath }) ||
|
|
34
|
+
detectExportsUsingSandboxedRuntime({
|
|
35
|
+
logger,
|
|
36
|
+
filePath: inputFilePath,
|
|
37
|
+
})
|
|
38
|
+
scanResults[inputFilePath] = {
|
|
22
39
|
all: true,
|
|
23
40
|
default: true,
|
|
24
41
|
namespace: true,
|
|
25
42
|
named: [],
|
|
43
|
+
namedCjs,
|
|
26
44
|
}
|
|
27
|
-
|
|
28
|
-
const cjsExports =
|
|
29
|
-
detectStaticExports({ logger, fileUrl: inputFileUrl }) ||
|
|
30
|
-
detectExportsUsingSandboxedRuntime({ logger, fileUrl: inputFileUrl })
|
|
31
|
-
|
|
32
|
-
if (cjsExports && cjsExports.length) {
|
|
33
|
-
cjsScannedNamedExports[inputFileUrl] = cjsExports
|
|
34
|
-
}
|
|
35
|
-
input[key] = `jsenv:${inputFileUrl}`
|
|
45
|
+
input[key] = importWrapper.wrap(inputFilePath)
|
|
36
46
|
})
|
|
37
47
|
},
|
|
38
|
-
resolveId(
|
|
39
|
-
if (
|
|
40
|
-
return
|
|
48
|
+
resolveId(specifier) {
|
|
49
|
+
if (importWrapper.isWrapped(specifier)) {
|
|
50
|
+
return specifier
|
|
41
51
|
}
|
|
42
|
-
|
|
43
52
|
return null
|
|
44
53
|
},
|
|
45
54
|
load(id) {
|
|
46
|
-
if (!
|
|
55
|
+
if (!importWrapper.isWrapped(id)) {
|
|
47
56
|
return null
|
|
48
57
|
}
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
inputSummary.default = true
|
|
58
|
+
const inputFilePath = importWrapper.unwrap(id)
|
|
59
|
+
const scanResult = scanResults[inputFilePath]
|
|
60
|
+
let uniqueNamedExports = scanResult.named
|
|
61
|
+
const namedCjs = scanResult.namedCjs
|
|
62
|
+
if (namedCjs.length) {
|
|
63
|
+
uniqueNamedExports = namedCjs
|
|
64
|
+
scanResult.default = true
|
|
57
65
|
}
|
|
58
66
|
const codeForExports = generateCodeForExports({
|
|
59
67
|
uniqueNamedExports,
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
scanResult,
|
|
69
|
+
inputFilePath,
|
|
62
70
|
})
|
|
63
71
|
return codeForExports
|
|
64
72
|
},
|
|
@@ -71,15 +79,15 @@ export const rollupPluginCommonJsNamedExports = ({ logger }) => {
|
|
|
71
79
|
* same CJS export scanner that Node.js uses internally. Very fast, but only works on some modules,
|
|
72
80
|
* depending on how they were build/written/compiled.
|
|
73
81
|
*/
|
|
74
|
-
const detectStaticExports = ({ logger,
|
|
82
|
+
const detectStaticExports = ({ logger, filePath, visited = new Set() }) => {
|
|
75
83
|
const isMainEntrypoint = visited.size === 0
|
|
76
84
|
// Prevent infinite loops via circular dependencies.
|
|
77
|
-
if (visited.has(
|
|
85
|
+
if (visited.has(filePath)) {
|
|
78
86
|
return []
|
|
79
87
|
}
|
|
80
|
-
visited.add(
|
|
88
|
+
visited.add(filePath)
|
|
81
89
|
|
|
82
|
-
const fileContents = readFileSync(
|
|
90
|
+
const fileContents = readFileSync(filePath, "utf8")
|
|
83
91
|
try {
|
|
84
92
|
const { exports, reexports } = parse(fileContents)
|
|
85
93
|
// If re-exports were detected (`exports.foo = require(...)`) then resolve them here.
|
|
@@ -87,12 +95,11 @@ const detectStaticExports = ({ logger, fileUrl, visited = new Set() }) => {
|
|
|
87
95
|
if (reexports.length > 0) {
|
|
88
96
|
reexports.forEach((reexport) => {
|
|
89
97
|
const reExportedFilePath = resolve.sync(reexport, {
|
|
90
|
-
basedir: fileURLToPath(new URL("./",
|
|
98
|
+
basedir: fileURLToPath(new URL("./", pathToFileURL(filePath))),
|
|
91
99
|
})
|
|
92
|
-
const reExportedFileUrl = pathToFileURL(reExportedFilePath)
|
|
93
100
|
const staticExports = detectStaticExports({
|
|
94
101
|
logger,
|
|
95
|
-
|
|
102
|
+
filePath: reExportedFilePath,
|
|
96
103
|
visited,
|
|
97
104
|
})
|
|
98
105
|
if (staticExports) {
|
|
@@ -105,14 +112,14 @@ const detectStaticExports = ({ logger, fileUrl, visited = new Set() }) => {
|
|
|
105
112
|
).filter(isValidNamedExport)
|
|
106
113
|
|
|
107
114
|
if (isMainEntrypoint && resolvedExports.length === 0) {
|
|
108
|
-
return
|
|
115
|
+
return []
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
return resolvedExports
|
|
112
119
|
} catch (err) {
|
|
113
120
|
// Safe to ignore, this is usually due to the file not being CJS.
|
|
114
|
-
logger.debug(`detectStaticExports ${
|
|
115
|
-
return
|
|
121
|
+
logger.debug(`detectStaticExports ${filePath}: ${err.message}`)
|
|
122
|
+
return []
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
125
|
|
|
@@ -122,22 +129,22 @@ const detectStaticExports = ({ logger, fileUrl, visited = new Set() }) => {
|
|
|
122
129
|
* Uses VM2 to run safely sandbox untrusted code (no access no Node.js primitives, just JS).
|
|
123
130
|
* If nothing was detected, return undefined.
|
|
124
131
|
*/
|
|
125
|
-
const detectExportsUsingSandboxedRuntime = ({ logger,
|
|
132
|
+
const detectExportsUsingSandboxedRuntime = ({ logger, filePath }) => {
|
|
126
133
|
try {
|
|
127
|
-
const fileContents = readFileSync(
|
|
134
|
+
const fileContents = readFileSync(filePath, "utf8")
|
|
128
135
|
const vm = new VM2({ wasm: false, fixAsync: false })
|
|
129
136
|
const codeToRun = wrapCodeToRunInVm(fileContents)
|
|
130
137
|
const vmResult = vm.run(codeToRun)
|
|
131
138
|
const exportsResult = Object.keys(vmResult)
|
|
132
139
|
logger.debug(
|
|
133
|
-
`detectExportsUsingSandboxedRuntime success ${
|
|
140
|
+
`detectExportsUsingSandboxedRuntime success ${filePath}: ${exportsResult}`,
|
|
134
141
|
)
|
|
135
142
|
return exportsResult.filter((identifier) => isValidIdentifier(identifier))
|
|
136
143
|
} catch (err) {
|
|
137
144
|
logger.debug(
|
|
138
|
-
`detectExportsUsingSandboxedRuntime error ${
|
|
145
|
+
`detectExportsUsingSandboxedRuntime error ${filePath}: ${err.message}`,
|
|
139
146
|
)
|
|
140
|
-
return
|
|
147
|
+
return []
|
|
141
148
|
}
|
|
142
149
|
}
|
|
143
150
|
|
|
@@ -153,20 +160,16 @@ module.exports;`
|
|
|
153
160
|
|
|
154
161
|
const generateCodeForExports = ({
|
|
155
162
|
uniqueNamedExports,
|
|
156
|
-
|
|
157
|
-
|
|
163
|
+
scanResult,
|
|
164
|
+
inputFilePath,
|
|
158
165
|
}) => {
|
|
159
|
-
const from =
|
|
160
|
-
process.platform === "win32"
|
|
161
|
-
? inputFileUrl.slice("file:///".length)
|
|
162
|
-
: inputFileUrl.slice("file://".length)
|
|
166
|
+
const from = inputFilePath.split(path.win32.sep).join(path.posix.sep)
|
|
163
167
|
const lines = [
|
|
164
|
-
...(
|
|
165
|
-
...(
|
|
166
|
-
|
|
167
|
-
namedExports: uniqueNamedExports,
|
|
168
|
-
|
|
169
|
-
}),
|
|
168
|
+
...(scanResult.namespace ? [stringifyNamespaceReExport({ from })] : []),
|
|
169
|
+
...(scanResult.default ? [stringifyDefaultReExport({ from })] : []),
|
|
170
|
+
...(uniqueNamedExports.length
|
|
171
|
+
? [stringifyNamedReExports({ namedExports: uniqueNamedExports, from })]
|
|
172
|
+
: []),
|
|
170
173
|
]
|
|
171
174
|
return lines.join(`
|
|
172
175
|
`)
|
package/main.js
DELETED
package/scripts/test.mjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { executeTestPlan, nodeWorkerThread } from "@jsenv/core"
|
|
2
|
-
|
|
3
|
-
await executeTestPlan({
|
|
4
|
-
rootDirectoryUrl: new URL("../", import.meta.url),
|
|
5
|
-
testPlan: {
|
|
6
|
-
"tests/**/*.test.mjs": {
|
|
7
|
-
node: {
|
|
8
|
-
runtime: nodeWorkerThread,
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
failFast: process.argv.includes("--workspace"),
|
|
13
|
-
completedExecutionLogMerging: process.argv.includes("--workspace"),
|
|
14
|
-
})
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { startDevServer } from "@jsenv/core"
|
|
2
|
-
import { jsenvPluginCommonJs } from "@jsenv/plugin-commonjs"
|
|
3
|
-
|
|
4
|
-
await startDevServer({
|
|
5
|
-
logLevel: "info",
|
|
6
|
-
rootDirectoryUrl: new URL("./client/", import.meta.url),
|
|
7
|
-
port: 5432,
|
|
8
|
-
plugins: [
|
|
9
|
-
jsenvPluginCommonJs({
|
|
10
|
-
include: {
|
|
11
|
-
"./file.cjs": true,
|
|
12
|
-
},
|
|
13
|
-
}),
|
|
14
|
-
],
|
|
15
|
-
clientAutoreload: false,
|
|
16
|
-
supervisor: false,
|
|
17
|
-
})
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { writeFileSync, readFileSync } from "node:fs"
|
|
2
|
-
import { chromium } from "playwright"
|
|
3
|
-
import { assert } from "@jsenv/assert"
|
|
4
|
-
import { ensureEmptyDirectory } from "@jsenv/filesystem"
|
|
5
|
-
import { startDevServer } from "@jsenv/core"
|
|
6
|
-
import { launchBrowserPage } from "@jsenv/core/tests/launch_browser_page.js"
|
|
7
|
-
|
|
8
|
-
import { jsenvPluginCommonJs } from "@jsenv/plugin-commonjs"
|
|
9
|
-
|
|
10
|
-
const debug = false // true to have browser UI + keep it open after test
|
|
11
|
-
await ensureEmptyDirectory(
|
|
12
|
-
new URL("./client/.jsenv/cjs_to_esm", import.meta.url),
|
|
13
|
-
)
|
|
14
|
-
const cjsFileUrl = new URL("./client/dep.cjs", import.meta.url)
|
|
15
|
-
const cjsFileContent = {
|
|
16
|
-
beforeTest: readFileSync(cjsFileUrl),
|
|
17
|
-
update: (content) => writeFileSync(cjsFileUrl, content),
|
|
18
|
-
restore: () => writeFileSync(cjsFileUrl, cjsFileContent.beforeTest),
|
|
19
|
-
}
|
|
20
|
-
const devServer = await startDevServer({
|
|
21
|
-
logLevel: "warn",
|
|
22
|
-
rootDirectoryUrl: new URL("./client/", import.meta.url),
|
|
23
|
-
keepProcessAlive: false,
|
|
24
|
-
plugins: [
|
|
25
|
-
jsenvPluginCommonJs({
|
|
26
|
-
include: {
|
|
27
|
-
"./file.cjs": true,
|
|
28
|
-
},
|
|
29
|
-
}),
|
|
30
|
-
],
|
|
31
|
-
clientAutoreload: false,
|
|
32
|
-
supervisor: false,
|
|
33
|
-
})
|
|
34
|
-
const browser = await chromium.launch({
|
|
35
|
-
headless: !debug,
|
|
36
|
-
})
|
|
37
|
-
try {
|
|
38
|
-
const page = await launchBrowserPage(browser)
|
|
39
|
-
await page.goto(`${devServer.origin}/main.html`)
|
|
40
|
-
|
|
41
|
-
const getResult = async () => {
|
|
42
|
-
const result = await page.evaluate(
|
|
43
|
-
/* eslint-disable no-undef */
|
|
44
|
-
() => {
|
|
45
|
-
return window.resultPromise
|
|
46
|
-
},
|
|
47
|
-
/* eslint-enable no-undef */
|
|
48
|
-
)
|
|
49
|
-
return result
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
{
|
|
53
|
-
const actual = {
|
|
54
|
-
result: await getResult(),
|
|
55
|
-
}
|
|
56
|
-
const expected = {
|
|
57
|
-
result: 42,
|
|
58
|
-
}
|
|
59
|
-
assert({ actual, expected })
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// now update the package content + version and see if reloading the page updates the result
|
|
63
|
-
{
|
|
64
|
-
cjsFileContent.update(`module.exports = 43`)
|
|
65
|
-
await page.reload()
|
|
66
|
-
const actual = {
|
|
67
|
-
result: await getResult(),
|
|
68
|
-
}
|
|
69
|
-
const expected = {
|
|
70
|
-
result: 43,
|
|
71
|
-
}
|
|
72
|
-
assert({ actual, expected })
|
|
73
|
-
}
|
|
74
|
-
} finally {
|
|
75
|
-
if (!debug) {
|
|
76
|
-
browser.close()
|
|
77
|
-
}
|
|
78
|
-
cjsFileContent.restore()
|
|
79
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { uneval } from "/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/uneval.js?v=1.6.0"
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvZC5tYWlsbGFyZC9kZXYvanNlbnYvanNlbnYtY29yZS9ub2RlX21vZHVsZXMvQGpzZW52L3VuZXZhbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNkZBQWlCOyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"file": null,
|
|
4
|
-
"sources": [
|
|
5
|
-
"file:///Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js"
|
|
6
|
-
],
|
|
7
|
-
"names": [],
|
|
8
|
-
"mappings": "AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6FAAiB;"
|
|
9
|
-
}
|