@bepack/cli 0.1.0-beta.0 → 0.1.0-beta.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/README.md +73 -10
- package/README.zh-CN.md +73 -10
- package/dist/cli.js +5 -5
- package/dist/index.d.ts +181 -5
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/reference.md +411 -12
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RolldownOptions } from "rolldown";
|
|
1
2
|
//#region src/utils/npmRegistry.d.ts
|
|
2
3
|
declare class NpmRegistryClient {
|
|
3
4
|
private readonly registry;
|
|
@@ -178,6 +179,40 @@ type PackConfig = {
|
|
|
178
179
|
name?: string;
|
|
179
180
|
/** Manifest header description. Defaults to top-level `description`. */
|
|
180
181
|
description?: string;
|
|
182
|
+
/** Manifest generation strategy and extra fields. */
|
|
183
|
+
manifest?: PackManifestOptions;
|
|
184
|
+
};
|
|
185
|
+
/** User-facing manifest generation options (merged, not rewritten). */
|
|
186
|
+
type PackManifestOptions = {
|
|
187
|
+
/**
|
|
188
|
+
* Manifest patch strategy.
|
|
189
|
+
*
|
|
190
|
+
* - `"preserve"` (default): keep user-owned fields from the existing manifest and
|
|
191
|
+
* overwrite only BePack-managed ones (incremental merge).
|
|
192
|
+
* - `"clean"`: rebuild the manifest from config. Non-managed entries are dropped;
|
|
193
|
+
* declare them explicitly via the `extra*` fields below.
|
|
194
|
+
*
|
|
195
|
+
* Use `"clean"` when a pack's manifest should be fully generated from config
|
|
196
|
+
* (e.g. dual-config projects) so another config's residue never survives.
|
|
197
|
+
*/
|
|
198
|
+
merge?: "preserve" | "clean";
|
|
199
|
+
/** `header.min_engine_version` in clean mode. Accepts a SemVer string (e.g. `"1.21.0"`),
|
|
200
|
+
* converted to `[n, n, n]` for format 2 manifests. Ignored in preserve mode. */
|
|
201
|
+
minEngineVersion?: string;
|
|
202
|
+
/** Dependencies appended verbatim to manifest `dependencies` in clean mode. */
|
|
203
|
+
extraDependencies?: Record<string, unknown>[];
|
|
204
|
+
/** Modules appended verbatim to manifest `modules` in clean mode. */
|
|
205
|
+
extraModules?: Record<string, unknown>[];
|
|
206
|
+
/** Extra fields merged into manifest `header` in clean mode (e.g. `pack_scope`). */
|
|
207
|
+
extraHeader?: Record<string, unknown>;
|
|
208
|
+
};
|
|
209
|
+
/** Resolved manifest generation options with defaults filled. */
|
|
210
|
+
type PackManifestResolved = {
|
|
211
|
+
merge: "preserve" | "clean";
|
|
212
|
+
minEngineVersion?: string;
|
|
213
|
+
extraDependencies: Record<string, unknown>[];
|
|
214
|
+
extraModules: Record<string, unknown>[];
|
|
215
|
+
extraHeader: Record<string, unknown>;
|
|
181
216
|
};
|
|
182
217
|
/** TypeScript incremental compilation cache settings. */
|
|
183
218
|
type CacheOptions = {
|
|
@@ -193,10 +228,100 @@ type CacheResolved = {
|
|
|
193
228
|
build: boolean;
|
|
194
229
|
file: string;
|
|
195
230
|
};
|
|
231
|
+
/**
|
|
232
|
+
* `pack.optimize` options. All fields are optional; omitted ones fall back to
|
|
233
|
+
* Mojang-compatible defaults (see `PACK_OPTIMIZE_DEFAULTS`).
|
|
234
|
+
*/
|
|
235
|
+
type PackOptimizeOptions = {
|
|
236
|
+
/**
|
|
237
|
+
* Also keep the original loose files inside the artifact. Default: `false`,
|
|
238
|
+
* matching Minecraft's pack optimizer, which stores everything in `__brarchive/`.
|
|
239
|
+
*
|
|
240
|
+
* Useful when the pack should also load in clients that predate `__brarchive/`
|
|
241
|
+
* support: those clients ignore the archives and read the loose files.
|
|
242
|
+
*/
|
|
243
|
+
keepLooseFiles?: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* Folders that keep a loose copy **in addition to** their archive, per pack type.
|
|
246
|
+
*
|
|
247
|
+
* Defaults mirror Minecraft's own packs, which keep path-addressed folders loose:
|
|
248
|
+
* behavior packs `functions`, `loot_tables`, `structures`, `texts`; resource packs
|
|
249
|
+
* `font`, `materials`, `sounds`, `texts`, `textures`. Entries are appended to that
|
|
250
|
+
* list — pass `false` to keep nothing extra (smallest artifact).
|
|
251
|
+
*/
|
|
252
|
+
keepLoose?: string[] | false;
|
|
253
|
+
/** Extra top-level folders to leave as loose files, on top of the built-in list. */
|
|
254
|
+
exclude?: string[];
|
|
255
|
+
/** Minify JSON entries. Default: `true` (Mojang's optimizer always minifies). */
|
|
256
|
+
minifyJson?: boolean;
|
|
257
|
+
/**
|
|
258
|
+
* Value written to `header.pack_optimization_version` in the packaged manifest —
|
|
259
|
+
* this field is what makes the engine read content from `__brarchive/`.
|
|
260
|
+
*
|
|
261
|
+
* Default: `"0.1.0"` (verified working on 1.26.40+; game-version values such as
|
|
262
|
+
* `"1.26.40"` are ignored by the engine). It is written to the artifact only, the
|
|
263
|
+
* pack's own `manifest.json` on disk is left untouched.
|
|
264
|
+
*/
|
|
265
|
+
packOptimizationVersion?: string;
|
|
266
|
+
/**
|
|
267
|
+
* Silence the warning emitted when `header.min_engine_version` is below 1.26.40.
|
|
268
|
+
* Optimization still runs either way — the field does not block loading, but older
|
|
269
|
+
* clients cannot read the archives. Default: `false`.
|
|
270
|
+
*/
|
|
271
|
+
allowUnsupportedTarget?: boolean;
|
|
272
|
+
};
|
|
273
|
+
/** Resolved `pack.optimize` options with defaults filled. */
|
|
274
|
+
type PackOptimizeResolved = {
|
|
275
|
+
keepLooseFiles: boolean;
|
|
276
|
+
keepLoose: string[] | false;
|
|
277
|
+
exclude: string[];
|
|
278
|
+
minifyJson: boolean;
|
|
279
|
+
packOptimizationVersion: string;
|
|
280
|
+
allowUnsupportedTarget: boolean;
|
|
281
|
+
};
|
|
282
|
+
/**
|
|
283
|
+
* Context handed to a `compile.rolldown` customization function.
|
|
284
|
+
*
|
|
285
|
+
* All paths are absolute so custom options (alias, plugins, ...) can use them directly.
|
|
286
|
+
*/
|
|
287
|
+
type RolldownCustomizeContext = {
|
|
288
|
+
/** Command currently running: `"build"` (`bepack build`) or `"dev"` (`bepack dev`). */
|
|
289
|
+
command: "build" | "dev";
|
|
290
|
+
/** CLI `--mode` value, when provided. */
|
|
291
|
+
mode?: string;
|
|
292
|
+
/** Minecraft target version (`config.target`). */
|
|
293
|
+
target: string;
|
|
294
|
+
/** Absolute path of the compile entry file. */
|
|
295
|
+
entry: string;
|
|
296
|
+
/** Absolute path of the script output directory. */
|
|
297
|
+
outDir: string;
|
|
298
|
+
/** Absolute path of the single-file output (informational in preserve-modules mode). */
|
|
299
|
+
outFile: string;
|
|
300
|
+
/** Whether modules are preserved instead of being bundled into one file. */
|
|
301
|
+
preserveModules: boolean;
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Function form of `compile.rolldown`: receives the fully merged options built by
|
|
305
|
+
* BePack (plus context) and returns options that are merged on top of them.
|
|
306
|
+
*
|
|
307
|
+
* Returning `undefined` (or nothing) leaves the current options unchanged.
|
|
308
|
+
*/
|
|
309
|
+
type RolldownCustomizeFunction = (options: RolldownOptions, context: RolldownCustomizeContext) => RolldownOptions | undefined | void | Promise<RolldownOptions | undefined | void>;
|
|
310
|
+
/** User-supplied rolldown customization: an options object or a function. */
|
|
311
|
+
type RolldownOverrides = RolldownOptions | RolldownCustomizeFunction;
|
|
196
312
|
/** BP compile configuration. Only available on behavior packs. */
|
|
197
313
|
type BpCompileOptions = {
|
|
198
314
|
/** Script entry file, relative to project root. Default: "src/main.ts". */
|
|
199
315
|
entry: string;
|
|
316
|
+
/**
|
|
317
|
+
* Identifier reference replacement (rolldown `transform.define` semantics).
|
|
318
|
+
*
|
|
319
|
+
* Values are JavaScript expression strings, e.g. `{ __TARGET__: JSON.stringify("server") }`.
|
|
320
|
+
* Only *references* to the key identifier are replaced — `declare` type declarations,
|
|
321
|
+
* object keys, string literals, and comments are left untouched.
|
|
322
|
+
* Prefer this over `replace` for feature flags and conditional compilation.
|
|
323
|
+
*/
|
|
324
|
+
define?: Record<string, string>;
|
|
200
325
|
/** Path to tsconfig.json relative to project root. Default: "tsconfig.json". */
|
|
201
326
|
tsconfig?: string;
|
|
202
327
|
/** Whether to run `tsc --noEmit` before rolldown. Default: true. */
|
|
@@ -216,6 +341,26 @@ type BpCompileOptions = {
|
|
|
216
341
|
cache?: CacheOptions;
|
|
217
342
|
/** Output directory for compiled scripts, relative to BP root. Default: "scripts". */
|
|
218
343
|
scriptOutputDir?: string;
|
|
344
|
+
/**
|
|
345
|
+
* Extra rolldown options (object) or a customization function, merged on top of the
|
|
346
|
+
* options BePack generates.
|
|
347
|
+
*
|
|
348
|
+
* BePack-managed fields (`input`, `output.file` / `output.dir` / `output.format` /
|
|
349
|
+
* `output.preserveModules` / `output.preserveModulesRoot` / `output.entryFileNames`)
|
|
350
|
+
* cannot be overridden — configure `entry`, `scriptOutputDir` and `preserveModules`
|
|
351
|
+
* instead.
|
|
352
|
+
*/
|
|
353
|
+
rolldown?: RolldownOverrides;
|
|
354
|
+
/**
|
|
355
|
+
* Path to a rolldown config file (relative to the project root, or absolute).
|
|
356
|
+
* The file is loaded with rolldown's own loader, so `.ts` / `.mts` / `.js` / `.mjs`
|
|
357
|
+
* are all supported, and the default export may be an options object, a single-element
|
|
358
|
+
* array, or a function.
|
|
359
|
+
*
|
|
360
|
+
* Takes precedence over the inline `rolldown` field. `bepack build --rolldown-config`
|
|
361
|
+
* overrides this path.
|
|
362
|
+
*/
|
|
363
|
+
rolldownConfig?: string;
|
|
219
364
|
};
|
|
220
365
|
type BpConfig = PackConfig & {
|
|
221
366
|
/** BP compile configuration (TypeScript entry, tsconfig, bundler options).
|
|
@@ -223,15 +368,22 @@ type BpConfig = PackConfig & {
|
|
|
223
368
|
compile?: BpCompileOptions;
|
|
224
369
|
/** Script API dependencies managed in both package.json and bp/manifest.json. */
|
|
225
370
|
dependencies?: Record<string, DependencySpecifier>;
|
|
226
|
-
/** Adds achievement-compatible metadata when every Script API dependency is stable. */
|
|
227
|
-
achievement?: boolean;
|
|
228
371
|
/** Additional files/folders to include when copying/packing the behavior pack,
|
|
229
372
|
* on top of built-in defaults (scripts/, manifest.json, animations/, etc.). */
|
|
230
373
|
include?: string[];
|
|
231
374
|
};
|
|
375
|
+
/**
|
|
376
|
+
* 资源包可应用范围(pack_scope),仅资源包可用。
|
|
377
|
+
* - `world`: 仅可应用于特定存档(作为世界资源包)。
|
|
378
|
+
* - `global`: 仅可应用于全局资源包。
|
|
379
|
+
* - `any`: 可应用于任何地方。默认值。
|
|
380
|
+
*/
|
|
381
|
+
type PackScope = "world" | "global" | "any";
|
|
232
382
|
type RpConfig = PackConfig & {
|
|
233
383
|
/** Adds `pbr` capability to the resource pack manifest. */
|
|
234
384
|
pbr?: boolean;
|
|
385
|
+
/** 资源包可应用范围,写入 manifest header 的 `pack_scope`。默认 "any"。 */
|
|
386
|
+
packScope?: PackScope;
|
|
235
387
|
/** Additional files/folders to include when copying/packing the resource pack,
|
|
236
388
|
* on top of built-in defaults. */
|
|
237
389
|
include?: string[];
|
|
@@ -341,12 +493,27 @@ type UserConfig = {
|
|
|
341
493
|
targets?: Record<string, CopyTarget & {
|
|
342
494
|
name?: string | CopyTargetNames;
|
|
343
495
|
}>;
|
|
496
|
+
/**
|
|
497
|
+
* Optimize the copied development folder into `__brarchive/` archives, so the
|
|
498
|
+
* exact shape that ships can be tested in-game. Off by default; requires the
|
|
499
|
+
* same `header.min_engine_version >= 1.26.40` as `pack.optimize`.
|
|
500
|
+
*/
|
|
501
|
+
optimize?: boolean | PackOptimizeOptions;
|
|
344
502
|
};
|
|
345
503
|
pack?: {
|
|
346
504
|
/** Output filename template without extension. Supports `{name}` and `{version}`. */
|
|
347
505
|
name?: string;
|
|
348
506
|
/** Output directory for .mcpack/.mcaddon, relative to `root` unless absolute. */
|
|
349
507
|
outDir?: string;
|
|
508
|
+
/**
|
|
509
|
+
* Bundle the packs' loose files into `__brarchive/` archives inside the produced
|
|
510
|
+
* `.mcpack` / `.mcaddon`, the way Minecraft's pack optimizer does.
|
|
511
|
+
*
|
|
512
|
+
* Off by default: optimized packs require a `header.min_engine_version` of
|
|
513
|
+
* 1.26.40 or later and do not load in older clients. Copying to a development
|
|
514
|
+
* folder stays unoptimized unless `copy.optimize` is enabled.
|
|
515
|
+
*/
|
|
516
|
+
optimize?: boolean | PackOptimizeOptions;
|
|
350
517
|
};
|
|
351
518
|
/** Lifecycle hooks. */
|
|
352
519
|
hooks?: Hooks;
|
|
@@ -354,6 +521,7 @@ type UserConfig = {
|
|
|
354
521
|
/** Resolved BP compile configuration (all fields filled with defaults). */
|
|
355
522
|
type BpCompileResolved = {
|
|
356
523
|
entry: string;
|
|
524
|
+
define: Record<string, string>;
|
|
357
525
|
tsconfig: string;
|
|
358
526
|
typecheck: boolean;
|
|
359
527
|
preserveModules: boolean;
|
|
@@ -362,6 +530,8 @@ type BpCompileResolved = {
|
|
|
362
530
|
minify: boolean;
|
|
363
531
|
cache: CacheResolved;
|
|
364
532
|
scriptOutputDir: string;
|
|
533
|
+
rolldown?: RolldownOverrides;
|
|
534
|
+
rolldownConfig?: string;
|
|
365
535
|
};
|
|
366
536
|
type ResolvedConfig = {
|
|
367
537
|
root: string;
|
|
@@ -391,8 +561,8 @@ type ResolvedConfig = {
|
|
|
391
561
|
name: string;
|
|
392
562
|
description?: string;
|
|
393
563
|
compile?: BpCompileResolved;
|
|
564
|
+
manifest: PackManifestResolved;
|
|
394
565
|
dependencies: Record<string, DependencySpecifier>;
|
|
395
|
-
achievement?: boolean;
|
|
396
566
|
include: string[];
|
|
397
567
|
};
|
|
398
568
|
rp?: {
|
|
@@ -401,7 +571,9 @@ type ResolvedConfig = {
|
|
|
401
571
|
moduleUuid: string;
|
|
402
572
|
name: string;
|
|
403
573
|
description?: string;
|
|
574
|
+
manifest: PackManifestResolved;
|
|
404
575
|
pbr?: boolean;
|
|
576
|
+
packScope?: PackScope;
|
|
405
577
|
include: string[];
|
|
406
578
|
};
|
|
407
579
|
};
|
|
@@ -434,10 +606,14 @@ type ResolvedConfig = {
|
|
|
434
606
|
targets: Record<string, CopyTarget & {
|
|
435
607
|
name?: string | CopyTargetNames;
|
|
436
608
|
}>;
|
|
609
|
+
/** Present only when `copy.optimize` is enabled. */
|
|
610
|
+
optimize?: PackOptimizeResolved;
|
|
437
611
|
};
|
|
438
612
|
pack: {
|
|
439
613
|
name: string;
|
|
440
614
|
outDir: string;
|
|
615
|
+
/** Present only when `pack.optimize` is enabled. */
|
|
616
|
+
optimize?: PackOptimizeResolved;
|
|
441
617
|
};
|
|
442
618
|
};
|
|
443
619
|
type LoadConfigOptions = {
|
|
@@ -601,7 +777,7 @@ declare function sapiPro(): BePackPlugin;
|
|
|
601
777
|
declare const BUILTIN_PLUGINS: Record<string, () => BePackPlugin>;
|
|
602
778
|
//#endregion
|
|
603
779
|
//#region src/errors/codes.d.ts
|
|
604
|
-
declare const ERROR_CODES: readonly ["CONFIG_NOT_FOUND", "CONFIG_INVALID", "TARGET_INVALID", "TARGET_NOT_SUPPORTED", "UNSUPPORTED_DEPENDENCY", "DEPENDENCY_VERSION_INVALID", "DEPENDENCY_REQUIRES_INSTALL", "SAPI_VERSION_NOT_FOUND", "
|
|
780
|
+
declare const ERROR_CODES: readonly ["CONFIG_NOT_FOUND", "CONFIG_INVALID", "TARGET_INVALID", "TARGET_NOT_SUPPORTED", "UNSUPPORTED_DEPENDENCY", "DEPENDENCY_VERSION_INVALID", "DEPENDENCY_REQUIRES_INSTALL", "SAPI_VERSION_NOT_FOUND", "PACKAGE_JSON_NOT_FOUND", "PACKAGE_MANAGER_NOT_FOUND", "PACKAGE_MANAGER_FAILED", "MANIFEST_INVALID", "MANIFEST_GENERATE_FAILED", "MANIFEST_PATCH_FAILED", "VERSION_INVALID", "TYPECHECK_FAILED", "BUILD_FAILED", "COPY_TARGET_NOT_FOUND", "COPY_FAILED", "PACK_FAILED", "HOOK_FAILED", "PLUGIN_FAILED", "CLI_ARGUMENT_CONFLICT", "UNKNOWN_COMMAND"];
|
|
605
781
|
type ErrorCode = (typeof ERROR_CODES)[number];
|
|
606
782
|
//#endregion
|
|
607
783
|
//#region src/errors/BePackError.d.ts
|
|
@@ -615,4 +791,4 @@ declare class BePackError extends Error {
|
|
|
615
791
|
});
|
|
616
792
|
}
|
|
617
793
|
//#endregion
|
|
618
|
-
export { BUILTIN_DEPENDENCY_CATALOG, BUILTIN_DEPENDENCY_RESOLVERS, BUILTIN_PLUGINS, BePackError, type BePackPlugin, type BpCompileOptions, type BpCompileResolved, type BpConfig, type ConfigResolvedHookContext, type DependencyCatalogEntry, type DependencyResolveHookContext, type DependencyResolvedHookContext, type DependencyResolverContext, DependencyResolverRegistry, type DependencyResolverResult, type DependencyResolverRule, DependencyService, type HookContext, MinecraftPackageResolver, type NpmPackageMetadata, type NpmPackageVersionMetadata, NpmRegistryClient, type PackInfo, type PackType, type PluginDependencyHooks, type ReplaceBuiltins, type ReplaceOptions, type ReplaceValue, type ResolvedConfig, type RpConfig, type UserConfig, createDependencyCatalog, defineConfig, exactVersionResolver, getConfiguredPacks, loadConfig, minecraftScriptApiBpResolver, minecraftScriptApiResolver, minecraftVanillaDataResolver, packageVersionForSpecifier, patchManifest, resolveDependencies, sapiPro, satisfiesSemver, satisfiesSemverRange };
|
|
794
|
+
export { BUILTIN_DEPENDENCY_CATALOG, BUILTIN_DEPENDENCY_RESOLVERS, BUILTIN_PLUGINS, BePackError, type BePackPlugin, type BpCompileOptions, type BpCompileResolved, type BpConfig, type ConfigResolvedHookContext, type DependencyCatalogEntry, type DependencyResolveHookContext, type DependencyResolvedHookContext, type DependencyResolverContext, DependencyResolverRegistry, type DependencyResolverResult, type DependencyResolverRule, DependencyService, type HookContext, MinecraftPackageResolver, type NpmPackageMetadata, type NpmPackageVersionMetadata, NpmRegistryClient, type PackInfo, type PackOptimizeOptions, type PackOptimizeResolved, type PackScope, type PackType, type PluginDependencyHooks, type ReplaceBuiltins, type ReplaceOptions, type ReplaceValue, type ResolvedConfig, type RolldownCustomizeContext, type RolldownCustomizeFunction, type RolldownOverrides, type RpConfig, type UserConfig, createDependencyCatalog, defineConfig, exactVersionResolver, getConfiguredPacks, loadConfig, minecraftScriptApiBpResolver, minecraftScriptApiResolver, minecraftVanillaDataResolver, packageVersionForSpecifier, patchManifest, resolveDependencies, sapiPro, satisfiesSemver, satisfiesSemverRange };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire as e}from"node:module";import{pathToFileURL as t}from"node:url";import n from"node:path";import{promises as r}from"node:fs";import{platform as i}from"node:os";const a={root:`.`,configured:{root:!1,packOutDir:!1},name:`minecraft-addon`,version:`1.0.0`,description:``,replace:{values:{},builtins:{VERSION:!1,NAME:!1,UUID:!1,DESCRIPTION:!1}},target:`latest`,plugins:[],install:{registry:`https://registry.npmjs.org/`,saveTo:`dependencies`,packageManager:`auto`,runPackageManager:!0,updatePackageJson:!0,updateManifest:!0,dependencyCatalog:{},dependencyResolvers:[]},build:{copy:!1,timing:!1},dev:{copy:!1},copy:{defaultTarget:``,targets:{}},pack:{name:`{name}-{version}`,outDir:`dist`},hooks:{}},o={dev:!0,build:!1,file:`node_modules/.cache/bepack/tsconfig.tsbuildinfo`},s={entry:`src/main.ts`,tsconfig:`tsconfig.json`,typecheck:!0,preserveModules:!0,external:[/^@minecraft\/server.*/],useNpx:!1,minify:!1,cache:o,scriptOutputDir:`scripts`};function c(e){return e}const l=[`bepack.config.ts`,`bepack.config.mjs`,`bepack.config.js`];var u=class extends Error{code;details;suggestions;constructor(e,t,n={}){super(t),this.name=`BePackError`,this.code=e,this.details=n.details,this.suggestions=n.suggestions}};function d(e,t){return n.isAbsolute(t)?t:n.join(e,t)}function f(e){return e.replace(/\\/g,`/`)}function p(e,t){return d(e,t.root)}function m(e,t,n){return n===`bp`?t.packs.bp?d(e,t.packs.bp.root):void 0:t.packs.rp?d(e,t.packs.rp.root):void 0}function h(e,t){let n=m(p(e,t),t,`bp`);if(!n)throw Error(`packs.bp is not configured`);return n}function g(e,t){let n=m(p(e,t),t,`rp`);if(!n)throw Error(`packs.rp is not configured`);return n}function _(e,t){let r=n.relative(e,t);return r===``||!r.startsWith(`..${n.sep}`)&&r!==`..`&&!n.isAbsolute(r)}function v(e,t,r){if(!t||t===`.`)throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must be a non-empty relative path strictly inside the BP root. Got: "${t}". This directory will be emptied during build.`);let i=t.replace(/\\/g,`/`);if(n.posix.isAbsolute(i)||n.win32.isAbsolute(i))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must be a relative path, not absolute. Got: "${t}". This directory will be emptied during build.`);let a=n.posix.normalize(i);if(a.split(`/`).includes(`..`))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must not contain ".." (path escape). Got: "${t}" resolves outside the BP root. This directory will be emptied during build.`);let o=n.resolve(e,a),s=n.relative(e,o);if(!s||s.startsWith(`..`)||n.isAbsolute(s))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must be a directory strictly inside the BP root. Value: "${t}", resolved: "${o}". This directory will be emptied during build and must not be the BP root or a path outside it.`);if(r&&_(o,r))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir "${t}" dangerously overlaps with the source entry directory. The output directory will be emptied during build and would delete source files.`);return f(s)}function y(e,t){if(t.packs.bp)return n.join(h(e,t),`manifest.json`)}function b(e,t){if(t.packs.rp)return n.join(g(e,t),`manifest.json`)}i();var x=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),S=e(import.meta.url),C=x(((e,t)=>{let n=S(`node:fs`),r=S(`node:child_process`),i=JSON.parse(n.readFileSync(S.resolve(`rolldown/package.json`),`utf-8`)).version,a=`/tmp/rolldown-${i}`,o=`${a}/node_modules/@rolldown/binding-wasm32-wasi/rolldown-binding.wasi.cjs`;if(!n.existsSync(o)){let e=`@rolldown/binding-wasm32-wasi@${i}`;n.rmSync(a,{recursive:!0,force:!0}),n.mkdirSync(a,{recursive:!0}),console.log(`[rolldown] Downloading ${e} on WebContainer...`),r.execFileSync(`pnpm`,[`i`,e],{cwd:a,stdio:`inherit`})}t.exports=S(o)}));x(((e,t)=>{let{readFileSync:n}=S(`fs`),r=null,i=[],a=()=>{let e=!1;return process.platform===`linux`&&(e=s(),e===null&&(e=c()),e===null&&(e=l())),e},o=e=>e.includes(`libc.musl-`)||e.includes(`ld-musl-`),s=()=>{try{return n(`/usr/bin/ldd`,`utf-8`).includes(`musl`)}catch{return null}},c=()=>{let e=null;return process.report&&typeof process.report.getReport==`function`&&(process.report.excludeNetwork=!0,e=process.report.getReport()),e?e.header&&e.header.glibcVersionRuntime?!1:!!(Array.isArray(e.sharedObjects)&&e.sharedObjects.some(o)):null},l=()=>{try{return S(`child_process`).execSync(`ldd --version`,{encoding:`utf8`}).includes(`musl`)}catch{return!1}};function u(){if(process.env.NAPI_RS_NATIVE_LIBRARY_PATH)try{return S(process.env.NAPI_RS_NATIVE_LIBRARY_PATH)}catch(e){i.push(e)}else if(process.platform===`android`)if(process.arch===`arm64`){try{return S(`./rolldown-binding.android-arm64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-android-arm64`),t=S(`@rolldown/binding-android-arm64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm`){try{return S(`./rolldown-binding.android-arm-eabi.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-android-arm-eabi`),t=S(`@rolldown/binding-android-arm-eabi/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else i.push(Error(`Unsupported architecture on Android ${process.arch}`));else if(process.platform===`win32`)if(process.arch===`x64`)if(process.config&&process.config.variables&&process.config.variables.shlib_suffix===`dll.a`||process.config&&process.config.variables&&process.config.variables.node_target_type===`shared_library`){try{return S(`./rolldown-binding.win32-x64-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-win32-x64-gnu`),t=S(`@rolldown/binding-win32-x64-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else{try{return S(`./rolldown-binding.win32-x64-msvc.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-win32-x64-msvc`),t=S(`@rolldown/binding-win32-x64-msvc/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`ia32`){try{return S(`./rolldown-binding.win32-ia32-msvc.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-win32-ia32-msvc`),t=S(`@rolldown/binding-win32-ia32-msvc/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm64`){try{return S(`./rolldown-binding.win32-arm64-msvc.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-win32-arm64-msvc`),t=S(`@rolldown/binding-win32-arm64-msvc/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else i.push(Error(`Unsupported architecture on Windows: ${process.arch}`));else if(process.platform===`darwin`){try{return S(`./rolldown-binding.darwin-universal.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-darwin-universal`),t=S(`@rolldown/binding-darwin-universal/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}if(process.arch===`x64`){try{return S(`./rolldown-binding.darwin-x64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-darwin-x64`),t=S(`@rolldown/binding-darwin-x64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm64`){try{return S(`./rolldown-binding.darwin-arm64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-darwin-arm64`),t=S(`@rolldown/binding-darwin-arm64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else i.push(Error(`Unsupported architecture on macOS: ${process.arch}`))}else if(process.platform===`freebsd`)if(process.arch===`x64`){try{return S(`./rolldown-binding.freebsd-x64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-freebsd-x64`),t=S(`@rolldown/binding-freebsd-x64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm64`){try{return S(`./rolldown-binding.freebsd-arm64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-freebsd-arm64`),t=S(`@rolldown/binding-freebsd-arm64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else i.push(Error(`Unsupported architecture on FreeBSD: ${process.arch}`));else if(process.platform===`linux`)if(process.arch===`x64`)if(a()){try{return S(`./rolldown-binding.linux-x64-musl.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-x64-musl`),t=S(`@rolldown/binding-linux-x64-musl/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else{try{return S(`../rolldown-binding.linux-x64-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-x64-gnu`),t=S(`@rolldown/binding-linux-x64-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm64`)if(a()){try{return S(`./rolldown-binding.linux-arm64-musl.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-arm64-musl`),t=S(`@rolldown/binding-linux-arm64-musl/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else{try{return S(`./rolldown-binding.linux-arm64-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-arm64-gnu`),t=S(`@rolldown/binding-linux-arm64-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm`)if(a()){try{return S(`./rolldown-binding.linux-arm-musleabihf.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-arm-musleabihf`),t=S(`@rolldown/binding-linux-arm-musleabihf/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else{try{return S(`./rolldown-binding.linux-arm-gnueabihf.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-arm-gnueabihf`),t=S(`@rolldown/binding-linux-arm-gnueabihf/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`loong64`)if(a()){try{return S(`./rolldown-binding.linux-loong64-musl.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-loong64-musl`),t=S(`@rolldown/binding-linux-loong64-musl/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else{try{return S(`./rolldown-binding.linux-loong64-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-loong64-gnu`),t=S(`@rolldown/binding-linux-loong64-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`riscv64`)if(a()){try{return S(`./rolldown-binding.linux-riscv64-musl.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-riscv64-musl`),t=S(`@rolldown/binding-linux-riscv64-musl/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else{try{return S(`./rolldown-binding.linux-riscv64-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-riscv64-gnu`),t=S(`@rolldown/binding-linux-riscv64-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`ppc64`){try{return S(`./rolldown-binding.linux-ppc64-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-ppc64-gnu`),t=S(`@rolldown/binding-linux-ppc64-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`s390x`){try{return S(`./rolldown-binding.linux-s390x-gnu.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-linux-s390x-gnu`),t=S(`@rolldown/binding-linux-s390x-gnu/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else i.push(Error(`Unsupported architecture on Linux: ${process.arch}`));else if(process.platform===`openharmony`)if(process.arch===`arm64`){try{return S(`./rolldown-binding.openharmony-arm64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-openharmony-arm64`),t=S(`@rolldown/binding-openharmony-arm64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`x64`){try{return S(`./rolldown-binding.openharmony-x64.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-openharmony-x64`),t=S(`@rolldown/binding-openharmony-x64/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else if(process.arch===`arm`){try{return S(`./rolldown-binding.openharmony-arm.node`)}catch(e){i.push(e)}try{let e=S(`@rolldown/binding-openharmony-arm`),t=S(`@rolldown/binding-openharmony-arm/package.json`).version;if(t!==`1.1.4`&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK&&process.env.NAPI_RS_ENFORCE_VERSION_CHECK!==`0`)throw Error(`Native binding package version mismatch, expected 1.1.4 but got ${t}. You can reinstall dependencies to fix this issue.`);return e}catch(e){i.push(e)}}else i.push(Error(`Unsupported architecture on OpenHarmony: ${process.arch}`));else i.push(Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))}r=u();let d=process.env.NAPI_RS_FORCE_WASI===`true`||process.env.NAPI_RS_FORCE_WASI===`error`;if(!r||d){let e=null,t=null;try{e=S(`../rolldown-binding.wasi.cjs`),r=e}catch(e){d&&(t=e)}if(!r||d)try{e=S(`@rolldown/binding-wasm32-wasi`),r=e}catch(e){d&&(t?t.cause=e:t=e,i.push(e))}if(process.env.NAPI_RS_FORCE_WASI===`error`&&!e){let e=Error(`WASI binding not found and NAPI_RS_FORCE_WASI is set to error`);throw e.cause=t,e}}if(!r&&globalThis.process?.versions?.webcontainer)try{r=C()}catch(e){i.push(e)}if(!r){if(i.length>0){let e=Error("Cannot find native binding. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.");throw e.cause=i.reduce((e,t)=>(t.cause=e,t)),e}throw Error(`Failed to load native binding`)}t.exports=r,t.exports.LegalCommentsMode=r.LegalCommentsMode,t.exports.minify=r.minify,t.exports.minifySync=r.minifySync,t.exports.Severity=r.Severity,t.exports.ParseResult=r.ParseResult,t.exports.ExportExportNameKind=r.ExportExportNameKind,t.exports.ExportImportNameKind=r.ExportImportNameKind,t.exports.ExportLocalNameKind=r.ExportLocalNameKind,t.exports.ImportNameKind=r.ImportNameKind,t.exports.parse=r.parse,t.exports.parseSync=r.parseSync,t.exports.rawTransferSupported=r.rawTransferSupported,t.exports.ResolverFactory=r.ResolverFactory,t.exports.EnforceExtension=r.EnforceExtension,t.exports.ModuleType=r.ModuleType,t.exports.sync=r.sync,t.exports.HelperMode=r.HelperMode,t.exports.isolatedDeclaration=r.isolatedDeclaration,t.exports.isolatedDeclarationSync=r.isolatedDeclarationSync,t.exports.moduleRunnerTransform=r.moduleRunnerTransform,t.exports.moduleRunnerTransformSync=r.moduleRunnerTransformSync,t.exports.transform=r.transform,t.exports.transformSync=r.transformSync,t.exports.BindingBundleEndEventData=r.BindingBundleEndEventData,t.exports.BindingBundleErrorEventData=r.BindingBundleErrorEventData,t.exports.BindingBundler=r.BindingBundler,t.exports.BindingCallableBuiltinPlugin=r.BindingCallableBuiltinPlugin,t.exports.BindingChunkingContext=r.BindingChunkingContext,t.exports.BindingDecodedMap=r.BindingDecodedMap,t.exports.BindingDevEngine=r.BindingDevEngine,t.exports.BindingLoadPluginContext=r.BindingLoadPluginContext,t.exports.BindingMagicString=r.BindingMagicString,t.exports.BindingModuleInfo=r.BindingModuleInfo,t.exports.BindingNormalizedOptions=r.BindingNormalizedOptions,t.exports.BindingOutputAsset=r.BindingOutputAsset,t.exports.BindingOutputChunk=r.BindingOutputChunk,t.exports.BindingPluginContext=r.BindingPluginContext,t.exports.BindingRenderedChunk=r.BindingRenderedChunk,t.exports.BindingRenderedChunkMeta=r.BindingRenderedChunkMeta,t.exports.BindingRenderedModule=r.BindingRenderedModule,t.exports.BindingSourceMap=r.BindingSourceMap,t.exports.BindingTransformPluginContext=r.BindingTransformPluginContext,t.exports.BindingWatcher=r.BindingWatcher,t.exports.BindingWatcherBundler=r.BindingWatcherBundler,t.exports.BindingWatcherChangeData=r.BindingWatcherChangeData,t.exports.BindingWatcherEvent=r.BindingWatcherEvent,t.exports.ParallelJsPluginRegistry=r.ParallelJsPluginRegistry,t.exports.TraceSubscriberGuard=r.TraceSubscriberGuard,t.exports.TsconfigCache=r.TsconfigCache,t.exports.BindingAttachDebugInfo=r.BindingAttachDebugInfo,t.exports.BindingBuiltinPluginName=r.BindingBuiltinPluginName,t.exports.BindingChunkModuleOrderBy=r.BindingChunkModuleOrderBy,t.exports.BindingErrorStage=r.BindingErrorStage,t.exports.BindingLogLevel=r.BindingLogLevel,t.exports.BindingPluginOrder=r.BindingPluginOrder,t.exports.BindingPropertyReadSideEffects=r.BindingPropertyReadSideEffects,t.exports.BindingPropertyWriteSideEffects=r.BindingPropertyWriteSideEffects,t.exports.BindingRebuildStrategy=r.BindingRebuildStrategy,t.exports.collapseSourcemaps=r.collapseSourcemaps,t.exports.enhancedTransform=r.enhancedTransform,t.exports.enhancedTransformSync=r.enhancedTransformSync,t.exports.FilterTokenKind=r.FilterTokenKind,t.exports.initTraceSubscriber=r.initTraceSubscriber,t.exports.registerPlugins=r.registerPlugins,t.exports.resolveTsconfig=r.resolveTsconfig,t.exports.shutdownAsyncRuntime=r.shutdownAsyncRuntime,t.exports.startAsyncRuntime=r.startAsyncRuntime}))();function ee(e){return{values:e?.values??{},builtins:{VERSION:e?.builtins?.VERSION??!1,NAME:e?.builtins?.NAME??!1,UUID:e?.builtins?.UUID??!1,DESCRIPTION:e?.builtins?.DESCRIPTION??!1}}}function w(e){let t=/^(\d+)\.(\d+)\.(\d+)$/.exec(e);if(!t)throw new u(`VERSION_INVALID`,`Manifest version requires x.y.z.`,{details:{version:e}});return[Number(t[1]),Number(t[2]),Number(t[3])]}function te(e){return/^\d+\.\d+\.\d+(?:[-.][0-9A-Za-z.-]+)?$/.test(e)}function T(e,t){let n=e.split(/[^0-9A-Za-z]+/),r=t.split(/[^0-9A-Za-z]+/),i=Math.max(n.length,r.length);for(let e=0;e<i;e+=1){let t=n[e]??``,i=r[e]??``,a=/^\d+$/.test(t)?Number(t):NaN,o=/^\d+$/.test(i)?Number(i):NaN,s=Number.isNaN(a)||Number.isNaN(o)?t.localeCompare(i):a-o;if(s!==0)return s}return 0}function ne(e){return e===`latest`?!0:T(e,`1.21.120`)>=0}function re(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(e.trim());if(!t)return;let n=/(?:^|[.-])(\d+)\.(\d+)\.(\d+)(?:[.-]|$)/.exec(t[4]??``);return{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3]),...n?{minecraftTarget:[Number(n[1]),Number(n[2]),Number(n[3])]}:{}}}function ie(e,t){for(let n of[`major`,`minor`,`patch`])if(e[n]!==t[n])return e[n]-t[n];return 0}function E(e,t){let n=re(e);return n?t.split(`||`).some(e=>{let t=/(?:\^|~|>=|<=|>|<|=)?\s*(v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/.exec(e.trim()),r=t?re(t[1]):void 0;return!r||n.major!==r.major||ie(n,r)<0?!1:r.minecraftTarget?n.minecraftTarget?T(n.minecraftTarget.join(`.`),r.minecraftTarget.join(`.`))>=0:!1:!0}):!1}const ae=E;function oe(e){if(e===`stable`||e===`beta`||e===`preview`)throw new u(`DEPENDENCY_VERSION_INVALID`,`${e} must be resolved from npm registry before writing package.json.`,{details:{specifier:e}});if(te(e))return e;throw new u(`DEPENDENCY_VERSION_INVALID`,`Unsupported dependency version: ${e}`,{details:{specifier:e}})}function se(e){return e.filter(e=>/^\d+\.\d+\.\d+$/.test(e)).sort(T)}function D(e){return e.filter(e=>/(?:^|[-.])beta(?:[-.]|$)/i.test(e)).sort(T)}var O=class{npm;logger;constructor(e,t){this.npm=e,this.logger=t}latestStable(e,t){let n=this.npm.distTag(t,`latest`);if(n&&/^\d+\.\d+\.\d+$/.test(n))return this.logger?.verbose(`Resolved ${e}@stable -> ${n}`),n;let r=se(this.npm.versions(t)).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest stable version for ${e}.`,{details:{package:e}});return this.logger?.verbose(`Resolved ${e}@stable -> ${r}`),r}latestBeta(e,t){let n=this.npm.distTag(t,`beta`);if(n)return this.logger?.verbose(`Resolved ${e}@beta -> ${n}`),n;let r=D(this.npm.versions(t)).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest beta version for ${e}.`,{details:{package:e}});return this.logger?.verbose(`Resolved ${e}@beta -> ${r}`),r}betaForTarget(e,t,n){let r=t.replace(/\./g,`\\.`),i=RegExp(`beta[-.]${r}-stable`),a=this.npm.versions(n).filter(e=>i.test(e)).sort(T).at(-1);if(!a)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e}@beta for target ${t}.`,{details:{package:e,specifier:`beta`,target:t},suggestions:[`Use target: "latest"`,`Specify an exact version`,`Update BePack`,`Manually edit package.json and manifest.json`]});return this.logger?.verbose(`Resolved ${e}@beta for target ${t} -> ${a}`),a}inferStableFromBeta(e,t,n,r){let i=/^(\d+)\.(\d+)\.(\d+)-beta[.-]/.exec(n);if(!i)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot infer stable version from ${e}@${n}.`,{details:{package:e,beta:n,target:t}});let a=Number(i[1]),o=Number(i[2])-1,s=`${a}.${o}.${Number(i[3])}`;if(o<0||!r.versions?.[s])throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot confirm inferred stable version ${s} for ${e}.`,{details:{package:e,target:t,beta:n,inferredStable:s}});return s}};function k(e,t){return t===`latest`||ne(t)?`beta`:/^(\d+\.\d+\.\d+-beta)/i.exec(e)?.[1]??e}function A(e,t,n){let r=D(t).filter(e=>/^\d+\.\d+\.\d+-beta\.\d+\.\d+\.\d+/.test(e)).filter(e=>!/(?:rc|beta)\.\d+\.\d+\.\d+-preview\.\d+$/i.test(e)).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest beta version for ${e}.`,{details:{package:e}});return n?.verbose(`Resolved ${e}@beta -> ${r}`),r}function ce(e){return e.filter(e=>/(?:rc|beta)\.\d+\.\d+\.\d+-preview\.\d+$/i.test(e)).sort(T)}function j(e,t,n){let r=ce(t).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest preview version for ${e}.`,{details:{package:e}});return n?.verbose(`Resolved ${e}@preview -> ${r}`),r}function M(e,t,n,r){let i=n.replace(/\./g,`\\.`),a=RegExp(`(?:rc|beta)\\.${i}-preview\\.\\d+$`),o=t.filter(e=>a.test(e)).sort(T).at(-1);if(!o)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e}@preview for target ${n}.`,{details:{package:e,specifier:`preview`,target:n},suggestions:[`Use target: "latest"`,`Specify an exact version`]});return r?.verbose(`Resolved ${e}@preview for target ${n} -> ${o}`),o}const N={name:`minecraft-script-api`,resolver:`minecraft-script-api`,match:e=>e.specifier===`stable`||e.specifier===`beta`||e.specifier===`preview`,async resolve(e){let t=await e.npm.metadata(e.packageName),n=new O(e.npm,e.logger);if(e.specifier===`stable`){e.logger?.verbose(`Resolving ${e.packageName}@stable for target ${e.target}`);let r=e.target===`latest`?n.latestStable(e.packageName,t):n.inferStableFromBeta(e.packageName,e.target,n.betaForTarget(e.packageName,e.target,t),t);return{packageVersion:r,manifestVersion:r}}if(e.specifier===`beta`){e.logger?.verbose(`Resolving ${e.packageName}@beta for target ${e.target}`);let r=e.target===`latest`?A(e.packageName,e.npm.versions(t),e.logger):n.betaForTarget(e.packageName,e.target,t);return{packageVersion:r,manifestVersion:k(r,e.target)}}e.logger?.verbose(`Resolving ${e.packageName}@preview for target ${e.target}`);let r=e.target===`latest`?j(e.packageName,e.npm.versions(t),e.logger):M(e.packageName,e.npm.versions(t),e.target,e.logger);return{packageVersion:r,manifestVersion:r}}},P={name:`minecraft-script-api-bp`,resolver:`minecraft-script-api-bp`,match:e=>e.specifier===`beta`||e.specifier===`preview`,async resolve(e){let t=await e.npm.metadata(e.packageName),n=new O(e.npm,e.logger);if(e.specifier===`beta`){e.logger?.verbose(`Resolving ${e.packageName}@beta for target ${e.target}`);let r=e.target===`latest`?A(e.packageName,e.npm.versions(t),e.logger):n.betaForTarget(e.packageName,e.target,t);return{packageVersion:r,manifestVersion:k(r,e.target)}}e.logger?.verbose(`Resolving ${e.packageName}@preview for target ${e.target}`);let r=e.target===`latest`?j(e.packageName,e.npm.versions(t),e.logger):M(e.packageName,e.npm.versions(t),e.target,e.logger);return{packageVersion:r,manifestVersion:r}}},F=/^\d+\.\d+\.\d+$/,le=/^\d+\.\d+\.\d+-preview\.\d+$/,I={name:`minecraft-vanilla-data`,resolver:`minecraft-vanilla-data`,match:e=>e.specifier===`stable`||e.specifier===`preview`,async resolve(e){let t=await e.npm.metadata(e.packageName);return e.specifier===`stable`?ue(e,t):de(e,t)}};function ue(e,t){if(e.logger?.verbose(`Resolving ${e.packageName}@stable for target ${e.target}`),e.target===`latest`){let n=e.npm.distTag(t,`latest`);if(n&&F.test(n))return e.logger?.verbose(`Resolved ${e.packageName}@stable -> ${n}`),{packageVersion:n};let r=e.npm.versions(t).filter(e=>F.test(e)).sort(T).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest stable version for ${e.packageName}.`,{details:{package:e.packageName}});return e.logger?.verbose(`Resolved ${e.packageName}@stable -> ${r}`),{packageVersion:r}}if(t.versions?.[e.target])return e.logger?.verbose(`Resolved ${e.packageName}@stable for target ${e.target} -> ${e.target}`),{packageVersion:e.target};throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e.packageName}@stable for target ${e.target}. The target version does not exist in the registry.`,{details:{package:e.packageName,specifier:`stable`,target:e.target},suggestions:[`Use target: "latest"`,`Specify an exact version`]})}function de(e,t){if(e.logger?.verbose(`Resolving ${e.packageName}@preview for target ${e.target}`),e.target===`latest`){let n=e.npm.versions(t).filter(e=>le.test(e)).sort(T).at(-1);if(!n)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest preview version for ${e.packageName}.`,{details:{package:e.packageName}});return e.logger?.verbose(`Resolved ${e.packageName}@preview -> ${n}`),{packageVersion:n}}let n=e.target.replace(/\./g,`\\.`),r=RegExp(`^${n}-preview\\.\\d+$`),i=e.npm.versions(t).filter(e=>r.test(e)).sort(T).at(-1);if(!i)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e.packageName}@preview for target ${e.target}. No matching preview version found.`,{details:{package:e.packageName,specifier:`preview`,target:e.target},suggestions:[`Use target: "latest"`,`Specify an exact preview version`]});return e.logger?.verbose(`Resolved ${e.packageName}@preview for target ${e.target} -> ${i}`),{packageVersion:i}}const L={"@minecraft/common":{resolver:N,manifest:!0},"@minecraft/server":{resolver:N,manifest:!0},"@minecraft/server-ui":{resolver:N,manifest:!0},"@minecraft/server-net":{resolver:P,manifest:!0},"@minecraft/server-admin":{resolver:P,manifest:!0},"@minecraft/server-gametest":{resolver:P,manifest:!0},"@minecraft/debug-utilities":{resolver:P,manifest:!0},"@minecraft/diagnostics":{resolver:P,manifest:!0},"@minecraft/server-graphics":{resolver:P,manifest:!0},"@minecraft/server-editor":{resolver:P,manifest:!0},"@minecraft/vanilla-data":{resolver:I,manifest:!1}},R={name:`exact-version`,match:e=>te(e.specifier),resolve(e){return e.logger?.verbose(`Using exact ${e.packageName}@${e.specifier}`),{packageVersion:oe(e.specifier),manifestVersion:e.specifier}}},z=[N,P,I,R];var B=class e{resolvers;pluginNames=new Map;constructor(e,t=[]){this.resolvers=e;for(let e of t)for(let t of e.install?.dependencyResolvers??[])this.pluginNames.set(t,e.name)}static fromConfig(t,n=[]){return new e([...t,...z],n)}resolverMatchesCatalog(e,t){let n=e.entry.resolver;if(!n)return!0;let r=typeof n==`string`?n:n.name;return t.resolver===void 0||t.resolver===r}find(e){let t;for(let n of this.resolvers)if(this.resolverMatchesCatalog(e,n))try{if(n.match(e)){t=n;break}}catch(e){let t=this.pluginNames.get(n);throw t?new u(`PLUGIN_FAILED`,`Plugin ${t} resolver ${n.name} match failed: ${e instanceof Error?e.message:String(e)}`):e}if(!t)throw new u(`DEPENDENCY_VERSION_INVALID`,`${e.packageName} dependency version is invalid: ${e.specifier}`,{details:{package:e.packageName,specifier:e.specifier,resolver:e.entry.resolver}});return e.logger?.verbose(`Resolving ${e.packageName}@${e.specifier} with ${t.name}`),t}async resolve(e){let t=this.find(e);try{return await t.resolve(e)}catch(e){let n=this.pluginNames.get(t);throw n?new u(`PLUGIN_FAILED`,`Plugin ${n} resolver ${t.name} failed: ${e instanceof Error?e.message:String(e)}`):e}}};const V=`sapi-pro`,H=[`@minecraft/server`,`@minecraft/server-ui`];function U(e){return/(?:beta|preview|alpha|rc)/i.test(e)}function fe(e){return U(e)?`beta`:`stable`}function pe(e){let t=/^(\d+)\.(\d+)\./.exec(e);return!!t&&(Number(t[1])>0||Number(t[2])>=4)}function W(e){return{...e.dependencies??{},...e.peerDependencies??{}}}async function me(e,t,n,r){let i=e.config.packs.bp?.dependencies??{},a={...L,...e.config.install.dependencyCatalog},o=B.fromConfig(e.config.install.dependencyResolvers.filter(e=>e!==G),e.config.plugins);for(let[s,c]of Object.entries(t)){if(!s.startsWith(`@minecraft/`))continue;let t=i[s],l=a[s];if(!t||!l)return r.add(s),!1;let u;if(n.has(s)?u=n.get(s):(u=await o.resolve({packageName:s,specifier:t,target:e.target,entry:l,config:e.config,npm:e.npm,...e.logger?{logger:e.logger}:{}}),n.set(s,u)),!u||H.includes(s)&&U(c)!==U(u.packageVersion)||!E(u.packageVersion,c))return!1}return!0}function he(e,t){if(t!==`stable`&&t!==`beta`){let n=e[t];return n?[[t,n]]:[]}return Object.entries(e).filter(([e,n])=>{if(!pe(e))return!1;let r=W(n);return Object.keys(r).length===0?!1:t===`stable`?/-stable(?:\.\d+)?$/i.test(e):/^\d+\.\d+\.\d+$/.test(e)}).sort(([e],[t])=>T(e,t)).reverse()}const G={name:`sapi-pro`,resolver:`sapi-pro`,match:e=>e.specifier===`stable`||e.specifier===`beta`||/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(e.specifier),async resolve(e){let t=await e.npm.metadata(V),n=new Map,r=new Set;for(let[i,a]of he(t.versions??{},e.specifier))if(await me(e,W(a),n,r))return/^0\.3\./.test(i)&&e.logger?.warn(`sapi-pro@${i} uses legacy metadata; compatibility is best-effort only.`),{packageVersion:i,manifestVersion:null};throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot find a compatible ${V}@${e.specifier} for target ${e.target}.${r.size>0?` Missing explicit dependencies: ${[...r].join(`, `)}.`:``}`,{details:{package:V,specifier:e.specifier,target:e.target},suggestions:[`Explicitly declare the @minecraft packages required by sapi-pro.`,`Use a compatible target or specify an exact sapi-pro version.`]})}};function K(){return{name:`sapi-pro`,apiVersion:1,description:`Resolve sapi-pro versions compatible with BePack Script API dependencies.`,configResolved:({config:e})=>{let t=e.packs.bp?.dependencies??{},n=t[V];if(!n)return;let r=H.filter(e=>!t[e]);if(r.length>0)throw Error(`sapi-pro requires explicit dependencies: ${r.join(`, `)}.`);if(n===`stable`||n===`beta`)for(let e of H){let r=t[e];if(fe(r)!==n)throw Error(`sapi-pro ${n} requires ${e} to use ${n}, received ${r}.`)}},install:{dependencyCatalog:{[V]:{resolver:`sapi-pro`,manifest:!1}},dependencyResolvers:[G]}}}const ge={"sapi-pro":K};function q(e){return e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{}}function _e(e,t){let n={};(e.packs?.bp||t.packs?.bp)&&(n.bp={...e.packs?.bp??{},...q(t.packs?.bp)}),(e.packs?.rp||t.packs?.rp)&&(n.rp={...e.packs?.rp??{},...q(t.packs?.rp)});let r={...e.copy?.targets??{},...q(t.copy?.targets)},i=q(t);return{...e,...i,...t.plugins!==void 0||e.plugins!==void 0?{plugins:t.plugins??e.plugins}:{},packs:n,install:{...e.install,...q(t.install)},build:{...e.build,...q(t.build)},dev:{...e.dev,...q(t.dev)},copy:{...e.copy,...q(t.copy),targets:r},pack:{...e.pack,...q(t.pack)},hooks:{...e.hooks,...q(t.hooks)}}}function ve(e){let t=(e??[]).map(e=>{if(typeof e!=`string`)return e;let t=ge[e];if(!t)throw new u(`CONFIG_INVALID`,`Unknown built-in plugin: ${e}.`);return t()}),n=new Set;for(let e of t){if(!e?.name||e.name.trim()===``)throw new u(`CONFIG_INVALID`,`Every plugin must have a non-empty name.`);if(n.has(e.name))throw new u(`CONFIG_INVALID`,`Plugin name is duplicated: ${e.name}.`);if(e.apiVersion!==void 0&&e.apiVersion!==1)throw new u(`CONFIG_INVALID`,`Plugin ${e.name} requires unsupported BePack plugin API version ${e.apiVersion}.`);if(e.priority!==void 0&&!Number.isFinite(e.priority))throw new u(`CONFIG_INVALID`,`Plugin ${e.name} priority must be a finite number.`);n.add(e.name)}return t.sort((e,t)=>(t.priority??0)-(e.priority??0))}function ye(e,t){let n=new Set;for(let r of[...e.map(e=>e.hooks),t])for(let e of Object.keys(r??{}))n.add(e);return Object.fromEntries([...n].map(n=>{let r=[...e.map(e=>({plugin:e,hook:e.hooks?.[n]})).filter(e=>e.hook!==void 0),...t?.[n]?[{hook:t[n]}]:[]];return[n,async(...e)=>{let t;for(let i of r)try{t=await i.hook(...e)}catch(e){let t=`plugin`in i?i.plugin:void 0;throw t?new u(`PLUGIN_FAILED`,`Plugin ${t.name} ${String(n)} hook failed: ${e instanceof Error?e.message:String(e)}`):e}return t}]}))}function be(e,t){let n={},r=new Map,i=[];for(let t of e)for(let[e,a]of Object.entries(t.install?.dependencyCatalog??{})){let o=r.get(e);if(o){i.push(`dependency catalog ${e}: plugin ${o} takes precedence over plugin ${t.name}`);continue}n[e]=a,r.set(e,t.name)}for(let[e,a]of Object.entries(t)){let t=r.get(e);t&&i.push(`dependency catalog ${e}: project config overrides plugin ${t}`),n[e]=a}return{catalog:n,diagnostics:i}}function xe(e,t,r){let i=s,a=e?.scriptOutputDir??i.scriptOutputDir,c=n.resolve(r,e?.entry??i.entry),l=v(t,a,n.dirname(c));return{entry:e?.entry??i.entry,tsconfig:e?.tsconfig??i.tsconfig,typecheck:e?.typecheck??i.typecheck,preserveModules:e?.preserveModules??i.preserveModules,external:e?.external??i.external,useNpx:e?.useNpx??i.useNpx,minify:e?.minify??i.minify,cache:u(e?.cache),scriptOutputDir:l};function u(e){let t=o;return{dev:e?.dev??t.dev,build:e?.build??t.build,file:e?.file??t.file}}}function Se(e,t={},r=process.cwd()){let i=_e(e,t),o=ve(i.plugins),s=i.target??a.target;if(s===`stable`||s===`beta`)throw new u(`TARGET_INVALID`,`target must be a Minecraft game version or latest, not a Script API channel.`,{details:{target:s}});let c=!!i.packs?.bp,l=!!i.packs?.rp;if(!c&&!l)throw new u(`CONFIG_INVALID`,`At least one pack (packs.bp or packs.rp) is required.`);if(!i.name||i.name.trim()===``)throw new u(`CONFIG_INVALID`,`name is required.`);let d=i.name,f=i.version??a.version,p=i.description,m=i.packs,h=m.bp?.compile,g=m.bp,_=m.rp;if(g){if(!g.uuid)throw new u(`CONFIG_INVALID`,`packs.bp.uuid is required.`);if(g.compile&&!g.moduleUuid)throw new u(`CONFIG_INVALID`,`packs.bp.moduleUuid is required when packs.bp.compile is configured.`);if(g.root===void 0)throw new u(`CONFIG_INVALID`,`packs.bp.root is required. Set the behavior pack directory in bepack.config.ts.`)}let v=n.resolve(r,i.root??`.`),y=g?n.resolve(v,g.root):void 0;if(_){if(!_.uuid||!_.moduleUuid)throw new u(`CONFIG_INVALID`,`packs.rp.uuid and packs.rp.moduleUuid are required.`);if(_.root===void 0)throw new u(`CONFIG_INVALID`,`packs.rp.root is required when packs.rp is configured.`)}let b=g?.description??p,x=_?.description??p,{catalog:S,diagnostics:C}=be(o,i.install?.dependencyCatalog??{}),w=o.flatMap(e=>e.install?.dependencyResolvers??[]);return{root:i.root??a.root,configured:{root:i.root!==void 0,packOutDir:i.pack?.outDir!==void 0},name:d,version:f,...p===void 0?{}:{description:p},replace:ee(i.replace),target:s,plugins:o,...C.length>0?{pluginDiagnostics:C}:{},...i.manifestFormat===void 0?{}:{manifestFormat:i.manifestFormat},packs:{...g?{bp:{root:g.root,uuid:g.uuid,...g.moduleUuid===void 0?{}:{moduleUuid:g.moduleUuid},name:g.name??d,...b===void 0?{}:{description:b},...h&&y?{compile:xe(h,y,v)}:{},dependencies:g.dependencies??{},...g.achievement===void 0?{}:{achievement:g.achievement},include:g.include??[]}}:{},..._?{rp:{root:_.root,uuid:_.uuid,moduleUuid:_.moduleUuid,name:_.name??d,...x===void 0?{}:{description:x},..._.pbr===void 0?{}:{pbr:_.pbr},include:_.include??[]}}:{}},install:{registry:i.install?.registry??a.install.registry,saveTo:i.install?.saveTo??a.install.saveTo,packageManager:i.install?.packageManager??a.install.packageManager,runPackageManager:i.install?.runPackageManager??a.install.runPackageManager,updatePackageJson:i.install?.updatePackageJson??a.install.updatePackageJson,updateManifest:i.install?.updateManifest??a.install.updateManifest,dependencyCatalog:S,dependencyResolvers:[...w,...i.install?.dependencyResolvers??[]]},build:{copy:i.build?.copy??a.build.copy,timing:i.build?.timing??a.build.timing},dev:{copy:i.dev?.copy??a.dev.copy,...i.dev?.watch?{watch:i.dev.watch}:{}},copy:{defaultTarget:i.copy?.defaultTarget??a.copy.defaultTarget,...i.copy?.name?{name:i.copy.name}:{},...i.copy?.include?{include:i.copy.include}:{},targets:i.copy?.targets??{}},pack:{name:i.pack?.name??a.pack.name,outDir:i.pack?.outDir??a.pack.outDir},hooks:ye(o,i.hooks)}}async function Ce(e,t){if(t){let n=d(e,t);return await r.access(n).catch(()=>{throw new u(`CONFIG_NOT_FOUND`,`Config not found: ${t}`,{details:{configPath:t}})}),n}for(let t of l){let i=n.join(e,t);try{return await r.access(i),i}catch{}}throw new u(`CONFIG_NOT_FOUND`,`No bepack.config.ts, bepack.config.mjs, or bepack.config.js found.`,{details:{cwd:e}})}async function we(e){try{if(e.endsWith(`.ts`))try{return await import(`${t(e).href}?t=${Date.now()}`)}catch{let t=Te(await r.readFile(e,`utf8`));return await import(`data:text/javascript;base64,${Buffer.from(t,`utf8`).toString(`base64`)}`)}return await import(`${t(e).href}?t=${Date.now()}`)}catch(t){throw new u(`CONFIG_INVALID`,`Failed to load config: ${t instanceof Error?t.message:String(t)}`,{details:{file:e},suggestions:[`Use bepack.config.mjs/js for complex config logic.`,`Keep bepack.config.ts free of TypeScript-only runtime syntax.`]})}}function Te(e){return e.replace(/^\s*import\s+type\s+[^;]+;\s*$/gm,``).replace(/\s+satisfies\s+[A-Za-z_$][\w$<>,\s.[\]|&{}]*/g,``).replace(/\((\s*[A-Za-z_$][\w$]*)\s*:\s*[^)=]+?\)\s*=>/g,`($1) =>`)}async function Ee(e,t){for(let n of e.plugins??[])if(n.configResolved)try{await n.configResolved({cwd:t,config:e})}catch(e){throw new u(`PLUGIN_FAILED`,`Plugin ${n.name} configResolved hook failed: ${e instanceof Error?e.message:String(e)}`)}}async function De(e){let t=n.resolve(e.cwd),r=await Ce(t,e.configPath),i=await we(r);if(i.default===void 0)throw new u(`CONFIG_INVALID`,`Config must use default export.`,{details:{file:r}});let a=Se(i.default,e.overrides,t);return await Ee(a,t),{config:a,path:r,cwd:t}}function J(e){return{...L,...e.install.dependencyCatalog}}function Oe(e,t){let n=e[t];if(!n)throw new u(`UNSUPPORTED_DEPENDENCY`,`${t} is not a managed dependency. Add it to install.dependencyCatalog or remove it from packs.bp.dependencies.`,{details:{package:t}});return n}function ke(e){return`${JSON.stringify(e,null,4)}\n`}async function Ae(e){try{return await r.access(e),!0}catch{return!1}}async function je(e){await r.mkdir(e,{recursive:!0})}async function Me(e,t){await je(n.dirname(e)),await r.writeFile(e,ke(t),`utf8`)}function Ne(e){return Array.isArray(e)&&e.length===3&&typeof e[0]==`number`&&typeof e[1]==`number`&&typeof e[2]==`number`}function Pe(e){return typeof e==`string`&&/^\d+\.\d+\.\d+$/.test(e)}function Y(e){return e===3?Pe:Ne}function X(e,t){return e===3?`${t} must be SemVer string like "x.y.z" (format 3)`:`${t} must be [number, number, number] (format 2)`}const Fe=[e=>e.format_version===void 0?`format_version is required`:null,e=>e.header?null:`header is required`,e=>e.header&&!e.header.name?`header.name is required`:null,e=>e.header&&!e.header.uuid?`header.uuid is required`:null,e=>e.header?Y(e.format_version)(e.header.version)?null:X(e.format_version,`header.version`):null,e=>e.header?Y(e.format_version)(e.header.min_engine_version)?null:X(e.format_version,`header.min_engine_version`):null,e=>e.modules!==void 0&&!Array.isArray(e.modules)?`modules must be an array`:null,(e,t)=>{if(!Array.isArray(e.modules))return null;let n=e.modules.some(e=>e?.type===`resources`),r=[];return t===`rp`&&!n&&r.push(`RP manifest must have a resources module`),r.length>0?r:null},e=>{if(!Array.isArray(e.modules))return null;let t=Y(e.format_version),n=[];for(let r=0;r<e.modules.length;r++){let i=e.modules[r];i&&i.version!==void 0&&i.version!==null&&!t(i.version)&&n.push(`modules[${r}] (uuid: ${i.uuid??`unknown`}): ${X(e.format_version,`version`)}`)}return n.length>0?n:null},e=>e.dependencies!==void 0&&!Array.isArray(e.dependencies)?`dependencies must be an array`:null,e=>{if(!Array.isArray(e.dependencies))return null;let t=Y(e.format_version),n=[];for(let r=0;r<e.dependencies.length;r++){let i=e.dependencies[r];if(!i){n.push(`dependencies[${r}] is invalid`);continue}`uuid`in i&&i.uuid&&!t(i.version)&&n.push(`dependencies[${r}] (uuid: ${i.uuid}): ${X(e.format_version,`version`)}`),`module_name`in i&&i.module_name&&typeof i.version!=`string`&&n.push(`dependencies[${r}] (module_name: ${i.module_name}): version must be a string`)}return n.length>0?n:null},e=>e.capabilities===void 0?null:Array.isArray(e.capabilities)?e.capabilities.every(e=>typeof e==`string`)?null:`capabilities must be an array of strings`:`capabilities must be an array`,e=>e.metadata!==void 0&&(typeof e.metadata!=`object`||e.metadata===null)?`metadata must be an object`:null];function Ie(e,t){let n=[];for(let r of Fe){let i=r(e,t);i!==null&&(Array.isArray(i)?n.push(...i):n.push(i))}if(n.length>0)throw new u(`MANIFEST_INVALID`,`Manifest validation failed: ${n.join(`; `)}`)}function Z(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:{...e}}function Q(e){return Array.isArray(e)?e:[]}function Le(e){if(!(e&&Object.keys(e).length===0))return e}var $=class{static async read(e){if(!await Ae(e))return;let t=await r.readFile(e,`utf8`);try{return Z(JSON.parse(t))}catch{throw new u(`MANIFEST_INVALID`,`Invalid JSON in manifest: ${e}`)}}static async write(e,t,n){Ie(t,n),await Me(e,t)}};const Re=[1,21,0],ze=[1,0,0];var Be=class{config;version;versionStr;depManager;constructor(e,t){this.config=e,this.version=w(e.version),this.versionStr=e.version,this.depManager=t}buildBp(e){let t=this.requireBp(),n=Z(e);this.depManager.validateBpDependencies();let r=this.getWriteFormatVersion(n),i={...n,format_version:r,header:this.buildBpHeader(n,t,r),...t.moduleUuid?{modules:this.replaceManagedBpModules(n.modules,t,r)}:n.modules?{modules:n.modules}:{},dependencies:this.depManager.replaceBpDependencies(n.dependencies,this.config.packs.rp?.uuid,r)};return this.applyAchievementMetadata(i,t),i}buildRp(e){let t=this.requireRp(),n=Z(e),r=this.getWriteFormatVersion(n),i={...n,format_version:r,header:this.buildRpHeader(n,t,r),modules:this.replaceManagedRpModules(n.modules,t,r),dependencies:this.depManager.replaceRpDependencies(n.dependencies,this.config.packs.bp?.uuid,r)};return this.applyPbrCapability(i,t),i}buildBpHeader(e,t,n){return{...e.header??{},name:t.name,...t.description===void 0?{}:{description:t.description},uuid:t.uuid,version:this.getVersionFor(n),min_engine_version:this.normalizeMinEngineVersion(e.header?.min_engine_version,n)}}buildRpHeader(e,t,n){return{...e.header??{},name:t.name,...t.description===void 0?{}:{description:t.description},uuid:t.uuid,version:this.getVersionFor(n),min_engine_version:this.normalizeMinEngineVersion(e.header?.min_engine_version,n)}}getScriptEntry(){let e=this.config.packs.bp?.compile;return e?`${e.scriptOutputDir}/${n.basename(e.entry,n.extname(e.entry))}.js`:`scripts/main.js`}isManagedBpModule(e,t){if(e.type!==`script`||e.language!==`javascript`)return!1;let n=this.getScriptEntry();return e.uuid===t.moduleUuid||e.entry===n}isManagedRpModule(e,t){return e.type===`resources`?e.uuid===t.moduleUuid:!1}createScriptModule(e,t){return{type:`script`,language:`javascript`,uuid:e.moduleUuid,version:this.getModuleVersion(t),entry:this.getScriptEntry()}}createResourcesModule(e,t){return{type:`resources`,uuid:e.moduleUuid,version:this.getModuleVersion(t)}}replaceManagedBpModules(e,t,n){return[...Q(e).filter(e=>!this.isManagedBpModule(e,t)),this.createScriptModule(t,n)]}replaceManagedRpModules(e,t,n){return[...Q(e).filter(e=>!this.isManagedRpModule(e,t)),this.createResourcesModule(t,n)]}applyAchievementMetadata(e,t){if(t.achievement===!0)e.metadata={...e.metadata??{},product_type:`addon`};else if(t.achievement===!1&&e.metadata){let t={...e.metadata};delete t.product_type;let n=Le(t);n?e.metadata=n:delete e.metadata}}applyPbrCapability(e,t){if(t.pbr===!0){let t=Q(e.capabilities);e.capabilities=t.includes(`pbr`)?t:[...t,`pbr`]}else if(t.pbr===!1){let t=Q(e.capabilities).filter(e=>e!==`pbr`);t.length>0?e.capabilities=t:delete e.capabilities}}getVersionFor(e){return e===3?this.versionStr:this.version}getModuleVersion(e){return e===3?`1.0.0`:ze}getWriteFormatVersion(e){return this.config.manifestFormat===void 0?e.format_version??2:this.config.manifestFormat}normalizeMinEngineVersion(e,t){if(e==null)return t===3?`1.21.0`:Re;if(Array.isArray(e))return t===3?e.join(`.`):e;if(typeof e==`string`){if(t===2){let t=e.split(`.`).map(Number);if(t.length===3&&t.every(e=>!Number.isNaN(e)))return t}return e}return t===3?`1.21.0`:Re}requireBp(){if(!this.config.packs.bp)throw new u(`CONFIG_INVALID`,`packs.bp is required to build the BP manifest.`);return this.config.packs.bp}requireRp(){if(!this.config.packs.rp)throw new u(`CONFIG_INVALID`,`packs.rp is required to build the RP manifest.`);return this.config.packs.rp}},Ve=class e{config;catalog;resolvedDeps;version;versionStr;constructor(e,t,n){this.config=e,this.catalog=t,this.resolvedDeps=n??{},this.version=w(e.version),this.versionStr=e.version}static isAllowedSpecifier(e){return e===`stable`||e===`beta`||e===`preview`||/^\d+\.\d+\.\d+(?:[-.][0-9A-Za-z.-]+)?$/.test(e)}static resolveVersion(e){let{specifier:t,target:n,resolvedVersion:r}=e;if(t===`stable`){if(r)return r;throw new u(`DEPENDENCY_REQUIRES_INSTALL`,"Run `bepack install` to resolve stable manifest dependencies.",{details:{specifier:t,target:n}})}if(t===`beta`){if(ne(n))return`beta`;if(r)return r;throw new u(`DEPENDENCY_REQUIRES_INSTALL`,`Run \`bepack install\` to resolve manifest dependencies for target ${n}.`,{details:{target:n}})}if(t===`preview`){if(r)return r;throw new u(`DEPENDENCY_REQUIRES_INSTALL`,`Run \`bepack install\` to resolve preview manifest dependencies for target ${n}.`,{details:{specifier:t,target:n}})}return t}static isAchievementCompatible(e){return e!==`beta`&&e!==`preview`}validateBpDependencies(){if(this.config.packs.bp){for(let[t,n]of Object.entries(this.config.packs.bp.dependencies)){if(!this.catalog[t])throw new u(`UNSUPPORTED_DEPENDENCY`,`${t} is not a managed dependency. Add it to install.dependencyCatalog or remove it from packs.bp.dependencies.`,{details:{package:t}});if(!e.isAllowedSpecifier(n))throw new u(`DEPENDENCY_VERSION_INVALID`,`${t} dependency version is invalid: ${n}`,{details:{package:t,specifier:n}})}if(this.config.packs.bp.achievement){for(let[t,n]of Object.entries(this.config.packs.bp.dependencies))if(!e.isAchievementCompatible(n))throw new u(`ACHIEVEMENT_REQUIRES_STABLE_API`,`${t}: achievement requires stable Script API dependencies (${n} is not allowed).`)}}}isManagedBpDependency(e){return!!(`module_name`in e&&typeof e.module_name==`string`&&this.catalog[e.module_name]?.manifest||`uuid`in e&&typeof e.uuid==`string`&&this.config.packs.rp?.uuid===e.uuid)}isManagedRpDependency(e,t){return t!==void 0&&`uuid`in e&&typeof e.uuid==`string`&&e.uuid===t}buildManagedDependencies(){if(!this.config.packs.bp)return[];let t=[];for(let[n,r]of Object.entries(this.config.packs.bp.dependencies))this.catalog[n]?.manifest&&t.push({module_name:n,version:e.resolveVersion({specifier:r,target:this.config.target,resolvedVersion:this.resolvedDeps[n]})});return t}getFormatAwareVersion(e){return(e??this.config.manifestFormat??2)===3?this.versionStr:this.version}replaceBpDependencies(e,t,n){let r=Q(e).filter(e=>!this.isManagedBpDependency(e)),i=this.buildManagedDependencies();return t&&i.push({uuid:t,version:this.getFormatAwareVersion(n)}),[...r,...i]}replaceRpDependencies(e,t,n){let r=Q(e).filter(e=>!this.isManagedRpDependency(e,t));return t?[...r,{uuid:t,version:this.getFormatAwareVersion(n)}]:r}};async function He(e){let t=J(e.config),r=e.config.packs.bp?y(e.cwd,e.config):void 0,i=r?await $.read(r):void 0,a=Ue(i,t),o=new Ve(e.config,t,e.resolvedDeps?{...a,...e.resolvedDeps}:a),s=new Be(e.config,o),c={};if(e.config.packs.bp){let t=i!==void 0;e.config.manifestFormat===2&&i?.format_version===3&&(e.logger?.warn??console.warn)(`Warning: config manifestFormat is 2, but existing manifest uses format_version 3. format_version 2 does not support string versions; any string versions in the existing manifest will be preserved as-is.`);let a=s.buildBp(i);e.dryRun||await $.write(r,a,`bp`),c.bpManifest={path:f(n.relative(e.cwd,r)),updated:!0,existed:t}}if(e.config.packs.rp){let t=b(e.cwd,e.config),r=await $.read(t),i=r!==void 0,a=s.buildRp(r);e.dryRun||await $.write(t,a,`rp`),c.rpManifest={path:f(n.relative(e.cwd,t)),updated:!0,existed:i}}return c}function Ue(e,t){let n={};for(let r of e?.dependencies??[])`module_name`in r&&typeof r.module_name==`string`&&typeof r.version==`string`&&t[r.module_name]?.manifest&&r.version!==`stable`&&(n[r.module_name]=r.version);return n}function We(e,t){e?.install?e.install(t):e?.info(`[Install] ${t}`)}var Ge=class{registry;logger;cache=new Map;constructor(e,t){this.registry=e,this.logger=t}async metadata(e){let t=this.packageUrl(e),n=this.cache.get(t);if(n)return this.logger?.verbose(`Using cached metadata for ${e}`),n;We(this.logger,`fetching ${e} metadata from ${this.registry}`);let r=await fetch(t);if(!r.ok)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot fetch ${e} versions from registry.`,{details:{package:e,registry:this.registry,status:r.status}});let i=await r.json();return this.cache.set(t,i),this.logger?.verbose(`Fetched ${e} metadata (${Object.keys(i.versions??{}).length} versions)`),i}versions(e){return Object.keys(e.versions??{})}async versionsOf(e){return this.versions(await this.metadata(e))}distTag(e,t){let n=e[`dist-tags`]?.[t];return n&&e.versions?.[n]?n:void 0}packageUrl(e){return`${this.registry.replace(/\/$/,``)}/${encodeURIComponent(e).replace(/^%40/,`@`)}`}};function Ke(e){return t=>{e?.install?e.install(t):e?.info(`[Install] ${t}`)}}var qe=class{config;logger;npm;catalog;pkgResolver;log;constructor(e,t){this.config=e,this.logger=t,this.npm=new Ge(e.install.registry,t),this.catalog=J(e),this.pkgResolver=new O(this.npm,t),this.log=Ke(t)}async resolveAll(){let e={},t=this.config.packs.bp?.dependencies;if(!t||Object.keys(t).length===0)return this.log(`no BP dependencies to resolve`),e;this.log(`resolving dependencies for target ${this.config.target}`);for(let[n,r]of Object.entries(t)){let t=Oe(this.catalog,n),i=await this.resolveOne(n,r,t),a=t.manifest??!1;e[n]={specifier:r,packageVersion:i.packageVersion,manifestVersion:a?i.manifestVersion??i.packageVersion:null,manifest:a,external:a,resolver:typeof t.resolver==`string`?t.resolver:t.resolver.name},this.log(`${n}: ${r} -> package ${e[n].packageVersion}, manifest ${e[n].manifestVersion}`)}return this.logger?.verbose(`Dependency resolution complete`),e}async resolveOne(e,t,n){let r={packageName:e,specifier:t,target:this.config.target,entry:n,config:this.config};await this.runDependencyHooks(`beforeResolveDependency`,r);let i=await B.fromConfig(this.config.install.dependencyResolvers,this.config.plugins??[]).resolve({packageName:e,specifier:t,target:this.config.target,entry:n,config:this.config,npm:this.npm,...this.logger?{logger:this.logger}:{}});return await this.runDependencyHooks(`afterResolveDependency`,{...r,result:i}),i}async runDependencyHooks(e,t){for(let n of this.config.plugins??[]){let r=n.install?.hooks?.[e];if(r)try{await r(t)}catch(t){throw new u(`PLUGIN_FAILED`,`Plugin ${n.name} ${e} hook failed: ${t instanceof Error?t.message:String(t)}`)}}}};async function Je(e,t){return new qe(e,t).resolveAll()}function Ye(e){let t=[];return e.packs.bp&&t.push({type:`bp`,root:e.packs.bp.root,uuid:e.packs.bp.uuid,...e.packs.bp.moduleUuid===void 0?{}:{moduleUuid:e.packs.bp.moduleUuid},name:e.packs.bp.name,include:e.packs.bp.include}),e.packs.rp&&t.push({type:`rp`,root:e.packs.rp.root,uuid:e.packs.rp.uuid,moduleUuid:e.packs.rp.moduleUuid,name:e.packs.rp.name,include:e.packs.rp.include}),t}export{L as BUILTIN_DEPENDENCY_CATALOG,z as BUILTIN_DEPENDENCY_RESOLVERS,ge as BUILTIN_PLUGINS,u as BePackError,B as DependencyResolverRegistry,qe as DependencyService,O as MinecraftPackageResolver,Ge as NpmRegistryClient,J as createDependencyCatalog,c as defineConfig,R as exactVersionResolver,Ye as getConfiguredPacks,De as loadConfig,P as minecraftScriptApiBpResolver,N as minecraftScriptApiResolver,I as minecraftVanillaDataResolver,oe as packageVersionForSpecifier,He as patchManifest,Je as resolveDependencies,K as sapiPro,E as satisfiesSemver,ae as satisfiesSemverRange};
|
|
1
|
+
import{pathToFileURL as e}from"node:url";import t from"node:path";import{promises as n}from"node:fs";import{platform as r}from"node:os";import"rolldown/plugins";const i={root:`.`,configured:{root:!1,packOutDir:!1},name:`minecraft-addon`,version:`1.0.0`,description:``,replace:{values:{},builtins:{VERSION:!1,NAME:!1,UUID:!1,DESCRIPTION:!1}},target:`latest`,plugins:[],install:{registry:`https://registry.npmjs.org/`,saveTo:`dependencies`,packageManager:`auto`,runPackageManager:!0,updatePackageJson:!0,updateManifest:!0,dependencyCatalog:{},dependencyResolvers:[]},build:{copy:!1,timing:!1},dev:{copy:!1},copy:{defaultTarget:``,targets:{}},pack:{name:`{name}-{version}`,outDir:`dist`},hooks:{}},a={dev:!0,build:!1,file:`node_modules/.cache/bepack/tsconfig.tsbuildinfo`},o={keepLooseFiles:!1,keepLoose:[],exclude:[],minifyJson:!0,packOptimizationVersion:`0.1.0`,allowUnsupportedTarget:!1},s={entry:`src/main.ts`,define:{},tsconfig:`tsconfig.json`,typecheck:!0,preserveModules:!0,external:[/^@minecraft\/server.*/],useNpx:!1,minify:!1,cache:a,scriptOutputDir:`scripts`};function c(e){return e}const l=[`bepack.config.ts`,`bepack.config.mjs`,`bepack.config.js`];var u=class extends Error{code;details;suggestions;constructor(e,t,n={}){super(t),this.name=`BePackError`,this.code=e,this.details=n.details,this.suggestions=n.suggestions}};const d=[`world`,`global`,`any`];function f(e){let t=[];return e.packs.bp&&t.push({type:`bp`,root:e.packs.bp.root,uuid:e.packs.bp.uuid,...e.packs.bp.moduleUuid===void 0?{}:{moduleUuid:e.packs.bp.moduleUuid},name:e.packs.bp.name,include:e.packs.bp.include}),e.packs.rp&&t.push({type:`rp`,root:e.packs.rp.root,uuid:e.packs.rp.uuid,moduleUuid:e.packs.rp.moduleUuid,name:e.packs.rp.name,include:e.packs.rp.include}),t}function p(e,n){return t.isAbsolute(n)?n:t.join(e,n)}function m(e){return e.replace(/\\/g,`/`)}function h(e,t){return p(e,t.root)}function g(e,t,n){return n===`bp`?t.packs.bp?p(e,t.packs.bp.root):void 0:t.packs.rp?p(e,t.packs.rp.root):void 0}function _(e,t){let n=g(h(e,t),t,`bp`);if(!n)throw Error(`packs.bp is not configured`);return n}function v(e,t){let n=g(h(e,t),t,`rp`);if(!n)throw Error(`packs.rp is not configured`);return n}function y(e,n){let r=t.relative(e,n);return r===``||!r.startsWith(`..${t.sep}`)&&r!==`..`&&!t.isAbsolute(r)}function b(e,n,r){if(!n||n===`.`)throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must be a non-empty relative path strictly inside the BP root. Got: "${n}". This directory will be emptied during build.`);let i=n.replace(/\\/g,`/`);if(t.posix.isAbsolute(i)||t.win32.isAbsolute(i))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must be a relative path, not absolute. Got: "${n}". This directory will be emptied during build.`);let a=t.posix.normalize(i);if(a.split(`/`).includes(`..`))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must not contain ".." (path escape). Got: "${n}" resolves outside the BP root. This directory will be emptied during build.`);let o=t.resolve(e,a),s=t.relative(e,o);if(!s||s.startsWith(`..`)||t.isAbsolute(s))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir must be a directory strictly inside the BP root. Value: "${n}", resolved: "${o}". This directory will be emptied during build and must not be the BP root or a path outside it.`);if(r&&y(o,r))throw new u(`CONFIG_INVALID`,`compile.scriptOutputDir "${n}" dangerously overlaps with the source entry directory. The output directory will be emptied during build and would delete source files.`);return m(s)}function x(e,n){if(n.packs.bp)return t.join(_(e,n),`manifest.json`)}function S(e,n){if(n.packs.rp)return t.join(v(e,n),`manifest.json`)}r();function ee(e){return{values:e?.values??{},builtins:{VERSION:e?.builtins?.VERSION??!1,NAME:e?.builtins?.NAME??!1,UUID:e?.builtins?.UUID??!1,DESCRIPTION:e?.builtins?.DESCRIPTION??!1}}}function te(e){let t={...e??{}};for(let[e,n]of Object.entries(t))try{Function(`return (${n});`)}catch{throw new u(`CONFIG_INVALID`,`packs.bp.compile.define["${e}"] is not a valid JavaScript expression: ${n}. Define values must be expression strings, e.g. JSON.stringify("server") or "true".`,{details:{defineKey:e,defineValue:n}})}return t}function C(e){let t=/^(\d+)\.(\d+)\.(\d+)$/.exec(e);if(!t)throw new u(`VERSION_INVALID`,`Manifest version requires x.y.z.`,{details:{version:e}});return[Number(t[1]),Number(t[2]),Number(t[3])]}function w(e){return/^\d+\.\d+\.\d+(?:[-.][0-9A-Za-z.-]+)?$/.test(e)}function T(e,t){let n=e.split(/[^0-9A-Za-z]+/),r=t.split(/[^0-9A-Za-z]+/),i=Math.max(n.length,r.length);for(let e=0;e<i;e+=1){let t=n[e]??``,i=r[e]??``,a=/^\d+$/.test(t)?Number(t):NaN,o=/^\d+$/.test(i)?Number(i):NaN,s=Number.isNaN(a)||Number.isNaN(o)?t.localeCompare(i):a-o;if(s!==0)return s}return 0}function E(e){return e===`latest`||T(e,`1.21.120`)>=0}function ne(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(e.trim());if(!t)return;let n=/(?:^|[.-])(\d+)\.(\d+)\.(\d+)(?:[.-]|$)/.exec(t[4]??``);return{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3]),...n?{minecraftTarget:[Number(n[1]),Number(n[2]),Number(n[3])]}:{}}}function re(e,t){for(let n of[`major`,`minor`,`patch`])if(e[n]!==t[n])return e[n]-t[n];return 0}function D(e,t){let n=ne(e);return n?t.split(`||`).some(e=>{let t=/(?:\^|~|>=|<=|>|<|=)?\s*(v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/.exec(e.trim()),r=t?ne(t[1]):void 0;return!r||n.major!==r.major||re(n,r)<0?!1:r.minecraftTarget?n.minecraftTarget?T(n.minecraftTarget.join(`.`),r.minecraftTarget.join(`.`))>=0:!1:!0}):!1}const ie=D;function ae(e){if(e===`stable`||e===`beta`||e===`preview`)throw new u(`DEPENDENCY_VERSION_INVALID`,`${e} must be resolved from npm registry before writing package.json.`,{details:{specifier:e}});if(w(e))return e;throw new u(`DEPENDENCY_VERSION_INVALID`,`Unsupported dependency version: ${e}`,{details:{specifier:e}})}function oe(e){return e.filter(e=>/^\d+\.\d+\.\d+$/.test(e)).sort(T)}function se(e){return e.filter(e=>/(?:^|[-.])beta(?:[-.]|$)/i.test(e)).sort(T)}var O=class{npm;logger;constructor(e,t){this.npm=e,this.logger=t}latestStable(e,t){let n=this.npm.distTag(t,`latest`);if(n&&/^\d+\.\d+\.\d+$/.test(n))return this.logger?.verbose(`Resolved ${e}@stable -> ${n}`),n;let r=oe(this.npm.versions(t)).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest stable version for ${e}.`,{details:{package:e}});return this.logger?.verbose(`Resolved ${e}@stable -> ${r}`),r}latestBeta(e,t){let n=this.npm.distTag(t,`beta`);if(n)return this.logger?.verbose(`Resolved ${e}@beta -> ${n}`),n;let r=se(this.npm.versions(t)).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest beta version for ${e}.`,{details:{package:e}});return this.logger?.verbose(`Resolved ${e}@beta -> ${r}`),r}betaForTarget(e,t,n){let r=t.replace(/\./g,`\\.`),i=RegExp(`beta[-.]${r}-stable`),a=this.npm.versions(n).filter(e=>i.test(e)).sort(T).at(-1);if(!a)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e}@beta for target ${t}.`,{details:{package:e,specifier:`beta`,target:t},suggestions:[`Use target: "latest"`,`Specify an exact version`,`Update BePack`,`Manually edit package.json and manifest.json`]});return this.logger?.verbose(`Resolved ${e}@beta for target ${t} -> ${a}`),a}inferStableFromBeta(e,t,n,r){let i=/^(\d+)\.(\d+)\.(\d+)-beta[.-]/.exec(n);if(!i)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot infer stable version from ${e}@${n}.`,{details:{package:e,beta:n,target:t}});let a=Number(i[1]),o=Number(i[2])-1,s=`${a}.${o}.${Number(i[3])}`;if(o<0||!r.versions?.[s])throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot confirm inferred stable version ${s} for ${e}.`,{details:{package:e,target:t,beta:n,inferredStable:s}});return s}};function k(e,t){return t===`latest`||E(t)?`beta`:/^(\d+\.\d+\.\d+-beta)/i.exec(e)?.[1]??e}function A(e,t,n){let r=se(t).filter(e=>/^\d+\.\d+\.\d+-beta\.\d+\.\d+\.\d+/.test(e)).filter(e=>!/(?:rc|beta)\.\d+\.\d+\.\d+-preview\.\d+$/i.test(e)).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest beta version for ${e}.`,{details:{package:e}});return n?.verbose(`Resolved ${e}@beta -> ${r}`),r}function ce(e){return e.filter(e=>/(?:rc|beta)\.\d+\.\d+\.\d+-preview\.\d+$/i.test(e)).sort(T)}function le(e,t,n){let r=ce(t).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest preview version for ${e}.`,{details:{package:e}});return n?.verbose(`Resolved ${e}@preview -> ${r}`),r}function ue(e,t,n,r){let i=n.replace(/\./g,`\\.`),a=RegExp(`(?:rc|beta)\\.${i}-preview\\.\\d+$`),o=t.filter(e=>a.test(e)).sort(T).at(-1);if(!o)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e}@preview for target ${n}.`,{details:{package:e,specifier:`preview`,target:n},suggestions:[`Use target: "latest"`,`Specify an exact version`]});return r?.verbose(`Resolved ${e}@preview for target ${n} -> ${o}`),o}const j={name:`minecraft-script-api`,resolver:`minecraft-script-api`,match:e=>e.specifier===`stable`||e.specifier===`beta`||e.specifier===`preview`,async resolve(e){let t=await e.npm.metadata(e.packageName),n=new O(e.npm,e.logger);if(e.specifier===`stable`){e.logger?.verbose(`Resolving ${e.packageName}@stable for target ${e.target}`);let r=e.target===`latest`?n.latestStable(e.packageName,t):n.inferStableFromBeta(e.packageName,e.target,n.betaForTarget(e.packageName,e.target,t),t);return{packageVersion:r,manifestVersion:r}}if(e.specifier===`beta`){e.logger?.verbose(`Resolving ${e.packageName}@beta for target ${e.target}`);let r=e.target===`latest`?A(e.packageName,e.npm.versions(t),e.logger):n.betaForTarget(e.packageName,e.target,t);return{packageVersion:r,manifestVersion:k(r,e.target)}}e.logger?.verbose(`Resolving ${e.packageName}@preview for target ${e.target}`);let r=e.target===`latest`?le(e.packageName,e.npm.versions(t),e.logger):ue(e.packageName,e.npm.versions(t),e.target,e.logger);return{packageVersion:r,manifestVersion:r}}},M={name:`minecraft-script-api-bp`,resolver:`minecraft-script-api-bp`,match:e=>e.specifier===`beta`||e.specifier===`preview`,async resolve(e){let t=await e.npm.metadata(e.packageName),n=new O(e.npm,e.logger);if(e.specifier===`beta`){e.logger?.verbose(`Resolving ${e.packageName}@beta for target ${e.target}`);let r=e.target===`latest`?A(e.packageName,e.npm.versions(t),e.logger):n.betaForTarget(e.packageName,e.target,t);return{packageVersion:r,manifestVersion:k(r,e.target)}}e.logger?.verbose(`Resolving ${e.packageName}@preview for target ${e.target}`);let r=e.target===`latest`?le(e.packageName,e.npm.versions(t),e.logger):ue(e.packageName,e.npm.versions(t),e.target,e.logger);return{packageVersion:r,manifestVersion:r}}},de=/^\d+\.\d+\.\d+$/,fe=/^\d+\.\d+\.\d+-preview\.\d+$/,N={name:`minecraft-vanilla-data`,resolver:`minecraft-vanilla-data`,match:e=>e.specifier===`stable`||e.specifier===`preview`,async resolve(e){let t=await e.npm.metadata(e.packageName);return e.specifier===`stable`?pe(e,t):me(e,t)}};function pe(e,t){if(e.logger?.verbose(`Resolving ${e.packageName}@stable for target ${e.target}`),e.target===`latest`){let n=e.npm.distTag(t,`latest`);if(n&&de.test(n))return e.logger?.verbose(`Resolved ${e.packageName}@stable -> ${n}`),{packageVersion:n};let r=e.npm.versions(t).filter(e=>de.test(e)).sort(T).at(-1);if(!r)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest stable version for ${e.packageName}.`,{details:{package:e.packageName}});return e.logger?.verbose(`Resolved ${e.packageName}@stable -> ${r}`),{packageVersion:r}}if(t.versions?.[e.target])return e.logger?.verbose(`Resolved ${e.packageName}@stable for target ${e.target} -> ${e.target}`),{packageVersion:e.target};throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e.packageName}@stable for target ${e.target}. The target version does not exist in the registry.`,{details:{package:e.packageName,specifier:`stable`,target:e.target},suggestions:[`Use target: "latest"`,`Specify an exact version`]})}function me(e,t){if(e.logger?.verbose(`Resolving ${e.packageName}@preview for target ${e.target}`),e.target===`latest`){let n=e.npm.versions(t).filter(e=>fe.test(e)).sort(T).at(-1);if(!n)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve latest preview version for ${e.packageName}.`,{details:{package:e.packageName}});return e.logger?.verbose(`Resolved ${e.packageName}@preview -> ${n}`),{packageVersion:n}}let n=e.target.replace(/\./g,`\\.`),r=RegExp(`^${n}-preview\\.\\d+$`),i=e.npm.versions(t).filter(e=>r.test(e)).sort(T).at(-1);if(!i)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot resolve ${e.packageName}@preview for target ${e.target}. No matching preview version found.`,{details:{package:e.packageName,specifier:`preview`,target:e.target},suggestions:[`Use target: "latest"`,`Specify an exact preview version`]});return e.logger?.verbose(`Resolved ${e.packageName}@preview for target ${e.target} -> ${i}`),{packageVersion:i}}const P={"@minecraft/common":{resolver:j,manifest:!0},"@minecraft/server":{resolver:j,manifest:!0},"@minecraft/server-ui":{resolver:j,manifest:!0},"@minecraft/server-net":{resolver:M,manifest:!0},"@minecraft/server-admin":{resolver:M,manifest:!0},"@minecraft/server-gametest":{resolver:M,manifest:!0},"@minecraft/debug-utilities":{resolver:M,manifest:!0},"@minecraft/diagnostics":{resolver:M,manifest:!0},"@minecraft/server-graphics":{resolver:M,manifest:!0},"@minecraft/server-editor":{resolver:M,manifest:!0},"@minecraft/vanilla-data":{resolver:N,manifest:!1}},F={name:`exact-version`,match:e=>w(e.specifier),resolve(e){return e.logger?.verbose(`Using exact ${e.packageName}@${e.specifier}`),{packageVersion:ae(e.specifier),manifestVersion:e.specifier}}},I=[j,M,N,F];var L=class e{resolvers;pluginNames=/* @__PURE__ */ new Map;constructor(e,t=[]){this.resolvers=e;for(let e of t)for(let t of e.install?.dependencyResolvers??[])this.pluginNames.set(t,e.name)}static fromConfig(t,n=[]){return new e([...t,...I],n)}resolverMatchesCatalog(e,t){let n=e.entry.resolver;if(!n)return!0;let r=typeof n==`string`?n:n.name;return t.resolver===void 0||t.resolver===r}find(e){let t;for(let n of this.resolvers)if(this.resolverMatchesCatalog(e,n))try{if(n.match(e)){t=n;break}}catch(e){let t=this.pluginNames.get(n);throw t?new u(`PLUGIN_FAILED`,`Plugin ${t} resolver ${n.name} match failed: ${e instanceof Error?e.message:String(e)}`):e}if(!t)throw new u(`DEPENDENCY_VERSION_INVALID`,`${e.packageName} dependency version is invalid: ${e.specifier}`,{details:{package:e.packageName,specifier:e.specifier,resolver:e.entry.resolver}});return e.logger?.verbose(`Resolving ${e.packageName}@${e.specifier} with ${t.name}`),t}async resolve(e){let t=this.find(e);try{return await t.resolve(e)}catch(e){let n=this.pluginNames.get(t);throw n?new u(`PLUGIN_FAILED`,`Plugin ${n} resolver ${t.name} failed: ${e instanceof Error?e.message:String(e)}`):e}}};const R=`sapi-pro`,z=[`@minecraft/server`,`@minecraft/server-ui`];function B(e){return/(?:beta|preview|alpha|rc)/i.test(e)}function he(e){return B(e)?`beta`:`stable`}function ge(e){let t=/^(\d+)\.(\d+)\./.exec(e);return!!t&&(Number(t[1])>0||Number(t[2])>=4)}function V(e){return{...e.dependencies??{},...e.peerDependencies??{}}}async function _e(e,t,n,r){let i=e.config.packs.bp?.dependencies??{},a={...P,...e.config.install.dependencyCatalog},o=L.fromConfig(e.config.install.dependencyResolvers.filter(e=>e!==H),e.config.plugins);for(let[s,c]of Object.entries(t)){if(!s.startsWith(`@minecraft/`))continue;let t=i[s],l=a[s];if(!t||!l)return r.add(s),!1;let u;if(n.has(s)?u=n.get(s):(u=await o.resolve({packageName:s,specifier:t,target:e.target,entry:l,config:e.config,npm:e.npm,...e.logger?{logger:e.logger}:{}}),n.set(s,u)),!u||z.includes(s)&&B(c)!==B(u.packageVersion)||!D(u.packageVersion,c))return!1}return!0}function ve(e,t){if(t!==`stable`&&t!==`beta`){let n=e[t];return n?[[t,n]]:[]}return Object.entries(e).filter(([e,n])=>{if(!ge(e))return!1;let r=V(n);return Object.keys(r).length===0?!1:t===`stable`?/-stable(?:\.\d+)?$/i.test(e):/^\d+\.\d+\.\d+$/.test(e)}).sort(([e],[t])=>T(e,t)).reverse()}const H={name:`sapi-pro`,resolver:`sapi-pro`,match:e=>e.specifier===`stable`||e.specifier===`beta`||/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(e.specifier),async resolve(e){let t=await e.npm.metadata(R),n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Set;for(let[i,a]of ve(t.versions??{},e.specifier))if(await _e(e,V(a),n,r))return/^0\.3\./.test(i)&&e.logger?.warn(`sapi-pro@${i} uses legacy metadata; compatibility is best-effort only.`),{packageVersion:i,manifestVersion:null};throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot find a compatible ${R}@${e.specifier} for target ${e.target}.${r.size>0?` Missing explicit dependencies: ${[...r].join(`, `)}.`:``}`,{details:{package:R,specifier:e.specifier,target:e.target},suggestions:[`Explicitly declare the @minecraft packages required by sapi-pro.`,`Use a compatible target or specify an exact sapi-pro version.`]})}};function U(){return{name:`sapi-pro`,apiVersion:1,description:`Resolve sapi-pro versions compatible with BePack Script API dependencies.`,configResolved:({config:e})=>{let t=e.packs.bp?.dependencies??{},n=t[R];if(!n)return;let r=z.filter(e=>!t[e]);if(r.length>0)throw Error(`sapi-pro requires explicit dependencies: ${r.join(`, `)}.`);if(n===`stable`||n===`beta`)for(let e of z){let r=t[e];if(he(r)!==n)throw Error(`sapi-pro ${n} requires ${e} to use ${n}, received ${r}.`)}},install:{dependencyCatalog:{[R]:{resolver:`sapi-pro`,manifest:!1}},dependencyResolvers:[H]}}}const W={"sapi-pro":U};function G(e){return e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{}}function K(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e==`function`?`function`:typeof e==`object`?`object`:typeof e==`string`?JSON.stringify(e):String(e)}function ye(e,t){let n={};(e.packs?.bp||t.packs?.bp)&&(n.bp={...e.packs?.bp??{},...G(t.packs?.bp)}),(e.packs?.rp||t.packs?.rp)&&(n.rp={...e.packs?.rp??{},...G(t.packs?.rp)});let r={...e.copy?.targets??{},...G(t.copy?.targets)},i=G(t);return{...e,...i,...t.plugins!==void 0||e.plugins!==void 0?{plugins:t.plugins??e.plugins}:{},packs:n,install:{...e.install,...G(t.install)},build:{...e.build,...G(t.build)},dev:{...e.dev,...G(t.dev)},copy:{...e.copy,...G(t.copy),targets:r},pack:{...e.pack,...G(t.pack)},hooks:{...e.hooks,...G(t.hooks)}}}function be(e){let t=(e??[]).map(e=>{if(typeof e!=`string`)return e;let t=W[e];if(!t)throw new u(`CONFIG_INVALID`,`Unknown built-in plugin: ${e}.`);return t()}),n=/* @__PURE__ */ new Set;for(let e of t){if(!e?.name||e.name.trim()===``)throw new u(`CONFIG_INVALID`,`Every plugin must have a non-empty name.`);if(n.has(e.name))throw new u(`CONFIG_INVALID`,`Plugin name is duplicated: ${e.name}.`);if(e.apiVersion!==void 0&&e.apiVersion!==1)throw new u(`CONFIG_INVALID`,`Plugin ${e.name} requires unsupported BePack plugin API version ${e.apiVersion}.`);if(e.priority!==void 0&&!Number.isFinite(e.priority))throw new u(`CONFIG_INVALID`,`Plugin ${e.name} priority must be a finite number.`);n.add(e.name)}return t.sort((e,t)=>(t.priority??0)-(e.priority??0))}function xe(e,t){let n=/* @__PURE__ */ new Set;for(let r of[...e.map(e=>e.hooks),t])for(let e of Object.keys(r??{}))n.add(e);return Object.fromEntries([...n].map(n=>{let r=[...e.map(e=>({plugin:e,hook:e.hooks?.[n]})).filter(e=>e.hook!==void 0),...t?.[n]?[{hook:t[n]}]:[]];return[n,async(...e)=>{let t;for(let i of r)try{t=await i.hook(...e)}catch(e){let t=`plugin`in i?i.plugin:void 0;throw t?new u(`PLUGIN_FAILED`,`Plugin ${t.name} ${String(n)} hook failed: ${e instanceof Error?e.message:String(e)}`):e}return t}]}))}function Se(e,t){let n={},r=/* @__PURE__ */ new Map,i=[];for(let t of e)for(let[e,a]of Object.entries(t.install?.dependencyCatalog??{})){let o=r.get(e);if(o){i.push(`dependency catalog ${e}: plugin ${o} takes precedence over plugin ${t.name}`);continue}n[e]=a,r.set(e,t.name)}for(let[e,a]of Object.entries(t)){let t=r.get(e);t&&i.push(`dependency catalog ${e}: project config overrides plugin ${t}`),n[e]=a}return{catalog:n,diagnostics:i}}function Ce(e,n,r){let i=s,o=e?.scriptOutputDir??i.scriptOutputDir,c=t.resolve(r,e?.entry??i.entry),l=b(n,o,t.dirname(c));return{entry:e?.entry??i.entry,define:te(e?.define),tsconfig:e?.tsconfig??i.tsconfig,typecheck:e?.typecheck??i.typecheck,preserveModules:e?.preserveModules??i.preserveModules,external:e?.external??i.external,useNpx:e?.useNpx??i.useNpx,minify:e?.minify??i.minify,cache:p(e?.cache),scriptOutputDir:l,...e?.rolldown===void 0?{}:{rolldown:d(e.rolldown)},...e?.rolldownConfig===void 0?{}:{rolldownConfig:f(e.rolldownConfig)}};function d(e){if(typeof e==`function`||e&&typeof e==`object`&&!Array.isArray(e))return e;throw new u(`CONFIG_INVALID`,`packs.bp.compile.rolldown must be a rolldown options object or a function (options, context) => options, got: ${K(e)}.`)}function f(e){if(typeof e!=`string`||e.trim()===``)throw new u(`CONFIG_INVALID`,`packs.bp.compile.rolldownConfig must be a non-empty path string, got: ${K(e)}.`);return e}function p(e){let t=a;return{dev:e?.dev??t.dev,build:e?.build??t.build,file:e?.file??t.file}}}function q(e){if(e===void 0||e===!1)return;let t=e===!0?{}:e;if(typeof t!=`object`||!t||Array.isArray(t))throw new u(`CONFIG_INVALID`,`pack.optimize must be a boolean or an options object, got: ${K(e)}.`);let n=t.packOptimizationVersion;if(n!==void 0&&(typeof n!=`string`||n.trim()===``))throw new u(`CONFIG_INVALID`,`pack.optimize.packOptimizationVersion must be a non-empty string, got: ${K(n)}.`);return{keepLooseFiles:t.keepLooseFiles??o.keepLooseFiles,keepLoose:t.keepLoose!==!1&&(t.keepLoose??[]).map(we),exclude:(t.exclude??[]).map(we),minifyJson:t.minifyJson??o.minifyJson,packOptimizationVersion:n??o.packOptimizationVersion,allowUnsupportedTarget:t.allowUnsupportedTarget??o.allowUnsupportedTarget}}function we(e){let n=String(e).replace(/\\/g,`/`).replace(/^\.\//,``).replace(/\/+$/,``);if(!n||n.includes(`/`)||n.includes(`..`)||t.posix.isAbsolute(n))throw new u(`CONFIG_INVALID`,`pack.optimize.exclude entries must be top-level folder names (no path separators, no ".."), got: ${K(e)}.`);return n}function Te(e){let t=e?.merge??`preserve`;if(t!==`preserve`&&t!==`clean`)throw new u(`CONFIG_INVALID`,`manifest.merge must be "preserve" or "clean", got: ${String(e?.merge)}.`);let n=e?.minEngineVersion;if(n!==void 0&&!/^\d+\.\d+\.\d+$/.test(n))throw new u(`CONFIG_INVALID`,`manifest.minEngineVersion must be a SemVer string like "1.21.0", got: ${n}.`);return{merge:t,...n===void 0?{}:{minEngineVersion:n},extraDependencies:e?.extraDependencies??[],extraModules:e?.extraModules??[],extraHeader:e?.extraHeader??{}}}function Ee(e,n={},r=process.cwd()){let a=ye(e,n),o=be(a.plugins),s=a.target??i.target;if(s===`stable`||s===`beta`)throw new u(`TARGET_INVALID`,`target must be a Minecraft game version or latest, not a Script API channel.`,{details:{target:s}});let c=!!a.packs?.bp,l=!!a.packs?.rp;if(!c&&!l)throw new u(`CONFIG_INVALID`,`At least one pack (packs.bp or packs.rp) is required.`);if(!a.name||a.name.trim()===``)throw new u(`CONFIG_INVALID`,`name is required.`);let f=a.name,p=a.version??i.version,m=a.description,h=a.packs,g=h.bp?.compile,_=h.bp,v=h.rp;if(_){if(!_.uuid)throw new u(`CONFIG_INVALID`,`packs.bp.uuid is required.`);if(_.compile&&!_.moduleUuid)throw new u(`CONFIG_INVALID`,`packs.bp.moduleUuid is required when packs.bp.compile is configured.`);if(_.root===void 0)throw new u(`CONFIG_INVALID`,`packs.bp.root is required. Set the behavior pack directory in bepack.config.ts.`);if(g?.define){let e=Object.keys(a.replace?.values??{}),t=Object.keys(g.define),n=e.filter(e=>t.includes(e));if(n.length>0)throw new u(`CONFIG_INVALID`,`Config conflict: ${n.map(e=>`"${e}"`).join(`, `)} is configured in both replace.values and packs.bp.compile.define. Use only one mechanism per key.`,{details:{overlap:n}})}}let y=t.resolve(r,a.root??`.`),b=_?t.resolve(y,_.root):void 0;if(v){if(!v.uuid||!v.moduleUuid)throw new u(`CONFIG_INVALID`,`packs.rp.uuid and packs.rp.moduleUuid are required.`);if(v.root===void 0)throw new u(`CONFIG_INVALID`,`packs.rp.root is required when packs.rp is configured.`);if(v.packScope!==void 0&&!d.includes(v.packScope))throw new u(`CONFIG_INVALID`,`packs.rp.packScope must be one of ${d.map(e=>`"${e}"`).join(`, `)}.`,{details:{packScope:v.packScope}})}let x=_?.description??m,S=v?.description??m,{catalog:te,diagnostics:C}=Se(o,a.install?.dependencyCatalog??{}),w=o.flatMap(e=>e.install?.dependencyResolvers??[]),T=q(a.pack?.optimize),E=q(a.copy?.optimize);return{root:a.root??i.root,configured:{root:a.root!==void 0,packOutDir:a.pack?.outDir!==void 0},name:f,version:p,...m===void 0?{}:{description:m},replace:ee(a.replace),target:s,plugins:o,...C.length>0?{pluginDiagnostics:C}:{},...a.manifestFormat===void 0?{}:{manifestFormat:a.manifestFormat},packs:{..._?{bp:{root:_.root,uuid:_.uuid,..._.moduleUuid===void 0?{}:{moduleUuid:_.moduleUuid},name:_.name??f,...x===void 0?{}:{description:x},...g&&b?{compile:Ce(g,b,y)}:{},manifest:Te(_.manifest),dependencies:_.dependencies??{},include:_.include??[]}}:{},...v?{rp:{root:v.root,uuid:v.uuid,moduleUuid:v.moduleUuid,name:v.name??f,...S===void 0?{}:{description:S},manifest:Te(v.manifest),...v.pbr===void 0?{}:{pbr:v.pbr},...v.packScope===void 0?{}:{packScope:v.packScope},include:v.include??[]}}:{}},install:{registry:a.install?.registry??i.install.registry,saveTo:a.install?.saveTo??i.install.saveTo,packageManager:a.install?.packageManager??i.install.packageManager,runPackageManager:a.install?.runPackageManager??i.install.runPackageManager,updatePackageJson:a.install?.updatePackageJson??i.install.updatePackageJson,updateManifest:a.install?.updateManifest??i.install.updateManifest,dependencyCatalog:te,dependencyResolvers:[...w,...a.install?.dependencyResolvers??[]]},build:{copy:a.build?.copy??i.build.copy,timing:a.build?.timing??i.build.timing},dev:{copy:a.dev?.copy??i.dev.copy,...a.dev?.watch?{watch:a.dev.watch}:{}},copy:{defaultTarget:a.copy?.defaultTarget??i.copy.defaultTarget,...a.copy?.name?{name:a.copy.name}:{},...a.copy?.include?{include:a.copy.include}:{},targets:a.copy?.targets??{},...E?{optimize:E}:{}},pack:{name:a.pack?.name??i.pack.name,outDir:a.pack?.outDir??i.pack.outDir,...T?{optimize:T}:{}},hooks:xe(o,a.hooks)}}async function De(e,r){if(r){let t=p(e,r);return await n.access(t).catch(()=>{throw new u(`CONFIG_NOT_FOUND`,`Config not found: ${r}`,{details:{configPath:r}})}),t}for(let r of l){let i=t.join(e,r);try{return await n.access(i),i}catch{}}throw new u(`CONFIG_NOT_FOUND`,`No bepack.config.ts, bepack.config.mjs, or bepack.config.js found.`,{details:{cwd:e}})}async function Oe(t){try{if(t.endsWith(`.ts`))try{return await import(`${e(t).href}?t=${Date.now()}`)}catch{let e=ke(await n.readFile(t,`utf8`));return await import(`data:text/javascript;base64,${Buffer.from(e,`utf8`).toString(`base64`)}`)}return await import(`${e(t).href}?t=${Date.now()}`)}catch(e){throw new u(`CONFIG_INVALID`,`Failed to load config: ${e instanceof Error?e.message:String(e)}`,{details:{file:t},suggestions:[`Use bepack.config.mjs/js for complex config logic.`,`Keep bepack.config.ts free of TypeScript-only runtime syntax.`]})}}function ke(e){return e.replace(/^\s*import\s+type\s+[^;]+;\s*$/gm,``).replace(/\s+satisfies\s+[A-Za-z_$][\w$<>,\s.[\]|&{}]*/g,``).replace(/\((\s*[A-Za-z_$][\w$]*)\s*:\s*[^)=]+?\)\s*=>/g,`($1) =>`)}async function Ae(e,t){for(let n of e.plugins??[])if(n.configResolved)try{await n.configResolved({cwd:t,config:e})}catch(e){throw new u(`PLUGIN_FAILED`,`Plugin ${n.name} configResolved hook failed: ${e instanceof Error?e.message:String(e)}`)}}async function je(e){let n=t.resolve(e.cwd),r=await De(n,e.configPath),i=await Oe(r);if(i.default===void 0)throw new u(`CONFIG_INVALID`,`Config must use default export.`,{details:{file:r}});let a=Ee(i.default,e.overrides,n);return await Ae(a,n),{config:a,path:r,cwd:n}}function J(e){return{...P,...e.install.dependencyCatalog}}function Me(e,t){let n=e[t];if(!n)throw new u(`UNSUPPORTED_DEPENDENCY`,`${t} is not a managed dependency. Add it to install.dependencyCatalog or remove it from packs.bp.dependencies.`,{details:{package:t}});return n}function Ne(e){return`${JSON.stringify(e,null,4)}\n`}async function Pe(e){try{return await n.access(e),!0}catch{return!1}}async function Fe(e){await n.mkdir(e,{recursive:!0})}async function Ie(e,r){await Fe(t.dirname(e)),await n.writeFile(e,Ne(r),`utf8`)}function Le(e){return Array.isArray(e)&&e.length===3&&typeof e[0]==`number`&&typeof e[1]==`number`&&typeof e[2]==`number`}function Re(e){return typeof e==`string`&&/^\d+\.\d+\.\d+$/.test(e)}function Y(e){return e===3?Re:Le}function X(e,t){return e===3?`${t} must be SemVer string like "x.y.z" (format 3)`:`${t} must be [number, number, number] (format 2)`}const ze=[e=>e.format_version===void 0?`format_version is required`:null,e=>e.header?null:`header is required`,e=>e.header&&!e.header.name?`header.name is required`:null,e=>e.header&&!e.header.uuid?`header.uuid is required`:null,e=>e.header?Y(e.format_version)(e.header.version)?null:X(e.format_version,`header.version`):null,e=>e.header?Y(e.format_version)(e.header.min_engine_version)?null:X(e.format_version,`header.min_engine_version`):null,e=>e.modules!==void 0&&!Array.isArray(e.modules)?`modules must be an array`:null,(e,t)=>{if(!Array.isArray(e.modules))return null;let n=e.modules.some(e=>e?.type===`resources`),r=[];return t===`rp`&&!n&&r.push(`RP manifest must have a resources module`),r.length>0?r:null},e=>{if(!Array.isArray(e.modules))return null;let t=Y(e.format_version),n=[];for(let r=0;r<e.modules.length;r++){let i=e.modules[r];i&&i.version!==void 0&&i.version!==null&&!t(i.version)&&n.push(`modules[${r}] (uuid: ${i.uuid??`unknown`}): ${X(e.format_version,`version`)}`)}return n.length>0?n:null},e=>e.dependencies!==void 0&&!Array.isArray(e.dependencies)?`dependencies must be an array`:null,e=>{if(!Array.isArray(e.dependencies))return null;let t=Y(e.format_version),n=[];for(let r=0;r<e.dependencies.length;r++){let i=e.dependencies[r];if(!i){n.push(`dependencies[${r}] is invalid`);continue}`uuid`in i&&i.uuid&&!t(i.version)&&n.push(`dependencies[${r}] (uuid: ${i.uuid}): ${X(e.format_version,`version`)}`),`module_name`in i&&i.module_name&&typeof i.version!=`string`&&n.push(`dependencies[${r}] (module_name: ${i.module_name}): version must be a string`)}return n.length>0?n:null},e=>e.capabilities===void 0?null:Array.isArray(e.capabilities)?e.capabilities.every(e=>typeof e==`string`)?null:`capabilities must be an array of strings`:`capabilities must be an array`,e=>e.metadata!==void 0&&(typeof e.metadata!=`object`||e.metadata===null)?`metadata must be an object`:null];function Be(e,t){let n=[];for(let r of ze){let i=r(e,t);i!==null&&(Array.isArray(i)?n.push(...i):n.push(i))}if(n.length>0)throw new u(`MANIFEST_INVALID`,`Manifest validation failed: ${n.join(`; `)}`)}function Z(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:{...e}}function Q(e){return Array.isArray(e)?e:[]}var $=class{static async read(e){if(!await Pe(e))return;let t=await n.readFile(e,`utf8`);try{return Z(JSON.parse(t))}catch{throw new u(`MANIFEST_INVALID`,`Invalid JSON in manifest: ${e}`)}}static async write(e,t,n){Be(t,n),await Ie(e,t)}};const Ve=[1,21,0],He=[1,0,0];var Ue=class{config;version;versionStr;depManager;constructor(e,t){this.config=e,this.version=C(e.version),this.versionStr=e.version,this.depManager=t}buildBp(e){let t=this.requireBp(),n=Z(e);this.depManager.validateBpDependencies();let r=this.getWriteFormatVersion(n);return t.manifest.merge===`clean`?this.buildCleanBp(t,r):this.buildPreserveBp(n,t,r)}buildRp(e){let t=this.requireRp(),n=Z(e),r=this.getWriteFormatVersion(n),i=t.manifest.merge===`clean`?this.buildCleanRp(t,r):this.buildPreserveRp(n,t,r);return this.applyPbrCapability(i,t),i}buildPreserveBp(e,t,n){return{...e,format_version:n,header:this.buildBpHeader(e,t,n),...t.moduleUuid?{modules:this.replaceManagedBpModules(e.modules,t,n)}:e.modules?{modules:e.modules}:{},dependencies:this.depManager.replaceBpDependencies(e.dependencies,this.config.packs.rp?.uuid,n)}}buildPreserveRp(e,t,n){return{...e,format_version:n,header:this.buildRpHeader(e,t,n),modules:this.replaceManagedRpModules(e.modules,t,n),dependencies:this.depManager.replaceRpDependencies(e.dependencies,this.config.packs.bp?.uuid,n)}}buildCleanBp(e,t){return{format_version:t,header:this.buildBpHeaderClean(e,t),...e.moduleUuid?{modules:this.buildCleanBpModules(e,t)}:{},dependencies:this.depManager.buildBpDependenciesClean(t,this.config.packs.rp?.uuid,e.manifest.extraDependencies)}}buildCleanRp(e,t){return{format_version:t,header:this.buildRpHeaderClean(e,t),modules:this.buildCleanRpModules(e,t),dependencies:this.depManager.buildRpDependenciesClean(t,this.config.packs.bp?.uuid,e.manifest.extraDependencies)}}buildBpHeaderClean(e,t){return{...e.manifest.extraHeader,name:e.name,...e.description===void 0?{}:{description:e.description},uuid:e.uuid,version:this.getVersionFor(t),min_engine_version:this.cleanMinEngineVersion(e.manifest.minEngineVersion,t)}}buildRpHeaderClean(e,t){return{...e.manifest.extraHeader,name:e.name,...e.description===void 0?{}:{description:e.description},uuid:e.uuid,...e.packScope===void 0?{}:{pack_scope:e.packScope},version:this.getVersionFor(t),min_engine_version:this.cleanMinEngineVersion(e.manifest.minEngineVersion,t)}}buildCleanBpModules(e,t){return[...e.moduleUuid?[this.createScriptModule(e,t)]:[],...e.manifest.extraModules]}buildCleanRpModules(e,t){return[this.createResourcesModule(e,t),...e.manifest.extraModules]}buildBpHeader(e,t,n){return{...e.header??{},name:t.name,...t.description===void 0?{}:{description:t.description},uuid:t.uuid,version:this.getVersionFor(n),min_engine_version:this.normalizeMinEngineVersion(e.header?.min_engine_version,n)}}buildRpHeader(e,t,n){return{...e.header??{},name:t.name,...t.description===void 0?{}:{description:t.description},uuid:t.uuid,...t.packScope===void 0?{}:{pack_scope:t.packScope},version:this.getVersionFor(n),min_engine_version:this.normalizeMinEngineVersion(e.header?.min_engine_version,n)}}getScriptEntry(){let e=this.config.packs.bp?.compile;return e?`${e.scriptOutputDir}/${t.basename(e.entry,t.extname(e.entry))}.js`:`scripts/main.js`}isManagedBpModule(e,t){if(e.type!==`script`||e.language!==`javascript`)return!1;let n=this.getScriptEntry();return e.uuid===t.moduleUuid||e.entry===n}isManagedRpModule(e,t){return e.type===`resources`&&e.uuid===t.moduleUuid}createScriptModule(e,t){return{type:`script`,language:`javascript`,uuid:e.moduleUuid,version:this.getModuleVersion(t),entry:this.getScriptEntry()}}createResourcesModule(e,t){return{type:`resources`,uuid:e.moduleUuid,version:this.getModuleVersion(t)}}replaceManagedBpModules(e,t,n){return[...Q(e).filter(e=>!this.isManagedBpModule(e,t)),this.createScriptModule(t,n)]}replaceManagedRpModules(e,t,n){return[...Q(e).filter(e=>!this.isManagedRpModule(e,t)),this.createResourcesModule(t,n)]}applyPbrCapability(e,t){if(t.pbr===!0){let t=Q(e.capabilities);e.capabilities=t.includes(`pbr`)?t:[...t,`pbr`]}else if(t.pbr===!1){let t=Q(e.capabilities).filter(e=>e!==`pbr`);t.length>0?e.capabilities=t:delete e.capabilities}}getVersionFor(e){return e===3?this.versionStr:this.version}getModuleVersion(e){return e===3?`1.0.0`:He}getWriteFormatVersion(e){return this.config.manifestFormat===void 0?e.format_version??2:this.config.manifestFormat}normalizeMinEngineVersion(e,t){if(e==null)return this.defaultMinEngineVersion(t);if(Array.isArray(e))return t===3?e.join(`.`):e;if(typeof e==`string`){if(t===2){let t=this.stringToVersionTuple(e);if(t)return t}return e}return this.defaultMinEngineVersion(t)}cleanMinEngineVersion(e,t){return e===void 0?this.defaultMinEngineVersion(t):t===3?e:this.stringToVersionTuple(e)??this.defaultMinEngineVersion(t)}defaultMinEngineVersion(e){return e===3?`1.21.0`:Ve}stringToVersionTuple(e){let t=e.split(`.`).map(Number);if(t.length===3&&t.every(e=>!Number.isNaN(e)))return t}requireBp(){if(!this.config.packs.bp)throw new u(`CONFIG_INVALID`,`packs.bp is required to build the BP manifest.`);return this.config.packs.bp}requireRp(){if(!this.config.packs.rp)throw new u(`CONFIG_INVALID`,`packs.rp is required to build the RP manifest.`);return this.config.packs.rp}},We=class e{config;catalog;resolvedDeps;version;versionStr;constructor(e,t,n){this.config=e,this.catalog=t,this.resolvedDeps=n??{},this.version=C(e.version),this.versionStr=e.version}static isAllowedSpecifier(e){return e===`stable`||e===`beta`||e===`preview`||/^\d+\.\d+\.\d+(?:[-.][0-9A-Za-z.-]+)?$/.test(e)}static resolveVersion(e){let{specifier:t,target:n,resolvedVersion:r}=e;if(t===`stable`){if(r)return r;throw new u(`DEPENDENCY_REQUIRES_INSTALL`,"Run `bepack install` to resolve stable manifest dependencies.",{details:{specifier:t,target:n}})}if(t===`beta`){if(E(n))return`beta`;if(r)return r;throw new u(`DEPENDENCY_REQUIRES_INSTALL`,`Run \`bepack install\` to resolve manifest dependencies for target ${n}.`,{details:{target:n}})}if(t===`preview`){if(r)return r;throw new u(`DEPENDENCY_REQUIRES_INSTALL`,`Run \`bepack install\` to resolve preview manifest dependencies for target ${n}.`,{details:{specifier:t,target:n}})}return t}validateBpDependencies(){if(this.config.packs.bp)for(let[t,n]of Object.entries(this.config.packs.bp.dependencies)){if(!this.catalog[t]){let e=Object.keys(this.catalog),n=e.length>0?[`Managed packages: ${e.join(`, `)}.`,`Add a missing package to install.dependencyCatalog, or remove it from packs.bp.dependencies.`]:[`No managed packages are available. Extend install.dependencyCatalog to add one.`];throw new u(`UNSUPPORTED_DEPENDENCY`,`${t} is not a managed dependency.`,{details:{package:t},suggestions:n})}if(!e.isAllowedSpecifier(n))throw new u(`DEPENDENCY_VERSION_INVALID`,`${t} dependency version is invalid: ${n}`,{details:{package:t,specifier:n}})}}isManagedBpDependency(e){return!!(`module_name`in e&&typeof e.module_name==`string`&&this.catalog[e.module_name]?.manifest||`uuid`in e&&typeof e.uuid==`string`&&this.config.packs.rp?.uuid===e.uuid)}isManagedRpDependency(e,t){return t!==void 0&&`uuid`in e&&typeof e.uuid==`string`&&e.uuid===t}buildManagedDependencies(){if(!this.config.packs.bp)return[];let t=[];for(let[n,r]of Object.entries(this.config.packs.bp.dependencies))this.catalog[n]?.manifest&&t.push({module_name:n,version:e.resolveVersion({specifier:r,target:this.config.target,resolvedVersion:this.resolvedDeps[n]})});return t}getFormatAwareVersion(e){return(e??this.config.manifestFormat??2)===3?this.versionStr:this.version}replaceBpDependencies(e,t,n){let r=Q(e).filter(e=>!this.isManagedBpDependency(e)),i=this.buildManagedDependencies();return t&&i.push({uuid:t,version:this.getFormatAwareVersion(n)}),[...r,...i]}replaceRpDependencies(e,t,n){let r=Q(e).filter(e=>!this.isManagedRpDependency(e,t));return t?[...r,{uuid:t,version:this.getFormatAwareVersion(n)}]:r}buildBpDependenciesClean(e,t,n){let r=this.buildManagedDependencies();return t&&r.push({uuid:t,version:this.getFormatAwareVersion(e)}),[...r,...n]}buildRpDependenciesClean(e,t,n){let r=[];return t&&r.push({uuid:t,version:this.getFormatAwareVersion(e)}),[...r,...n]}};async function Ge(e){let n=J(e.config),r=e.config.packs.bp?x(e.cwd,e.config):void 0,i=r?await $.read(r):void 0,a=Ke(i,n),o=new We(e.config,n,e.resolvedDeps?{...a,...e.resolvedDeps}:a),s=new Ue(e.config,o),c={};if(e.config.packs.bp){let n=i!==void 0;e.config.manifestFormat===2&&i?.format_version===3&&(e.logger?.warn??console.warn)(`Warning: config manifestFormat is 2, but existing manifest uses format_version 3. format_version 2 does not support string versions; any string versions in the existing manifest will be preserved as-is.`);let a=s.buildBp(i);e.dryRun||await $.write(r,a,`bp`),c.bpManifest={path:m(t.relative(e.cwd,r)),updated:!0,existed:n}}if(e.config.packs.rp){let n=S(e.cwd,e.config),r=await $.read(n),i=r!==void 0,a=s.buildRp(r);e.dryRun||await $.write(n,a,`rp`),c.rpManifest={path:m(t.relative(e.cwd,n)),updated:!0,existed:i}}return c}function Ke(e,t){let n={};for(let r of e?.dependencies??[])`module_name`in r&&typeof r.module_name==`string`&&typeof r.version==`string`&&t[r.module_name]?.manifest&&r.version!==`stable`&&(n[r.module_name]=r.version);return n}function qe(e,t){e?.install?e.install(t):e?.info(`[Install] ${t}`)}var Je=class{registry;logger;cache=/* @__PURE__ */ new Map;constructor(e,t){this.registry=e,this.logger=t}async metadata(e){let t=this.packageUrl(e),n=this.cache.get(t);if(n)return this.logger?.verbose(`Using cached metadata for ${e}`),n;qe(this.logger,`fetching ${e} metadata from ${this.registry}`);let r=await fetch(t);if(!r.ok)throw new u(`SAPI_VERSION_NOT_FOUND`,`Cannot fetch ${e} versions from registry.`,{details:{package:e,registry:this.registry,status:r.status}});let i=await r.json();return this.cache.set(t,i),this.logger?.verbose(`Fetched ${e} metadata (${Object.keys(i.versions??{}).length} versions)`),i}versions(e){return Object.keys(e.versions??{})}async versionsOf(e){return this.versions(await this.metadata(e))}distTag(e,t){let n=e[`dist-tags`]?.[t];return n&&e.versions?.[n]?n:void 0}packageUrl(e){return`${this.registry.replace(/\/$/,``)}/${encodeURIComponent(e).replace(/^%40/,`@`)}`}};function Ye(e){return t=>{e?.install?e.install(t):e?.info(`[Install] ${t}`)}}var Xe=class{config;logger;npm;catalog;pkgResolver;log;constructor(e,t){this.config=e,this.logger=t,this.npm=new Je(e.install.registry,t),this.catalog=J(e),this.pkgResolver=new O(this.npm,t),this.log=Ye(t)}async resolveAll(){let e={},t=this.config.packs.bp?.dependencies;if(!t||Object.keys(t).length===0)return this.log(`no BP dependencies to resolve`),e;this.log(`resolving dependencies for target ${this.config.target}`);for(let[n,r]of Object.entries(t)){let t=Me(this.catalog,n),i=await this.resolveOne(n,r,t),a=t.manifest??!1;e[n]={specifier:r,packageVersion:i.packageVersion,manifestVersion:a?i.manifestVersion??i.packageVersion:null,manifest:a,external:a,resolver:typeof t.resolver==`string`?t.resolver:t.resolver.name},this.log(`${n}: ${r} -> package ${e[n].packageVersion}, manifest ${e[n].manifestVersion}`)}return this.logger?.verbose(`Dependency resolution complete`),e}async resolveOne(e,t,n){let r={packageName:e,specifier:t,target:this.config.target,entry:n,config:this.config};await this.runDependencyHooks(`beforeResolveDependency`,r);let i=await L.fromConfig(this.config.install.dependencyResolvers,this.config.plugins??[]).resolve({packageName:e,specifier:t,target:this.config.target,entry:n,config:this.config,npm:this.npm,...this.logger?{logger:this.logger}:{}});return await this.runDependencyHooks(`afterResolveDependency`,{...r,result:i}),i}async runDependencyHooks(e,t){for(let n of this.config.plugins??[]){let r=n.install?.hooks?.[e];if(r)try{await r(t)}catch(t){throw new u(`PLUGIN_FAILED`,`Plugin ${n.name} ${e} hook failed: ${t instanceof Error?t.message:String(t)}`)}}}};async function Ze(e,t){return new Xe(e,t).resolveAll()}export{P as BUILTIN_DEPENDENCY_CATALOG,I as BUILTIN_DEPENDENCY_RESOLVERS,W as BUILTIN_PLUGINS,u as BePackError,L as DependencyResolverRegistry,Xe as DependencyService,O as MinecraftPackageResolver,Je as NpmRegistryClient,J as createDependencyCatalog,c as defineConfig,F as exactVersionResolver,f as getConfiguredPacks,je as loadConfig,M as minecraftScriptApiBpResolver,j as minecraftScriptApiResolver,N as minecraftVanillaDataResolver,ae as packageVersionForSpecifier,Ge as patchManifest,Ze as resolveDependencies,U as sapiPro,D as satisfiesSemver,ie as satisfiesSemverRange};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bepack/cli",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.2",
|
|
4
4
|
"description": "A modern pack builder for Minecraft Bedrock Edition.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"minecraft",
|
|
@@ -74,6 +74,6 @@
|
|
|
74
74
|
"vitest": "^4.1.10"
|
|
75
75
|
},
|
|
76
76
|
"allowScripts": {
|
|
77
|
-
"esbuild@0.28.
|
|
77
|
+
"esbuild@0.28.2": true
|
|
78
78
|
}
|
|
79
79
|
}
|