rolldown 1.0.0-beta.34 → 1.0.0-beta.35

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.
Files changed (33) hide show
  1. package/dist/cli.cjs +217 -211
  2. package/dist/cli.mjs +204 -204
  3. package/dist/config.cjs +3 -3
  4. package/dist/config.d.cts +1 -1
  5. package/dist/config.d.mts +1 -1
  6. package/dist/config.mjs +3 -3
  7. package/dist/experimental-index.cjs +23 -8
  8. package/dist/experimental-index.d.cts +13 -4
  9. package/dist/experimental-index.d.mts +13 -4
  10. package/dist/experimental-index.mjs +21 -7
  11. package/dist/filter-index.cjs +2 -1
  12. package/dist/filter-index.d.cts +1 -1
  13. package/dist/filter-index.d.mts +1 -1
  14. package/dist/index.cjs +2 -2
  15. package/dist/index.d.cts +1 -1
  16. package/dist/index.d.mts +1 -1
  17. package/dist/index.mjs +2 -2
  18. package/dist/parallel-plugin-worker.cjs +4 -3
  19. package/dist/parallel-plugin-worker.mjs +2 -2
  20. package/dist/parallel-plugin.d.cts +1 -1
  21. package/dist/parallel-plugin.d.mts +1 -1
  22. package/dist/parse-ast-index.cjs +1 -1
  23. package/dist/parse-ast-index.mjs +1 -1
  24. package/dist/shared/{define-config-DVSr6Unb.d.mts → define-config-3arq8OPE.d.mts} +29 -2
  25. package/dist/shared/{define-config-D5AluabE.d.cts → define-config-DhrkZ_o7.d.cts} +29 -2
  26. package/dist/shared/{load-config-CXpGBNqp.mjs → load-config-C93_L4MP.mjs} +1 -1
  27. package/dist/shared/{load-config-CefxSUnT.cjs → load-config-S_ofSLrj.cjs} +11 -6
  28. package/dist/shared/{parse-ast-index-DjojK-Vf.mjs → parse-ast-index-BadydpMA.mjs} +25 -25
  29. package/dist/shared/{parse-ast-index-BCv3Y1TT.cjs → parse-ast-index-cePJvlvW.cjs} +36 -24
  30. package/dist/shared/{prompt-QNI93ne7.cjs → prompt-Q05EYrFb.cjs} +8 -4
  31. package/dist/shared/{src-djpzntWm.cjs → src-BBMxhaqf.cjs} +93 -42
  32. package/dist/shared/{src-Chn1S4O2.mjs → src-D954P1TH.mjs} +75 -31
  33. package/package.json +18 -19
@@ -1,25 +1,33 @@
1
- import { BindingAttachDebugInfo, BindingBundler, BindingCallableBuiltinPlugin, BindingChunkModuleOrderBy, BindingJsx, BindingLogLevel, BindingPluginOrder, BindingWatcher, ParallelJsPluginRegistry, augmentCodeLocation, error, logCycleLoading, logDuplicateJsxConfig, logInputHookInOutputPlugin, logInvalidLogPosition, logMultiplyNotifyOption, logPluginError, parseAst, shutdownAsyncRuntime, startAsyncRuntime } from "./parse-ast-index-DjojK-Vf.mjs";
1
+ import { BindingAttachDebugInfo, BindingBundler, BindingCallableBuiltinPlugin, BindingChunkModuleOrderBy, BindingJsx, BindingLogLevel, BindingPluginOrder, BindingPropertyReadSideEffects, BindingPropertyWriteSideEffects, BindingWatcher, ParallelJsPluginRegistry, augmentCodeLocation, error, logCycleLoading, logDuplicateJsxConfig, logInputHookInOutputPlugin, logInvalidLogPosition, logMultiplyNotifyOption, logPluginError, parseAst, shutdownAsyncRuntime, startAsyncRuntime } from "./parse-ast-index-BadydpMA.mjs";
2
2
  import { arraify, noop, unimplemented, unreachable, unsupported } from "./misc-CQeo-AFx.mjs";
