@jsenv/plugin-commonjs 0.1.0 → 0.3.0
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 +6 -7
- package/scripts/test.mjs +15 -0
- package/src/compile_cache/compiled_file_cache.js +13 -13
- package/src/compile_cache/update_compile_cache.js +3 -3
- package/src/jsenv_plugin_commonjs.js +13 -7
- package/tests/cjs_cache/cjs_cache.manual_test.mjs +17 -0
- package/tests/cjs_cache/cjs_cache.test.mjs +79 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js +3 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/index.js.map +9 -0
- 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 +405 -0
- 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 +9 -0
- 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 +28 -0
- 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 +60 -0
- 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 +9 -0
- 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 +18 -0
- 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 +76 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/node_modules/@jsenv/uneval/src/uneval.js +212 -0
- 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 +9 -0
- 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 +18 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/helpers/event_source/event_source.js +197 -0
- 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 +11 -0
- 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 +195 -0
- 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 +9 -0
- 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 +106 -0
- 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 +9 -0
- 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 +20 -0
- 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 +198 -0
- 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 +21 -0
- 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 +256 -0
- 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 +9 -0
- 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 +82 -0
- 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 +10 -0
- 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 +9 -0
- 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 +82 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/file.cjs +9 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/file.cjs.map +12 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html +16 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html@L10-L14.js +5 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html@L3-L8.js +7 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.html@L3-L8.js.map +12 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.js +5 -0
- package/tests/cjs_cache/client/.jsenv/chrome@102.00/main.js.map +9 -0
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/__compile_context__.json +3 -0
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/file.development.cjs +7 -0
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/file.development.cjs__compile_info__.json +17 -0
- package/tests/cjs_cache/client/.jsenv/cjs_to_esm/file.development.map +1 -0
- package/tests/cjs_cache/client/dep.cjs +1 -0
- package/tests/cjs_cache/client/file.cjs +1 -0
- package/tests/cjs_cache/client/main.html +17 -0
- package/tests/cjs_cache/client/main.js +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/plugin-commonjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,17 +8,16 @@
|
|
|
8
8
|
"directory": "packages/jsenv-plugin-commonjs"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
|
-
"access": "public"
|
|
12
|
-
"registry": "https://registry.npmjs.org"
|
|
11
|
+
"access": "public"
|
|
13
12
|
},
|
|
14
13
|
"type": "module",
|
|
15
14
|
"main": "./main.js",
|
|
16
15
|
"dependencies": {
|
|
17
|
-
"@jsenv/filesystem": "4.0
|
|
18
|
-
"@jsenv/log": "
|
|
16
|
+
"@jsenv/filesystem": "4.1.0",
|
|
17
|
+
"@jsenv/log": "3.0.2",
|
|
19
18
|
"@jsenv/url-meta": "7.0.0",
|
|
20
19
|
"@jsenv/urls": "1.2.6",
|
|
21
|
-
"@rollup/plugin-commonjs": "22.0.
|
|
20
|
+
"@rollup/plugin-commonjs": "22.0.1",
|
|
22
21
|
"@rollup/plugin-json": "4.1.0",
|
|
23
22
|
"@rollup/plugin-node-resolve": "13.3.0",
|
|
24
23
|
"@rollup/plugin-replace": "4.0.0",
|
|
@@ -30,4 +29,4 @@
|
|
|
30
29
|
"rollup-plugin-polyfill-node": "0.9.0",
|
|
31
30
|
"vm2": "3.9.9"
|
|
32
31
|
}
|
|
33
|
-
}
|
|
32
|
+
}
|
package/scripts/test.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { executeTestPlan, nodeProcess } from "@jsenv/core"
|
|
2
|
+
|
|
3
|
+
await executeTestPlan({
|
|
4
|
+
rootDirectoryUrl: new URL("../", import.meta.url),
|
|
5
|
+
testPlan: {
|
|
6
|
+
"tests/**/*.test.mjs": {
|
|
7
|
+
node: {
|
|
8
|
+
runtime: nodeProcess,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
failFast: process.argv.includes("--workspace"),
|
|
13
|
+
completedExecutionLogMerging: process.argv.includes("--workspace"),
|
|
14
|
+
coverage: process.argv.includes("--coverage"),
|
|
15
|
+
})
|
|
@@ -27,15 +27,20 @@ export const reuseOrCreateCompiledFile = async ({
|
|
|
27
27
|
throw new TypeError(`compile must be a function, got ${compile}`)
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
const getCacheValidity = () => {
|
|
31
|
+
const cacheValidity = validateCompileCache({
|
|
32
|
+
logger,
|
|
33
|
+
compiledFileUrl,
|
|
34
|
+
compileCacheStrategy,
|
|
35
|
+
compileCacheAssetsValidation,
|
|
36
|
+
})
|
|
37
|
+
return cacheValidity
|
|
38
|
+
}
|
|
39
|
+
|
|
30
40
|
return startAsap(
|
|
31
41
|
async () => {
|
|
32
42
|
logger.debug(`check cache for ${compiledFileUrl}`)
|
|
33
|
-
const cacheValidity =
|
|
34
|
-
logger,
|
|
35
|
-
compiledFileUrl,
|
|
36
|
-
compileCacheStrategy,
|
|
37
|
-
compileCacheAssetsValidation,
|
|
38
|
-
})
|
|
43
|
+
const cacheValidity = getCacheValidity()
|
|
39
44
|
if (cacheValidity.isValid) {
|
|
40
45
|
logger.debug(`${UNICODE.OK} found a valid cache`)
|
|
41
46
|
const compileInfo = cacheValidity.compileInfo.data
|
|
@@ -55,14 +60,8 @@ export const reuseOrCreateCompiledFile = async ({
|
|
|
55
60
|
sourcemap = assetValidity.data.sourcemap
|
|
56
61
|
}
|
|
57
62
|
})
|
|
58
|
-
updateCompileCache({
|
|
59
|
-
logger,
|
|
60
|
-
compiledFileUrl,
|
|
61
|
-
content,
|
|
62
|
-
assets,
|
|
63
|
-
compileResultStatus: "cached",
|
|
64
|
-
})
|
|
65
63
|
return {
|
|
64
|
+
isValid: () => getCacheValidity().isValid,
|
|
66
65
|
content,
|
|
67
66
|
sourcemap,
|
|
68
67
|
}
|
|
@@ -96,6 +95,7 @@ export const reuseOrCreateCompiledFile = async ({
|
|
|
96
95
|
compileResultStatus: compileInfoIsValid ? "updated" : "created",
|
|
97
96
|
})
|
|
98
97
|
return {
|
|
98
|
+
isValid: () => getCacheValidity().isValid,
|
|
99
99
|
content,
|
|
100
100
|
sourcemap,
|
|
101
101
|
}
|
|
@@ -70,15 +70,15 @@ ${filesRemoved.join(`\n`)}`)
|
|
|
70
70
|
// was used at some point to ensure the compiled file matches browser etag
|
|
71
71
|
// etag: bufferToEtag(Buffer.from(content)),
|
|
72
72
|
assetInfos,
|
|
73
|
-
createdMs:
|
|
74
|
-
lastModifiedMs:
|
|
73
|
+
createdMs: Date.now(),
|
|
74
|
+
lastModifiedMs: Date.now(),
|
|
75
75
|
}
|
|
76
76
|
} else if (isUpdated) {
|
|
77
77
|
latestCompileInfo = {
|
|
78
78
|
// was used at some point to ensure the compiled file matches browser etag
|
|
79
79
|
// etag: bufferToEtag(Buffer.from(content)),
|
|
80
80
|
assetInfos,
|
|
81
|
-
lastModifiedMs:
|
|
81
|
+
lastModifiedMs: Date.now(),
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
logger.debug(
|
|
@@ -8,16 +8,19 @@ export const jsenvPluginCommonJs = ({
|
|
|
8
8
|
logLevel,
|
|
9
9
|
include,
|
|
10
10
|
}) => {
|
|
11
|
-
|
|
12
|
-
{
|
|
13
|
-
commonjs: include,
|
|
14
|
-
},
|
|
15
|
-
"file://",
|
|
16
|
-
)
|
|
11
|
+
let associations
|
|
17
12
|
|
|
18
13
|
return {
|
|
19
14
|
name,
|
|
20
15
|
appliesDuring: "*",
|
|
16
|
+
init: ({ rootDirectoryUrl }) => {
|
|
17
|
+
associations = URL_META.resolveAssociations(
|
|
18
|
+
{
|
|
19
|
+
commonjs: include,
|
|
20
|
+
},
|
|
21
|
+
rootDirectoryUrl,
|
|
22
|
+
)
|
|
23
|
+
},
|
|
21
24
|
redirectUrl: {
|
|
22
25
|
js_import_export: (reference) => {
|
|
23
26
|
const { commonjs } = URL_META.applyAssociations({
|
|
@@ -45,7 +48,7 @@ export const jsenvPluginCommonJs = ({
|
|
|
45
48
|
if (!originalUrlInfo) {
|
|
46
49
|
return null
|
|
47
50
|
}
|
|
48
|
-
const { content, sourcemap } = await commonJsToJsModule({
|
|
51
|
+
const { content, sourcemap, isValid } = await commonJsToJsModule({
|
|
49
52
|
logLevel,
|
|
50
53
|
rootDirectoryUrl: context.rootDirectoryUrl,
|
|
51
54
|
sourceFileUrl: originalUrlInfo.url,
|
|
@@ -55,6 +58,9 @@ export const jsenvPluginCommonJs = ({
|
|
|
55
58
|
: "production",
|
|
56
59
|
...urlInfo.data.commonjs,
|
|
57
60
|
})
|
|
61
|
+
if (isValid) {
|
|
62
|
+
urlInfo.isValid = isValid
|
|
63
|
+
}
|
|
58
64
|
return {
|
|
59
65
|
content,
|
|
60
66
|
contentType: "text/javascript",
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
htmlSupervisor: false,
|
|
17
|
+
})
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
htmlSupervisor: 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
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
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
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
}
|