@quilted/rollup 0.2.10 → 0.2.12
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/CHANGELOG.md +12 -0
- package/build/esm/app.mjs +6 -5
- package/build/esm/features/workers.mjs +11 -7
- package/build/esm/shared/browserslist.mjs +44 -35
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/typescript/app.d.ts.map +1 -1
- package/build/typescript/features/workers.d.ts +4 -10
- package/build/typescript/features/workers.d.ts.map +1 -1
- package/build/typescript/package.d.ts +2 -2
- package/build/typescript/shared/browserslist.d.ts +1 -0
- package/build/typescript/shared/browserslist.d.ts.map +1 -1
- package/package.json +1 -1
- package/source/app.ts +5 -3
- package/source/features/workers.ts +16 -11
- package/source/shared/browserslist.ts +60 -38
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @quilted/rollup
|
|
2
2
|
|
|
3
|
+
## 0.2.12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`c680fb6c`](https://github.com/lemonmade/quilt/commit/c680fb6cf997358892d1aac9189e561159067f8c) Thanks [@lemonmade](https://github.com/lemonmade)! - Output workers as ESModules when supported
|
|
8
|
+
|
|
9
|
+
## 0.2.11
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`ceb1549f`](https://github.com/lemonmade/quilt/commit/ceb1549f81d7ab451cfacca53c6d6d9664e72e42) Thanks [@lemonmade](https://github.com/lemonmade)! - More development worker tweaks
|
|
14
|
+
|
|
3
15
|
## 0.2.10
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/build/esm/app.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { resolveEnvOption } from './features/env.mjs';
|
|
|
6
6
|
import { multiline } from './shared/strings.mjs';
|
|
7
7
|
import { getNodePlugins, removeBuildFiles, normalizeRollupInput } from './shared/rollup.mjs';
|
|
8
8
|
import { createMagicModulePlugin } from './shared/magic-module.mjs';
|
|
9
|
-
import { getBrowserGroups, getBrowserGroupTargetDetails, targetsSupportModules, rollupGenerateOptionsForBrowsers, getBrowserGroupRegularExpressions } from './shared/browserslist.mjs';
|
|
9
|
+
import { getBrowserGroups, getBrowserGroupTargetDetails, targetsSupportModules, rollupGenerateOptionsForBrowsers, targetsSupportModuleWebWorkers, getBrowserGroupRegularExpressions } from './shared/browserslist.mjs';
|
|
10
10
|
import { Project } from './shared/project.mjs';
|
|
11
11
|
|
|
12
12
|
const require = createRequire(import.meta.url);
|
|
@@ -121,7 +121,8 @@ async function quiltAppBrowser({
|
|
|
121
121
|
{ systemJS },
|
|
122
122
|
{ workers },
|
|
123
123
|
{ esnext },
|
|
124
|
-
nodePlugins
|
|
124
|
+
nodePlugins,
|
|
125
|
+
supportsModuleWorkers
|
|
125
126
|
] = await Promise.all([
|
|
126
127
|
import('rollup-plugin-visualizer'),
|
|
127
128
|
import('./features/env.mjs'),
|
|
@@ -135,7 +136,8 @@ async function quiltAppBrowser({
|
|
|
135
136
|
import('./features/system-js.mjs'),
|
|
136
137
|
import('./features/workers.mjs'),
|
|
137
138
|
import('./features/esnext.mjs'),
|
|
138
|
-
getNodePlugins({ bundle: true })
|
|
139
|
+
getNodePlugins({ bundle: true }),
|
|
140
|
+
targetsSupportModuleWebWorkers(browserGroup.browsers)
|
|
139
141
|
]);
|
|
140
142
|
const plugins = [
|
|
141
143
|
quiltAppBrowserInput({ root: project.root, entry }),
|
|
@@ -181,9 +183,8 @@ async function quiltAppBrowser({
|
|
|
181
183
|
}),
|
|
182
184
|
workers({
|
|
183
185
|
baseURL,
|
|
186
|
+
format: supportsModuleWorkers ? "module" : "classic",
|
|
184
187
|
outputOptions: {
|
|
185
|
-
format: "iife",
|
|
186
|
-
inlineDynamicImports: true,
|
|
187
188
|
dir: project.resolve(`build/assets`),
|
|
188
189
|
entryFileNames: `[name]${targetFilenamePart}.[hash].js`,
|
|
189
190
|
assetFileNames: `[name]${targetFilenamePart}.[hash].[ext]`,
|
|
@@ -7,6 +7,7 @@ const PREFIX = "\0quilt-worker:";
|
|
|
7
7
|
const ENTRY_PREFIX = "\0quilt-worker-entry:";
|
|
8
8
|
const MAGIC_MODULE_WORKER = "quilt:module/worker.js";
|
|
9
9
|
function workers({
|
|
10
|
+
format = "classic",
|
|
10
11
|
write = false,
|
|
11
12
|
baseURL,
|
|
12
13
|
plugins = defaultPlugins,
|
|
@@ -54,8 +55,8 @@ function workers({
|
|
|
54
55
|
};
|
|
55
56
|
const workerInputOptions = typeof inputOptions === "function" ? await inputOptions(baseInputOptions, context) : baseInputOptions;
|
|
56
57
|
const baseOutputOptions = {
|
|
57
|
-
format: "iife",
|
|
58
|
-
inlineDynamicImports:
|
|
58
|
+
format: format === "classic" ? "iife" : "esm",
|
|
59
|
+
inlineDynamicImports: format === "classic",
|
|
59
60
|
dir: "workers",
|
|
60
61
|
entryFileNames: `[name].[hash].js`,
|
|
61
62
|
assetFileNames: `[name].[hash].[ext]`,
|
|
@@ -77,9 +78,9 @@ function workers({
|
|
|
77
78
|
this.addWatchFile(module2);
|
|
78
79
|
}
|
|
79
80
|
const filename = firstChunk.fileName;
|
|
80
|
-
let
|
|
81
|
+
let resolvedURL = filename;
|
|
81
82
|
if (typeof baseURL === "string") {
|
|
82
|
-
|
|
83
|
+
resolvedURL = posix.join(baseURL, filename);
|
|
83
84
|
} else if (typeof baseURL === "function") {
|
|
84
85
|
const returnedBaseURL = await baseURL({
|
|
85
86
|
...context,
|
|
@@ -88,10 +89,13 @@ function workers({
|
|
|
88
89
|
outputOptions: workerOutputOptions
|
|
89
90
|
});
|
|
90
91
|
if (returnedBaseURL) {
|
|
91
|
-
|
|
92
|
+
resolvedURL = posix.join(returnedBaseURL, filename);
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
|
-
return `export default ${JSON.stringify(
|
|
95
|
+
return `export default ${JSON.stringify({
|
|
96
|
+
type: format,
|
|
97
|
+
source: resolvedURL
|
|
98
|
+
})};`;
|
|
95
99
|
},
|
|
96
100
|
generateBundle(_, bundle) {
|
|
97
101
|
if (write)
|
|
@@ -169,4 +173,4 @@ function wrapperToSearchString(wrapper) {
|
|
|
169
173
|
return `?${new URLSearchParams(Object.entries(wrapper)).toString()}`;
|
|
170
174
|
}
|
|
171
175
|
|
|
172
|
-
export {
|
|
176
|
+
export { PREFIX, contentForWorker, workers };
|
|
@@ -62,9 +62,7 @@ async function targetsSupportModules(targets) {
|
|
|
62
62
|
esmBrowserslist ??= (async () => {
|
|
63
63
|
const { default: browserslist } = await import('browserslist');
|
|
64
64
|
return new Set(
|
|
65
|
-
browserslist(
|
|
66
|
-
"defaults and fully supports es6-module and fully supports es6-module-dynamic-import"
|
|
67
|
-
)
|
|
65
|
+
browserslist("defaults and fully supports es6-module-dynamic-import")
|
|
68
66
|
);
|
|
69
67
|
})();
|
|
70
68
|
const esmBrowsers = await esmBrowserslist;
|
|
@@ -98,41 +96,21 @@ async function rollupGenerateOptionsForBrowsers(browsers) {
|
|
|
98
96
|
let constBindings = true;
|
|
99
97
|
let objectShorthand = true;
|
|
100
98
|
let symbols = true;
|
|
101
|
-
const
|
|
102
|
-
const supportedVersionDetails = supportList[browser];
|
|
103
|
-
if (supportedVersionDetails == null)
|
|
104
|
-
return false;
|
|
105
|
-
const supportedVersion = semver.coerce(
|
|
106
|
-
supportedVersionDetails.version_added
|
|
107
|
-
);
|
|
108
|
-
if (supportedVersion == null)
|
|
109
|
-
return false;
|
|
110
|
-
return semver.gte(version, supportedVersion);
|
|
111
|
-
};
|
|
112
|
-
for (const browser of browsers) {
|
|
113
|
-
const [name, version] = browser.split(" ");
|
|
114
|
-
const semverVersion = semver.coerce(version);
|
|
115
|
-
if (semverVersion == null)
|
|
116
|
-
continue;
|
|
117
|
-
const mdnBrowser = BROWSESLIST_BROWSER_TO_MDN_BROWSER.get(name);
|
|
118
|
-
if (mdnBrowser == null)
|
|
119
|
-
continue;
|
|
99
|
+
for (const { name, version } of mdnBrowserVersions(browsers, semver)) {
|
|
120
100
|
arrowFunctions &&= isSupported(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
constBindings &&= isSupported(
|
|
126
|
-
mdnBrowser,
|
|
127
|
-
semverVersion,
|
|
128
|
-
constBindingsSupport
|
|
101
|
+
arrowFunctionsSupport,
|
|
102
|
+
name,
|
|
103
|
+
version,
|
|
104
|
+
semver
|
|
129
105
|
);
|
|
106
|
+
constBindings &&= isSupported(constBindingsSupport, name, version, semver);
|
|
130
107
|
objectShorthand &&= isSupported(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
108
|
+
objectShorthandSupport,
|
|
109
|
+
name,
|
|
110
|
+
version,
|
|
111
|
+
semver
|
|
134
112
|
);
|
|
135
|
-
symbols &&= isSupported(
|
|
113
|
+
symbols &&= isSupported(symbolsSupport, name, version, semver);
|
|
136
114
|
}
|
|
137
115
|
return {
|
|
138
116
|
preset: "es2015",
|
|
@@ -143,5 +121,36 @@ async function rollupGenerateOptionsForBrowsers(browsers) {
|
|
|
143
121
|
symbols
|
|
144
122
|
};
|
|
145
123
|
}
|
|
124
|
+
async function targetsSupportModuleWebWorkers(browsers) {
|
|
125
|
+
const [{ default: semver }, { default: mdn }] = await Promise.all([
|
|
126
|
+
import('semver'),
|
|
127
|
+
import('@mdn/browser-compat-data', { assert: { type: 'json' } })
|
|
128
|
+
]);
|
|
129
|
+
const workerModulesSupport = mdn.api.Worker.Worker.ecmascript_modules.__compat.support;
|
|
130
|
+
return [...mdnBrowserVersions(browsers, semver)].every(
|
|
131
|
+
({ name, version }) => isSupported(workerModulesSupport, name, version, semver)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
function* mdnBrowserVersions(browsers, semver) {
|
|
135
|
+
for (const browser of browsers) {
|
|
136
|
+
const [name, version] = browser.split(" ");
|
|
137
|
+
const mdnBrowser = BROWSESLIST_BROWSER_TO_MDN_BROWSER.get(name);
|
|
138
|
+
if (mdnBrowser == null)
|
|
139
|
+
continue;
|
|
140
|
+
const semverVersion = semver.coerce(version);
|
|
141
|
+
if (semverVersion == null)
|
|
142
|
+
continue;
|
|
143
|
+
yield { name: mdnBrowser, version: semverVersion };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function isSupported(supportList, browser, version, semver) {
|
|
147
|
+
const supportedVersionDetails = supportList[browser];
|
|
148
|
+
if (supportedVersionDetails == null)
|
|
149
|
+
return false;
|
|
150
|
+
const supportedVersion = semver.coerce(supportedVersionDetails.version_added);
|
|
151
|
+
if (supportedVersion == null)
|
|
152
|
+
return false;
|
|
153
|
+
return semver.gte(version, supportedVersion);
|
|
154
|
+
}
|
|
146
155
|
|
|
147
|
-
export { getBrowserGroupRegularExpressions, getBrowserGroupTargetDetails, getBrowserGroups, rollupGenerateOptionsForBrowsers, targetsSupportModules };
|
|
156
|
+
export { getBrowserGroupRegularExpressions, getBrowserGroupTargetDetails, getBrowserGroups, rollupGenerateOptionsForBrowsers, targetsSupportModuleWebWorkers, targetsSupportModules };
|