3
+ import { Worker } from "node:worker_threads";
3
4
  import path from "node:path";
4
5
  import { fileURLToPath } from "node:url";
5
6
  import colors from "ansis";
6
7
  import * as filter from "@rolldown/pluginutils";
7
8
  import fsp from "node:fs/promises";
8
9
  import os from "node:os";
9
- import { Worker } from "node:worker_threads";
10
10
 
11
11
  //#region package.json
12
- var version = "1.0.0-beta.34";
12
+ var version = "1.0.0-beta.35";
13
13
  var description$1 = "Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.";
14
14
 
15
15
  //#endregion
16
16
  //#region src/builtin-plugin/utils.ts
17
+ const BuiltinClassSymbol = Symbol.for("__RolldownBuiltinPlugin__");
17
18
  var BuiltinPlugin = class {
18
19
  constructor(name, _options) {
19
20
  this.name = name;
20
21
  this._options = _options;
22
+ this[BuiltinClassSymbol] = true;
21
23
  }
22
24
  };
25
+ function isBuiltinPlugin(obj) {
26
+ return obj && obj[BuiltinClassSymbol] === true;
27
+ }
28
+ function createBuiltinPlugin(name, options) {
29
+ return new BuiltinPlugin(name, options);
30
+ }
23
31
  function makeBuiltinPluginCallable(plugin) {
24
32
  let callablePlugin = new BindingCallableBuiltinPlugin(bindingifyBuiltInPlugin(plugin));
25
33
  const wrappedPlugin = plugin;
@@ -181,59 +189,59 @@ function isReadonlyArray(input) {
181
189
  //#endregion
182
190
  //#region src/builtin-plugin/constructors.ts
183
191
  function modulePreloadPolyfillPlugin(config) {
184
- return new BuiltinPlugin("builtin:module-preload-polyfill", config);
192
+ return createBuiltinPlugin("builtin:module-preload-polyfill", config);
185
193
  }
186
194
  function dynamicImportVarsPlugin(config) {
187
195
  if (config) {
188
196
  config.include = normalizedStringOrRegex(config.include);
189
197
  config.exclude = normalizedStringOrRegex(config.exclude);
190
198
  }
191
- return new BuiltinPlugin("builtin:dynamic-import-vars", config);
199
+ return createBuiltinPlugin("builtin:dynamic-import-vars", config);
192
200
  }
193
201
  function importGlobPlugin(config) {
194
- return new BuiltinPlugin("builtin:import-glob", config);
202
+ return createBuiltinPlugin("builtin:import-glob", config);
195
203
  }
196
204
  function reporterPlugin(config) {
197
- return new BuiltinPlugin("builtin:reporter", config);
205
+ return createBuiltinPlugin("builtin:reporter", config);
198
206
  }
199
207
  function manifestPlugin(config) {
200
- return new BuiltinPlugin("builtin:manifest", config);
208
+ return createBuiltinPlugin("builtin:manifest", config);
201
209
  }
202
210
  function wasmHelperPlugin(config) {
203
- return new BuiltinPlugin("builtin:wasm-helper", config);
211
+ return createBuiltinPlugin("builtin:wasm-helper", config);
204
212
  }
205
213
  function wasmFallbackPlugin() {
206
- const builtinPlugin = new BuiltinPlugin("builtin:wasm-fallback");
214
+ const builtinPlugin = createBuiltinPlugin("builtin:wasm-fallback");
207
215
  return makeBuiltinPluginCallable(builtinPlugin);
208
216
  }
209
217
  function loadFallbackPlugin() {
210
- return new BuiltinPlugin("builtin:load-fallback");
218
+ return createBuiltinPlugin("builtin:load-fallback");
211
219
  }
212
220
  function jsonPlugin(config) {
213
- const builtinPlugin = new BuiltinPlugin("builtin:json", config);
221
+ const builtinPlugin = createBuiltinPlugin("builtin:json", config);
214
222
  return makeBuiltinPluginCallable(builtinPlugin);
215
223
  }
216
224
  function buildImportAnalysisPlugin(config) {
217
- return new BuiltinPlugin("builtin:build-import-analysis", config);
225
+ return createBuiltinPlugin("builtin:build-import-analysis", config);
218
226
  }
219
227
  function viteResolvePlugin(config) {
220
- const builtinPlugin = new BuiltinPlugin("builtin:vite-resolve", config);
228
+ const builtinPlugin = createBuiltinPlugin("builtin:vite-resolve", config);
221
229
  return makeBuiltinPluginCallable(builtinPlugin);
222
230
  }
223
231
  function isolatedDeclarationPlugin(config) {
224
- return new BuiltinPlugin("builtin:isolated-declaration", config);
232
+ return createBuiltinPlugin("builtin:isolated-declaration", config);
225
233
  }
226
234
  function assetPlugin(config) {
227
- return new BuiltinPlugin("builtin:asset", config);
235
+ return createBuiltinPlugin("builtin:asset", config);
228
236
  }
229
237
  function webWorkerPostPlugin() {
230
- return new BuiltinPlugin("builtin:web-worker-post");
238
+ return createBuiltinPlugin("builtin:web-worker-post");
231
239
  }
232
240
  function oxcRuntimePlugin(config) {
233
- return new BuiltinPlugin("builtin:oxc-runtime", config);
241
+ return createBuiltinPlugin("builtin:oxc-runtime", config);
234
242
  }
235
243
  function esmExternalRequirePlugin(config) {
236
- return new BuiltinPlugin("builtin:esm-external-require", config);
244
+ return createBuiltinPlugin("builtin:esm-external-require", config);
237
245
  }
238
246
 
239
247
  //#endregion
@@ -327,7 +335,7 @@ function checkOutputPluginOption(plugins, onLog) {
327
335
  function normalizePlugins(plugins, anonymousPrefix) {
328
336
  for (const [index, plugin] of plugins.entries()) {
329
337
  if ("_parallel" in plugin) continue;
330
- if (plugin instanceof BuiltinPlugin) continue;
338
+ if (isBuiltinPlugin(plugin)) continue;
331
339
  if (!plugin.name) plugin.name = `${anonymousPrefix}${index + 1}`;
332
340
  }
333
341
  return plugins;
@@ -396,7 +404,7 @@ function getObjectPlugins(plugins) {
396
404
  return plugins.filter((plugin) => {
397
405
  if (!plugin) return void 0;
398
406
  if ("_parallel" in plugin) return void 0;
399
- if (plugin instanceof BuiltinPlugin) return void 0;
407
+ if (isBuiltinPlugin(plugin)) return void 0;
400
408
  return plugin;
401
409
  });
402
410
  }
@@ -1956,10 +1964,19 @@ const TreeshakingOptionsSchema = union([boolean(), looseObject({
1956
1964
  annotations: optional(boolean()),
1957
1965
  manualPureFunctions: optional(array(string())),
1958
1966
  unknownGlobalSideEffects: optional(boolean()),
1959
- commonjs: optional(boolean())
1967
+ commonjs: optional(boolean()),
1968
+ propertyReadSideEffects: optional(union([literal(false), literal("always")])),
1969
+ propertyWriteSideEffects: optional(union([literal(false), literal("always")]))
1960
1970
  })]);
1961
1971
  const OptimizationOptionsSchema = strictObject({
1962
- inlineConst: pipe(optional(boolean()), description("Enable crossmodule constant inlining")),
1972
+ inlineConst: pipe(optional(union([
1973
+ boolean(),
1974
+ literal("smart"),
1975
+ strictObject({
1976
+ mode: optional(union([literal("all"), literal("smart")])),
1977
+ pass: optional(number())
1978
+ })
1979
+ ])), description("Enable crossmodule constant inlining")),
1963
1980
  pifeForModuleWrappers: pipe(optional(boolean()), description("Use PIFE pattern for module wrappers"))
1964
1981
  });
1965
1982
  const OnLogSchema = pipe(function_(), args(tuple([
@@ -1969,6 +1986,7 @@ const OnLogSchema = pipe(function_(), args(tuple([
1969
1986
  ])));
1970
1987
  const OnwarnSchema = pipe(function_(), args(tuple([RollupLogSchema, pipe(function_(), args(tuple([union([RollupLogWithStringSchema, pipe(function_(), returns(RollupLogWithStringSchema))])])))])));
1971
1988
  const HmrSchema = union([boolean(), strictObject({
1989
+ new: optional(boolean()),
1972
1990
  port: optional(number()),
1973
1991
  host: optional(string()),
1974
1992
  implement: optional(string())
@@ -2205,15 +2223,19 @@ function validateCliOptions(options) {
2205
2223
  return `Invalid value for option ${option}: ${issue.message}`;
2206
2224
  })];
2207
2225
  }
2208
- const inputHelperMsgRecord = { output: { ignored: true } };
2226
+ const inputHelperMsgRecord = {
2227
+ output: { ignored: true },
2228
+ "resolve.tsconfigFilename": { issueMsg: "It is deprecated. Please use the top-level `tsconfig` option instead." }
2229
+ };
2209
2230
  const outputHelperMsgRecord = {};
2210
2231
  function validateOption(key, options) {
2232
+ if (typeof options !== "object") throw new Error(`Invalid ${key} options. Expected an Object but received ${JSON.stringify(options)}.`);
2211
2233
  if (globalThis.process?.env?.ROLLUP_TEST) return;
2212
2234
  let parsed = safeParse(key === "input" ? InputOptionsSchema : OutputOptionsSchema, options);
2213
2235
  if (!parsed.success) {
2214
2236
  const errors = parsed.issues.map((issue) => {
2215
- const issuePaths = issue.path.map((path$1) => path$1.key);
2216
2237
  let issueMsg = issue.message;
2238
+ const issuePaths = issue.path.map((path$1) => path$1.key);
2217
2239
  if (issue.type === "union") {
2218
2240
  const subIssue = issue.issues?.find((i) => !(i.type !== issue.received && i.input === issue.input));
2219
2241
  if (subIssue) {
@@ -2224,9 +2246,9 @@ function validateOption(key, options) {
2224
2246
  const stringPath = issuePaths.join(".");
2225
2247
  const helper = key === "input" ? inputHelperMsgRecord[stringPath] : outputHelperMsgRecord[stringPath];
2226
2248
  if (helper && helper.ignored) return "";
2227
- return `- For the "${stringPath}". ${issueMsg}. ${helper ? helper.msg : ""}`;
2249
+ return `- For the "${stringPath}". ${helper?.issueMsg || issueMsg + "."} ${helper?.help ? `\n Help: ${helper.help}` : ""}`;
2228
2250
  }).filter(Boolean);
2229
- if (errors.length) console.warn(`Warning validate ${key} options.\n` + errors.join("\n"));
2251
+ if (errors.length) console.warn(`\x1b[33mWarning: Invalid ${key} options (${errors.length} issue${errors.length === 1 ? "" : "s"} found)\n${errors.join("\n")}\x1b[0m`);
2230
2252
  }
2231
2253
  }
2232
2254
  function getInputCliKeys() {
@@ -2299,6 +2321,10 @@ function getErrorMessage(e$1) {
2299
2321
  s += message;
2300
2322
  if (e$1.frame) s = joinNewLine(s, e$1.frame);
2301
2323
  if (e$1.stack) s = joinNewLine(s, e$1.stack.replace(message, ""));
2324
+ if (e$1.cause) {
2325
+ s = joinNewLine(s, "Caused by:");
2326
+ s = joinNewLine(s, getErrorMessage(e$1.cause).split("\n").map((line) => " " + line).join("\n"));
2327
+ }
2302
2328
  return s;
2303
2329
  }
2304
2330
  function joinNewLine(s1, s2) {
@@ -3813,7 +3839,7 @@ function bindingifyInputOptions(rawPlugins, inputOptions, outputOptions, normali
3813
3839
  const pluginContextData = new PluginContextData(onLog, outputOptions, normalizedOutputPlugins);
3814
3840
  const plugins = rawPlugins.map((plugin) => {
3815
3841
  if ("_parallel" in plugin) return void 0;
3816
- if (plugin instanceof BuiltinPlugin) return bindingifyBuiltInPlugin(plugin);
3842
+ if (isBuiltinPlugin(plugin)) return bindingifyBuiltInPlugin(plugin);
3817
3843
  return bindingifyPlugin(plugin, inputOptions, outputOptions, pluginContextData, normalizedOutputPlugins, onLog, logLevel, watchMode);
3818
3844
  });
3819
3845
  const { jsx, transform } = bindingifyJsx(onLog, inputOptions.jsx, inputOptions.transform);
@@ -3826,7 +3852,7 @@ function bindingifyInputOptions(rawPlugins, inputOptions, outputOptions, normali
3826
3852
  platform: inputOptions.platform,
3827
3853
  shimMissingExports: inputOptions.shimMissingExports,
3828
3854
  logLevel: bindingifyLogLevel(logLevel),
3829
- onLog,
3855
+ onLog: async (level, log) => onLog(level, log),
3830
3856
  treeshake: bindingifyTreeshakeOptions(inputOptions.treeshake),
3831
3857
  moduleTypes: inputOptions.moduleTypes,
3832
3858
  define: inputOptions.define ? Object.entries(inputOptions.define) : void 0,
@@ -3856,7 +3882,7 @@ function bindingifyInputOptions(rawPlugins, inputOptions, outputOptions, normali
3856
3882
  preserveEntrySignatures: bindingifyPreserveEntrySignatures(inputOptions.preserveEntrySignatures),
3857
3883
  optimization: inputOptions.optimization,
3858
3884
  context: inputOptions.context,
3859
- tsconfig: inputOptions.tsconfig
3885
+ tsconfig: inputOptions.resolve?.tsconfigFilename ?? inputOptions.tsconfig
3860
3886
  };
3861
3887
  }
3862
3888
  function bindingifyHmr(hmr) {
@@ -4031,6 +4057,24 @@ function bindingifyTreeshakeOptions(config) {
4031
4057
  unknownGlobalSideEffects: config.unknownGlobalSideEffects,
4032
4058
  commonjs: config.commonjs
4033
4059
  };
4060
+ switch (config.propertyReadSideEffects) {
4061
+ case "always":
4062
+ normalizedConfig.propertyReadSideEffects = BindingPropertyReadSideEffects.Always;
4063
+ break;
4064
+ case false:
4065
+ normalizedConfig.propertyReadSideEffects = BindingPropertyReadSideEffects.False;
4066
+ break;
4067
+ default:
4068
+ }
4069
+ switch (config.propertyWriteSideEffects) {
4070
+ case "always":
4071
+ normalizedConfig.propertyWriteSideEffects = BindingPropertyWriteSideEffects.Always;
4072
+ break;
4073
+ case false:
4074
+ normalizedConfig.propertyWriteSideEffects = BindingPropertyWriteSideEffects.False;
4075
+ break;
4076
+ default:
4077
+ }
4034
4078
  if (config.moduleSideEffects === void 0) normalizedConfig.moduleSideEffects = true;
4035
4079
  else if (config.moduleSideEffects === "no-external") normalizedConfig.moduleSideEffects = [{
4036
4080
  external: true,
@@ -4415,4 +4459,4 @@ function defineConfig(config) {
4415
4459
  const VERSION = version;
4416
4460
 
4417
4461
  //#endregion
4418
- export { BuiltinPlugin, PluginContextData, PluginDriver, VERSION, assetPlugin, bindingifyPlugin, build, buildImportAnalysisPlugin, createBundlerImpl, createBundlerOptions, defineConfig, description$1 as description, dynamicImportVarsPlugin, esmExternalRequirePlugin, getInputCliKeys, getJsonSchema, getOutputCliKeys, handleOutputErrors, importGlobPlugin, isolatedDeclarationPlugin, jsonPlugin, loadFallbackPlugin, manifestPlugin, modulePreloadPolyfillPlugin, normalizedStringOrRegex, reporterPlugin, rolldown, validateCliOptions, version, viteResolvePlugin, wasmFallbackPlugin, wasmHelperPlugin, watch, webWorkerPostPlugin };
4462
+ export { PluginContextData, PluginDriver, VERSION, assetPlugin, bindingifyPlugin, build, buildImportAnalysisPlugin, createBuiltinPlugin, createBundlerImpl, createBundlerOptions, defineConfig, description$1 as description, dynamicImportVarsPlugin, esmExternalRequirePlugin, getInputCliKeys, getJsonSchema, getOutputCliKeys, handleOutputErrors, importGlobPlugin, isolatedDeclarationPlugin, jsonPlugin, loadFallbackPlugin, manifestPlugin, modulePreloadPolyfillPlugin, normalizedStringOrRegex, reporterPlugin, rolldown, validateCliOptions, version, viteResolvePlugin, wasmFallbackPlugin, wasmHelperPlugin, watch, webWorkerPostPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rolldown",
3
- "version": "1.0.0-beta.34",
3
+ "version": "1.0.0-beta.35",
4
4
  "description": "Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.",
5
5
  "type": "module",
6
6
  "homepage": "https://rolldown.rs/",
@@ -95,7 +95,7 @@
95
95
  "@oxc-project/runtime": "=0.82.3",
96
96
  "@oxc-project/types": "=0.82.3",
97
97
  "ansis": "^4.0.0",
98
- "@rolldown/pluginutils": "1.0.0-beta.34"
98
+ "@rolldown/pluginutils": "1.0.0-beta.35"
99
99
  },
100
100
  "devDependencies": {
101
101
  "@napi-rs/cli": "^3.1.2",
@@ -111,7 +111,7 @@
111
111
  "oxc-parser": "=0.82.3",
112
112
  "pathe": "^2.0.3",
113
113
  "remeda": "^2.10.0",
114
- "rolldown-plugin-dts": "^0.15.0",
114
+ "rolldown-plugin-dts": "^0.16.0",
115
115
  "rollup": "^4.18.0",
116
116
  "signal-exit": "4.1.0",
117
117
  "source-map": "^0.7.4",
@@ -119,24 +119,23 @@
119
119
  "typedoc": "^0.28.0",
120
120
  "typescript": "^5.7.3",
121
121
  "valibot": "1.1.0",
122
- "rolldown": "1.0.0-beta.34",
123
- "@rolldown/testing": "0.0.1"
122
+ "rolldown": "1.0.0-beta.35"
124
123
  },
125
124
  "optionalDependencies": {
126
- "@rolldown/binding-darwin-x64": "1.0.0-beta.34",
127
- "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.34",
128
- "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.34",
129
- "@rolldown/binding-linux-x64-musl": "1.0.0-beta.34",
130
- "@rolldown/binding-freebsd-x64": "1.0.0-beta.34",
131
- "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.34",
132
- "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.34",
133
- "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.34",
134
- "@rolldown/binding-darwin-arm64": "1.0.0-beta.34",
135
- "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.34",
136
- "@rolldown/binding-openharmony-arm64": "1.0.0-beta.34",
137
- "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.34",
138
- "@rolldown/binding-android-arm64": "1.0.0-beta.34",
139
- "@rolldown/binding-wasm32-wasi": "1.0.0-beta.34"
125
+ "@rolldown/binding-darwin-x64": "1.0.0-beta.35",
126
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.35",
127
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.35",
128
+ "@rolldown/binding-linux-x64-musl": "1.0.0-beta.35",
129
+ "@rolldown/binding-freebsd-x64": "1.0.0-beta.35",
130
+ "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.35",
131
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.35",
132
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.35",
133
+ "@rolldown/binding-darwin-arm64": "1.0.0-beta.35",
134
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.35",
135
+ "@rolldown/binding-openharmony-arm64": "1.0.0-beta.35",
136
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.35",
137
+ "@rolldown/binding-android-arm64": "1.0.0-beta.35",
138
+ "@rolldown/binding-wasm32-wasi": "1.0.0-beta.35"
140
139
  },
141
140
  "scripts": {
142
141
  "# Scrips for binding #": "_",