@bepack/cli 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,618 @@
1
+ //#region src/utils/npmRegistry.d.ts
2
+ declare class NpmRegistryClient {
3
+ private readonly registry;
4
+ private readonly logger?;
5
+ private readonly cache;
6
+ constructor(registry: string, logger?: LoggerLike | undefined);
7
+ metadata(packageName: string): Promise<NpmPackageMetadata>;
8
+ versions(metadata: NpmPackageMetadata): string[];
9
+ versionsOf(packageName: string): Promise<string[]>;
10
+ distTag(metadata: NpmPackageMetadata, tag: string): string | undefined;
11
+ private packageUrl;
12
+ }
13
+ //#endregion
14
+ //#region src/config/configTypes.d.ts
15
+ type CommandName = "init" | "install" | "manifest" | "build" | "dev" | "copy" | "pack" | "config";
16
+ /**
17
+ * Script API dependency selector.
18
+ *
19
+ * - `stable`: resolve a concrete stable npm version from registry.
20
+ * - `beta`: resolve a concrete beta npm version from registry.
21
+ * - exact version: use the version as-is.
22
+ */
23
+ type DependencySpecifier = "stable" | "beta" | string;
24
+ /** Where BePack writes managed npm dependencies in package.json. */
25
+ type SaveTo = "dependencies" | "devDependencies";
26
+ /** Package manager used by `bepack install` after package.json is patched. */
27
+ type PackageManager = "auto" | "npm" | "pnpm" | "yarn" | "bun";
28
+ /** Copy behavior used by build/dev. `true` means copy.defaultTarget. */
29
+ type CopySetting = false | true | string;
30
+ /** Rolldown external dependency matcher. */
31
+ type BuildExternal = string | RegExp;
32
+ /** A replacement value, resolved against the normalized BePack config. */
33
+ type ReplaceValue = string | ((config: ResolvedConfig) => string);
34
+ type ReplaceBuiltins = {
35
+ VERSION?: boolean;
36
+ NAME?: boolean;
37
+ UUID?: boolean;
38
+ DESCRIPTION?: boolean;
39
+ };
40
+ type ReplaceOptions = {
41
+ /** Replacement tokens and their literal or config-aware values. */
42
+ values?: Record<string, ReplaceValue>;
43
+ /** Enable replacement of BePack's built-in tokens. Disabled by default. */
44
+ builtins?: ReplaceBuiltins;
45
+ };
46
+ type LoggerLike = {
47
+ info(message: string): void;
48
+ warn(message: string): void;
49
+ error(message: string): void;
50
+ verbose(message: string): void;
51
+ clear(): void;
52
+ install?(message: string): void;
53
+ };
54
+ /** Manifest fields for one concrete version in an npm package document. */
55
+ type NpmPackageVersionMetadata = {
56
+ dependencies?: Record<string, string>;
57
+ peerDependencies?: Record<string, string>;
58
+ };
59
+ /** npm registry package document fields exposed to dependency resolver plugins. */
60
+ type NpmPackageMetadata = {
61
+ "dist-tags"?: Record<string, string>;
62
+ versions?: Record<string, NpmPackageVersionMetadata>;
63
+ };
64
+ type DependencyCatalogEntry = {
65
+ /** Resolver used for this dependency. Can be a resolver name string or a direct DependencyResolverRule reference. */
66
+ resolver: string | DependencyResolverRule;
67
+ /** Whether to write to bp manifest.json dependencies. When true, the dependency is also externalized during build. Defaults to false. */
68
+ manifest?: boolean;
69
+ };
70
+ type DependencyResolverResult = {
71
+ /** Concrete npm version written to package.json. */
72
+ packageVersion: string;
73
+ /** Version written to manifest.json. Use null for package-only dependencies. */
74
+ manifestVersion?: string | null;
75
+ };
76
+ type DependencyResolveHookContext = {
77
+ packageName: string;
78
+ specifier: string;
79
+ target: string;
80
+ entry: DependencyCatalogEntry;
81
+ config: ResolvedConfig;
82
+ };
83
+ type DependencyResolvedHookContext = DependencyResolveHookContext & {
84
+ result: DependencyResolverResult;
85
+ };
86
+ type DependencyResolverContext = {
87
+ packageName: string;
88
+ specifier: string;
89
+ target: string;
90
+ entry: DependencyCatalogEntry;
91
+ config: ResolvedConfig;
92
+ npm: NpmRegistryClient;
93
+ logger?: LoggerLike;
94
+ };
95
+ type DependencyResolverRule = {
96
+ /** Human-readable resolver name used for logs/debugging. */
97
+ name: string;
98
+ /** Optional resolver group. Package catalog entries can select this by name. */
99
+ resolver?: string;
100
+ /** Whether this rule can resolve the dependency. */
101
+ match(ctx: DependencyResolverContext): boolean;
102
+ /** Resolve package.json and optional manifest versions. */
103
+ resolve(ctx: DependencyResolverContext): DependencyResolverResult | Promise<DependencyResolverResult>;
104
+ };
105
+ type HookContext = {
106
+ command: CommandName;
107
+ cwd: string;
108
+ mode?: string;
109
+ target: string;
110
+ config: ResolvedConfig;
111
+ /** Convenience resolved paths. Only includes paths for packs that are configured. */
112
+ paths: {
113
+ dist: string;
114
+ /** BP root directory. Only present when packs.bp is configured. */
115
+ bpRoot?: string;
116
+ /** RP root directory. Only present when packs.rp is configured. */
117
+ rpRoot?: string;
118
+ /** BP manifest path. Only present when packs.bp is configured. */
119
+ bpManifest?: string;
120
+ /** RP manifest path. Only present when packs.rp is configured. */
121
+ rpManifest?: string;
122
+ /** Compilation entry. Only present when packs.bp?.compile is configured. */
123
+ srcEntry?: string;
124
+ /** Compiled script output. Only present when packs.bp?.compile is configured. */
125
+ scriptOutFile?: string;
126
+ /** Compiled script output directory. Only present when packs.bp?.compile is configured. */
127
+ scriptOutDir?: string;
128
+ };
129
+ logger: LoggerLike;
130
+ };
131
+ type HookResult = string | number | boolean | null | undefined | Record<string, unknown>;
132
+ type Hooks = Partial<Record<"beforeInstall" | "afterInstall" | "beforeManifest" | "afterManifest" | "beforeBuild" | "afterBuild" | "beforeCopy" | "afterCopy" | "beforePack" | "afterPack", (ctx: HookContext) => HookResult | Promise<HookResult>>>;
133
+ type ConfigResolvedHookContext = {
134
+ cwd: string;
135
+ config: ResolvedConfig;
136
+ };
137
+ type PluginDependencyHooks = {
138
+ beforeResolveDependency?: (ctx: DependencyResolveHookContext) => HookResult | Promise<HookResult>;
139
+ afterResolveDependency?: (ctx: DependencyResolvedHookContext) => HookResult | Promise<HookResult>;
140
+ };
141
+ /**
142
+ * Extends BePack through `plugins: [plugin()]` in the project config.
143
+ *
144
+ * Plugin dependency resolvers are registered before BePack's built-in resolvers.
145
+ * Add a matching `dependencyCatalog` entry when the plugin manages a package that
146
+ * is not already in BePack's built-in catalog.
147
+ */
148
+ type BePackPlugin = {
149
+ /** Unique, human-readable plugin name used in diagnostics. */
150
+ name: string;
151
+ /** Optional plugin metadata for discovery and compatibility checks. */
152
+ version?: string;
153
+ description?: string;
154
+ apiVersion?: 1;
155
+ /** Higher priorities run/register first; ties preserve the plugins array order. */
156
+ priority?: number;
157
+ /** Runs after configuration has been normalized. */
158
+ configResolved?: (ctx: ConfigResolvedHookContext) => void | Promise<void>;
159
+ /** Dependency resolution additions supplied by the plugin. */
160
+ install?: {
161
+ dependencyCatalog?: Record<string, DependencyCatalogEntry>;
162
+ dependencyResolvers?: DependencyResolverRule[];
163
+ hooks?: PluginDependencyHooks;
164
+ };
165
+ /** Lifecycle hooks run with the same context as project-level hooks. */
166
+ hooks?: Hooks;
167
+ };
168
+ type PackConfig = {
169
+ /** Pack root directory, relative to `root` unless absolute. Example: `bp` or `packs/bp`. */
170
+ root?: string;
171
+ /** Header UUID written to manifest.json. */
172
+ uuid: string;
173
+ /** Module UUID written to manifest.json.
174
+ * For BP: required only when compile is configured (to manage script module).
175
+ * For RP: always required (to manage resources module). */
176
+ moduleUuid?: string;
177
+ /** Manifest header name. Defaults to top-level `name`. */
178
+ name?: string;
179
+ /** Manifest header description. Defaults to top-level `description`. */
180
+ description?: string;
181
+ };
182
+ /** TypeScript incremental compilation cache settings. */
183
+ type CacheOptions = {
184
+ /** Use cache in dev mode. Default: true. */
185
+ dev?: boolean;
186
+ /** Use cache in build mode. Default: false. */
187
+ build?: boolean;
188
+ /** Path to .tsbuildinfo file (relative to project root). */
189
+ file?: string;
190
+ };
191
+ type CacheResolved = {
192
+ dev: boolean;
193
+ build: boolean;
194
+ file: string;
195
+ };
196
+ /** BP compile configuration. Only available on behavior packs. */
197
+ type BpCompileOptions = {
198
+ /** Script entry file, relative to project root. Default: "src/main.ts". */
199
+ entry: string;
200
+ /** Path to tsconfig.json relative to project root. Default: "tsconfig.json". */
201
+ tsconfig?: string;
202
+ /** Whether to run `tsc --noEmit` before rolldown. Default: true. */
203
+ typecheck?: boolean;
204
+ /** Whether rolldown should preserve module files. Default: true. */
205
+ preserveModules?: boolean;
206
+ /** Additional packages/modules that Rolldown should not bundle. */
207
+ external?: BuildExternal[];
208
+ /** Use `npx tsc --noEmit` instead of system `tsc --noEmit`. Default: false. */
209
+ useNpx?: boolean;
210
+ /** Minify output via rolldown. Default: false. */
211
+ minify?: boolean;
212
+ /** TypeScript incremental compilation cache settings.
213
+ * `dev` defaults to true, `build` defaults to false.
214
+ * `file` defaults to "node_modules/.cache/bepack/tsconfig.tsbuildinfo".
215
+ * CLI `--cache` / `--no-cache` overrides build mode. */
216
+ cache?: CacheOptions;
217
+ /** Output directory for compiled scripts, relative to BP root. Default: "scripts". */
218
+ scriptOutputDir?: string;
219
+ };
220
+ type BpConfig = PackConfig & {
221
+ /** BP compile configuration (TypeScript entry, tsconfig, bundler options).
222
+ * When set, enables TypeScript compilation and rolldown bundling. */
223
+ compile?: BpCompileOptions;
224
+ /** Script API dependencies managed in both package.json and bp/manifest.json. */
225
+ dependencies?: Record<string, DependencySpecifier>;
226
+ /** Adds achievement-compatible metadata when every Script API dependency is stable. */
227
+ achievement?: boolean;
228
+ /** Additional files/folders to include when copying/packing the behavior pack,
229
+ * on top of built-in defaults (scripts/, manifest.json, animations/, etc.). */
230
+ include?: string[];
231
+ };
232
+ type RpConfig = PackConfig & {
233
+ /** Adds `pbr` capability to the resource pack manifest. */
234
+ pbr?: boolean;
235
+ /** Additional files/folders to include when copying/packing the resource pack,
236
+ * on top of built-in defaults. */
237
+ include?: string[];
238
+ };
239
+ /** Copy target with explicit bp/rp paths. */
240
+ type CopyTargetCustom = {
241
+ type: "custom";
242
+ bp?: string;
243
+ rp?: string;
244
+ };
245
+ /** Copy target derived from a Minecraft game root directory.
246
+ * BP is copied to `<path>/development_behavior_packs`,
247
+ * RP is copied to `<path>/development_resource_packs`. */
248
+ type CopyTargetGameRoot = {
249
+ type: "gameRoot";
250
+ path: string;
251
+ };
252
+ type CopyTarget = CopyTargetCustom | CopyTargetGameRoot;
253
+ /** Per-target or global copy folder name overrides. Falls back to `packs.bp.name` / `packs.rp.name`. */
254
+ type CopyTargetNames = {
255
+ bp?: string;
256
+ rp?: string;
257
+ };
258
+ /** Dev mode watch configuration. */
259
+ type DevWatchConfig = {
260
+ /** Additional files/directories to watch (relative to cwd), on top of copy include items. */
261
+ include?: string[];
262
+ };
263
+ type UserConfig = {
264
+ /** Project root directory. Other relative paths are resolved from here. */
265
+ root?: string;
266
+ /** Addon/package name used for manifest defaults and pack output names. */
267
+ name?: string;
268
+ /** Addon version. Must be `x.y.z` when written to manifest.json. */
269
+ version?: string;
270
+ /** Addon description used as manifest default. */
271
+ description?: string;
272
+ /** String replacement performed by Rolldown while compiling BP scripts. */
273
+ replace?: ReplaceOptions;
274
+ /** Manifest format version used when writing manifest.json.
275
+ * - `2`: array versions (e.g. `[1, 0, 0]`). Default for format_version 2 manifests.
276
+ * - `3`: SemVer string versions (e.g. `"1.0.0"`). All version fields must be strings.
277
+ * Format 3 does NOT accept array versions — every version must be a string.
278
+ * When not set, the existing manifest's format_version is preserved.
279
+ * Default: 2 for new manifests. */
280
+ manifestFormat?: 2 | 3;
281
+ target?: string;
282
+ /** Plugins that add dependency resolution rules and/or lifecycle hooks. */
283
+ plugins?: Array<BePackPlugin | string>;
284
+ /** Behavior/resource pack configuration. At least one pack must be configured. */
285
+ packs?: {
286
+ /** Behavior pack configuration. Optional. */
287
+ bp?: BpConfig;
288
+ /** Resource pack configuration. Optional. */
289
+ rp?: RpConfig;
290
+ };
291
+ /** Dependency install and package manager behavior. */
292
+ install?: {
293
+ /** npm registry used for resolving concrete @minecraft versions. */
294
+ registry?: string;
295
+ /** Where managed dependencies are written. Defaults to `dependencies`. */
296
+ saveTo?: SaveTo;
297
+ /** Package manager to run after patching package.json. */
298
+ packageManager?: PackageManager;
299
+ /** Whether to run the package manager after patching package.json. */
300
+ runPackageManager?: boolean;
301
+ /** Whether `bepack install` patches package.json. */
302
+ updatePackageJson?: boolean;
303
+ /** Whether `bepack install` patches manifest.json. */
304
+ updateManifest?: boolean;
305
+ /** Additional managed dependency package definitions. */
306
+ dependencyCatalog?: Record<string, DependencyCatalogEntry>;
307
+ /**
308
+ * Custom dependency resolvers.
309
+ *
310
+ * Rules are tried before BePack built-ins, making this a future plugin hook.
311
+ */
312
+ dependencyResolvers?: DependencyResolverRule[];
313
+ };
314
+ /** Build pipeline configuration — post-build actions only.
315
+ * Compilation config (entry, typecheck, bundler options) goes under packs.bp.compile. */
316
+ build?: {
317
+ /** Copy after build: false, true for default target, or a target name. */
318
+ copy?: CopySetting;
319
+ /** Show per-step timing in build/dev output. Defaults to false. */
320
+ timing?: boolean;
321
+ };
322
+ /** Dev watcher behavior. */
323
+ dev?: {
324
+ /** Copy after dev updates: false, true for default target, or a target name. */
325
+ copy?: CopySetting;
326
+ /** Watch configuration. Defaults to src entry dir + copy include items. */
327
+ watch?: DevWatchConfig;
328
+ };
329
+ /** Copy targets for `bepack copy` and build/dev copy. */
330
+ copy?: {
331
+ /** Default copy target. Built-ins: `win`, `winold`. */
332
+ defaultTarget?: string;
333
+ /** Global folder name overrides for all targets. Per-target `name` takes precedence. */
334
+ name?: string | CopyTargetNames;
335
+ /** Additional RP files/folders to include when copying.
336
+ * @deprecated Use packs.rp.include instead. */
337
+ include?: {
338
+ rp?: string[];
339
+ };
340
+ /** Custom copy targets. */
341
+ targets?: Record<string, CopyTarget & {
342
+ name?: string | CopyTargetNames;
343
+ }>;
344
+ };
345
+ pack?: {
346
+ /** Output filename template without extension. Supports `{name}` and `{version}`. */
347
+ name?: string;
348
+ /** Output directory for .mcpack/.mcaddon, relative to `root` unless absolute. */
349
+ outDir?: string;
350
+ };
351
+ /** Lifecycle hooks. */
352
+ hooks?: Hooks;
353
+ };
354
+ /** Resolved BP compile configuration (all fields filled with defaults). */
355
+ type BpCompileResolved = {
356
+ entry: string;
357
+ tsconfig: string;
358
+ typecheck: boolean;
359
+ preserveModules: boolean;
360
+ external: BuildExternal[];
361
+ useNpx: boolean;
362
+ minify: boolean;
363
+ cache: CacheResolved;
364
+ scriptOutputDir: string;
365
+ };
366
+ type ResolvedConfig = {
367
+ root: string;
368
+ configured: {
369
+ root: boolean;
370
+ packOutDir: boolean;
371
+ };
372
+ name: string;
373
+ version: string;
374
+ description?: string;
375
+ replace: {
376
+ values: Record<string, ReplaceValue>;
377
+ builtins: Required<ReplaceBuiltins>;
378
+ };
379
+ target: string;
380
+ /** Plugins applied while resolving this config. */
381
+ plugins?: BePackPlugin[];
382
+ /** Plugin ordering and catalog override diagnostics. */
383
+ pluginDiagnostics?: string[];
384
+ manifestFormat?: 2 | 3;
385
+ hooks: Hooks;
386
+ packs: {
387
+ bp?: {
388
+ root: string;
389
+ uuid: string;
390
+ moduleUuid?: string;
391
+ name: string;
392
+ description?: string;
393
+ compile?: BpCompileResolved;
394
+ dependencies: Record<string, DependencySpecifier>;
395
+ achievement?: boolean;
396
+ include: string[];
397
+ };
398
+ rp?: {
399
+ root: string;
400
+ uuid: string;
401
+ moduleUuid: string;
402
+ name: string;
403
+ description?: string;
404
+ pbr?: boolean;
405
+ include: string[];
406
+ };
407
+ };
408
+ install: {
409
+ registry: string;
410
+ saveTo: SaveTo;
411
+ packageManager: PackageManager;
412
+ runPackageManager: boolean;
413
+ updatePackageJson: boolean;
414
+ updateManifest: boolean;
415
+ dependencyCatalog: Record<string, DependencyCatalogEntry>;
416
+ dependencyResolvers: DependencyResolverRule[];
417
+ };
418
+ build: {
419
+ copy: CopySetting;
420
+ timing: boolean;
421
+ };
422
+ dev: {
423
+ copy: CopySetting;
424
+ watch?: DevWatchConfig;
425
+ };
426
+ copy: {
427
+ defaultTarget: string;
428
+ /** Global folder name overrides for all targets. Per-target `name` takes precedence. */
429
+ name?: string | CopyTargetNames;
430
+ /** @deprecated Use packs.rp.include instead. */
431
+ include?: {
432
+ rp?: string[];
433
+ };
434
+ targets: Record<string, CopyTarget & {
435
+ name?: string | CopyTargetNames;
436
+ }>;
437
+ };
438
+ pack: {
439
+ name: string;
440
+ outDir: string;
441
+ };
442
+ };
443
+ type LoadConfigOptions = {
444
+ cwd: string;
445
+ configPath?: string;
446
+ overrides?: Partial<UserConfig>;
447
+ };
448
+ type PackType = "bp" | "rp";
449
+ /** Unified pack info for generic operations (copy, watch, pack, paths). */
450
+ type PackInfo = {
451
+ type: PackType;
452
+ root: string;
453
+ uuid: string;
454
+ moduleUuid?: string;
455
+ name: string;
456
+ include: string[];
457
+ };
458
+ /** Iterate over all configured packs, returning uniform PackInfo objects. */
459
+ declare function getConfiguredPacks(config: ResolvedConfig): PackInfo[];
460
+ //#endregion
461
+ //#region src/config/defaultConfig.d.ts
462
+ declare function defineConfig(config: UserConfig): UserConfig;
463
+ //#endregion
464
+ //#region src/config/loadConfig.d.ts
465
+ declare function loadConfig(options: LoadConfigOptions): Promise<{
466
+ config: ResolvedConfig;
467
+ path: string;
468
+ cwd: string;
469
+ }>;
470
+ //#endregion
471
+ //#region src/manifest/patchManifest.d.ts
472
+ type PatchManifestOptions = {
473
+ cwd: string;
474
+ config: ResolvedConfig;
475
+ dryRun?: boolean;
476
+ resolvedDeps?: Record<string, string>;
477
+ logger?: LoggerLike;
478
+ };
479
+ /**
480
+ * 修补 BP 和/或 RP manifest 文件。
481
+ *
482
+ * - 只负责任务编排:路径计算、文件读写、调用构建器和依赖管理器。
483
+ * - 如果 manifest 已存在,保留用户手写字段并覆盖 BePack 管理字段。
484
+ * - 如果 manifest 不存在,根据配置完整生成。
485
+ * - dryRun 时返回结果但不写入文件。
486
+ * - 只修补已配置的 Pack(至少一个必须存在)。
487
+ */
488
+ declare function patchManifest(options: PatchManifestOptions): Promise<Record<string, {
489
+ path: string;
490
+ updated: boolean;
491
+ existed: boolean;
492
+ }>>;
493
+ //#endregion
494
+ //#region src/constants/dependencyCatalog.d.ts
495
+ /** Built-in managed dependency catalog. Maps package names to resolver + manifest behavior. */
496
+ declare const BUILTIN_DEPENDENCY_CATALOG: Record<string, DependencyCatalogEntry>;
497
+ //#endregion
498
+ //#region src/install/dependencyCatalog.d.ts
499
+ declare function createDependencyCatalog(config: ResolvedConfig): Record<string, DependencyCatalogEntry>;
500
+ //#endregion
501
+ //#region src/install/MinecraftPackageResolver.d.ts
502
+ declare function packageVersionForSpecifier(specifier: string): string;
503
+ declare class MinecraftPackageResolver {
504
+ private readonly npm;
505
+ private readonly logger?;
506
+ constructor(npm: NpmRegistryClient, logger?: LoggerLike | undefined);
507
+ /** Resolve latest stable version from metadata, using dist-tag "latest" or falling back to highest stable. */
508
+ latestStable(packageName: string, metadata: NpmPackageMetadata): string;
509
+ /** Resolve latest beta version from metadata, using dist-tag "beta" or falling back to highest beta. */
510
+ latestBeta(packageName: string, metadata: NpmPackageMetadata): string;
511
+ /** Resolve the highest beta version matching a concrete Minecraft target (e.g. 1.21.120). */
512
+ betaForTarget(packageName: string, target: string, metadata: NpmPackageMetadata): string;
513
+ /** Infer the concurrent stable version from a beta version string. */
514
+ inferStableFromBeta(packageName: string, target: string, beta: string, metadata: NpmPackageMetadata): string;
515
+ }
516
+ //#endregion
517
+ //#region src/install/DependencyService.d.ts
518
+ type ResolvedDependency = {
519
+ specifier: string;
520
+ packageVersion: string;
521
+ manifestVersion: string | null;
522
+ manifest: boolean;
523
+ external: boolean;
524
+ resolver: string;
525
+ };
526
+ declare class DependencyService {
527
+ readonly config: ResolvedConfig;
528
+ readonly logger?: LoggerLike | undefined;
529
+ readonly npm: NpmRegistryClient;
530
+ readonly catalog: ReturnType<typeof createDependencyCatalog>;
531
+ readonly pkgResolver: MinecraftPackageResolver;
532
+ private readonly log;
533
+ constructor(config: ResolvedConfig, logger?: LoggerLike | undefined);
534
+ /**
535
+ * Resolve all managed dependencies from packs.bp.dependencies.
536
+ * Returns a map of package name to ResolvedDependency.
537
+ * Returns empty when BP is not configured or has no dependencies.
538
+ */
539
+ resolveAll(): Promise<Record<string, ResolvedDependency>>;
540
+ /**
541
+ * Resolve a single dependency to a concrete version.
542
+ */
543
+ resolveOne(packageName: string, specifier: DependencySpecifier, entry: DependencyCatalogEntry): Promise<{
544
+ packageVersion: string;
545
+ manifestVersion?: string | null;
546
+ }>;
547
+ private runDependencyHooks;
548
+ }
549
+ /** @deprecated Use `new DependencyService(config, logger).resolveAll()` instead. */
550
+ declare function resolveDependencies(config: ResolvedConfig, logger?: LoggerLike): Promise<Record<string, ResolvedDependency>>;
551
+ //#endregion
552
+ //#region src/utils/semver.d.ts
553
+ /**
554
+ * Checks Minecraft Script API compatibility, intentionally differing from
555
+ * standard npm semver. The actual version must have the same major and an API
556
+ * core version no lower than the requirement. When the requirement contains a
557
+ * Minecraft target inside a beta/preview suffix, the actual target must be no
558
+ * lower as well (for example, `1.26.33-beta` satisfies `1.26.30-beta`).
559
+ *
560
+ * `requirement` may have a common npm range prefix such as `^` or `>=`; the
561
+ * prefix is accepted for peer-dependency ergonomics but does not impose npm's
562
+ * usual upper bound.
563
+ */
564
+ declare function satisfiesSemver(version: string, requirement: string): boolean;
565
+ /** @deprecated Use satisfiesSemver; retained for plugins using the earlier name. */
566
+ declare const satisfiesSemverRange: typeof satisfiesSemver;
567
+ //#endregion
568
+ //#region src/install/resolvers/registry.d.ts
569
+ declare const BUILTIN_DEPENDENCY_RESOLVERS: DependencyResolverRule[];
570
+ declare class DependencyResolverRegistry {
571
+ private readonly resolvers;
572
+ private readonly pluginNames;
573
+ constructor(resolvers: DependencyResolverRule[], plugins?: BePackPlugin[]);
574
+ static fromConfig(customResolvers: DependencyResolverRule[], plugins?: BePackPlugin[]): DependencyResolverRegistry;
575
+ private resolverMatchesCatalog;
576
+ find(ctx: DependencyResolverContext): DependencyResolverRule;
577
+ resolve(ctx: DependencyResolverContext): Promise<DependencyResolverResult>;
578
+ }
579
+ //#endregion
580
+ //#region src/install/resolvers/minecraftScriptApi.d.ts
581
+ declare const minecraftScriptApiResolver: DependencyResolverRule;
582
+ //#endregion
583
+ //#region src/install/resolvers/minecraftScriptApiBp.d.ts
584
+ declare const minecraftScriptApiBpResolver: DependencyResolverRule;
585
+ //#endregion
586
+ //#region src/install/resolvers/minecraftVanillaData.d.ts
587
+ declare const minecraftVanillaDataResolver: DependencyResolverRule;
588
+ //#endregion
589
+ //#region src/install/resolvers/exact.d.ts
590
+ declare const exactVersionResolver: DependencyResolverRule;
591
+ //#endregion
592
+ //#region src/plugins/sapiPro.d.ts
593
+ /**
594
+ * Resolves sapi-pro against explicitly declared Minecraft Script API packages.
595
+ * sapi-pro itself is package-only and is never written to manifest.json.
596
+ */
597
+ declare function sapiPro(): BePackPlugin;
598
+ //#endregion
599
+ //#region src/plugins/builtins.d.ts
600
+ /** Factories for plugins that can be referenced by name in project configs. */
601
+ declare const BUILTIN_PLUGINS: Record<string, () => BePackPlugin>;
602
+ //#endregion
603
+ //#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", "ACHIEVEMENT_REQUIRES_STABLE_API", "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
+ type ErrorCode = (typeof ERROR_CODES)[number];
606
+ //#endregion
607
+ //#region src/errors/BePackError.d.ts
608
+ declare class BePackError extends Error {
609
+ readonly code: ErrorCode;
610
+ readonly details: unknown | undefined;
611
+ readonly suggestions: string[] | undefined;
612
+ constructor(code: ErrorCode, message: string, options?: {
613
+ details?: unknown;
614
+ suggestions?: string[];
615
+ });
616
+ }
617
+ //#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 };