@rolldown/browser 1.0.0-beta.52 → 1.0.0-beta.54
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/dist/cli.mjs +10 -12
- package/dist/config.d.mts +1 -3
- package/dist/config.mjs +6 -9
- package/dist/{constructors-DW3R_Jog.js → constructors-CPxFX1pF.js} +9 -10
- package/dist/experimental-index.browser.mjs +25 -13
- package/dist/experimental-index.d.mts +24 -12
- package/dist/experimental-index.mjs +27 -18
- package/dist/filter-index.d.mts +1 -3
- package/dist/index.browser.mjs +2 -2
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +6 -9
- package/dist/{normalize-string-or-regex-BcbPUrYo.js → normalize-string-or-regex-Crhxh-US.js} +43 -4
- package/dist/parallel-plugin-worker.mjs +3 -6
- package/dist/parallel-plugin.d.mts +2 -3
- package/dist/parse-ast-index.d.mts +1 -1
- package/dist/parse-ast-index.mjs +1 -2
- package/dist/plugins-index.browser.mjs +2 -2
- package/dist/plugins-index.d.mts +3 -3
- package/dist/plugins-index.mjs +2 -4
- package/dist/rolldown-binding.wasm32-wasi.wasm +0 -0
- package/dist/{rolldown-build-CUYnBV3u.js → rolldown-build-BEfycLl9.js} +348 -188
- package/dist/shared/{binding-BKL2JHoJ.d.mts → binding-yIBVkeOE.d.mts} +107 -21
- package/dist/shared/{bindingify-input-options-D4i1DYzt.mjs → bindingify-input-options-CxbvPG4D.mjs} +21 -8
- package/dist/shared/{constructors-XFp0WhK3.mjs → constructors-C4qFjfHR.mjs} +9 -10
- package/dist/shared/constructors-D9uR3o6d.d.mts +30 -0
- package/dist/shared/{define-config-Buedmg9e.d.mts → define-config-DkpMlrZ3.d.mts} +18 -5
- package/dist/shared/{load-config-C9CjEv2m.mjs → load-config-BqTtlue1.mjs} +1 -1
- package/dist/shared/{normalize-string-or-regex-D1mB67Iy.mjs → normalize-string-or-regex-B8NuOx7w.mjs} +43 -4
- package/dist/shared/{parse-ast-index-BSDTTjWT.mjs → parse-ast-index-C0k-VwRM.mjs} +1 -1
- package/dist/shared/{rolldown-0ID0Q4xL.mjs → rolldown-BeAWDsL_.mjs} +1 -1
- package/dist/shared/{rolldown-build-BWJGpMD0.mjs → rolldown-build-yjeMNdrl.mjs} +336 -189
- package/dist/shared/{utils-DKydZ4iH.d.mts → utils-mjPIk7Yj.d.mts} +3 -1
- package/dist/shared/{watch-CwnSQOS4.mjs → watch-C7zN9oTc.mjs} +16 -4
- package/package.json +1 -1
- package/dist/shared/constructors-BvaMwihu.d.mts +0 -32
|
@@ -185,7 +185,7 @@ interface Comment {
|
|
|
185
185
|
end: number;
|
|
186
186
|
}
|
|
187
187
|
interface ErrorLabel {
|
|
188
|
-
message
|
|
188
|
+
message: string | null;
|
|
189
189
|
start: number;
|
|
190
190
|
end: number;
|
|
191
191
|
}
|
|
@@ -193,8 +193,8 @@ interface OxcError {
|
|
|
193
193
|
severity: Severity;
|
|
194
194
|
message: string;
|
|
195
195
|
labels: Array<ErrorLabel>;
|
|
196
|
-
helpMessage
|
|
197
|
-
codeframe
|
|
196
|
+
helpMessage: string | null;
|
|
197
|
+
codeframe: string | null;
|
|
198
198
|
}
|
|
199
199
|
type Severity = 'Error' | 'Warning' | 'Advice';
|
|
200
200
|
declare class ParseResult {
|
|
@@ -228,9 +228,9 @@ interface EcmaScriptModule {
|
|
|
228
228
|
}
|
|
229
229
|
interface ExportExportName {
|
|
230
230
|
kind: ExportExportNameKind;
|
|
231
|
-
name
|
|
232
|
-
start
|
|
233
|
-
end
|
|
231
|
+
name: string | null;
|
|
232
|
+
start: number | null;
|
|
233
|
+
end: number | null;
|
|
234
234
|
}
|
|
235
235
|
type ExportExportNameKind = /** `export { name } */
|
|
236
236
|
'Name' | /** `export default expression` */
|
|
@@ -238,9 +238,9 @@ type ExportExportNameKind = /** `export { name } */
|
|
|
238
238
|
'None';
|
|
239
239
|
interface ExportImportName {
|
|
240
240
|
kind: ExportImportNameKind;
|
|
241
|
-
name
|
|
242
|
-
start
|
|
243
|
-
end
|
|
241
|
+
name: string | null;
|
|
242
|
+
start: number | null;
|
|
243
|
+
end: number | null;
|
|
244
244
|
}
|
|
245
245
|
type ExportImportNameKind = /** `export { name } */
|
|
246
246
|
'Name' | /** `export * as ns from "mod"` */
|
|
@@ -249,9 +249,9 @@ type ExportImportNameKind = /** `export { name } */
|
|
|
249
249
|
'None';
|
|
250
250
|
interface ExportLocalName {
|
|
251
251
|
kind: ExportLocalNameKind;
|
|
252
|
-
name
|
|
253
|
-
start
|
|
254
|
-
end
|
|
252
|
+
name: string | null;
|
|
253
|
+
start: number | null;
|
|
254
|
+
end: number | null;
|
|
255
255
|
}
|
|
256
256
|
type ExportLocalNameKind = /** `export { name } */
|
|
257
257
|
'Name' | /** `export default expression` */
|
|
@@ -263,9 +263,9 @@ type ExportLocalNameKind = /** `export { name } */
|
|
|
263
263
|
'None';
|
|
264
264
|
interface ImportName {
|
|
265
265
|
kind: ImportNameKind;
|
|
266
|
-
name
|
|
267
|
-
start
|
|
268
|
-
end
|
|
266
|
+
name: string | null;
|
|
267
|
+
start: number | null;
|
|
268
|
+
end: number | null;
|
|
269
269
|
}
|
|
270
270
|
type ImportNameKind = /** `import { x } from "mod"` */
|
|
271
271
|
'Name' | /** `import * as ns from "mod"` */
|
|
@@ -323,7 +323,7 @@ interface StaticExport {
|
|
|
323
323
|
interface StaticExportEntry {
|
|
324
324
|
start: number;
|
|
325
325
|
end: number;
|
|
326
|
-
moduleRequest
|
|
326
|
+
moduleRequest: ValueSpan | null;
|
|
327
327
|
/** The name under which the desired binding is exported by the module`. */
|
|
328
328
|
importName: ExportImportName;
|
|
329
329
|
/** The name used to export this binding by this module. */
|
|
@@ -415,6 +415,18 @@ declare class ResolverFactory {
|
|
|
415
415
|
sync(directory: string, request: string): ResolveResult;
|
|
416
416
|
/** Asynchronously resolve `specifier` at an absolute path to a `directory`. */
|
|
417
417
|
async(directory: string, request: string): Promise<ResolveResult>;
|
|
418
|
+
/**
|
|
419
|
+
* Synchronously resolve `specifier` at an absolute path to a `file`.
|
|
420
|
+
*
|
|
421
|
+
* This method automatically discovers tsconfig.json by traversing parent directories.
|
|
422
|
+
*/
|
|
423
|
+
resolveFileSync(file: string, request: string): ResolveResult;
|
|
424
|
+
/**
|
|
425
|
+
* Asynchronously resolve `specifier` at an absolute path to a `file`.
|
|
426
|
+
*
|
|
427
|
+
* This method automatically discovers tsconfig.json by traversing parent directories.
|
|
428
|
+
*/
|
|
429
|
+
resolveFileAsync(file: string, request: string): Promise<ResolveResult>;
|
|
418
430
|
}
|
|
419
431
|
/** Node.js builtin module when `Options::builtin_modules` is enabled. */
|
|
420
432
|
interface Builtin {
|
|
@@ -656,9 +668,8 @@ interface TsconfigOptions {
|
|
|
656
668
|
* Support for Typescript Project References.
|
|
657
669
|
*
|
|
658
670
|
* * `'auto'`: use the `references` field from tsconfig of `config_file`.
|
|
659
|
-
* * `string[]`: manually provided relative or absolute path.
|
|
660
671
|
*/
|
|
661
|
-
references?: 'auto'
|
|
672
|
+
references?: 'auto';
|
|
662
673
|
}
|
|
663
674
|
interface SourceMap {
|
|
664
675
|
file?: string;
|
|
@@ -1269,6 +1280,44 @@ declare class BindingMagicString {
|
|
|
1269
1280
|
relocate(start: number, end: number, to: number): void;
|
|
1270
1281
|
indent(indentor?: string | undefined | null): void;
|
|
1271
1282
|
}
|
|
1283
|
+
declare class BindingNormalizedOptions {
|
|
1284
|
+
get input(): Array<string> | Record<string, string>;
|
|
1285
|
+
get cwd(): string;
|
|
1286
|
+
get platform(): 'node' | 'browser' | 'neutral';
|
|
1287
|
+
get shimMissingExports(): boolean;
|
|
1288
|
+
get name(): string | null;
|
|
1289
|
+
get cssEntryFilenames(): string | undefined;
|
|
1290
|
+
get cssChunkFilenames(): string | undefined;
|
|
1291
|
+
get entryFilenames(): string | undefined;
|
|
1292
|
+
get chunkFilenames(): string | undefined;
|
|
1293
|
+
get assetFilenames(): string | undefined;
|
|
1294
|
+
get dir(): string | null;
|
|
1295
|
+
get file(): string | null;
|
|
1296
|
+
get format(): 'es' | 'cjs' | 'iife' | 'umd';
|
|
1297
|
+
get exports(): 'default' | 'named' | 'none' | 'auto';
|
|
1298
|
+
get esModule(): boolean | 'if-default-prop';
|
|
1299
|
+
get inlineDynamicImports(): boolean;
|
|
1300
|
+
get sourcemap(): boolean | 'inline' | 'hidden';
|
|
1301
|
+
get sourcemapBaseUrl(): string | null;
|
|
1302
|
+
get banner(): string | undefined | null | undefined;
|
|
1303
|
+
get footer(): string | undefined | null | undefined;
|
|
1304
|
+
get intro(): string | undefined | null | undefined;
|
|
1305
|
+
get outro(): string | undefined | null | undefined;
|
|
1306
|
+
get externalLiveBindings(): boolean;
|
|
1307
|
+
get extend(): boolean;
|
|
1308
|
+
get globals(): Record<string, string> | undefined;
|
|
1309
|
+
get hashCharacters(): 'base64' | 'base36' | 'hex';
|
|
1310
|
+
get sourcemapDebugIds(): boolean;
|
|
1311
|
+
get polyfillRequire(): boolean;
|
|
1312
|
+
get minify(): false | 'dce-only' | MinifyOptions;
|
|
1313
|
+
get legalComments(): 'none' | 'inline';
|
|
1314
|
+
get preserveModules(): boolean;
|
|
1315
|
+
get preserveModulesRoot(): string | undefined;
|
|
1316
|
+
get virtualDirname(): string;
|
|
1317
|
+
get topLevelVar(): boolean;
|
|
1318
|
+
get minifyInternalExports(): boolean;
|
|
1319
|
+
get context(): string;
|
|
1320
|
+
}
|
|
1272
1321
|
declare class BindingOutputAsset {
|
|
1273
1322
|
dropInner(): ExternalMemoryStatus;
|
|
1274
1323
|
getFileName(): string;
|
|
@@ -1504,14 +1553,19 @@ interface BindingViteCssPostPluginConfig {
|
|
|
1504
1553
|
urlBase: string;
|
|
1505
1554
|
decodedBase: string;
|
|
1506
1555
|
libCssFilename?: string;
|
|
1507
|
-
isLegacy?: () => boolean;
|
|
1556
|
+
isLegacy?: (args: BindingNormalizedOptions) => boolean;
|
|
1508
1557
|
cssMinify?: (css: string, inline: boolean) => Promise<string>;
|
|
1509
1558
|
renderBuiltUrl?: (filename: string, type: BindingRenderBuiltUrlConfig) => undefined | string | BindingRenderBuiltUrlRet;
|
|
1559
|
+
cssScopeTo: () => Record<string, readonly [string, string | undefined]>;
|
|
1510
1560
|
}
|
|
1511
1561
|
interface BindingViteDynamicImportVarsPluginConfig {
|
|
1512
1562
|
include?: Array<BindingStringOrRegex>;
|
|
1513
1563
|
exclude?: Array<BindingStringOrRegex>;
|
|
1514
1564
|
resolver?: (id: string, importer: string) => MaybePromise<string | undefined>;
|
|
1565
|
+
isV2?: BindingViteDynamicImportVarsPluginV2Config;
|
|
1566
|
+
}
|
|
1567
|
+
interface BindingViteDynamicImportVarsPluginV2Config {
|
|
1568
|
+
sourcemap: boolean;
|
|
1515
1569
|
}
|
|
1516
1570
|
interface BindingViteHtmlInlineProxyPluginConfig {
|
|
1517
1571
|
root: string;
|
|
@@ -1528,10 +1582,15 @@ interface BindingViteHtmlPluginConfig {
|
|
|
1528
1582
|
assetInlineLimit: number | ((file: string, content: Buffer) => boolean | undefined);
|
|
1529
1583
|
renderBuiltUrl?: (filename: string, type: BindingRenderBuiltUrlConfig) => undefined | string | BindingRenderBuiltUrlRet;
|
|
1530
1584
|
transformIndexHtml: (html: string, path: string, filename: string, hook: 'transform' | 'generateBundle', output?: BindingOutputs, chunk?: BindingOutputChunk) => Promise<string>;
|
|
1585
|
+
setModuleSideEffects: (id: string) => void;
|
|
1531
1586
|
}
|
|
1532
1587
|
interface BindingViteImportGlobPluginConfig {
|
|
1533
1588
|
root?: string;
|
|
1534
1589
|
restoreQueryExtension?: boolean;
|
|
1590
|
+
isV2?: BindingViteImportGlobPluginV2Config;
|
|
1591
|
+
}
|
|
1592
|
+
interface BindingViteImportGlobPluginV2Config {
|
|
1593
|
+
sourcemap?: boolean;
|
|
1535
1594
|
}
|
|
1536
1595
|
interface BindingViteJsonPluginConfig {
|
|
1537
1596
|
minify?: boolean;
|
|
@@ -1543,7 +1602,7 @@ interface BindingViteManifestPluginConfig {
|
|
|
1543
1602
|
root: string;
|
|
1544
1603
|
outPath: string;
|
|
1545
1604
|
isEnableV2?: boolean;
|
|
1546
|
-
isLegacy?: () => boolean;
|
|
1605
|
+
isLegacy?: (args: BindingNormalizedOptions) => boolean;
|
|
1547
1606
|
cssEntries: () => Record<string, string>;
|
|
1548
1607
|
}
|
|
1549
1608
|
interface BindingViteModulePreloadPolyfillPluginConfig {
|
|
@@ -1574,12 +1633,14 @@ interface BindingViteResolvePluginConfig {
|
|
|
1574
1633
|
external: true | string[];
|
|
1575
1634
|
noExternal: true | Array<string | RegExp>;
|
|
1576
1635
|
dedupe: Array<string>;
|
|
1636
|
+
disableCache?: boolean;
|
|
1577
1637
|
legacyInconsistentCjsInterop?: boolean;
|
|
1578
1638
|
finalizeBareSpecifier?: (resolvedId: string, rawId: string, importer: string | null | undefined) => VoidNullable<string>;
|
|
1579
1639
|
finalizeOtherSpecifiers?: (resolvedId: string, rawId: string) => VoidNullable<string>;
|
|
1580
1640
|
resolveSubpathImports: (id: string, importer: string, isRequire: boolean, scan: boolean) => VoidNullable<string>;
|
|
1581
1641
|
onWarn?: (message: string) => void;
|
|
1582
1642
|
onDebug?: (message: string) => void;
|
|
1643
|
+
yarnPnp: boolean;
|
|
1583
1644
|
}
|
|
1584
1645
|
interface BindingViteResolvePluginResolveOptions {
|
|
1585
1646
|
isBuild: boolean;
|
|
@@ -1607,10 +1668,19 @@ interface BindingViteTransformPluginConfig {
|
|
|
1607
1668
|
isServerConsumer?: boolean;
|
|
1608
1669
|
jsxInject?: string;
|
|
1609
1670
|
transformOptions?: TransformOptions;
|
|
1671
|
+
yarnPnp?: boolean;
|
|
1610
1672
|
}
|
|
1611
1673
|
interface BindingViteWasmHelperPluginConfig {
|
|
1612
1674
|
decodedBase: string;
|
|
1675
|
+
v2?: BindingViteWasmHelperPluginV2Config;
|
|
1676
|
+
}
|
|
1677
|
+
interface BindingViteWasmHelperPluginV2Config {
|
|
1678
|
+
root: string;
|
|
1679
|
+
isLib: boolean;
|
|
1680
|
+
publicDir: string;
|
|
1681
|
+
assetInlineLimit: number | ((file: string, content: Buffer) => boolean | undefined);
|
|
1613
1682
|
}
|
|
1683
|
+
declare function createTokioRuntime(blockingThreads?: number | undefined | null): void;
|
|
1614
1684
|
interface ExternalMemoryStatus {
|
|
1615
1685
|
freed: boolean;
|
|
1616
1686
|
reason?: string;
|
|
@@ -1619,6 +1689,22 @@ interface ExternalMemoryStatus {
|
|
|
1619
1689
|
interface NativeError {
|
|
1620
1690
|
kind: string;
|
|
1621
1691
|
message: string;
|
|
1692
|
+
/** The id of the file associated with the error */
|
|
1693
|
+
id?: string;
|
|
1694
|
+
/** The exporter associated with the error (for import/export errors) */
|
|
1695
|
+
exporter?: string;
|
|
1696
|
+
/** Location information (line, column, file) */
|
|
1697
|
+
loc?: NativeErrorLocation;
|
|
1698
|
+
/** Position in the source file in UTF-16 code units */
|
|
1699
|
+
pos?: number;
|
|
1700
|
+
}
|
|
1701
|
+
/** Location information for errors */
|
|
1702
|
+
interface NativeErrorLocation {
|
|
1703
|
+
/** 1-based */
|
|
1704
|
+
line: number;
|
|
1705
|
+
/** 0-based position in the line in UTF-16 code units */
|
|
1706
|
+
column: number;
|
|
1707
|
+
file?: string;
|
|
1622
1708
|
}
|
|
1623
1709
|
interface PreRenderedChunk {
|
|
1624
1710
|
name: string;
|
|
@@ -1629,4 +1715,4 @@ interface PreRenderedChunk {
|
|
|
1629
1715
|
exports: Array<string>;
|
|
1630
1716
|
}
|
|
1631
1717
|
//#endregion
|
|
1632
|
-
export { BindingWatcherBundler as A, ParserOptions as B, BindingViteManifestPluginConfig as C, BindingViteResolvePluginConfig as D, BindingViteReporterPluginConfig as E, JsxOptions as F, TransformResult as G, ResolveResult as H, MinifyOptions as I,
|
|
1718
|
+
export { transformSync as $, BindingWatcherBundler as A, ParserOptions as B, BindingViteManifestPluginConfig as C, BindingViteResolvePluginConfig as D, BindingViteReporterPluginConfig as E, JsxOptions as F, TransformResult as G, ResolveResult as H, MinifyOptions as I, isolatedDeclarationSync as J, createTokioRuntime as K, MinifyResult as L, ExternalMemoryStatus as M, IsolatedDeclarationsOptions as N, BindingViteTransformPluginConfig as O, IsolatedDeclarationsResult as P, transform as Q, NapiResolveOptions as R, BindingViteJsonPluginConfig as S, BindingViteReactRefreshWrapperPluginConfig as T, ResolverFactory as U, PreRenderedChunk as V, TransformOptions as W, minifySync as X, minify as Y, moduleRunnerTransform as Z, BindingViteCssPostPluginConfig as _, BindingHookResolveIdExtraArgs as a, BindingViteHtmlPluginConfig as b, BindingRebuildStrategy as c, BindingTransformHookExtraArgs as d, BindingUrlResolver as f, BindingViteCssPluginConfig as g, BindingViteBuildImportAnalysisPluginConfig as h, BindingEsmExternalRequirePluginConfig as i, BindingWatcherEvent as j, BindingViteWasmHelperPluginConfig as k, BindingRenderedChunk as l, BindingViteAssetPluginConfig as m, BindingBundleState as n, BindingIsolatedDeclarationPluginConfig as o, BindingViteAssetImportMetaUrlPluginConfig as p, isolatedDeclaration as q, BindingClientHmrUpdate as r, BindingMagicString as s, BindingBuiltinPluginName as t, BindingReplacePluginConfig as u, BindingViteDynamicImportVarsPluginConfig as v, BindingViteModulePreloadPolyfillPluginConfig as w, BindingViteImportGlobPluginConfig as x, BindingViteHtmlInlineProxyPluginConfig as y, ParseResult as z };
|
package/dist/shared/{bindingify-input-options-D4i1DYzt.mjs → bindingify-input-options-CxbvPG4D.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as logPluginError, n as error, r as logCycleLoading, t as augmentCodeLocation } from "./logs-CPsamAuj.mjs";
|
|
2
|
-
import { a as unreachable,
|
|
3
|
-
import {
|
|
4
|
-
import { t as parseAst } from "./parse-ast-index-
|
|
2
|
+
import { a as unreachable, o as unsupported, t as arraify } from "./misc-5GYLGQ20.mjs";
|
|
3
|
+
import { E as LOG_LEVEL_WARN, S as normalizeLog, _ as PlainObjectLike, a as bindingifyManifestPlugin, c as collectChangedBundle, d as bindingifySourcemap, f as transformRenderedChunk, g as lazyProp, i as bindingifyCSSPostPlugin, l as transformToOutputBundle, m as bindingAssetSource, n as BuiltinPlugin, o as bindingifyViteHtmlPlugin, p as __decorate, r as bindingifyBuiltInPlugin, t as normalizedStringOrRegex, v as MinimalPluginContextImpl } from "./normalize-string-or-regex-B8NuOx7w.mjs";
|
|
4
|
+
import { t as parseAst } from "./parse-ast-index-C0k-VwRM.mjs";
|
|
5
5
|
import { a as include, c as or, i as id, n as code, o as moduleType, r as exclude, t as and } from "./composable-filters-DZ5ToxRJ.mjs";
|
|
6
6
|
import { BindingAttachDebugInfo, BindingChunkModuleOrderBy, BindingLogLevel, BindingMagicString, BindingPluginOrder, BindingPropertyReadSideEffects, BindingPropertyWriteSideEffects } from "../rolldown-binding.wasi.cjs";
|
|
7
7
|
import path from "node:path";
|
|
@@ -37,8 +37,13 @@ function normalizeBindingResult(container) {
|
|
|
37
37
|
}
|
|
38
38
|
function normalizeBindingError(e$1) {
|
|
39
39
|
return e$1.type === "JsError" ? e$1.field0 : Object.assign(/* @__PURE__ */ new Error(), {
|
|
40
|
+
code: e$1.field0.kind,
|
|
40
41
|
kind: e$1.field0.kind,
|
|
41
42
|
message: e$1.field0.message,
|
|
43
|
+
id: e$1.field0.id,
|
|
44
|
+
exporter: e$1.field0.exporter,
|
|
45
|
+
loc: e$1.field0.loc,
|
|
46
|
+
pos: e$1.field0.pos,
|
|
42
47
|
stack: void 0
|
|
43
48
|
});
|
|
44
49
|
}
|
|
@@ -383,7 +388,13 @@ var PluginContextImpl = class extends MinimalPluginContextImpl {
|
|
|
383
388
|
};
|
|
384
389
|
}
|
|
385
390
|
emitFile = (file) => {
|
|
386
|
-
if (file.type === "prebuilt-chunk") return
|
|
391
|
+
if (file.type === "prebuilt-chunk") return this.context.emitPrebuiltChunk({
|
|
392
|
+
fileName: file.fileName,
|
|
393
|
+
code: file.code,
|
|
394
|
+
exports: file.exports,
|
|
395
|
+
map: bindingifySourcemap(file.map),
|
|
396
|
+
sourcemapFileName: file.sourcemapFileName
|
|
397
|
+
});
|
|
387
398
|
if (file.type === "chunk") return this.context.emitChunk({
|
|
388
399
|
preserveEntrySignatures: bindingifyPreserveEntrySignatures(file.preserveSignature),
|
|
389
400
|
...file
|
|
@@ -1031,7 +1042,7 @@ var NormalizedInputOptionsImpl = class extends PlainObjectLike {
|
|
|
1031
1042
|
return this.inner.input;
|
|
1032
1043
|
}
|
|
1033
1044
|
get cwd() {
|
|
1034
|
-
return this.inner.cwd
|
|
1045
|
+
return this.inner.cwd;
|
|
1035
1046
|
}
|
|
1036
1047
|
get platform() {
|
|
1037
1048
|
return this.inner.platform;
|
|
@@ -1342,9 +1353,11 @@ function bindingifyInputOptions(rawPlugins, inputOptions, outputOptions, normali
|
|
|
1342
1353
|
const pluginContextData = new PluginContextData(onLog, outputOptions, normalizedOutputPlugins);
|
|
1343
1354
|
const plugins = rawPlugins.map((plugin) => {
|
|
1344
1355
|
if ("_parallel" in plugin) return;
|
|
1345
|
-
if (plugin instanceof BuiltinPlugin) {
|
|
1346
|
-
|
|
1347
|
-
return
|
|
1356
|
+
if (plugin instanceof BuiltinPlugin) switch (plugin.name) {
|
|
1357
|
+
case "builtin:vite-css-post": return bindingifyCSSPostPlugin(plugin, pluginContextData);
|
|
1358
|
+
case "builtin:vite-html": return bindingifyViteHtmlPlugin(plugin, onLog, logLevel, watchMode, pluginContextData);
|
|
1359
|
+
case "builtin:vite-manifest": return bindingifyManifestPlugin(plugin, pluginContextData);
|
|
1360
|
+
default: return bindingifyBuiltInPlugin(plugin);
|
|
1348
1361
|
}
|
|
1349
1362
|
return bindingifyPlugin(plugin, inputOptions, outputOptions, pluginContextData, normalizedOutputPlugins, onLog, logLevel, watchMode);
|
|
1350
1363
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as BuiltinPlugin, s as makeBuiltinPluginCallable, t as normalizedStringOrRegex } from "./normalize-string-or-regex-B8NuOx7w.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/builtin-plugin/constructors.ts
|
|
4
4
|
function viteModulePreloadPolyfillPlugin(config) {
|
|
@@ -17,9 +17,6 @@ function viteImportGlobPlugin(config) {
|
|
|
17
17
|
function viteReporterPlugin(config) {
|
|
18
18
|
return new BuiltinPlugin("builtin:vite-reporter", config);
|
|
19
19
|
}
|
|
20
|
-
function viteManifestPlugin(config) {
|
|
21
|
-
return new BuiltinPlugin("builtin:vite-manifest", config);
|
|
22
|
-
}
|
|
23
20
|
function viteWasmHelperPlugin(config) {
|
|
24
21
|
return new BuiltinPlugin("builtin:vite-wasm-helper", config);
|
|
25
22
|
}
|
|
@@ -36,7 +33,10 @@ function viteBuildImportAnalysisPlugin(config) {
|
|
|
36
33
|
return new BuiltinPlugin("builtin:vite-build-import-analysis", config);
|
|
37
34
|
}
|
|
38
35
|
function viteResolvePlugin(config) {
|
|
39
|
-
return makeBuiltinPluginCallable(new BuiltinPlugin("builtin:vite-resolve",
|
|
36
|
+
return makeBuiltinPluginCallable(new BuiltinPlugin("builtin:vite-resolve", {
|
|
37
|
+
...config,
|
|
38
|
+
yarnPnp: typeof process === "object" && !!process.versions?.pnp
|
|
39
|
+
}));
|
|
40
40
|
}
|
|
41
41
|
function isolatedDeclarationPlugin(config) {
|
|
42
42
|
return new BuiltinPlugin("builtin:isolated-declaration", config);
|
|
@@ -45,7 +45,9 @@ function viteWebWorkerPostPlugin() {
|
|
|
45
45
|
return new BuiltinPlugin("builtin:vite-web-worker-post");
|
|
46
46
|
}
|
|
47
47
|
function esmExternalRequirePlugin(config) {
|
|
48
|
-
|
|
48
|
+
const plugin = new BuiltinPlugin("builtin:esm-external-require", config);
|
|
49
|
+
plugin.enforce = "pre";
|
|
50
|
+
return plugin;
|
|
49
51
|
}
|
|
50
52
|
function viteReactRefreshWrapperPlugin(config) {
|
|
51
53
|
if (config) {
|
|
@@ -54,9 +56,6 @@ function viteReactRefreshWrapperPlugin(config) {
|
|
|
54
56
|
}
|
|
55
57
|
return makeBuiltinPluginCallable(new BuiltinPlugin("builtin:vite-react-refresh-wrapper", config));
|
|
56
58
|
}
|
|
57
|
-
function viteCSSPostPlugin(config) {
|
|
58
|
-
return new BuiltinPlugin("builtin:vite-css-post", config);
|
|
59
|
-
}
|
|
60
59
|
function viteHtmlInlineProxyPlugin(config) {
|
|
61
60
|
return new BuiltinPlugin("builtin:vite-html-inline-proxy", config);
|
|
62
61
|
}
|
|
@@ -65,4 +64,4 @@ function viteAssetImportMetaUrlPlugin(config) {
|
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
//#endregion
|
|
68
|
-
export {
|
|
67
|
+
export { viteDynamicImportVarsPlugin as a, viteJsonPlugin as c, viteReactRefreshWrapperPlugin as d, viteReporterPlugin as f, viteWebWorkerPostPlugin as g, viteWasmHelperPlugin as h, viteBuildImportAnalysisPlugin as i, viteLoadFallbackPlugin as l, viteWasmFallbackPlugin as m, isolatedDeclarationPlugin as n, viteHtmlInlineProxyPlugin as o, viteResolvePlugin as p, viteAssetImportMetaUrlPlugin as r, viteImportGlobPlugin as s, esmExternalRequirePlugin as t, viteModulePreloadPolyfillPlugin as u };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { t as BuiltinPlugin, u as StringOrRegExp } from "./utils-mjPIk7Yj.mjs";
|
|
2
|
+
import { D as BindingViteResolvePluginConfig, E as BindingViteReporterPluginConfig, S as BindingViteJsonPluginConfig, T as BindingViteReactRefreshWrapperPluginConfig, h as BindingViteBuildImportAnalysisPluginConfig, i as BindingEsmExternalRequirePluginConfig, k as BindingViteWasmHelperPluginConfig, o as BindingIsolatedDeclarationPluginConfig, p as BindingViteAssetImportMetaUrlPluginConfig, v as BindingViteDynamicImportVarsPluginConfig, w as BindingViteModulePreloadPolyfillPluginConfig, x as BindingViteImportGlobPluginConfig, y as BindingViteHtmlInlineProxyPluginConfig } from "./binding-yIBVkeOE.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/builtin-plugin/constructors.d.ts
|
|
5
|
+
declare function viteModulePreloadPolyfillPlugin(config?: BindingViteModulePreloadPolyfillPluginConfig): BuiltinPlugin;
|
|
6
|
+
type DynamicImportVarsPluginConfig = Omit<BindingViteDynamicImportVarsPluginConfig, "include" | "exclude"> & {
|
|
7
|
+
include?: StringOrRegExp | StringOrRegExp[];
|
|
8
|
+
exclude?: StringOrRegExp | StringOrRegExp[];
|
|
9
|
+
};
|
|
10
|
+
declare function viteDynamicImportVarsPlugin(config?: DynamicImportVarsPluginConfig): BuiltinPlugin;
|
|
11
|
+
declare function viteImportGlobPlugin(config?: BindingViteImportGlobPluginConfig): BuiltinPlugin;
|
|
12
|
+
declare function viteReporterPlugin(config: BindingViteReporterPluginConfig): BuiltinPlugin;
|
|
13
|
+
declare function viteWasmHelperPlugin(config: BindingViteWasmHelperPluginConfig): BuiltinPlugin;
|
|
14
|
+
declare function viteWasmFallbackPlugin(): BuiltinPlugin;
|
|
15
|
+
declare function viteLoadFallbackPlugin(): BuiltinPlugin;
|
|
16
|
+
declare function viteJsonPlugin(config: BindingViteJsonPluginConfig): BuiltinPlugin;
|
|
17
|
+
declare function viteBuildImportAnalysisPlugin(config: BindingViteBuildImportAnalysisPluginConfig): BuiltinPlugin;
|
|
18
|
+
declare function viteResolvePlugin(config: Omit<BindingViteResolvePluginConfig, "yarnPnp">): BuiltinPlugin;
|
|
19
|
+
declare function isolatedDeclarationPlugin(config?: BindingIsolatedDeclarationPluginConfig): BuiltinPlugin;
|
|
20
|
+
declare function viteWebWorkerPostPlugin(): BuiltinPlugin;
|
|
21
|
+
declare function esmExternalRequirePlugin(config?: BindingEsmExternalRequirePluginConfig): BuiltinPlugin;
|
|
22
|
+
type ViteReactRefreshWrapperPluginConfig = Omit<BindingViteReactRefreshWrapperPluginConfig, "include" | "exclude"> & {
|
|
23
|
+
include?: StringOrRegExp | StringOrRegExp[];
|
|
24
|
+
exclude?: StringOrRegExp | StringOrRegExp[];
|
|
25
|
+
};
|
|
26
|
+
declare function viteReactRefreshWrapperPlugin(config: ViteReactRefreshWrapperPluginConfig): BuiltinPlugin;
|
|
27
|
+
declare function viteHtmlInlineProxyPlugin(config: BindingViteHtmlInlineProxyPluginConfig): BuiltinPlugin;
|
|
28
|
+
declare function viteAssetImportMetaUrlPlugin(config: BindingViteAssetImportMetaUrlPluginConfig): BuiltinPlugin;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { viteDynamicImportVarsPlugin as a, viteJsonPlugin as c, viteReactRefreshWrapperPlugin as d, viteReporterPlugin as f, viteWebWorkerPostPlugin as g, viteWasmHelperPlugin as h, viteBuildImportAnalysisPlugin as i, viteLoadFallbackPlugin as l, viteWasmFallbackPlugin as m, isolatedDeclarationPlugin as n, viteHtmlInlineProxyPlugin as o, viteResolvePlugin as p, viteAssetImportMetaUrlPlugin as r, viteImportGlobPlugin as s, esmExternalRequirePlugin as t, viteModulePreloadPolyfillPlugin as u };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as MakeAsync, c as NullValue, d as LogLevel, f as LogLevelOption, g as RollupLogWithString, h as RollupLog, l as PartialNull, m as RollupError, n as LoggingFunction, o as MaybeArray, p as LogOrStringHandler, r as LoggingFunctionWithPosition, s as MaybePromise, t as BuiltinPlugin, u as StringOrRegExp } from "./utils-
|
|
2
|
-
import { A as BindingWatcherBundler, B as ParserOptions, F as JsxOptions, I as MinifyOptions$1, M as ExternalMemoryStatus, V as PreRenderedChunk, W as TransformOptions$1, a as BindingHookResolveIdExtraArgs, d as BindingTransformHookExtraArgs, j as BindingWatcherEvent, l as BindingRenderedChunk, s as BindingMagicString } from "./binding-
|
|
1
|
+
import { a as MakeAsync, c as NullValue, d as LogLevel, f as LogLevelOption, g as RollupLogWithString, h as RollupLog, l as PartialNull, m as RollupError, n as LoggingFunction, o as MaybeArray, p as LogOrStringHandler, r as LoggingFunctionWithPosition, s as MaybePromise, t as BuiltinPlugin, u as StringOrRegExp } from "./utils-mjPIk7Yj.mjs";
|
|
2
|
+
import { A as BindingWatcherBundler, B as ParserOptions, F as JsxOptions, I as MinifyOptions$1, M as ExternalMemoryStatus, V as PreRenderedChunk, W as TransformOptions$1, a as BindingHookResolveIdExtraArgs, d as BindingTransformHookExtraArgs, j as BindingWatcherEvent, l as BindingRenderedChunk, s as BindingMagicString } from "./binding-yIBVkeOE.mjs";
|
|
3
3
|
import { Program } from "@oxc-project/types";
|
|
4
4
|
import { TopLevelFilterExpression } from "@rolldown/pluginutils";
|
|
5
5
|
|
|
@@ -669,7 +669,7 @@ declare const watch: (input: WatchOptions | WatchOptions[]) => RolldownWatcher;
|
|
|
669
669
|
//#region src/options/normalized-input-options.d.ts
|
|
670
670
|
interface NormalizedInputOptions {
|
|
671
671
|
input: string[] | Record<string, string>;
|
|
672
|
-
cwd: string
|
|
672
|
+
cwd: string;
|
|
673
673
|
platform: InputOptions["platform"];
|
|
674
674
|
shimMissingExports: boolean;
|
|
675
675
|
context: string;
|
|
@@ -867,7 +867,15 @@ interface EmittedChunk {
|
|
|
867
867
|
id: string;
|
|
868
868
|
importer?: string;
|
|
869
869
|
}
|
|
870
|
-
|
|
870
|
+
interface EmittedPrebuiltChunk {
|
|
871
|
+
type: "prebuilt-chunk";
|
|
872
|
+
fileName: string;
|
|
873
|
+
code: string;
|
|
874
|
+
exports?: string[];
|
|
875
|
+
map?: SourceMap;
|
|
876
|
+
sourcemapFileName?: string;
|
|
877
|
+
}
|
|
878
|
+
type EmittedFile = EmittedAsset | EmittedChunk | EmittedPrebuiltChunk;
|
|
871
879
|
interface PluginContextResolveOptions {
|
|
872
880
|
isEntry?: boolean;
|
|
873
881
|
skipSelf?: boolean;
|
|
@@ -1174,6 +1182,11 @@ interface ChecksOptions {
|
|
|
1174
1182
|
* @default true
|
|
1175
1183
|
*/
|
|
1176
1184
|
couldNotCleanDirectory?: boolean;
|
|
1185
|
+
/**
|
|
1186
|
+
* Whether to emit warning when detecting plugin timings
|
|
1187
|
+
* @default true
|
|
1188
|
+
*/
|
|
1189
|
+
pluginTimings?: boolean;
|
|
1177
1190
|
}
|
|
1178
1191
|
//#endregion
|
|
1179
1192
|
//#region src/options/transform-options.d.ts
|
|
@@ -1618,4 +1631,4 @@ declare function defineConfig(config: RolldownOptions[]): RolldownOptions[];
|
|
|
1618
1631
|
declare function defineConfig(config: RolldownOptionsFunction): RolldownOptionsFunction;
|
|
1619
1632
|
declare function defineConfig(config: ConfigExport): ConfigExport;
|
|
1620
1633
|
//#endregion
|
|
1621
|
-
export {
|
|
1634
|
+
export { InternalModuleFormat as $, VERSION as A, GetModuleInfo as B, ResolveIdResult as C, RenderedModule as Ct, SourceDescription as D, ModuleInfo as Dt, RolldownPluginOption as E, freeExternalMemory as Et, TreeshakingOptions as F, PluginContextMeta as G, DefineParallelPluginResult as H, TransformPluginContext as I, ModuleTypeFilter as J, GeneralHookFilter as K, EmittedAsset as L, SourceMapInput as M, RolldownOptionsFunction as N, TransformResult as O, SourcemapIgnoreListOption as Ot, OutputBundle as P, RolldownFsModule as Q, EmittedFile as R, ResolveIdExtraOptions as S, RenderedChunk as St, RolldownPlugin as T, SourceMap as Tt, defineParallelPlugin as U, PluginContext as V, MinimalPluginContext as W, RolldownDirectoryEntry as X, BufferEncoding as Y, RolldownFileStats as Z, ModuleType as _, ModuleFormat as _t, InputOption as a, WatchOptions as at, PartialResolvedId as b, OutputAsset as bt, OptimizationOptions as c, BuildOptions as ct, CustomPluginOptions as d, ChunkFileNamesFunction as dt, NormalizedOutputOptions as et, FunctionPluginHooks as f, ChunkingContext as ft, ModuleOptions as g, MinifyOptions as gt, LoadResult as h, GlobalsFunction as ht, ExternalOption as i, RolldownWatcherEvent as it, ExistingRawSourceMap as j, withFilter as k, WatcherOptions as l, build as lt, ImportKind as m, GeneratedCodePreset as mt, ConfigExport as n, watch as nt, InputOptions as o, rolldown as ot, HookFilterExtension as p, GeneratedCodeOptions as pt, HookFilter as q, RolldownOptions as r, RolldownWatcher as rt, ModuleTypes as s, RolldownBuild as st, defineConfig as t, NormalizedInputOptions as tt, AsyncPluginHooks as u, AddonFunction as ut, ObjectHook as v, OutputOptions as vt, ResolvedId as w, RolldownOutput as wt, Plugin as x, OutputChunk as xt, ParallelPluginHooks as y, PreRenderedAsset as yt, EmittedPrebuiltChunk as z };
|
|
@@ -32,7 +32,7 @@ function getLogHandler(level, code, logger, pluginName, logLevel) {
|
|
|
32
32
|
|
|
33
33
|
//#endregion
|
|
34
34
|
//#region package.json
|
|
35
|
-
var version = "1.0.0-beta.
|
|
35
|
+
var version = "1.0.0-beta.54";
|
|
36
36
|
var description = "Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.";
|
|
37
37
|
|
|
38
38
|
//#endregion
|
|
@@ -190,7 +190,7 @@ function bindingAssetSource(source) {
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
//#endregion
|
|
193
|
-
//#region \0@oxc-project+runtime@0.
|
|
193
|
+
//#region \0@oxc-project+runtime@0.102.0/helpers/decorate.js
|
|
194
194
|
function __decorate(decorators, target, key, desc) {
|
|
195
195
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
196
196
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -557,6 +557,8 @@ function collectChangedBundle(changed, bundle) {
|
|
|
557
557
|
//#endregion
|
|
558
558
|
//#region src/builtin-plugin/utils.ts
|
|
559
559
|
var BuiltinPlugin = class {
|
|
560
|
+
/** Vite-specific option to control plugin ordering */
|
|
561
|
+
enforce;
|
|
560
562
|
constructor(name, _options) {
|
|
561
563
|
this.name = name;
|
|
562
564
|
this._options = _options;
|
|
@@ -584,7 +586,36 @@ function bindingifyBuiltInPlugin(plugin) {
|
|
|
584
586
|
options: plugin._options
|
|
585
587
|
};
|
|
586
588
|
}
|
|
587
|
-
function
|
|
589
|
+
function bindingifyManifestPlugin(plugin, pluginContextData) {
|
|
590
|
+
const { isOutputOptionsForLegacyChunks, ...options } = plugin._options;
|
|
591
|
+
return {
|
|
592
|
+
__name: plugin.name,
|
|
593
|
+
options: {
|
|
594
|
+
...options,
|
|
595
|
+
isLegacy: isOutputOptionsForLegacyChunks ? (opts) => {
|
|
596
|
+
return isOutputOptionsForLegacyChunks(pluginContextData.getOutputOptions(opts));
|
|
597
|
+
} : void 0
|
|
598
|
+
}
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
function bindingifyCSSPostPlugin(plugin, pluginContextData) {
|
|
602
|
+
const { isOutputOptionsForLegacyChunks, ...options } = plugin._options;
|
|
603
|
+
return {
|
|
604
|
+
__name: plugin.name,
|
|
605
|
+
options: {
|
|
606
|
+
...options,
|
|
607
|
+
isLegacy: isOutputOptionsForLegacyChunks ? (opts) => {
|
|
608
|
+
return isOutputOptionsForLegacyChunks(pluginContextData.getOutputOptions(opts));
|
|
609
|
+
} : void 0,
|
|
610
|
+
cssScopeTo() {
|
|
611
|
+
const cssScopeTo = {};
|
|
612
|
+
for (const [id, opts] of pluginContextData.moduleOptionMap.entries()) if (opts?.meta.vite?.cssScopeTo) cssScopeTo[id] = opts.meta.vite.cssScopeTo;
|
|
613
|
+
return cssScopeTo;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
function bindingifyViteHtmlPlugin(plugin, onLog, logLevel, watchMode, pluginContextData) {
|
|
588
619
|
const { preHooks, normalHooks, postHooks, applyHtmlTransforms, ...options } = plugin._options;
|
|
589
620
|
if (preHooks.length + normalHooks.length + postHooks.length > 0) return {
|
|
590
621
|
__name: plugin.name,
|
|
@@ -605,6 +636,14 @@ function bindingifyViteHtmlPlugin(plugin, onLog, logLevel, watchMode) {
|
|
|
605
636
|
case "transform": return await applyHtmlTransforms(html, preHooks, pluginContext, context);
|
|
606
637
|
case "generateBundle": return await applyHtmlTransforms(html, [...normalHooks, ...postHooks], pluginContext, context);
|
|
607
638
|
}
|
|
639
|
+
},
|
|
640
|
+
setModuleSideEffects(id) {
|
|
641
|
+
let opts = pluginContextData.getModuleOption(id);
|
|
642
|
+
pluginContextData.updateModuleOption(id, {
|
|
643
|
+
moduleSideEffects: true,
|
|
644
|
+
meta: opts.meta,
|
|
645
|
+
invalidate: true
|
|
646
|
+
});
|
|
608
647
|
}
|
|
609
648
|
}
|
|
610
649
|
};
|
|
@@ -626,4 +665,4 @@ function isReadonlyArray(input) {
|
|
|
626
665
|
}
|
|
627
666
|
|
|
628
667
|
//#endregion
|
|
629
|
-
export {
|
|
668
|
+
export { LOG_LEVEL_DEBUG as C, logLevelPriority as D, LOG_LEVEL_WARN as E, normalizeLog as S, LOG_LEVEL_INFO as T, PlainObjectLike as _, bindingifyManifestPlugin as a, description as b, collectChangedBundle as c, bindingifySourcemap as d, transformRenderedChunk as f, lazyProp as g, transformAssetSource as h, bindingifyCSSPostPlugin as i, transformToOutputBundle as l, bindingAssetSource as m, BuiltinPlugin as n, bindingifyViteHtmlPlugin as o, __decorate as p, bindingifyBuiltInPlugin as r, makeBuiltinPluginCallable as s, normalizedStringOrRegex as t, transformToRollupOutput as u, MinimalPluginContextImpl as v, LOG_LEVEL_ERROR as w, version as x, VERSION as y };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { l as locate, n as error, s as logParseError, u as getCodeFrame } from "./logs-CPsamAuj.mjs";
|
|
2
2
|
import { parse, parseSync } from "../rolldown-binding.wasi.cjs";
|
|
3
3
|
|
|
4
|
-
//#region ../../node_modules/.pnpm/oxc-parser@0.
|
|
4
|
+
//#region ../../node_modules/.pnpm/oxc-parser@0.102.0/node_modules/oxc-parser/src-js/wrap.js
|
|
5
5
|
function wrap$1(result) {
|
|
6
6
|
let program, module, comments, errors;
|
|
7
7
|
return {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as PluginDriver, s as validateOption, t as RolldownBuild } from "./rolldown-build-
|
|
1
|
+
import { l as PluginDriver, s as validateOption, t as RolldownBuild } from "./rolldown-build-yjeMNdrl.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/api/rolldown/index.ts
|
|
4
4
|
const rolldown = async (input) => {
|