mbler 0.2.0 → 0.2.1

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,145 @@
1
+ import * as typescript from 'typescript';
2
+ import { watch as watch$1 } from 'chokidar';
3
+ import * as rollup from 'rollup';
4
+ import { LanguagePlugin } from '@volar/language-core';
5
+
6
+ interface MblerConfigScript {
7
+ ui?: boolean;
8
+ lang?: 'ts' | 'mcx' | 'js';
9
+ main: string;
10
+ UseBeta?: boolean;
11
+ }
12
+ interface MblerConfigOutdir {
13
+ behavior?: string;
14
+ resources?: string;
15
+ dist: string;
16
+ }
17
+ interface MblerConfigData {
18
+ name: string;
19
+ outdir?: MblerConfigOutdir;
20
+ description: string;
21
+ version: string;
22
+ mcVersion: string | string[];
23
+ script?: MblerConfigScript;
24
+ minify?: boolean;
25
+ }
26
+ interface CliParam {
27
+ params: string[];
28
+ opts: Record<string, string>;
29
+ }
30
+
31
+ /**
32
+ * 运行 MCX TypeScript 编译器
33
+ * 为 .mcx 文件提供 TypeScript 类型检查支持
34
+ */
35
+ declare function runTSC(tscpath?: string): void;
36
+
37
+ declare class Build {
38
+ private baseBuildDir;
39
+ private resolve;
40
+ private isWatch;
41
+ currentConfig: MblerConfigData | null;
42
+ srcDirs: {
43
+ [key in 'behavior' | 'resources']: string;
44
+ } | null;
45
+ outdirs: {
46
+ [key in 'behavior' | 'resources' | 'dist']: string;
47
+ } | null;
48
+ mcxTs: typeof typescript;
49
+ mcxLanguagePluginCreator: ((ts: typeof typescript) => LanguagePlugin<unknown>) | null;
50
+ constructor(opts: Record<string, string>, baseBuildDir: string, resolve: (a: number) => void, isWatch?: boolean);
51
+ /**
52
+ * Start the watch mode.
53
+ * This will perform an initial build (if not already done) and then
54
+ * start filesystem and rollup watchers.
55
+ * Returns the watcher handles once they are created so that callers
56
+ * (for example tests) can clean them up later.
57
+ */
58
+ watch(): Promise<null | undefined>;
59
+ start(): Promise<void>;
60
+ /**
61
+ * Handles returned from the currently-active watchers.
62
+ * Set by {@link createWatcher} and exposed via {@link getWatchers}
63
+ * so that external callers can close them when necessary (e.g. tests).
64
+ */
65
+ private watchers;
66
+ /**
67
+ * Returns the watcher handles if watch mode has been started.
68
+ * Can be safely called even before `watch()` has been invoked.
69
+ */
70
+ getWatchers(): {
71
+ rollup: rollup.RollupWatcher;
72
+ chokidar: ReturnType<typeof watch$1>;
73
+ } | null;
74
+ /**
75
+ * Close any active watchers. The build process does not automatically
76
+ * terminate the watchers unless the process exits; tests or CLI wrappers
77
+ * can call this method to clean up resources.
78
+ */
79
+ closeWatchers(): void;
80
+ private rollupPlugin;
81
+ init: boolean;
82
+ /**
83
+ * Which modules are present in the current project.
84
+ * - "behavior" when only behavior code exists
85
+ * - "resources" when only resource files exist
86
+ * - "all" when both are present
87
+ * This field is populated during `handlerOtherAddon`.
88
+ */
89
+ module: 'behavior' | 'resources' | 'all' | null;
90
+ /**
91
+ * Determine whether a path refers to a regular file or a directory.
92
+ * Follows symbolic links recursively. Throws if the path exists but
93
+ * is not one of the expected types.
94
+ *
95
+ * @param filePath file system path to inspect
96
+ * @returns "file" or "directory"
97
+ */
98
+ private fileType;
99
+ /**
100
+ * Perform a single build of the project located at {@link baseBuildDir}.
101
+ * The process is roughly:
102
+ * 1. load and validate the configuration file
103
+ * 2. prepare source and output directory information
104
+ * 3. copy addon files (behavior/resources)
105
+ * 4. generate manifest.json files
106
+ * 5. run rollup to bundle any script entry point
107
+ *
108
+ * If anything goes wrong the promise returned by the public wrapper
109
+ * (`build()` function exported at the bottom of this file) will be
110
+ * resolved with a non-zero code and appropriate log entries will be
111
+ * emitted.
112
+ */
113
+ private build;
114
+ /**
115
+ * Create and return a Rollup build instance configured for the
116
+ * project's script. The Rollup configuration mirrors the options
117
+ * used by the CLI when running manual builds.
118
+ *
119
+ * Returns undefined if the project does not define a script section
120
+ * (in which case nothing needs to be bundled).
121
+ */
122
+ private createRollup;
123
+ /**
124
+ * Internal helper invoked by {@link watch}.
125
+ * Ensures a build has been run before starting the watchers.
126
+ */
127
+ private _watch;
128
+ private isParent;
129
+ private isChange;
130
+ private createRollupWatcher;
131
+ private onChange;
132
+ private createWatcher;
133
+ private handlerManifest;
134
+ private loadData;
135
+ /**
136
+ * Copy the various files (behavior/resources) into the corresponding
137
+ * output directories and determine which modules exist in the project
138
+ * by inspecting the source directories.
139
+ */
140
+ private handlerOtherAddon;
141
+ }
142
+ declare function build(cliParam: CliParam, work: string): Promise<number>;
143
+ declare function watch(cliParam: CliParam, work: string): Promise<number>;
144
+
145
+ export { Build, runTSC as McxTsc, build, watch };
@@ -0,0 +1,2 @@
1
+ import*as i from"@mbler/mcx-core";import r from"chalk";import t from"@rollup/plugin-json";import e from"@rollup/plugin-node-resolve";import s from"@rollup/plugin-terser";import{watch as o}from"chokidar";import*as n from"node:fs/promises";import a from"node:fs/promises";import*as c from"node:path";import l,{isAbsolute as u}from"node:path";import*as h from"rollup";import*as d from"readline";import f,{tmpdir as m}from"node:os";import{json as p}from"npm-registry-fetch";import"node:child_process";import b from"node:crypto";import*as g from"node:fs";import{env as w}from"node:process";import v from"adm-zip";import y from"@rollup/plugin-commonjs";import{createMCXLanguagePlugin as j}from"@mbler/mcx-server";import D from"@rollup/plugin-typescript";import{runTsc as x}from"@volar/typescript/lib/quickstart/runTsc";process.stdin.isTTY&&(process.stdin.setRawMode(!0),d.emitKeypressEvents(process.stdin));const _=[],E=[];process.on("exit",i=>{process.stdout.write("[?25h")});const C=[];function $(i,{ctrl:r=!1,alt:t=!1}){return new Promise(e=>{_.push({name:i,ctrl:r||!1,alt:t||!1,resolve:e})})}$("c",{ctrl:!0}).then(()=>{C.forEach(i=>i()),process.exit(0)});class B{static render(i,r){return i.map((i,t)=>t===r?""+i+"":""+i+"").join(" ")}static select(i,r){let t=0,e=!1;console.log(`${i} (按 b 确认,n 键选择下一个) [?25l`),console.log(B.render(r,t)+"\n");const s=()=>{e||(t++,t>=r.length&&(t=0),console.log(`${B.render(r,t)}\n`),$("n",{ctrl:!1,alt:!1}).then(s))};return new Promise(i=>{$("n",{ctrl:!1,alt:!1}).then(s),$("b",{ctrl:!1,alt:!1}).then(()=>{e=!0,process.stdout.write("[?25h"),i(r[t])})})}static use(i){E.push(i)}}process.stdin.on("keypress",(i,r)=>{!function(i,{ctrl:r,alt:t},e){const s=_.find(e=>e.name===i&&e.ctrl===r&&e.alt===t);s&&(s.resolve(),_.splice(_.indexOf(s),1)),E.forEach(s=>s(i,r,t,e))}(r?.name||"",{ctrl:Boolean(r?.ctrl),alt:Boolean(r?.alt)},i)});const k={name:"demo",description:"demo",version:"0.0.0",mcVersion:"1.21.100",script:{main:""},minify:!1,outdir:{behavior:"",resources:"",dist:""}},P={ConfigFile:"mbler.config.js",salt:{header:"d61e721d-a2c9-4535-8054-0183bce24767",sapi:"33e2c698-908f-45ab-8a9f-66018f8486ed",module:"cbbacfa4-8b1e-4a9c-9cbd-7a0d2e5f0b3c"},behavior:"behavior",resources:"resources",includes:{public:{"pack_icon.png":"file","manifest.json":"file"},resources:{"biomes_client.json":"file","blocks.json":"file","bug_pack_icon.png":"file","contents.json":"file","loading_messages.json":"file","manifest_publish.json":"file","signatures.json":"file","sounds.json":"file","splashes.json":"file",animation_controllers:"directory",animations:"directory",attachables:"directory",biomes:"directory",cameras:"directory",entity:"directory",fogs:"directory",font:"directory",items:"directory",library:"directory",materials:"directory",models:"directory",particles:"directory",render_controllers:"directory",sounds:"directory",texts:"directory",textures:"directory"},behavior:{aim_assist:"directory",animation_controllers:"directory",animations:"directory",behavior_trees:"directory",biomes:"directory",blocks:"directory",cameras:"directory",dimensions:"directory",entities:"directory",feature_rules:"directory",features:"directory",functions:"directory",item_catalog:"directory",items:"directory",loot_tables:"directory",recipes:"directory",scripts:"skip",spawn_rules:"directory",structures:"directory",texts:"directory",trading:"directory",worldgen:"directory","contents.json":"file","manifest_publish.json":"file","signatures.json":"file"}}};async function R(i){try{if(await n.stat(i))return!0}catch{return!1}return!1}function L(i,r){return c.isAbsolute(r)?r:c.join(i,r)}async function W(i){const r=(await import(c.join(i,P.ConfigFile))).default;for(const t in r)if(!(t in k))throw new Error(`[read config]: read config from '${i}' error: Unexpected '${t}'`);return r}let F=[],O=!1;async function M(){if(!O&&0!==F.length){O=!0;try{for(;F.length>0;){const i=F.shift();i&&process.stdout.write(i)}}finally{O=!1}}}function T(i,r=!0){F.push(i+(r?"\n":"")),O||Promise.resolve().then(()=>M()).catch(()=>{F=[],O=!1})}function A(i){return i.split(".").map(i=>parseInt(i,10)).slice(0,3)}async function S(i,r){const t=JSON.stringify(r,null,2);return await R(c.dirname(i))||await n.mkdir(c.dirname(i),{recursive:!0}).catch(()=>{}),await n.writeFile(i,t,"utf-8")}function V(i,r){const t=i.split(".").map(i=>parseInt(i,10)||0),e=r.split(".").map(i=>parseInt(i,10)||0);for(let i=0;i<3;i++){const r=t[i]||0,s=e[i]||0;if(r!==s)return r-s}return 0}process.on("exit",M),function(){let i,r="",t="",e=!0;function s(){const i=`\r${t}${e?r:""}`;process.stdout.write(i)}B.use(function(t,e,o,n){if("function"==typeof i&&!e&&!o){if(t){if("return"===t||"enter"===t)return i(r),i=null,r="",void console.log("");if("backspace"===t)return r=r.slice(0,-1),void s()}n&&"string"==typeof n&&(r+=n,s())}})}();const U=l.join(f.homedir(),".cache/mbler/latest.log");function N(i){const r=async function(){try{const i=l.dirname(U);await R(i)||await a.mkdir(i,{recursive:!0}).catch(()=>{}),await R(U)||await a.writeFile(U,"")}catch(i){return void console.error("[logger] unable to prepare log file:",i)}try{await a.appendFile(U,"\n"+i)}catch(i){console.error("[logger] failed to append to log file:",i)}}();var t;I.run.push(r.then((t=r,()=>{I.run=I.run.filter(i=>i!==t)})))}class I{static LogFile=U;static run=[];static _b(i,r,t){const e=new Date;N([`${e.toLocaleDateString()} ${e.toLocaleTimeString()}`,`[${t} ${i}]`,r].join(" "))}static w(i,r){I._b(i,r,"WARN")}static e(i,r){I._b(i,r,"ERROR")}static i(i,r){I._b(i,r,"INFO")}static d(i,r){I._b(i,r,"DEBUG")}}const q=(i,r="")=>{const t=r+i,e=b.createHash("sha256").update(t).digest("hex").slice(0,32),s="89ab",o=i=>s[(t.length+i+r.length)%4];return`${e.substring(0,8)}-${e.substring(8,12)}-4${e.substring(12,15)}-8${o(1)}${o(2)}${o(3)}-${e.substring(18,30)}`};b.randomUUID;const J={tmpdir:c.join(m(),".mbler")},z=function(){const i=c.join(J.tmpdir,"_sapi_version.json");let r=null;async function t(i){const r=await p(`/${i}`),t=Object.keys(r.versions),e={},s=i=>{const r=i.match(/-(?:rc|beta)(?:\.[^-.]+)*?\.((?:\d+\.){2}\d+)/);return r?r[1]:null};for(const i of t){const r=s(i);if(!r)continue;const t=/(?:-stable)(?:$|[-.])/.test(i);let o=e[r];o||(o={formal:"",beta:"",_v:-1},e[r]=o),t?((!o.formal||i>o.formal)&&(o.formal=i),o._v=1/0):((!o.beta||i>o.beta)&&(o.beta=i),o._v!==1/0&&(o._v=1))}return e}async function e(){const e=await t("@minecraft/server"),s=await t("@minecraft/server-ui"),o=new Set([...Object.keys(e),...Object.keys(s)]),n=[];for(const i of Array.from(o))n.push({version:i,server:e[i]?{formal:e[i].formal,beta:e[i].beta}:{formal:"",beta:""},"server-ui":s[i]?{formal:s[i].formal,beta:s[i].beta}:{formal:"",beta:""}});n.sort((i,r)=>V(i.version,r.version)),r=n,await g.promises.mkdir(J.tmpdir,{recursive:!0}).catch(()=>{}),await g.promises.writeFile(i,JSON.stringify(n,null,2),"utf-8")}return{refresh:e,generateVersion:async function(t,s,o){if(!r)try{const t=await g.promises.readFile(i,"utf-8");r=JSON.parse(t)}catch{await e()}if(!r)throw new Error("unable to load sapi cache data");let n=r.find(i=>i.version===s);if(!n){const i=r.slice();let t=null;for(const r of i){if(!(V(r.version,s)<=0))break;t=r}t||(t=i[0]),n=t}const a=n["@minecraft/server"===t?"server":"server-ui"];let c=o?a.beta:a.formal;return c||(c=a.formal||a.beta),c||""}}}();async function K(i,r){const t={format_version:2,header:{name:i.name,description:i.description,uuid:q(i.name,P.salt.header+r),version:A(i.version),min_engine_version:A("string"==typeof i.mcVersion?i.mcVersion:(()=>{throw new Error("mcVersion in mblerconfig should be a string")})())},modules:[{type:r,uuid:q(i.name,P.salt.module+r),description:"From Mbler(https://github.com/RuanhoR/mbler). welcome to star and contribute!",version:A(i.version)}]};return"data"===r&&i.script&&(t.modules.push({type:"script",uuid:q(i.name,P.salt.sapi+r),description:"sapi generate by mbler, weclome to download and star at https://github.com/RuanhoR/mbler",version:A(i.version)}),t.capabilities=["script_eval"],t.dependencies=[{module_name:"@minecraft/server",version:(await z.generateVersion("@minecraft/server",i.mcVersion,i.script?.UseBeta||!1)).split("-")[0]}],i.script.ui&&t.dependencies.push({module_name:"@minecraft/server-ui",version:(await z.generateVersion("@minecraft/server-ui",i.mcVersion,i.script?.UseBeta||!1)).split("-")[0]})),t}function Y(i){const r=new v;return r.addLocalFolder(i),r}async function H(i){if(!i.srcDirs)throw new Error("invaild Build");if("release"!==w.BUILD_MODULE)return;let r;r="all"==i.module?await async function(i){const r=new v;for(const t of i)await r.addLocalFolderPromise(t[0],{zipPath:t[1]});return r}([[i.srcDirs?.behavior,"behavior"],[i.srcDirs.resources,"resources"]]):"behavior"==i.module?Y(i.srcDirs.behavior):Y(i.srcDirs.resources),await r.writeZipPromise(i.outdirs?.dist)}const X=r instanceof Function?r:r.default;class G{max;constructor(i){this.max=i}update(i){const r=Math.min(i,this.max)/this.max,t=Math.round(30*r),e=30-t;T(`\n\r[${`${X.green("█".repeat(t))}${X.white("█".repeat(e))}`}] ${X.blue(`${Math.round(100*r)}%`)} (${i}/${this.max})`,!1),i==this.max&&T("",!0)}}function Z(i=require.resolve("typescript/lib/tsc")){x(i,{extraSupportedExtensions:[".mcx"],extraExtensionsToRemove:[".mcx"]},i=>[j(i)])}const Q=r instanceof Function?r:r.default;class ii{baseBuildDir;resolve;isWatch;currentConfig=null;srcDirs=null;outdirs=null;mcxTs;mcxLanguagePluginCreator=null;constructor(i,r,t,e=!1){this.baseBuildDir=r,this.resolve=t,this.isWatch=e;try{const i=require("typescript");this.mcxLanguagePluginCreator=j,this.mcxTs=i,I.i("Build","MCX Volar language plugin creator initialized successfully")}catch(i){this.mcxTs=require("typescript"),I.w("Build",`Failed to initialize MCX language plugin: ${i}`)}}async watch(){try{i=()=>{this.watchers&&(this.watchers.chokidar.close(),this.watchers.rollup.close())},C.push(i),await this._watch()}catch(i){return i instanceof Error?I.e("Watcher",i.stack||i.message):I.e("Watcher",i+""),T("MBLER__ERR__WATCHER: "+i+" Log at "+I.LogFile),this.resolve(1),null}var i}async start(){try{return await this.build()}catch(i){i instanceof Error?I.e("Build",i.stack||i.message):I.e("Build",i+""),T("MBLER__ERR__BUILD: "+i.stack+" Log at "+I.LogFile),this.resolve(1)}}watchers=null;getWatchers(){return this.watchers}closeWatchers(){this.watchers&&(this.watchers.chokidar.close(),this.watchers.rollup.close(),this.watchers=null)}rollupPlugin=null;init=!1;module=null;async fileType(i){const r=await n.lstat(i);if(r.isFile())return"file";if(r.isDirectory())return"directory";if(r.isSymbolicLink())return await this.fileType(await n.readlink(i));throw new Error("[build addon]: invaild file type")}async build(){const i=new G(100);if(this.init=!0,!u(this.baseBuildDir))throw new Error("[init build]: build dir is not absolute path");this.currentConfig=await W(this.baseBuildDir),this.loadData(),this.isWatch||i.update(10),await this.handlerOtherAddon(),await this.handlerManifest(),this.isWatch||i.update(30);const r=await this.createRollup();if(!this.rollupPlugin||!this.outdirs)throw new Error("[build addon]: can't resolve rollup instance");this.isWatch||i.update(50);let t=this.currentConfig.script?.main;t||(t="index.js"),"js"!==l.extname(t)&&(t=t.slice(0,t.length-l.extname(t).length)+".js"),this.currentConfig.script&&await r.write({file:L(l.join(this.outdirs.behavior,"scripts"),t),format:"esm",sourcemap:!1}),this.isWatch||i.update(70),await H(this),this.isWatch||i.update(80),this.isWatch||this.resolve(0),this.isWatch||i.update(100)}async createRollup(){if(!this.currentConfig||!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");if(!this.currentConfig.script)return;const r=l.join(this.srcDirs.behavior,"scripts",this.currentConfig.script.main);if(!await R(r))throw new Error(`[build addon]: main script ${r} is not exist: can't resolve entry`);const o=[t(),e({extensions:[".ts",".js",".json"]}),y()],n=l.join(this.baseBuildDir,"node_modules");if(!await R(n))throw new Error(`[build addon]: node_modules is not exist in project root: can't resolve node_modules for rollup: ${n}`);if(this.currentConfig.minify&&o.push(s({format:{comments:!1},compress:{unused:!0}})),"ts"==this.currentConfig.script.lang){const i=l.join(this.baseBuildDir,"tsconfig.json");if(!await R(i))throw new Error(`[build addon]: ts-lang: tsconfig.json is not exist in project root: can't resolve tsconfig for rollup: ${i}`);o.push(D({sourceMap:!1,tsconfig:i,exclude:[this.outdirs.behavior,this.outdirs.resources],include:[this.srcDirs.behavior]}))}if("mcx"==this.currentConfig.script?.lang)try{const r=l.join(this.baseBuildDir,"tsconfig.json");if(!await R(r))throw new Error(`[build addon]: ts-lang: tsconfig.json is not exist in project root: can't resolve tsconfig for rollup: ${r}`);const t={moduleDir:n,tsconfigPath:r,sourcemap:!1,ts:this.mcxTs,mcxLanguagePlugin:this.mcxLanguagePluginCreator};this.mcxLanguagePluginCreator&&(t.mcxLanguagePlugin=this.mcxLanguagePluginCreator),o.push(i.plugin(t,this.outdirs))}catch(i){throw new Error(`[build addon]: mcx plugin is required but '@mbler/mcx-core' could not be loaded: ${i}`)}return this.rollupPlugin=o,await h.rollup({input:r,external:["@minecraft/server","@minecraft/server-ui"],plugins:o})}async _watch(){this.init||await this.build(),this.createWatcher()}isParent(i,r){const t=l.relative(i,r);return!!t&&!t.startsWith("..")&&!l.isAbsolute(t)}isChange(i,r,t){for(const e of t)if("object"==typeof i[e]&&"object"==typeof r[e]&&null!==i[e]&&null!==r[e]){if(this.isChange(i[e],r[e],Object.getOwnPropertyNames(i[e])))return!0}else if(i[e]!==r[e])return!0;return!1}createRollupWatcher(){if(!(this.srcDirs&&this.outdirs&&this.currentConfig&&this.rollupPlugin))throw new Error("[build addon]: can't first can this method");let i=this.currentConfig.script?.main;i||(i="index.js"),"js"!==l.extname(i)&&(i=i.slice(0,i.length-l.extname(i).length)+".js");const r=h.watch({input:l.join(this.srcDirs.behavior,"scripts",this.currentConfig?.script?.main||""),external:["@minecraft/server","@minecraft/server-ui"],plugins:this.rollupPlugin,output:{file:L(l.join(this.outdirs.behavior,"scripts"),i),format:"esm",sourcemap:!1},cache:!0,watch:{clearScreen:!1,include:l.join(this.srcDirs.behavior,"scripts/**/*"),exclude:[l.join(this.baseBuildDir,"node_modules/**/*"),this.outdirs.behavior,this.outdirs.resources,this.outdirs.dist]}});return r.on("change",async i=>{I.i("Watcher",`file changed: ${i}, start rebuild`)}),r.on("event",async i=>{"ERROR"===i.code?(I.e("Watcher",`rollup error: ${i.error.stack||i.error}`),T("MBLER__ERR__ROLLUP: "+(i.error.stack||i.error)+" Log at "+I.LogFile)):"END"===i.code&&I.i("Watcher","rebuild success")}),r}async onChange(i){if(!(this.srcDirs&&this.outdirs&&this.currentConfig&&this.rollupPlugin&&this.watchers))throw new Error("[build addon]: can't first can this method");const r=""===l.relative(l.join(this.baseBuildDir,"mbler.config.json"),i),t=this.isParent(this.srcDirs.behavior,i)&&!this.isParent(l.join(this.srcDirs.behavior,"scripts"),i),e=this.isParent(this.srcDirs.resources,i);if(r){const i=this.currentConfig;I.i("Watcher","detected mbler.config.json change, reload config"),this.currentConfig=await W(this.baseBuildDir),this.loadData(),this.isChange(i,this.currentConfig,["name","version","description","mcVersion"])&&await this.handlerManifest(),this.isChange(i,this.currentConfig,["script","outdir"])&&(this.watchers.rollup.close(),await this.createRollup(),this.watchers.rollup=h.watch({input:l.join(this.srcDirs.behavior,"scripts",this.currentConfig?.script?.main||""),external:["@minecraft/server","@minecraft/server-ui"],plugins:this.rollupPlugin,output:{file:l.join(this.outdirs.behavior,"scripts",this.currentConfig?.script?.main||""),format:"esm"}}))}if(t||e){const r=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");const r=l.relative(this.srcDirs.behavior,i);await n.cp(l.join(this.srcDirs.behavior,r),l.join(this.outdirs.behavior,r),{recursive:!0,force:!0})},s=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");const r=l.relative(this.srcDirs.resources,i);await n.cp(l.join(this.srcDirs.resources,r),l.join(this.outdirs.resources,r),{recursive:!0,force:!0})};t&&await r(),e&&await s()}T(`[${Q.green("mbler")}] ${Q.bgYellow(`file changed: ${i}`)}`)}createWatcher(){if(!this.srcDirs||!this.outdirs||!this.rollupPlugin)throw new Error("[build addon]: can't first can this method");const i=o(this.baseBuildDir,{ignored:[this.outdirs.behavior,this.outdirs.resources,this.outdirs.dist,l.join(this.baseBuildDir,"node_modules")],ignoreInitial:!0,interval:100});i.on("change",async i=>{await this.onChange(i)});const r=this.createRollupWatcher();this.watchers={chokidar:i,rollup:r}}async handlerManifest(){if(!(this.currentConfig&&this.outdirs&&this.srcDirs&&this.module))throw new Error("[build addon]: can't first can this method");const i={behavior:{},resources:{}},r=async()=>{if(!this.outdirs||!this.currentConfig)throw new Error("[build addon]: can't first can this method");const r=await K(this.currentConfig,"data");await S(l.join(this.outdirs.behavior,"manifest.json"),{...r,...i.behavior})},t=async()=>{if(!this.outdirs||!this.currentConfig)throw new Error("[build addon]: can't first can this method");const r=await K(this.currentConfig,"resources");await S(l.join(this.outdirs.resources,"manifest.json"),{...r,...i.resources})};if("behavior"==this.module||"all"==this.module){const t=l.join(this.srcDirs.behavior,"manifest.json");if(await R(t))try{const r=await n.readFile(t,"utf-8"),e=JSON.parse(r);i.behavior=e}catch(i){I.w("Build","invalid manifest.json in behavior")}await r()}if("resources"==this.module||"all"==this.module){const r=l.join(this.srcDirs.resources,"manifest.json");if(await R(r))try{const t=await n.readFile(r,"utf-8"),e=JSON.parse(t);i.resources=e}catch(i){I.w("Build","invalid manifest.json in resources")}await t()}}loadData(){if(!this.currentConfig||!this.baseBuildDir)throw new Error("[build data]: can't resolve again");this.srcDirs={behavior:l.join(this.baseBuildDir,P.behavior),resources:l.join(this.baseBuildDir,P.resources)},this.outdirs={behavior:this.currentConfig.outdir?.behavior?L(this.baseBuildDir,this.currentConfig.outdir.behavior):l.join(this.baseBuildDir,"dist/dep"),resources:this.currentConfig.outdir?.resources?L(this.baseBuildDir,this.currentConfig.outdir.resources):l.join(this.baseBuildDir,"dist/res"),dist:this.currentConfig.outdir?.dist?L(this.baseBuildDir,this.currentConfig.outdir.dist):l.join(this.baseBuildDir,"dist-pkg")}}async handlerOtherAddon(){if(!this.srcDirs)throw new Error("[build addon]: can't first can this method");if(!await R(this.srcDirs.behavior))throw new Error("[build addon]: can't resolve behavior");const i=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");for(const i of await n.readdir(this.srcDirs.behavior)){const r=await this.fileType(l.join(this.srcDirs.behavior,i)),t=P.includes.behavior[i]||P.includes.public[i];if(t!=r){if("skip"==t)continue;throw new Error(`[build addon]: invaild file: ${l.join(this.srcDirs.behavior,i)}: type: ${r}`)}await n.cp(l.join(this.srcDirs.behavior,i),l.join(this.outdirs.behavior,i),{recursive:!0,force:!0})}},r=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");for(const i of await n.readdir(this.srcDirs.resources)){const r=await this.fileType(l.join(this.srcDirs.resources,i)),t=P.includes.resources[i]||P.includes.public[i];if(t!=r){if("skip"==t)continue;throw new Error(`[build addon]: invaild file: ${l.join(this.srcDirs.resources,i)}: type: ${r}`)}await n.cp(l.join(this.srcDirs.resources,i),l.join(this.outdirs.resources,i),{recursive:!0,force:!0})}},t=[];if(await R(this.srcDirs.behavior)&&(this.module="behavior",t.push(i())),await R(this.srcDirs.resources)&&("behavior"==this.module?this.module="all":this.module="resources",t.push(r())),!this.module)throw new Error("[build addon]: couldn't resolve source code(your behaivor or reources code is not found)");await Promise.all(t)}}function ri(i,r){return new Promise(t=>{new ii(i.opts,r,t).start()})}function ti(i,r){return new Promise((t,e)=>{try{const e=new ii(i.opts,r,t,!0);e.start().then(()=>{e.watch(),T(`[${Q.green("mbler")}] ${Q.bgYellow("watching for file changes...")}`)})}catch(i){i instanceof Error?e(`[watcher]: error ${i.stack||i.message}`):e(i)}})}export{ii as Build,Z as McxTsc,ri as build,ti as watch};
2
+ //# sourceMappingURL=build.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.esm.js","sources":["../../src/commander/index.ts","../../src/types.ts","../../src/build/config.ts","../../src/utils/index.ts","../../src/logger/index.ts","../../src/uuid/index.ts","../../src/config.ts","../../src/build/sapi.ts","../../src/build/manifest.ts","../../src/build/release.ts","../../src/build/postgress.ts","../../src/build/plugin-mcx-tsc.ts","../../src/build/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["process","stdin","isTTY","setRawMode","readline","emitKeypressEvents","promises","tasks","on","code","stdout","write","endTasks","click","name","ctrl","alt","Promise","resolve","push","then","forEach","task","exit","Input","render","arr","index","map","item","pindex","join","select","tip","win","console","log","handlerNext","length","use","str","key","raw","find","e","splice","indexOf","handler","Boolean","templateMblerConfig","description","version","mcVersion","script","main","minify","outdir","behavior","resources","dist","BuildConfig","ConfigFile","salt","header","sapi","module","includes","public","animation_controllers","animations","attachables","biomes","cameras","entity","fogs","font","items","library","materials","models","particles","render_controllers","sounds","texts","textures","aim_assist","behavior_trees","blocks","dimensions","entities","feature_rules","features","functions","item_catalog","loot_tables","recipes","scripts","spawn_rules","structures","trading","worldgen","async","FileExsit","file","fs","stat","baseDir","inputPath","path","isAbsolute","ReadProjectMblerConfig","project","import","default","Error","outputQueue","isFlushing","flushOutputQueue","chunk","shift","showText","text","needNextLine","catch","stringToNumberArray","split","s","parseInt","slice","writeJSON","filePath","data","content","JSON","stringify","dirname","mkdir","recursive","writeFile","compareVersion","a","b","pa","x","pb","i","na","nb","curr","currstr","show","refreshInput","out","logFile","os","homedir","writeLog","logContent","asy","dir","err","error","appendFile","promise","Logger","run","filter","static","_b","tag","msg","t","date","Date","toLocaleDateString","toLocaleTimeString","w","d","fromString","input","combinedInput","base","crypto","createHash","update","digest","ls","r","substring","randomUUID","config","tmpdir","exp","cacheFile","cacheData","fetchData","pkgName","json","pkgVersions","Object","keys","versions","reValue","mcVersionFrom","m","match","v","isStable","test","entry","formal","beta","_v","Infinity","refresh","serverMap","uiMap","Set","ver","Array","from","server","sort","generateVersion","isBeta","txt","readFile","parse","sorted","candidate","entryModule","result","generateManifest","type","manifest","format_version","uuid","min_engine_version","modules","capabilities","dependencies","module_name","Sapi","UseBeta","ui","createFullZip","zip","AdmZip","addLocalFolder","generateRelease","build","srcDirs","env","BUILD_MODULE","folder","addLocalFolderPromise","zipPath","createZipWithMoreFolder","writeZipPromise","outdirs","chalk","_chalk","Function","Postgress","max","constructor","this","current","percentage","Math","min","filledWidth","round","emptyWidth","green","repeat","white","blue","runTSC","tscpath","require","runTsc","extraSupportedExtensions","extraExtensionsToRemove","ts","createMCXLanguagePlugin","Build","baseBuildDir","isWatch","currentConfig","mcxTs","mcxLanguagePluginCreator","opts","tsModule","watch","watchers","chokidar","close","rollup","_watch","stack","message","LogFile","start","getWatchers","closeWatchers","rollupPlugin","init","fileType","lstat","isFile","isDirectory","isSymbolicLink","readlink","progress","loadData","handlerOtherAddon","handlerManifest","rBuild","createRollup","output","extname","format","sourcemap","plugin","jsonPlugin","resolvePlugin","extensions","commonjs","moduleDir","minifyPlugin","comments","compress","unused","lang","tsconfigPath","typescript","sourceMap","tsconfig","exclude","include","pluginConfig","mcxLanguagePlugin","mcxDef","external","plugins","createWatcher","isParent","parent","relative","startsWith","isChange","oldObj","newObj","checkKeys","getOwnPropertyNames","createRollupWatcher","rollupWatcher","cache","clearScreen","event","onChange","isConfigChange","isBehaviorChange","isResourcesChange","oldConfig","handlerBP","relativePath","cp","force","handlerRP","bgYellow","chokidarWatch","ignored","ignoreInitial","interval","otherManifestOption","f","readdir","fType","includeType","all","cliParam","work","reject"],"mappings":"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"}
package/dist/build.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var r=require("@mbler/mcx-core"),i=require("chalk"),t=require("@rollup/plugin-json"),e=require("@rollup/plugin-node-resolve"),s=require("@rollup/plugin-terser"),o=require("chokidar"),n=require("node:fs/promises"),a=require("node:path"),c=require("rollup"),u=require("readline"),l=require("node:os"),h=require("npm-registry-fetch");require("node:child_process");var d=require("node:crypto"),f=require("node:fs"),m=require("node:process"),p=require("adm-zip"),b=require("@rollup/plugin-commonjs"),g=require("@mbler/mcx-server"),w=require("@rollup/plugin-typescript"),v=require("@volar/typescript/lib/quickstart/runTsc");function y(r){var i=Object.create(null);return r&&Object.keys(r).forEach(function(t){if("default"!==t){var e=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(i,t,e.get?e:{enumerable:!0,get:function(){return r[t]}})}}),i.default=r,Object.freeze(i)}var j=y(r),D=y(n),x=y(a),_=y(c),C=y(u),E=y(f);process.stdin.isTTY&&(process.stdin.setRawMode(!0),C.emitKeypressEvents(process.stdin));const $=[],B=[];process.on("exit",r=>{process.stdout.write("[?25h")});const P=[];function k(r,{ctrl:i=!1,alt:t=!1}){return new Promise(e=>{$.push({name:r,ctrl:i||!1,alt:t||!1,resolve:e})})}k("c",{ctrl:!0}).then(()=>{P.forEach(r=>r()),process.exit(0)});class L{static render(r,i){return r.map((r,t)=>t===i?""+r+"":""+r+"").join(" ")}static select(r,i){let t=0,e=!1;console.log(`${r} (按 b 确认,n 键选择下一个) [?25l`),console.log(L.render(i,t)+"\n");const s=()=>{e||(t++,t>=i.length&&(t=0),console.log(`${L.render(i,t)}\n`),k("n",{ctrl:!1,alt:!1}).then(s))};return new Promise(r=>{k("n",{ctrl:!1,alt:!1}).then(s),k("b",{ctrl:!1,alt:!1}).then(()=>{e=!0,process.stdout.write("[?25h"),r(i[t])})})}static use(r){B.push(r)}}process.stdin.on("keypress",(r,i)=>{!function(r,{ctrl:i,alt:t},e){const s=$.find(e=>e.name===r&&e.ctrl===i&&e.alt===t);s&&(s.resolve(),$.splice($.indexOf(s),1)),B.forEach(s=>s(r,i,t,e))}(i?.name||"",{ctrl:Boolean(i?.ctrl),alt:Boolean(i?.alt)},r)});const R={name:"demo",description:"demo",version:"0.0.0",mcVersion:"1.21.100",script:{main:""},minify:!1,outdir:{behavior:"",resources:"",dist:""}},q={ConfigFile:"mbler.config.js",salt:{header:"d61e721d-a2c9-4535-8054-0183bce24767",sapi:"33e2c698-908f-45ab-8a9f-66018f8486ed",module:"cbbacfa4-8b1e-4a9c-9cbd-7a0d2e5f0b3c"},behavior:"behavior",resources:"resources",includes:{public:{"pack_icon.png":"file","manifest.json":"file"},resources:{"biomes_client.json":"file","blocks.json":"file","bug_pack_icon.png":"file","contents.json":"file","loading_messages.json":"file","manifest_publish.json":"file","signatures.json":"file","sounds.json":"file","splashes.json":"file",animation_controllers:"directory",animations:"directory",attachables:"directory",biomes:"directory",cameras:"directory",entity:"directory",fogs:"directory",font:"directory",items:"directory",library:"directory",materials:"directory",models:"directory",particles:"directory",render_controllers:"directory",sounds:"directory",texts:"directory",textures:"directory"},behavior:{aim_assist:"directory",animation_controllers:"directory",animations:"directory",behavior_trees:"directory",biomes:"directory",blocks:"directory",cameras:"directory",dimensions:"directory",entities:"directory",feature_rules:"directory",features:"directory",functions:"directory",item_catalog:"directory",items:"directory",loot_tables:"directory",recipes:"directory",scripts:"skip",spawn_rules:"directory",structures:"directory",texts:"directory",trading:"directory",worldgen:"directory","contents.json":"file","manifest_publish.json":"file","signatures.json":"file"}}};async function O(r){try{if(await D.stat(r))return!0}catch{return!1}return!1}function W(r,i){return x.isAbsolute(i)?i:x.join(r,i)}async function F(r){const i=(await import(x.join(r,q.ConfigFile))).default;for(const t in i)if(!(t in R))throw new Error(`[read config]: read config from '${r}' error: Unexpected '${t}'`);return i}let M=[],T=!1;async function A(){if(!T&&0!==M.length){T=!0;try{for(;M.length>0;){const r=M.shift();r&&process.stdout.write(r)}}finally{T=!1}}}function S(r,i=!0){M.push(r+(i?"\n":"")),T||Promise.resolve().then(()=>A()).catch(()=>{M=[],T=!1})}function V(r){return r.split(".").map(r=>parseInt(r,10)).slice(0,3)}async function U(r,i){const t=JSON.stringify(i,null,2);return await O(x.dirname(r))||await D.mkdir(x.dirname(r),{recursive:!0}).catch(()=>{}),await D.writeFile(r,t,"utf-8")}function N(r,i){const t=r.split(".").map(r=>parseInt(r,10)||0),e=i.split(".").map(r=>parseInt(r,10)||0);for(let r=0;r<3;r++){const i=t[r]||0,s=e[r]||0;if(i!==s)return i-s}return 0}process.on("exit",A),function(){let r,i="",t="",e=!0;function s(){const r=`\r${t}${e?i:""}`;process.stdout.write(r)}L.use(function(t,e,o,n){if("function"==typeof r&&!e&&!o){if(t){if("return"===t||"enter"===t)return r(i),r=null,i="",void console.log("");if("backspace"===t)return i=i.slice(0,-1),void s()}n&&"string"==typeof n&&(i+=n,s())}})}();const I=a.join(l.homedir(),".cache/mbler/latest.log");function z(r){const i=async function(){try{const r=a.dirname(I);await O(r)||await n.mkdir(r,{recursive:!0}).catch(()=>{}),await O(I)||await n.writeFile(I,"")}catch(r){return void console.error("[logger] unable to prepare log file:",r)}try{await n.appendFile(I,"\n"+r)}catch(r){console.error("[logger] failed to append to log file:",r)}}();var t;J.run.push(i.then((t=i,()=>{J.run=J.run.filter(r=>r!==t)})))}class J{static LogFile=I;static run=[];static _b(r,i,t){const e=new Date;z([`${e.toLocaleDateString()} ${e.toLocaleTimeString()}`,`[${t} ${r}]`,i].join(" "))}static w(r,i){J._b(r,i,"WARN")}static e(r,i){J._b(r,i,"ERROR")}static i(r,i){J._b(r,i,"INFO")}static d(r,i){J._b(r,i,"DEBUG")}}const X=(r,i="")=>{const t=i+r,e=d.createHash("sha256").update(t).digest("hex").slice(0,32),s="89ab",o=r=>s[(t.length+r+i.length)%4];return`${e.substring(0,8)}-${e.substring(8,12)}-4${e.substring(12,15)}-8${o(1)}${o(2)}${o(3)}-${e.substring(18,30)}`};d.randomUUID;const K={tmpdir:x.join(l.tmpdir(),".mbler")},Y=function(){const r=x.join(K.tmpdir,"_sapi_version.json");let i=null;async function t(r){const i=await h.json(`/${r}`),t=Object.keys(i.versions),e={},s=r=>{const i=r.match(/-(?:rc|beta)(?:\.[^-.]+)*?\.((?:\d+\.){2}\d+)/);return i?i[1]:null};for(const r of t){const i=s(r);if(!i)continue;const t=/(?:-stable)(?:$|[-.])/.test(r);let o=e[i];o||(o={formal:"",beta:"",_v:-1},e[i]=o),t?((!o.formal||r>o.formal)&&(o.formal=r),o._v=1/0):((!o.beta||r>o.beta)&&(o.beta=r),o._v!==1/0&&(o._v=1))}return e}async function e(){const e=await t("@minecraft/server"),s=await t("@minecraft/server-ui"),o=new Set([...Object.keys(e),...Object.keys(s)]),n=[];for(const r of Array.from(o))n.push({version:r,server:e[r]?{formal:e[r].formal,beta:e[r].beta}:{formal:"",beta:""},"server-ui":s[r]?{formal:s[r].formal,beta:s[r].beta}:{formal:"",beta:""}});n.sort((r,i)=>N(r.version,i.version)),i=n,await E.promises.mkdir(K.tmpdir,{recursive:!0}).catch(()=>{}),await E.promises.writeFile(r,JSON.stringify(n,null,2),"utf-8")}return{refresh:e,generateVersion:async function(t,s,o){if(!i)try{const t=await E.promises.readFile(r,"utf-8");i=JSON.parse(t)}catch{await e()}if(!i)throw new Error("unable to load sapi cache data");let n=i.find(r=>r.version===s);if(!n){const r=i.slice();let t=null;for(const i of r){if(!(N(i.version,s)<=0))break;t=i}t||(t=r[0]),n=t}const a=n["@minecraft/server"===t?"server":"server-ui"];let c=o?a.beta:a.formal;return c||(c=a.formal||a.beta),c||""}}}();async function H(r,i){const t={format_version:2,header:{name:r.name,description:r.description,uuid:X(r.name,q.salt.header+i),version:V(r.version),min_engine_version:V("string"==typeof r.mcVersion?r.mcVersion:(()=>{throw new Error("mcVersion in mblerconfig should be a string")})())},modules:[{type:i,uuid:X(r.name,q.salt.module+i),description:"From Mbler(https://github.com/RuanhoR/mbler). welcome to star and contribute!",version:V(r.version)}]};return"data"===i&&r.script&&(t.modules.push({type:"script",uuid:X(r.name,q.salt.sapi+i),description:"sapi generate by mbler, weclome to download and star at https://github.com/RuanhoR/mbler",version:V(r.version)}),t.capabilities=["script_eval"],t.dependencies=[{module_name:"@minecraft/server",version:(await Y.generateVersion("@minecraft/server",r.mcVersion,r.script?.UseBeta||!1)).split("-")[0]}],r.script.ui&&t.dependencies.push({module_name:"@minecraft/server-ui",version:(await Y.generateVersion("@minecraft/server-ui",r.mcVersion,r.script?.UseBeta||!1)).split("-")[0]})),t}function G(r){const i=new p;return i.addLocalFolder(r),i}async function Z(r){if(!r.srcDirs)throw new Error("invaild Build");if("release"!==m.env.BUILD_MODULE)return;let i;i="all"==r.module?await async function(r){const i=new p;for(const t of r)await i.addLocalFolderPromise(t[0],{zipPath:t[1]});return i}([[r.srcDirs?.behavior,"behavior"],[r.srcDirs.resources,"resources"]]):"behavior"==r.module?G(r.srcDirs.behavior):G(r.srcDirs.resources),await i.writeZipPromise(r.outdirs?.dist)}const Q=i instanceof Function?i:i.default;class rr{max;constructor(r){this.max=r}update(r){const i=Math.min(r,this.max)/this.max,t=Math.round(30*i),e=30-t;S(`\n\r[${`${Q.green("█".repeat(t))}${Q.white("█".repeat(e))}`}] ${Q.blue(`${Math.round(100*i)}%`)} (${r}/${this.max})`,!1),r==this.max&&S("",!0)}}const ir=i instanceof Function?i:i.default;class tr{baseBuildDir;resolve;isWatch;currentConfig=null;srcDirs=null;outdirs=null;mcxTs;mcxLanguagePluginCreator=null;constructor(r,i,t,e=!1){this.baseBuildDir=i,this.resolve=t,this.isWatch=e;try{const r=require("typescript");this.mcxLanguagePluginCreator=g.createMCXLanguagePlugin,this.mcxTs=r,J.i("Build","MCX Volar language plugin creator initialized successfully")}catch(r){this.mcxTs=require("typescript"),J.w("Build",`Failed to initialize MCX language plugin: ${r}`)}}async watch(){try{r=()=>{this.watchers&&(this.watchers.chokidar.close(),this.watchers.rollup.close())},P.push(r),await this._watch()}catch(r){return r instanceof Error?J.e("Watcher",r.stack||r.message):J.e("Watcher",r+""),S("MBLER__ERR__WATCHER: "+r+" Log at "+J.LogFile),this.resolve(1),null}var r}async start(){try{return await this.build()}catch(r){r instanceof Error?J.e("Build",r.stack||r.message):J.e("Build",r+""),S("MBLER__ERR__BUILD: "+r.stack+" Log at "+J.LogFile),this.resolve(1)}}watchers=null;getWatchers(){return this.watchers}closeWatchers(){this.watchers&&(this.watchers.chokidar.close(),this.watchers.rollup.close(),this.watchers=null)}rollupPlugin=null;init=!1;module=null;async fileType(r){const i=await D.lstat(r);if(i.isFile())return"file";if(i.isDirectory())return"directory";if(i.isSymbolicLink())return await this.fileType(await D.readlink(r));throw new Error("[build addon]: invaild file type")}async build(){const r=new rr(100);if(this.init=!0,!a.isAbsolute(this.baseBuildDir))throw new Error("[init build]: build dir is not absolute path");this.currentConfig=await F(this.baseBuildDir),this.loadData(),this.isWatch||r.update(10),await this.handlerOtherAddon(),await this.handlerManifest(),this.isWatch||r.update(30);const i=await this.createRollup();if(!this.rollupPlugin||!this.outdirs)throw new Error("[build addon]: can't resolve rollup instance");this.isWatch||r.update(50);let t=this.currentConfig.script?.main;t||(t="index.js"),"js"!==a.extname(t)&&(t=t.slice(0,t.length-a.extname(t).length)+".js"),this.currentConfig.script&&await i.write({file:W(a.join(this.outdirs.behavior,"scripts"),t),format:"esm",sourcemap:!1}),this.isWatch||r.update(70),await Z(this),this.isWatch||r.update(80),this.isWatch||this.resolve(0),this.isWatch||r.update(100)}async createRollup(){if(!this.currentConfig||!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");if(!this.currentConfig.script)return;const r=a.join(this.srcDirs.behavior,"scripts",this.currentConfig.script.main);if(!await O(r))throw new Error(`[build addon]: main script ${r} is not exist: can't resolve entry`);const i=[t(),e({extensions:[".ts",".js",".json"]}),b()],o=a.join(this.baseBuildDir,"node_modules");if(!await O(o))throw new Error(`[build addon]: node_modules is not exist in project root: can't resolve node_modules for rollup: ${o}`);if(this.currentConfig.minify&&i.push(s({format:{comments:!1},compress:{unused:!0}})),"ts"==this.currentConfig.script.lang){const r=a.join(this.baseBuildDir,"tsconfig.json");if(!await O(r))throw new Error(`[build addon]: ts-lang: tsconfig.json is not exist in project root: can't resolve tsconfig for rollup: ${r}`);i.push(w({sourceMap:!1,tsconfig:r,exclude:[this.outdirs.behavior,this.outdirs.resources],include:[this.srcDirs.behavior]}))}if("mcx"==this.currentConfig.script?.lang)try{const r=a.join(this.baseBuildDir,"tsconfig.json");if(!await O(r))throw new Error(`[build addon]: ts-lang: tsconfig.json is not exist in project root: can't resolve tsconfig for rollup: ${r}`);const t={moduleDir:o,tsconfigPath:r,sourcemap:!1,ts:this.mcxTs,mcxLanguagePlugin:this.mcxLanguagePluginCreator};this.mcxLanguagePluginCreator&&(t.mcxLanguagePlugin=this.mcxLanguagePluginCreator),i.push(j.plugin(t,this.outdirs))}catch(r){throw new Error(`[build addon]: mcx plugin is required but '@mbler/mcx-core' could not be loaded: ${r}`)}return this.rollupPlugin=i,await _.rollup({input:r,external:["@minecraft/server","@minecraft/server-ui"],plugins:i})}async _watch(){this.init||await this.build(),this.createWatcher()}isParent(r,i){const t=a.relative(r,i);return!!t&&!t.startsWith("..")&&!a.isAbsolute(t)}isChange(r,i,t){for(const e of t)if("object"==typeof r[e]&&"object"==typeof i[e]&&null!==r[e]&&null!==i[e]){if(this.isChange(r[e],i[e],Object.getOwnPropertyNames(r[e])))return!0}else if(r[e]!==i[e])return!0;return!1}createRollupWatcher(){if(!(this.srcDirs&&this.outdirs&&this.currentConfig&&this.rollupPlugin))throw new Error("[build addon]: can't first can this method");let r=this.currentConfig.script?.main;r||(r="index.js"),"js"!==a.extname(r)&&(r=r.slice(0,r.length-a.extname(r).length)+".js");const i=_.watch({input:a.join(this.srcDirs.behavior,"scripts",this.currentConfig?.script?.main||""),external:["@minecraft/server","@minecraft/server-ui"],plugins:this.rollupPlugin,output:{file:W(a.join(this.outdirs.behavior,"scripts"),r),format:"esm",sourcemap:!1},cache:!0,watch:{clearScreen:!1,include:a.join(this.srcDirs.behavior,"scripts/**/*"),exclude:[a.join(this.baseBuildDir,"node_modules/**/*"),this.outdirs.behavior,this.outdirs.resources,this.outdirs.dist]}});return i.on("change",async r=>{J.i("Watcher",`file changed: ${r}, start rebuild`)}),i.on("event",async r=>{"ERROR"===r.code?(J.e("Watcher",`rollup error: ${r.error.stack||r.error}`),S("MBLER__ERR__ROLLUP: "+(r.error.stack||r.error)+" Log at "+J.LogFile)):"END"===r.code&&J.i("Watcher","rebuild success")}),i}async onChange(r){if(!(this.srcDirs&&this.outdirs&&this.currentConfig&&this.rollupPlugin&&this.watchers))throw new Error("[build addon]: can't first can this method");const i=""===a.relative(a.join(this.baseBuildDir,"mbler.config.json"),r),t=this.isParent(this.srcDirs.behavior,r)&&!this.isParent(a.join(this.srcDirs.behavior,"scripts"),r),e=this.isParent(this.srcDirs.resources,r);if(i){const r=this.currentConfig;J.i("Watcher","detected mbler.config.json change, reload config"),this.currentConfig=await F(this.baseBuildDir),this.loadData(),this.isChange(r,this.currentConfig,["name","version","description","mcVersion"])&&await this.handlerManifest(),this.isChange(r,this.currentConfig,["script","outdir"])&&(this.watchers.rollup.close(),await this.createRollup(),this.watchers.rollup=_.watch({input:a.join(this.srcDirs.behavior,"scripts",this.currentConfig?.script?.main||""),external:["@minecraft/server","@minecraft/server-ui"],plugins:this.rollupPlugin,output:{file:a.join(this.outdirs.behavior,"scripts",this.currentConfig?.script?.main||""),format:"esm"}}))}if(t||e){const i=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");const i=a.relative(this.srcDirs.behavior,r);await D.cp(a.join(this.srcDirs.behavior,i),a.join(this.outdirs.behavior,i),{recursive:!0,force:!0})},s=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");const i=a.relative(this.srcDirs.resources,r);await D.cp(a.join(this.srcDirs.resources,i),a.join(this.outdirs.resources,i),{recursive:!0,force:!0})};t&&await i(),e&&await s()}S(`[${ir.green("mbler")}] ${ir.bgYellow(`file changed: ${r}`)}`)}createWatcher(){if(!this.srcDirs||!this.outdirs||!this.rollupPlugin)throw new Error("[build addon]: can't first can this method");const r=o.watch(this.baseBuildDir,{ignored:[this.outdirs.behavior,this.outdirs.resources,this.outdirs.dist,a.join(this.baseBuildDir,"node_modules")],ignoreInitial:!0,interval:100});r.on("change",async r=>{await this.onChange(r)});const i=this.createRollupWatcher();this.watchers={chokidar:r,rollup:i}}async handlerManifest(){if(!(this.currentConfig&&this.outdirs&&this.srcDirs&&this.module))throw new Error("[build addon]: can't first can this method");const r={behavior:{},resources:{}},i=async()=>{if(!this.outdirs||!this.currentConfig)throw new Error("[build addon]: can't first can this method");const i=await H(this.currentConfig,"data");await U(a.join(this.outdirs.behavior,"manifest.json"),{...i,...r.behavior})},t=async()=>{if(!this.outdirs||!this.currentConfig)throw new Error("[build addon]: can't first can this method");const i=await H(this.currentConfig,"resources");await U(a.join(this.outdirs.resources,"manifest.json"),{...i,...r.resources})};if("behavior"==this.module||"all"==this.module){const t=a.join(this.srcDirs.behavior,"manifest.json");if(await O(t))try{const i=await D.readFile(t,"utf-8"),e=JSON.parse(i);r.behavior=e}catch(r){J.w("Build","invalid manifest.json in behavior")}await i()}if("resources"==this.module||"all"==this.module){const i=a.join(this.srcDirs.resources,"manifest.json");if(await O(i))try{const t=await D.readFile(i,"utf-8"),e=JSON.parse(t);r.resources=e}catch(r){J.w("Build","invalid manifest.json in resources")}await t()}}loadData(){if(!this.currentConfig||!this.baseBuildDir)throw new Error("[build data]: can't resolve again");this.srcDirs={behavior:a.join(this.baseBuildDir,q.behavior),resources:a.join(this.baseBuildDir,q.resources)},this.outdirs={behavior:this.currentConfig.outdir?.behavior?W(this.baseBuildDir,this.currentConfig.outdir.behavior):a.join(this.baseBuildDir,"dist/dep"),resources:this.currentConfig.outdir?.resources?W(this.baseBuildDir,this.currentConfig.outdir.resources):a.join(this.baseBuildDir,"dist/res"),dist:this.currentConfig.outdir?.dist?W(this.baseBuildDir,this.currentConfig.outdir.dist):a.join(this.baseBuildDir,"dist-pkg")}}async handlerOtherAddon(){if(!this.srcDirs)throw new Error("[build addon]: can't first can this method");if(!await O(this.srcDirs.behavior))throw new Error("[build addon]: can't resolve behavior");const r=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");for(const r of await D.readdir(this.srcDirs.behavior)){const i=await this.fileType(a.join(this.srcDirs.behavior,r)),t=q.includes.behavior[r]||q.includes.public[r];if(t!=i){if("skip"==t)continue;throw new Error(`[build addon]: invaild file: ${a.join(this.srcDirs.behavior,r)}: type: ${i}`)}await D.cp(a.join(this.srcDirs.behavior,r),a.join(this.outdirs.behavior,r),{recursive:!0,force:!0})}},i=async()=>{if(!this.srcDirs||!this.outdirs)throw new Error("[build addon]: can't first can this method");for(const r of await D.readdir(this.srcDirs.resources)){const i=await this.fileType(a.join(this.srcDirs.resources,r)),t=q.includes.resources[r]||q.includes.public[r];if(t!=i){if("skip"==t)continue;throw new Error(`[build addon]: invaild file: ${a.join(this.srcDirs.resources,r)}: type: ${i}`)}await D.cp(a.join(this.srcDirs.resources,r),a.join(this.outdirs.resources,r),{recursive:!0,force:!0})}},t=[];if(await O(this.srcDirs.behavior)&&(this.module="behavior",t.push(r())),await O(this.srcDirs.resources)&&("behavior"==this.module?this.module="all":this.module="resources",t.push(i())),!this.module)throw new Error("[build addon]: couldn't resolve source code(your behaivor or reources code is not found)");await Promise.all(t)}}exports.Build=tr,exports.McxTsc=function(r=require.resolve("typescript/lib/tsc")){v.runTsc(r,{extraSupportedExtensions:[".mcx"],extraExtensionsToRemove:[".mcx"]},r=>[g.createMCXLanguagePlugin(r)])},exports.build=function(r,i){return new Promise(t=>{new tr(r.opts,i,t).start()})},exports.watch=function(r,i){return new Promise((t,e)=>{try{const e=new tr(r.opts,i,t,!0);e.start().then(()=>{e.watch(),S(`[${ir.green("mbler")}] ${ir.bgYellow("watching for file changes...")}`)})}catch(r){r instanceof Error?e(`[watcher]: error ${r.stack||r.message}`):e(r)}})};
2
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sources":["../../src/commander/index.ts","../../src/types.ts","../../src/build/config.ts","../../src/utils/index.ts","../../src/logger/index.ts","../../src/uuid/index.ts","../../src/config.ts","../../src/build/sapi.ts","../../src/build/manifest.ts","../../src/build/release.ts","../../src/build/postgress.ts","../../src/build/index.ts","../../src/build/plugin-mcx-tsc.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["process","stdin","isTTY","setRawMode","readline","emitKeypressEvents","promises","tasks","on","code","stdout","write","endTasks","click","name","ctrl","alt","Promise","resolve","push","then","forEach","task","exit","Input","render","arr","index","map","item","pindex","join","select","tip","win","console","log","handlerNext","length","use","str","key","raw","find","e","splice","indexOf","handler","Boolean","templateMblerConfig","description","version","mcVersion","script","main","minify","outdir","behavior","resources","dist","BuildConfig","ConfigFile","salt","header","sapi","module","includes","public","animation_controllers","animations","attachables","biomes","cameras","entity","fogs","font","items","library","materials","models","particles","render_controllers","sounds","texts","textures","aim_assist","behavior_trees","blocks","dimensions","entities","feature_rules","features","functions","item_catalog","loot_tables","recipes","scripts","spawn_rules","structures","trading","worldgen","async","FileExsit","file","fs","stat","baseDir","inputPath","path","isAbsolute","ReadProjectMblerConfig","project","import","default","Error","outputQueue","isFlushing","flushOutputQueue","chunk","shift","showText","text","needNextLine","catch","stringToNumberArray","split","s","parseInt","slice","writeJSON","filePath","data","content","JSON","stringify","dirname","mkdir","recursive","writeFile","compareVersion","a","b","pa","x","pb","i","na","nb","curr","currstr","show","refreshInput","out","logFile","os","homedir","writeLog","logContent","asy","dir","err","error","appendFile","promise","Logger","run","filter","static","_b","tag","msg","t","date","Date","toLocaleDateString","toLocaleTimeString","w","d","fromString","input","combinedInput","base","crypto","createHash","update","digest","ls","r","substring","randomUUID","config","tmpdir","exp","cacheFile","cacheData","fetchData","pkgName","json","pkgVersions","Object","keys","versions","reValue","mcVersionFrom","m","match","v","isStable","test","entry","formal","beta","_v","Infinity","refresh","serverMap","uiMap","Set","ver","Array","from","server","sort","generateVersion","isBeta","txt","readFile","parse","sorted","candidate","entryModule","result","generateManifest","type","manifest","format_version","uuid","min_engine_version","modules","capabilities","dependencies","module_name","Sapi","UseBeta","ui","createFullZip","zip","AdmZip","addLocalFolder","generateRelease","build","srcDirs","env","BUILD_MODULE","folder","addLocalFolderPromise","zipPath","createZipWithMoreFolder","writeZipPromise","outdirs","chalk","_chalk","Function","Postgress","max","constructor","this","current","percentage","Math","min","filledWidth","round","emptyWidth","green","repeat","white","blue","Build","baseBuildDir","isWatch","currentConfig","mcxTs","mcxLanguagePluginCreator","opts","tsModule","require","createMCXLanguagePlugin","watch","watchers","chokidar","close","rollup","_watch","stack","message","LogFile","start","getWatchers","closeWatchers","rollupPlugin","init","fileType","lstat","isFile","isDirectory","isSymbolicLink","readlink","progress","loadData","handlerOtherAddon","handlerManifest","rBuild","createRollup","output","extname","format","sourcemap","plugin","jsonPlugin","resolvePlugin","extensions","commonjs","moduleDir","minifyPlugin","comments","compress","unused","lang","tsconfigPath","typescript","sourceMap","tsconfig","exclude","include","pluginConfig","ts","mcxLanguagePlugin","mcxDef","external","plugins","createWatcher","isParent","parent","relative","startsWith","isChange","oldObj","newObj","checkKeys","getOwnPropertyNames","createRollupWatcher","rollupWatcher","cache","clearScreen","event","onChange","isConfigChange","isBehaviorChange","isResourcesChange","oldConfig","handlerBP","relativePath","cp","force","handlerRP","bgYellow","chokidarWatch","ignored","ignoreInitial","interval","otherManifestOption","f","readdir","fType","includeType","all","tscpath","runTsc","extraSupportedExtensions","extraExtensionsToRemove","cliParam","work","reject"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,7 @@
1
- import * as typescript from 'typescript';
2
- import { watch as watch$1 } from 'chokidar';
3
- import * as rollup from 'rollup';
4
- import { LanguagePlugin } from '@volar/language-core';
5
-
6
1
  declare const main: () => Promise<void>;
7
2
 
8
3
  declare const LanguageNames: string[];
9
- declare const cmdList: readonly ["c", "work", "help", "h", "init", "version", "build", "watch", "lang", "set-work-dir"];
4
+ declare const cmdList: readonly ["c", "work", "help", "h", "init", "version", "build", "watch", "lang", "set-work-dir", "publish", "unpublish", "install", "uninstall", "login"];
10
5
  interface language {
11
6
  description: string;
12
7
  help: {
@@ -164,15 +159,15 @@ declare class Input {
164
159
  static use(task: (name: string, ctrl: boolean, alt: boolean, raw: string) => void): void;
165
160
  }
166
161
 
167
- type index$2_Input = Input;
168
- declare const index$2_Input: typeof Input;
169
- declare const index$2_click: typeof click;
170
- declare const index$2_onEnd: typeof onEnd;
171
- declare namespace index$2 {
162
+ type index$1_Input = Input;
163
+ declare const index$1_Input: typeof Input;
164
+ declare const index$1_click: typeof click;
165
+ declare const index$1_onEnd: typeof onEnd;
166
+ declare namespace index$1 {
172
167
  export {
173
- index$2_Input as Input,
174
- index$2_click as click,
175
- index$2_onEnd as onEnd,
168
+ index$1_Input as Input,
169
+ index$1_click as click,
170
+ index$1_onEnd as onEnd,
176
171
  };
177
172
  }
178
173
 
@@ -191,137 +186,9 @@ interface lang extends language {
191
186
  declare const lang: Lang;
192
187
  declare let i18n: lang;
193
188
 
194
- declare namespace index$1 {
195
- export {
196
- i18n as default,
197
- };
198
- }
199
-
200
- /**
201
- * 运行 MCX TypeScript 编译器
202
- * 为 .mcx 文件提供 TypeScript 类型检查支持
203
- */
204
- declare function runTSC(tscpath?: string): void;
205
-
206
- declare class Build {
207
- private baseBuildDir;
208
- private resolve;
209
- private isWatch;
210
- currentConfig: MblerConfigData | null;
211
- srcDirs: {
212
- [key in 'behavior' | 'resources']: string;
213
- } | null;
214
- outdirs: {
215
- [key in 'behavior' | 'resources' | 'dist']: string;
216
- } | null;
217
- mcxTs: typeof typescript;
218
- mcxLanguagePluginCreator: ((ts: typeof typescript) => LanguagePlugin<unknown>) | null;
219
- constructor(opts: Record<string, string>, baseBuildDir: string, resolve: (a: number) => void, isWatch?: boolean);
220
- /**
221
- * Start the watch mode.
222
- * This will perform an initial build (if not already done) and then
223
- * start filesystem and rollup watchers.
224
- * Returns the watcher handles once they are created so that callers
225
- * (for example tests) can clean them up later.
226
- */
227
- watch(): Promise<null | undefined>;
228
- start(): Promise<void>;
229
- /**
230
- * Handles returned from the currently-active watchers.
231
- * Set by {@link createWatcher} and exposed via {@link getWatchers}
232
- * so that external callers can close them when necessary (e.g. tests).
233
- */
234
- private watchers;
235
- /**
236
- * Returns the watcher handles if watch mode has been started.
237
- * Can be safely called even before `watch()` has been invoked.
238
- */
239
- getWatchers(): {
240
- rollup: rollup.RollupWatcher;
241
- chokidar: ReturnType<typeof watch$1>;
242
- } | null;
243
- /**
244
- * Close any active watchers. The build process does not automatically
245
- * terminate the watchers unless the process exits; tests or CLI wrappers
246
- * can call this method to clean up resources.
247
- */
248
- closeWatchers(): void;
249
- private rollupPlugin;
250
- init: boolean;
251
- /**
252
- * Which modules are present in the current project.
253
- * - "behavior" when only behavior code exists
254
- * - "resources" when only resource files exist
255
- * - "all" when both are present
256
- * This field is populated during `handlerOtherAddon`.
257
- */
258
- module: 'behavior' | 'resources' | 'all' | null;
259
- /**
260
- * Determine whether a path refers to a regular file or a directory.
261
- * Follows symbolic links recursively. Throws if the path exists but
262
- * is not one of the expected types.
263
- *
264
- * @param filePath file system path to inspect
265
- * @returns "file" or "directory"
266
- */
267
- private fileType;
268
- /**
269
- * Perform a single build of the project located at {@link baseBuildDir}.
270
- * The process is roughly:
271
- * 1. load and validate the configuration file
272
- * 2. prepare source and output directory information
273
- * 3. copy addon files (behavior/resources)
274
- * 4. generate manifest.json files
275
- * 5. run rollup to bundle any script entry point
276
- *
277
- * If anything goes wrong the promise returned by the public wrapper
278
- * (`build()` function exported at the bottom of this file) will be
279
- * resolved with a non-zero code and appropriate log entries will be
280
- * emitted.
281
- */
282
- private build;
283
- /**
284
- * Create and return a Rollup build instance configured for the
285
- * project's script. The Rollup configuration mirrors the options
286
- * used by the CLI when running manual builds.
287
- *
288
- * Returns undefined if the project does not define a script section
289
- * (in which case nothing needs to be bundled).
290
- */
291
- private createRollup;
292
- /**
293
- * Internal helper invoked by {@link watch}.
294
- * Ensures a build has been run before starting the watchers.
295
- */
296
- private _watch;
297
- private isParent;
298
- private isChange;
299
- private createRollupWatcher;
300
- private onChange;
301
- private createWatcher;
302
- private handlerManifest;
303
- private loadData;
304
- /**
305
- * Copy the various files (behavior/resources) into the corresponding
306
- * output directories and determine which modules exist in the project
307
- * by inspecting the source directories.
308
- */
309
- private handlerOtherAddon;
310
- }
311
- declare function build(cliParam: CliParam, work: string): Promise<number>;
312
- declare function watch(cliParam: CliParam, work: string): Promise<number>;
313
-
314
- type index_Build = Build;
315
- declare const index_Build: typeof Build;
316
- declare const index_build: typeof build;
317
- declare const index_watch: typeof watch;
318
189
  declare namespace index {
319
190
  export {
320
- index_Build as Build,
321
- runTSC as McxTsc,
322
- index_build as build,
323
- Build as default,
324
- index_watch as watch,
191
+ i18n as default,
325
192
  };
326
193
  }
327
194
 
@@ -332,4 +199,4 @@ declare namespace index {
332
199
  */
333
200
  declare function defineConfig(config: MblerConfigData): MblerConfigData;
334
201
 
335
- export { index as Build, types as Types, main as cli, index$2 as commander, defineConfig, index$1 as i18n };
202
+ export { types as Types, main as cli, index$1 as commander, defineConfig, index as i18n };