{"version":3,"sources":["jsdelivr-header.js","/npm/minecraft-scripting-toolchain@0.1.0/index.js"],"names":[],"mappings":"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","file":"/npm/minecraft-scripting-toolchain@0.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/minecraft-scripting-toolchain@0.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const {series, parallel, src, dest, watch} = require(\"gulp\");\r\nconst path = require(\"path\");\r\nconst fs = require(\"fs\");\r\nconst clean = require(\"gulp-clean\");\r\nconst del = require(\"del\");\r\n\r\nclass MinecraftModBuilder {\r\n    constructor(modName) {\r\n        this._modName = modName;\r\n        this._destRoot = path.join(\r\n            process.env[\"LOCALAPPDATA\"],\r\n            \"Packages/Microsoft.MinecraftUWP_8wekyb3d8bbwe/LocalState/games/com.mojang\"\r\n        );\r\n\r\n        //script task factories\r\n        this.scriptTasks = []; \r\n        this.behaviorTasks = [];     \r\n        this.resourcesTasks = [];\r\n        this.installBehaviorTasks = [];\r\n        this.installResourcesTasks = [];\r\n\r\n        this.outDir = \"./built\"\r\n        this.scriptsDir = \"./src/scripts/\"\r\n        this.behaviorDir = \"./src/behaviors/\"\r\n        this.resourcesDir = \"./src/resources/\"\r\n    }\r\n\r\n    verifyMinecraftExists(cb) {\r\n        fs.stat(this._destRoot, (err) => {\r\n            if (!!err) {\r\n                cb(new Error(\"Minecraft Windows 10 edition is not installed\"))\r\n            }\r\n            cb();\r\n        });\r\n    }\r\n\r\n    cleanOutDir() {\r\n        return src(this.outDir, { read: false, allowEmpty: true }).pipe(clean());\r\n    }\r\n\r\n    scripts() {\r\n        let stream = src(\"*/*\", {cwd: this.scriptsDir})\r\n        stream = augmentPipe(stream, this.scriptTasks);\r\n        return stream.pipe(dest(path.join(this.outDir, \"behaviors/scripts\")));\r\n    }\r\n\r\n    behavior() {\r\n        let stream = src(\"**/*\", { cwd: this.behaviorDir })\r\n        stream = augmentPipe(stream, this.behaviorTasks);\r\n        return stream.pipe(dest(path.join(this.outDir, \"behaviors\")));\r\n    }\r\n\r\n    resources() {\r\n        let stream = src(\"**/*\", { cwd: this.resourcesDir })\r\n        stream = augmentPipe(stream, this.resourcesTasks);\r\n        return stream.pipe(dest(path.join(this.outDir, \"resources\")));\r\n    }\r\n\r\n    cleanBehavior() {\r\n        const destination = path.join(this._destRoot, \"development_behavior_packs\", this._modName);\r\n        return src(destination, { read: false, allowEmpty: true }).pipe(clean({force: true}));\r\n    }\r\n\r\n    installBehavior() {\r\n        let stream = src(\"**/*\", {cwd: path.join(this.outDir, \"behaviors\")})\r\n        stream = augmentPipe(stream, this.installBehaviorTasks);\r\n        const destination = path.join(this._destRoot, \"development_behavior_packs\", this._modName);\r\n        return stream.pipe(dest(destination));\r\n    }\r\n\r\n    cleanResources() {\r\n        const destination = path.join(this._destRoot, \"development_resource_packs\", this._modName);\r\n        return src(destination, { read: false, allowEmpty: true }).pipe(clean({force: true}));\r\n    }\r\n\r\n    installResources() {\r\n        let stream = src(\"**/*\", {cwd: path.join(this.outDir, \"resources\")})\r\n        stream = augmentPipe(stream, this.installResourcesTasks);\r\n        return stream.pipe(dest(path.join(this._destRoot, \"development_resource_packs\", this._modName)));\r\n    }\r\n\r\n    configureEverythingForMe() {\r\n        const builder = this;\r\n        const tasks = {};\r\n\r\n        tasks.clean = function clean() {\r\n            return builder.cleanOutDir();\r\n        }\r\n\r\n        tasks.scripts = function buildScripts() {\r\n            return builder.scripts();\r\n        };\r\n\r\n        tasks.behavior = function buildBehavior() {\r\n            return builder.behavior();\r\n        };\r\n\r\n        tasks.resources = function buildResources() {\r\n            return builder.resources();\r\n        };\r\n\r\n        tasks.verifyMinecraftExists = function verifyMinecraftExists(cb) {\r\n            return builder.verifyMinecraftExists(cb);\r\n        }\r\n\r\n        tasks.install_behaviour = series(\r\n            tasks.verifyMinecraftExists,\r\n            function cleanBehavior() {\r\n                return builder.cleanBehavior();\r\n            },\r\n            function installBehavior() {\r\n                return builder.installBehavior();\r\n            }\r\n        );\r\n\r\n        tasks.install_resources = series(\r\n            tasks.verifyMinecraftExists,\r\n            function cleanResources() {\r\n                return builder.cleanResources();\r\n            },\r\n            function installResources() {\r\n                return builder.installResources();\r\n            }\r\n        );\r\n\r\n        tasks.build = parallel(\r\n            tasks.scripts, \r\n            tasks.behavior, \r\n            tasks.resources\r\n        );\r\n        \r\n        tasks.rebuild = series(\r\n            function clean() {\r\n                return builder.cleanOutDir();\r\n            },\r\n            tasks.build            \r\n        )\r\n\r\n        tasks.install = series(\r\n            tasks.build,\r\n            parallel(\r\n                tasks.install_behaviour,\r\n                tasks.install_resources\r\n            )\r\n        );        \r\n\r\n        tasks.default = series(tasks.install);\r\n\r\n        function watchForUnlink(watcher) {\r\n            return watcher.on('unlink', function (filepath) {\r\n                var filePathFromSrc = path.relative(path.resolve('src'), filepath);\r\n                // Concatenating the 'build' absolute path used by gulp.dest in the scripts task\r\n                var destFilePath = path.resolve('build', filePathFromSrc);\r\n                del.sync(destFilePath);\r\n            });\r\n        }\r\n\r\n        const notify = function notify(cb) {\r\n            console.log(\"File Changed\\n\");\r\n            cb();\r\n        }\r\n\r\n        function watchFiles() {\r\n            watchForUnlink(watch('src/scripts/**/*', series(notify, tasks.scripts, tasks.install_behaviour)));\r\n            watchForUnlink(watch('src/behaviors/**/*', series(notify, tasks.behavior, tasks.install_behaviour)));\r\n            watchForUnlink(watch('src/resources/**/*', series(notify, tasks.resources, tasks.install_resources)));\r\n        }\r\n\r\n        tasks.watch = series(\r\n            tasks.clean,\r\n            tasks.install,\r\n            watchFiles\r\n        )\r\n\r\n        return tasks;\r\n    }\r\n}\r\n\r\nfunction toArray(collection, options) {\r\n    if (typeof collection === 'string') return (options && options.query ? toArray(document.querySelectorAll(collection)) : [collection])\r\n    if (typeof collection === 'undefined') return []\r\n    if (collection === null) return [null]\r\n    if (typeof window != 'undefined' && collection === window) return [window]\r\n    if (Array.isArray(collection)) return collection.slice()\r\n    if (typeof collection.length != 'number') return [collection]\r\n    if (typeof collection === 'function') return [collection]\r\n    if (collection.length === 0) return []\r\n    var arr = []\r\n    for (var i = 0; i < collection.length; i++) {\r\n      if (collection.hasOwnProperty(i) || i in collection) {\r\n        arr.push(collection[i])\r\n      }\r\n    }\r\n    if (arr.length === 0) return [collection]\r\n    return arr\r\n}\r\n\r\nfunction augmentPipe(stream, additionalActions) {\r\n    for (const action of toArray(additionalActions)) {\r\n        if (typeof action === \"function\") {\r\n            stream = stream.pipe(action());\r\n        } else {\r\n            stream = stream.pipe(action);\r\n        }\r\n    }\r\n    return stream;\r\n}\r\n\r\nmodule.exports = MinecraftModBuilder;"]}