diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..d0042fb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,15 @@ +image: ruby:2.7 + +workflow: + rules: + - if: "$CI_COMMIT_BRANCH" + +pages: + stage: deploy + script: + - mv .public public + artifacts: + paths: + - public + rules: + - if: '$CI_COMMIT_BRANCH == "development"' diff --git a/.public/index.html b/.public/index.html index cef4801..ea2d777 100644 --- a/.public/index.html +++ b/.public/index.html @@ -83,9 +83,33 @@
- +
+

Installation

+

+ You'll need a Foundry VTT License or GM access to a Foundry VTT + server. +

+

+

+

Setup

You can find System settings in the Configure Settings dialog you open from the sidebar

diff --git a/README.md b/README.md index 0d2cbcc..3131a0f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,22 @@ -# ACKS System for Foundry VTT (Unofficial) -All the features you need to play ACKS in Foundry VTT. +# Old School Essentials System for Foundry VTT (Unofficial) +All the features you need to play Old School Essentials or B/X Games in Foundry VTT. + +## Installation +You can find this Foundry VTT game system within Foundry VTT in the system browser. You could also download the latest archive in the package folder, or use the manifest link below.\ +https://gitlab.com/mesfoliesludiques/foundryvtt-ose/-/raw/master/src/system.json ## License -This Foundry VTT system requires ACKS Core Rules that you can find at http://autarch.co/buy-now. -This third party product is not affiliated with or approved by Autarch. +This Foundry VTT system requires Old-School Essentials Core Rules that you can find [here](https://necroticgnome.com). + +This third party product is not affiliated with or approved by Necrotic Gnome. \ +Old-School Essentials is a trademark of Necrotic Gnome.\ +The trademark and Old-School Essentials logo are used with permission of Necrotic Gnome, under license. ## Artwork -Weapon quality icons, and the Treasure chest are from Rexxard. Other graphics are from the Old School Essentials System for Foundry VTT (Unofficial) by U~man which can be found at https://gitlab.com/mesfoliesludiques/foundryvtt-ose +Weapon quality icons, and the Treasure chest are from [Rexxard](https://assetstore.unity.com/packages/2d/gui/icons/flat-skills-icons-82713). ## Contributions -If you like this work, please consider buying U~man a coffee at ko-fi -[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H21WMKA) +Any feedback is deeply appreciated. Please issue [tickets](https://gitlab.com/mesfoliesludiques/foundryvtt-ose/-/boards).\ +Feel free to grab a TO DO issue from the gitlab board. You can then do a merge request on the `development` branch. + +[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H21WMKA) \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..0023a64 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,492 @@ +const gulp = require("gulp"); +const fs = require("fs-extra"); +const path = require("path"); +const chalk = require("chalk"); +const archiver = require("archiver"); +const stringify = require("json-stringify-pretty-compact"); +const typescript = require("typescript"); + +const ts = require("gulp-typescript"); +const less = require("gulp-less"); +const sass = require("gulp-sass"); +const git = require("gulp-git"); + +const argv = require("yargs").argv; + +sass.compiler = require("sass"); + +function getConfig() { + const configPath = path.resolve(process.cwd(), "foundryconfig.json"); + let config; + + if (fs.existsSync(configPath)) { + config = fs.readJSONSync(configPath); + return config; + } else { + return; + } +} + +function getManifest() { + const json = {}; + + if (fs.existsSync("src")) { + json.root = "src"; + } else { + json.root = "dist"; + } + + const modulePath = path.join(json.root, "module.json"); + const systemPath = path.join(json.root, "system.json"); + + if (fs.existsSync(modulePath)) { + json.file = fs.readJSONSync(modulePath); + json.name = "module.json"; + } else if (fs.existsSync(systemPath)) { + json.file = fs.readJSONSync(systemPath); + json.name = "system.json"; + } else { + return; + } + + return json; +} + +/** + * TypeScript transformers + * @returns {typescript.TransformerFactory} + */ +function createTransformer() { + /** + * @param {typescript.Node} node + */ + function shouldMutateModuleSpecifier(node) { + if ( + !typescript.isImportDeclaration(node) && + !typescript.isExportDeclaration(node) + ) + return false; + if (node.moduleSpecifier === undefined) return false; + if (!typescript.isStringLiteral(node.moduleSpecifier)) return false; + if ( + !node.moduleSpecifier.text.startsWith("./") && + !node.moduleSpecifier.text.startsWith("../") + ) + return false; + if (path.extname(node.moduleSpecifier.text) !== "") return false; + return true; + } + + /** + * Transforms import/export declarations to append `.js` extension + * @param {typescript.TransformationContext} context + */ + function importTransformer(context) { + return node => { + /** + * @param {typescript.Node} node + */ + function visitor(node) { + if (shouldMutateModuleSpecifier(node)) { + if (typescript.isImportDeclaration(node)) { + const newModuleSpecifier = typescript.createLiteral( + `${node.moduleSpecifier.text}.js` + ); + return typescript.updateImportDeclaration( + node, + node.decorators, + node.modifiers, + node.importClause, + newModuleSpecifier + ); + } else if (typescript.isExportDeclaration(node)) { + const newModuleSpecifier = typescript.createLiteral( + `${node.moduleSpecifier.text}.js` + ); + return typescript.updateExportDeclaration( + node, + node.decorators, + node.modifiers, + node.exportClause, + newModuleSpecifier + ); + } + } + return typescript.visitEachChild(node, visitor, context); + } + + return typescript.visitNode(node, visitor); + }; + } + + return importTransformer; +} + +const tsConfig = ts.createProject("tsconfig.json", { + getCustomTransformers: prgram => ({ + after: [createTransformer()] + }) +}); + +/********************/ +/* BUILD */ +/********************/ + +/** + * Build TypeScript + */ +function buildTS() { + return gulp + .src("src/**/*.ts") + .pipe(tsConfig()) + .pipe(gulp.dest("dist")); +} + +/** + * Build Less + */ +function buildLess() { + return gulp + .src("src/*.less") + .pipe(less()) + .pipe(gulp.dest("dist")); +} + +/** + * Build SASS + */ +function buildSASS() { + return gulp + .src("src/*.scss") + .pipe(sass().on("error", sass.logError)) + .pipe(gulp.dest("dist")); +} + +/** + * Copy static files + */ +async function copyFiles() { + const statics = [ + "lang", + "fonts", + "assets", + "templates", + "module", + "packs", + "ose.js", + "module.json", + "system.json", + "template.json" + ]; + try { + for (const file of statics) { + if (fs.existsSync(path.join("src", file))) { + await fs.copy(path.join("src", file), path.join("dist", file)); + } + } + return Promise.resolve(); + } catch (err) { + Promise.reject(err); + } +} + +/** + * Watch for changes for each build step + */ +function buildWatch() { + gulp.watch("src/**/*.ts", { ignoreInitial: false }, buildTS); + gulp.watch("src/**/*.less", { ignoreInitial: false }, buildLess); + gulp.watch("src/**/*.scss", { ignoreInitial: false }, buildSASS); + gulp.watch( + ["src/fonts", "src/templates", "src/*.json", "src/**/*.js"], + { ignoreInitial: false }, + copyFiles + ); +} + +/********************/ +/* CLEAN */ +/********************/ + +/** + * Remove built files from `dist` folder + * while ignoring source files + */ +async function clean() { + const name = path.basename(path.resolve(".")); + const files = []; + + // If the project uses TypeScript + if (fs.existsSync(path.join("src", `${name}.ts`))) { + files.push( + "lang", + "templates", + "assets", + "packs", + "module", + `${name}.js`, + "module.json", + "system.json", + "template.json" + ); + } + + // If the project uses Less or SASS + if ( + fs.existsSync(path.join("src", `${name}.less`)) || + fs.existsSync(path.join("src", `${name}.scss`)) + ) { + files.push("fonts", `${name}.css`); + } + + console.log(" ", chalk.yellow("Files to clean:")); + console.log(" ", chalk.blueBright(files.join("\n "))); + + // Attempt to remove the files + try { + for (const filePath of files) { + await fs.remove(path.join("dist", filePath)); + } + return Promise.resolve(); + } catch (err) { + Promise.reject(err); + } +} + +/********************/ +/* LINK */ +/********************/ + +/** + * Link build to User Data folder + */ +async function linkUserData() { + const name = path.basename(path.resolve(".")); + const config = fs.readJSONSync("foundryconfig.json"); + + let destDir; + try { + if ( + fs.existsSync(path.resolve(".", "dist", "module.json")) || + fs.existsSync(path.resolve(".", "src", "module.json")) + ) { + destDir = "modules"; + } else if ( + fs.existsSync(path.resolve(".", "dist", "system.json")) || + fs.existsSync(path.resolve(".", "src", "system.json")) + ) { + destDir = "systems"; + } else { + throw Error( + `Could not find ${chalk.blueBright( + "module.json" + )} or ${chalk.blueBright("system.json")}` + ); + } + + let linkDir; + if (config.dataPath) { + if (!fs.existsSync(path.join(config.dataPath, "Data"))) + throw Error("User Data path invalid, no Data directory found"); + + linkDir = path.join(config.dataPath, "Data", destDir, name); + } else { + throw Error("No User Data path defined in foundryconfig.json"); + } + + if (argv.clean || argv.c) { + console.log( + chalk.yellow(`Removing build in ${chalk.blueBright(linkDir)}`) + ); + + await fs.remove(linkDir); + } else if (!fs.existsSync(linkDir)) { + console.log(chalk.green(`Copying build to ${chalk.blueBright(linkDir)}`)); + await fs.symlink(path.resolve("./dist"), linkDir); + } + return Promise.resolve(); + } catch (err) { + Promise.reject(err); + } +} + +/*********************/ +/* PACKAGE */ +/*********************/ + +/** + * Package build + */ +async function packageBuild() { + const manifest = getManifest(); + + try { + // Remove the package dir without doing anything else + if (argv.clean || argv.c) { + console.log(chalk.yellow("Removing all packaged files")); + await fs.remove("package"); + return; + } + + // Ensure there is a directory to hold all the packaged versions + await fs.ensureDir("package"); + + // Initialize the zip file + const zipName = `${manifest.file.name}-v${manifest.file.version}.zip`; + const zipFile = fs.createWriteStream(path.join("package", zipName)); + const zip = archiver("zip", { zlib: { level: 9 } }); + + zipFile.on("close", () => { + console.log(chalk.green(zip.pointer() + " total bytes")); + console.log(chalk.green(`Zip file ${zipName} has been written`)); + return Promise.resolve(); + }); + + zip.on("error", err => { + throw err; + }); + + zip.pipe(zipFile); + + // Add the directory with the final code + zip.directory("dist/", manifest.file.name); + + zip.finalize(); + } catch (err) { + Promise.reject(err); + } +} + +/*********************/ +/* PACKAGE */ +/*********************/ + +/** + * Update version and URLs in the manifest JSON + */ +function updateManifest(cb) { + const packageJson = fs.readJSONSync("package.json"); + const config = getConfig(), + manifest = getManifest(), + rawURL = config.rawURL, + repoURL = config.repository, + manifestRoot = manifest.root; + + if (!config) cb(Error(chalk.red("foundryconfig.json not found"))); + if (!manifest) cb(Error(chalk.red("Manifest JSON not found"))); + if (!rawURL || !repoURL) + cb( + Error(chalk.red("Repository URLs not configured in foundryconfig.json")) + ); + + try { + const version = argv.update || argv.u; + + /* Update version */ + + const versionMatch = /^(\d{1,}).(\d{1,}).(\d{1,})$/; + const currentVersion = manifest.file.version; + let targetVersion = ""; + + if (!version) { + cb(Error("Missing version number")); + } + + if (versionMatch.test(version)) { + targetVersion = version; + } else { + targetVersion = currentVersion.replace( + versionMatch, + (substring, major, minor, patch) => { + if (version === "major") { + return `${Number(major) + 1}.0.0`; + } else if (version === "minor") { + return `${major}.${Number(minor) + 1}.0`; + } else if (version === "patch") { + return `${major}.${minor}.${Number(minor) + 1}`; + } else { + return ""; + } + } + ); + } + + if (targetVersion === "") { + return cb(Error(chalk.red("Error: Incorrect version arguments."))); + } + + if (targetVersion === currentVersion) { + return cb( + Error( + chalk.red("Error: Target version is identical to current version.") + ) + ); + } + console.log(`Updating version number to '${targetVersion}'`); + + packageJson.version = targetVersion; + manifest.file.version = targetVersion; + + /* Update URLs */ + + const result = `${rawURL}/v${manifest.file.version}/package/${manifest.file.name}-v${manifest.file.version}.zip`; + + manifest.file.url = repoURL; + manifest.file.manifest = `${rawURL}/master/${manifestRoot}/${manifest.name}`; + manifest.file.download = result; + + const prettyProjectJson = stringify(manifest.file, { maxLength: 35 }); + + fs.writeJSONSync("package.json", packageJson, { spaces: 2 }); + fs.writeFileSync( + path.join(manifest.root, manifest.name), + prettyProjectJson, + "utf8" + ); + + return cb(); + } catch (err) { + cb(err); + } +} + +function gitAdd() { + return gulp.src("package").pipe(git.add({ args: "--no-all" })); +} + +function gitCommit() { + return gulp.src("./*").pipe( + git.commit(`v${getManifest().file.version}`, { + args: "-a", + disableAppendPaths: true + }) + ); +} + +function gitTag() { + const manifest = getManifest(); + return git.tag( + `v${manifest.file.version}`, + `Updated to ${manifest.file.version}`, + err => { + if (err) throw err; + } + ); +} + +const execGit = gulp.series(gitAdd, gitCommit, gitTag); + +const execBuild = gulp.parallel(buildTS, buildLess, buildSASS, copyFiles); + +exports.build = gulp.series(clean, execBuild); +exports.watch = buildWatch; +exports.clean = clean; +exports.link = linkUserData; +exports.package = packageBuild; +exports.publish = gulp.series( + clean, + updateManifest, + execBuild, + packageBuild, + execGit +); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8664db9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5699 @@ +{ + "name": "ose", + "version": "0.0.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/jquery": { + "version": "3.3.34", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.34.tgz", + "integrity": "sha512-lW9vsVL53Xu/Nj4gi2hNmHGc4u3KKghjqTkAlO0kF5GIOPxbqqnQpgqJBzmn3yXLrPqHb6cmNJ6URnS23Vtvbg==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, + "@types/node": { + "version": "13.9.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.8.tgz", + "integrity": "sha512-1WgO8hsyHynlx7nhP1kr0OFzsgKz5XDQL+Lfc3b1Q3qIln/n8cKD4m09NJ0+P1Rq7Zgnc7N0+SsMnoD1rEb0kA==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, + "@types/socket.io": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-2.1.4.tgz", + "integrity": "sha512-cI98INy7tYnweTsUlp8ocveVdAxENUThO0JsLSCs51cjOP2yV5Mqo5QszMDPckyRRA+PO6+wBgKvGvHUCc23TQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accord": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/accord/-/accord-0.29.0.tgz", + "integrity": "sha512-3OOR92FTc2p5/EcOzPcXp+Cbo+3C15nV9RXHlOUBCBpHhcB+0frbSNR9ehED/o7sTcyGVtqGJpguToEdlXhD0w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "glob": "^7.0.5", + "indx": "^0.2.3", + "lodash.clone": "^4.3.2", + "lodash.defaults": "^4.0.1", + "lodash.flatten": "^4.2.0", + "lodash.merge": "^4.4.0", + "lodash.partialright": "^4.1.4", + "lodash.pick": "^4.2.1", + "lodash.uniq": "^4.3.0", + "resolve": "^1.5.0", + "semver": "^5.3.0", + "uglify-js": "^2.8.22", + "when": "^3.7.8" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "any-shell-escape": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", + "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", + "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^2.6.3", + "buffer-crc32": "^0.2.1", + "glob": "^7.1.4", + "readable-stream": "^3.4.0", + "tar-stream": "^2.1.0", + "zip-stream": "^2.1.2" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "buffer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compress-commons": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", + "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^3.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "crc32-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", + "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^3.4.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "foundry-pc-types": { + "version": "gitlab:foundry-projects/foundry-pc/foundry-pc-types#28c70ad5348b51f48a86540ab7fba48153ff4725", + "from": "gitlab:foundry-projects/foundry-pc/foundry-pc-types", + "dev": true, + "requires": { + "@types/jquery": "^3.3.31", + "@types/socket.io": "^2.1.4" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globule": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.12", + "minimatch": "~3.0.2" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + } + } + }, + "gulp-git": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/gulp-git/-/gulp-git-2.10.1.tgz", + "integrity": "sha512-qiXYYDXchMZU/AWAgtphi4zbJb/0gXgfPw7TlZwu/7qPS3Bdcc3zbVe1B0xY9S8on6RQTmWoi+KaTGACIXQeNg==", + "dev": true, + "requires": { + "any-shell-escape": "^0.1.1", + "fancy-log": "^1.3.2", + "lodash.template": "^4.4.0", + "plugin-error": "^1.0.1", + "require-dir": "^1.0.0", + "strip-bom-stream": "^3.0.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" + } + }, + "gulp-less": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz", + "integrity": "sha512-hmM2k0FfQp7Ptm3ZaqO2CkMX3hqpiIOn4OHtuSsCeFym63F7oWlEua5v6u1cIjVUKYsVIs9zPg9vbqTEb/udpA==", + "dev": true, + "requires": { + "accord": "^0.29.0", + "less": "2.6.x || ^3.7.1", + "object-assign": "^4.0.1", + "plugin-error": "^0.1.2", + "replace-ext": "^1.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + } + } + }, + "gulp-sass": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.0.2.tgz", + "integrity": "sha512-q8psj4+aDrblJMMtRxihNBdovfzGrXJp1l4JU0Sz4b/Mhsi2DPrKFYCGDwjIWRENs04ELVHxdOJQ7Vs98OFohg==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "lodash.clonedeep": "^4.3.2", + "node-sass": "^4.8.3", + "plugin-error": "^1.0.1", + "replace-ext": "^1.0.0", + "strip-ansi": "^4.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "gulp-typescript": { + "version": "6.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-6.0.0-alpha.1.tgz", + "integrity": "sha512-KoT0TTfjfT7w3JItHkgFH1T/zK4oXWC+a8xxKfniRfVcA0Fa1bKrIhztYelYmb+95RB80OLMBreknYkdwzdi2Q==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1", + "plugin-error": "^1.0.1", + "source-map": "^0.7.3", + "through2": "^3.0.1", + "vinyl": "^2.2.0", + "vinyl-fs": "^3.0.3" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indx": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz", + "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-pretty-compact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "less": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", + "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.partialright": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", + "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", + "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true, + "optional": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-1.2.0.tgz", + "integrity": "sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.3.tgz", + "integrity": "sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + } + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "^0.2.1" + } + }, + "strip-bom-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", + "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "tar-stream": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", + "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "dev": true, + "requires": { + "bl": "^4.0.1", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + } + }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs-parser": { + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + }, + "zip-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^2.1.1", + "readable-stream": "^3.4.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e216987 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "private": true, + "name": "ose", + "version": "0.0.2", + "description": "", + "scripts": { + "package": "gulp package", + "build": "gulp build && gulp link", + "build:watch": "gulp watch", + "clean": "gulp clean && gulp link --clean", + "update": "npm install --save-dev gitlab:foundry-projects/foundry-pc/foundry-pc-types" + }, + "author": "", + "license": "", + "devDependencies": { + "archiver": "^3.1.1", + "chalk": "^3.0.0", + "foundry-pc-types": "gitlab:foundry-projects/foundry-pc/foundry-pc-types", + "fs-extra": "^8.1.0", + "gulp": "^4.0.2", + "gulp-git": "^2.10.0", + "gulp-less": "^4.0.1", + "gulp-sass": "^4.0.2", + "gulp-typescript": "^6.0.0-alpha.1", + "json-stringify-pretty-compact": "^2.0.0", + "sass": "^1.25.0", + "typescript": "^3.7.5", + "yargs": "^15.1.0" + }, + "dependencies": {} +} diff --git a/package/ose-v0.1.zip b/package/ose-v0.1.zip new file mode 100644 index 0000000..e836a3a Binary files /dev/null and b/package/ose-v0.1.zip differ diff --git a/package/ose-v0.2.zip b/package/ose-v0.2.zip new file mode 100644 index 0000000..b9b350e Binary files /dev/null and b/package/ose-v0.2.zip differ diff --git a/package/ose-v0.3.zip b/package/ose-v0.3.zip new file mode 100644 index 0000000..cb4d4d7 Binary files /dev/null and b/package/ose-v0.3.zip differ diff --git a/package/ose-v0.4.zip b/package/ose-v0.4.zip new file mode 100644 index 0000000..7ea54cb Binary files /dev/null and b/package/ose-v0.4.zip differ diff --git a/package/ose-v0.5.zip b/package/ose-v0.5.zip new file mode 100644 index 0000000..28b790f Binary files /dev/null and b/package/ose-v0.5.zip differ diff --git a/package/ose-v0.6.zip b/package/ose-v0.6.zip new file mode 100644 index 0000000..c940b4b Binary files /dev/null and b/package/ose-v0.6.zip differ diff --git a/package/ose-v0.7.zip b/package/ose-v0.7.zip new file mode 100644 index 0000000..e4acd1a Binary files /dev/null and b/package/ose-v0.7.zip differ diff --git a/package/ose-v0.8.zip b/package/ose-v0.8.zip new file mode 100644 index 0000000..1746c13 Binary files /dev/null and b/package/ose-v0.8.zip differ diff --git a/package/ose-v0.9.1.zip b/package/ose-v0.9.1.zip new file mode 100644 index 0000000..303f83e Binary files /dev/null and b/package/ose-v0.9.1.zip differ diff --git a/package/ose-v0.9.2.zip b/package/ose-v0.9.2.zip new file mode 100644 index 0000000..70d24f3 Binary files /dev/null and b/package/ose-v0.9.2.zip differ diff --git a/package/ose-v0.9.3.zip b/package/ose-v0.9.3.zip new file mode 100644 index 0000000..ab0c649 Binary files /dev/null and b/package/ose-v0.9.3.zip differ diff --git a/package/ose-v0.9.4.zip b/package/ose-v0.9.4.zip new file mode 100644 index 0000000..aba3e3e Binary files /dev/null and b/package/ose-v0.9.4.zip differ diff --git a/package/ose-v0.9.5.zip b/package/ose-v0.9.5.zip new file mode 100644 index 0000000..781bb07 Binary files /dev/null and b/package/ose-v0.9.5.zip differ diff --git a/package/ose-v0.9.6.zip b/package/ose-v0.9.6.zip new file mode 100644 index 0000000..a623407 Binary files /dev/null and b/package/ose-v0.9.6.zip differ diff --git a/package/ose-v0.9.7.zip b/package/ose-v0.9.7.zip new file mode 100644 index 0000000..71c2824 Binary files /dev/null and b/package/ose-v0.9.7.zip differ diff --git a/package/ose-v0.9.8.zip b/package/ose-v0.9.8.zip new file mode 100644 index 0000000..18e7802 Binary files /dev/null and b/package/ose-v0.9.8.zip differ diff --git a/package/ose-v0.9.9.zip b/package/ose-v0.9.9.zip new file mode 100644 index 0000000..1ec0b50 Binary files /dev/null and b/package/ose-v0.9.9.zip differ diff --git a/package/ose-v0.9.zip b/package/ose-v0.9.zip new file mode 100644 index 0000000..2142999 Binary files /dev/null and b/package/ose-v0.9.zip differ diff --git a/package/ose-v1.0.1.zip b/package/ose-v1.0.1.zip new file mode 100644 index 0000000..8a7240a Binary files /dev/null and b/package/ose-v1.0.1.zip differ diff --git a/package/ose-v1.0.2.zip b/package/ose-v1.0.2.zip new file mode 100644 index 0000000..a8212ec Binary files /dev/null and b/package/ose-v1.0.2.zip differ diff --git a/package/ose-v1.0.3.zip b/package/ose-v1.0.3.zip new file mode 100644 index 0000000..ecb3e5a Binary files /dev/null and b/package/ose-v1.0.3.zip differ diff --git a/src/LICENSE.txt b/src/LICENSE.txt index cf1d586..26039bc 100644 --- a/src/LICENSE.txt +++ b/src/LICENSE.txt @@ -593,7 +593,7 @@ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPACKS. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. @@ -641,7 +641,7 @@ the "copyright" line and a pointer to where the full notice is found. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPACKS. See the + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License diff --git a/src/acks.css b/src/acks.css deleted file mode 100644 index d699d6f..0000000 --- a/src/acks.css +++ /dev/null @@ -1,1092 +0,0 @@ -/* ----------------------------------------- */ -/* Sheet Styles */ -/* ----------------------------------------- */ -@keyframes notify { - from { - text-shadow: none; - } - to { - text-shadow: -1px -1px 4px #4b4a44, 1px -1px 4px #4b4a44, -1px 1px 4px #4b4a44, 1px 1px 4px #4b4a44; - } -} -.acks.sheet.actor { - /* Header Summary Details */ -} -.acks.sheet.actor .blinking { - font-weight: bold; - animation: 0.8s ease-in 1s infinite alternate notify; -} -.acks.sheet.actor .panel { - border: 1px solid rgba(0, 0, 0, 0.9); -} -.acks.sheet.actor .panel .panel-title { - color: whitesmoke; - background: url("/systems/acks/assets/back.png"); - line-height: 12px; - height: 20px; - text-align: center; - margin: 0; - padding: 4px; - display: flex; -} -.acks.sheet.actor .panel .panel-title h4 { - flex: 1; -} -.acks.sheet.actor .panel .panel-title .item-controls { - font-size: 12px; - flex: 0 0 18px; -} -.acks.sheet.actor .panel .panel-content { - margin: 0; - padding: 0; -} -.acks.sheet.actor .header-details h1 input { - margin: 0 0 10px 0; -} -.acks.sheet.actor .profile-img { - border: 0; - flex: 0 0 145px; - height: 145px; -} -.acks.sheet.actor .summary { - flex: 0 0 100%; - height: 44px; - margin: 0; - padding: 0; - list-style: none; - border-top: none; -} -.acks.sheet.actor .summary li { - height: calc(100% - 6px); - float: left; - margin: 2px 0; - padding: 0; - line-height: 30px; - color: #4b4a44; - position: relative; -} -.acks.sheet.actor .summary li label { - line-height: 10px; - position: absolute; - font-size: 10px; - color: #4b4a44; - bottom: 0; - left: 12px; -} -.acks.sheet.actor .summary li.notify input { - font-weight: bold; - animation: 0.8s ease-in 1s infinite alternate notify; -} -.acks.sheet.actor .sheet-tabs { - position: absolute; - transform: rotate(90deg); - top: 365px; - right: -169px; - width: 320px; - z-index: -1; -} -.acks.sheet.actor .sheet-tabs .item { - padding: 2px 10px 0; - margin-left: -5px; - text-indent: 4px; - background: url("/ui/parchment.jpg"); - border-top-right-radius: 4px; - border-top-left-radius: 80px; - box-shadow: 0 0 6px 1px rgba(0, 0, 0, 0.9); - font-size: 12px; - filter: brightness(0.9); -} -.acks.sheet.actor .sheet-tabs .item.active { - filter: none; - z-index: 1; - font-weight: bold; - text-shadow: none; - margin-bottom: -1px; -} -.acks.sheet.actor .sheet-body { - padding: 5px 0; - height: calc(100% - 140px); -} -.acks.sheet.actor .sheet-body .tab { - height: 100%; -} -.acks.sheet.actor .sheet-body .attributes { - list-style: none; - margin: 0; - padding: 0; - justify-content: space-evenly; -} -.acks.sheet.actor .sheet-body .attributes .attribute { - position: relative; - border: 1px solid #7a7971; - box-shadow: 0 0 2px #7a7971; -} -.acks.sheet.actor .sheet-body .attributes .attribute .attribute-name { - color: whitesmoke; - padding: 2px; - margin: 0; - border: 1px solid rgba(0, 0, 0, 0.9); - background: url("/systems/acks/assets/back.png"); - text-align: center; -} -.acks.sheet.actor .sheet-body .attributes .attribute.ability-score { - height: 40px; -} -.acks.sheet.actor .sheet-body .attributes .attribute.ability-score .attribute-value { - line-height: 36px; -} -.acks.sheet.actor .sheet-body .attributes .attribute .attribute-value { - text-align: center; - padding: 4px; -} -.acks.sheet.actor .sheet-body .attributes .attribute .attribute-value .sep { - flex: 0 0 5px; - line-height: 24px; -} -.acks.sheet.actor .sheet-body .attribute-group { - flex: 0 0 88px; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes { - display: flex; - flex-direction: column; - justify-content: space-evenly; - height: 100%; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute { - display: flex; - flex-direction: row; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute .attribute-name { - width: 40px; - margin: 0; - line-height: 35px; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute .attribute-name a { - margin: auto; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute.saving-throw .attribute-name { - line-height: 16px; - width: 80px; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute.saving-throw .attribute-value { - line-height: 29px; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute .attribute-value { - width: 45px; - flex-grow: 0; -} -.acks.sheet.actor .sheet-body .attribute-group .attributes .attribute .attribute-value input { - padding: 0; -} -.acks.sheet.actor .sheet-body .inventory { - overflow: auto; -} -.acks.sheet.actor .sheet-body .inventory .header-spells { - line-height: 30px; -} -.acks.sheet.actor .sheet-body .inventory .item-titles { - text-align: center; - padding: 4px 0; - border: 1px solid rgba(0, 0, 0, 0.9); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.9); - font-weight: 300; - font-size: 13px; - background: url("/systems/acks/assets/back.png"); - color: white; -} -.acks.sheet.actor .sheet-body .inventory .item-titles .item-name { - text-align: left; - text-indent: 8px; -} -.acks.sheet.actor .sheet-body .inventory .item-titles input { - color: white; - margin: auto; -} -.acks.sheet.actor .sheet-body .inventory .item-list { - list-style: none; - margin: 0; - padding: 0; -} -.acks.sheet.actor .sheet-body .inventory .item-list > * { - line-height: 30px; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-summary { - font-size: 13px; - padding: 0 4px; - line-height: 20px; - box-shadow: 0 0 3px rgba(0, 0, 0, 0.9); -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-summary .tag-list { - padding: 0; - margin: 0; - list-style: none; - display: flex; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-summary .tag-list .tag { - margin: 1px 2px; - border: 1px solid #d8d6c9; - font-size: 11px; - line-height: 14px; - background: #4b4a44; - padding: 1px 4px; - color: whitesmoke; - border-radius: 3px; - box-shadow: 0 0 1px #d8d6c9; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-header { - padding: 0px; - margin-bottom: 0px; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-entry:nth-child(even) .item { - background: rgba(0, 0, 0, 0.1); -} -.acks.sheet.actor .sheet-body .inventory .item-list .item { - line-height: 30px; - height: 30px; - overflow: hidden; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-equipped { - grid-area: item-equipped; - justify-self: center; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-rollable:hover .item-image { - background-image: url("/icons/svg/d20-grey.svg") !important; - cursor: pointer; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-rollable .item-image:hover { - background-image: url("/icons/svg/d20-black.svg") !important; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-name { - text-indent: 8px; - text-align: left; - overflow: hidden; - height: 30px; - margin: 0; - line-height: 30px; - flex-basis: 90px; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-name .item-image { - flex-basis: 30px; - flex-grow: 0; - background-size: contain; - background-repeat: no-repeat; -} -.acks.sheet.actor .sheet-body .inventory .item-list .item-name h4 { - margin: 0; -} -.acks.sheet.actor .sheet-body .inventory .icon-row img { - border: none; - margin: 3px 1px; - flex: 0 0 24px; -} -.acks.sheet.actor .sheet-body .inventory .icon-row span { - font-size: 12px; - flex-grow: 0; -} -.acks.sheet.actor .sheet-body .inventory .field-flex { - flex: 1; - text-align: left; - font-size: 12px; - text-indent: 8px; -} -.acks.sheet.actor .sheet-body .inventory .field-longer { - text-indent: 8px; - text-align: left; - flex-basis: 90px; - font-size: 12px; -} -.acks.sheet.actor .sheet-body .inventory .field-long { - flex-basis: 65px; - flex-grow: 0; - text-align: center; - font-size: 12px; -} -.acks.sheet.actor .sheet-body .inventory .field-long.memorize input { - border-bottom: none; - margin: 3px 0; -} -.acks.sheet.actor .sheet-body .inventory .field-short { - font-size: 12px; - flex-basis: 45px; - flex-grow: 0; - text-align: center; -} -.acks.sheet.actor .sheet-body .inventory .field-short.quantity { - display: flex; -} -.acks.sheet.actor .sheet-body .inventory .field-short.quantity input { - margin: 3px 0; - border-bottom: none; -} -.acks.sheet.actor .sheet-body .inventory .item-caret { - flex: 0 0 10px; - margin: 0 4px; - cursor: pointer; -} -.acks.sheet.actor .sheet-body .inventory .item-controls { - font-size: 12px; - flex-basis: 50px; - flex-grow: 0; - text-align: right; - margin-right: 4px; -} -.acks.sheet.actor .sheet-body .inventory .item-controls .item-unequipped { - color: rgba(0, 0, 0, 0.2); -} -.acks.sheet.actor .sheet-body .inventory .item-controls a:hover { - color: #44191A; - text-shadow: 0 0 5px #d8d6c9, 1px 0 5px #d8d6c9, 0 1px 5px #d8d6c9, 1px 1px 5px #d8d6c9; -} -.acks.sheet.actor .sheet-body .inventory.spells .item-titles { - line-height: 24px; -} -.acks.sheet.actor .sheet-body .inventory.spells .item-controls { - flex-basis: 45px; -} -.acks.sheet.actor .sheet-body .editor { - height: 300px; - padding: 4px; -} - -.acks.roll-dialog .roll-details { - font-weight: bold; - text-align: center; -} - -.acks.dialog.creator .attribute-list .form-fields { - flex: 0 0 50px; -} -.acks.dialog.creator .attribute-list .form-fields input { - text-align: center; - font-weight: bold; -} -.acks.dialog.creator .roll-stats { - flex: 0 0 65px; - padding: 5px; - margin-left: 4px; - border-left: 1px solid #7a7971; -} -.acks.dialog.creator .roll-stats .form-group .form-fields span { - text-align: center; - line-height: 24px; - flex: 0; -} - -.acks.dialog.party-sheet { - min-width: 250px; - min-height: 250px; -} -.acks.dialog.party-sheet .window-content { - padding: 0; -} -.acks.dialog.party-sheet .header { - color: whitesmoke; - background: url("/systems/acks/assets/back.png"); - padding: 4px 0; - line-height: 20px; - text-align: left; - padding: 2px 10px; -} -.acks.dialog.party-sheet .header .item-controls .item-control { - padding: 0 2px; -} -.acks.dialog.party-sheet .header .item-controls .item-control button { - line-height: 15px; - margin: 0 1px; - background: rgba(255, 255, 240, 0.8); - border: 1px solid #b5b3a4; -} -.acks.dialog.party-sheet .actor-list { - margin: 0; - overflow: auto; - list-style: none; - padding: 0; -} -.acks.dialog.party-sheet .actor-list .actor { - border-bottom: 1px solid #7a7971; - border-top: 1px solid #7a7971; - margin-bottom: 2px; - font-size: 12px; - text-align: center; -} -.acks.dialog.party-sheet .actor-list .actor .fas { - padding: 0 2px; - font-size: 10px; -} -.acks.dialog.party-sheet .actor-list .actor .fields .field-row:nth-child(odd) { - background-color: rgba(0, 0, 0, 0.1); -} -.acks.dialog.party-sheet .actor-list .actor .field-img { - flex: 0 0 50px; - position: relative; -} -.acks.dialog.party-sheet .actor-list .actor .field-img:hover .img-btns button { - display: block; -} -.acks.dialog.party-sheet .actor-list .actor .field-img img { - border: none; - width: 45px; - height: 45px; -} -.acks.dialog.party-sheet .actor-list .actor .field-img .img-btns { - position: absolute; - bottom: 6px; - left: 3px; - width: 45px; - height: 12px; -} -.acks.dialog.party-sheet .actor-list .actor .field-img .img-btns button { - display: none; - cursor: pointer; - font-size: 10px; - height: 18px; - width: 14px; - line-height: 13px; - margin: 0 1px; - border: 1px solid #4b4a44; - padding: 2px; - background: #d8d6c9; - box-shadow: inset 0 0px 3px #7a7971; -} -.acks.dialog.party-sheet .field-name { - text-align: left; - text-indent: 10px; -} - -#sidebar #actors .directory-header .header-search .acks-party-sheet { - width: 32px; - text-align: center; - line-height: 20px; -} -#sidebar #actors .directory-header .header-search input { - width: calc(100% - 45px); -} - -.acks.dialog.modifiers .attribute-bonuses label { - font-weight: bold; -} -.acks.dialog.modifiers .attribute-bonuses ol { - list-style: outside; -} - -.sheet.roll-table-config .sheet-header .toggle-treasure { - flex: 0 0 30px; - font-size: 26px; - line-height: 25px; - color: white; - margin: 0 2px 5px 8px; - border-radius: 8px; - background: url("/systems/acks/assets/treasure.png") no-repeat center; - background-size: cover; - padding: 5px 8px; - cursor: pointer; - filter: grayscale(1) opacity(0.5); -} -.sheet.roll-table-config .sheet-header .toggle-treasure.active, .sheet.roll-table-config .sheet-header .toggle-treasure:hover { - filter: none; -} -@keyframes activated { - from { - background: none; - } - to { - background: rgba(0, 0, 0, 0.12); - } -} -.sheet.roll-table-config .results .table-result.active { - animation: 0.7s infinite alternate activated; -} - -#settings .acks.game-license { - font-size: 12px; -} -#settings .acks.game-license .button { - text-align: center; - margin: 4px; -} -#settings .acks.game-license .footer { - text-align: right; -} - -.acks.chat-block { - margin: 0; -} -.acks.chat-block .chat-header { - height: 46px; - margin: 4px 0; - background: url("/systems/acks/assets/back.png"); - border: 1px solid black; - border-radius: 3px; - color: white; - padding: 2px; - box-shadow: 0 0 2px #fff inset; -} -.acks.chat-block .chat-header .chat-title { - margin: 4px 0; - height: 30px; - overflow: hidden; -} -.acks.chat-block .chat-header .chat-title h2 { - border: none; - line-height: 34px; - margin: 0; - text-indent: 10px; - font-size: 16px; - word-break: break-all; -} -.acks.chat-block .chat-header .chat-img { - flex: 0 0 42px; - background-size: cover; -} -.acks.chat-block .chat-target { - text-align: right; - font-style: italic; - padding: 2px; -} -.acks.chat-block .chat-details { - padding: 4px; - font-size: 13px; -} -.acks.chat-block .roll-result { - font-size: 13px; - text-align: center; -} -.acks.chat-block .roll-result.roll-success { - color: #18520b; -} -.acks.chat-block .roll-result.roll-fail { - color: #aa0200; -} -.acks.chat-block .damage-roll { - position: relative; -} -.acks.chat-block .damage-roll .dice-damage { - display: none; - position: absolute; - line-height: 24px; - text-align: center; - background: rgba(0, 0, 0, 0.1); - border-radius: 3px; - box-shadow: 0 0 2px #fff inset; - bottom: 1px; - right: 10px; -} -.acks.chat-block .damage-roll .dice-damage button { - padding: 2px 5px; - width: 22px; - line-height: 14px; - height: 22px; - cursor: pointer; -} -.acks.chat-block .damage-roll:hover .dice-damage { - display: block; -} - -.acks.chat-card { - font-style: normal; - font-size: 12px; -} -.acks.chat-card .card-header { - padding: 3px 0; - border-top: 2px groove #fff; - border-bottom: 2px groove #fff; -} -.acks.chat-card .card-header img { - flex: 0 0 36px; - margin-right: 5px; - border: none; -} -.acks.chat-card .card-header h3 { - flex: 1; - margin: 0; - line-height: 36px; - color: #4b4a44; -} -.acks.chat-card .card-header h3:hover { - color: #111; -} -.acks.chat-card .card-content { - margin: 5px 0; -} -.acks.chat-card .card-content .treasure-list { - padding: 0; - list-style: none; -} -.acks.chat-card .card-content .treasure-list .treasure { - line-height: 36px; -} -.acks.chat-card .card-content .treasure-list .treasure img { - flex: 0 0 36px; - border: none; -} -.acks.chat-card .card-content .treasure-list .treasure div { - text-indent: 10px; - font-size: 14px; - font-weight: bold; -} -.acks.chat-card .card-content h3 { - font-size: 12px; - margin: 0; - font-weight: bold; -} -.acks.chat-card .card-content > * { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.acks.chat-card .card-buttons { - margin: 5px 0; -} -.acks.chat-card .card-buttons span { - display: block; - line-height: 28px; - text-align: center; - border: 1px solid #7a7971; -} -.acks.chat-card .card-buttons button { - font-size: 12px; - height: 24px; - line-height: 20px; - margin: 2px 0; -} -.acks.chat-card .card-footer { - padding: 3px 0 0; - border-top: 2px groove #fff; -} -.acks.chat-card .card-footer span { - border-right: 2px groove #fff; - padding: 0 5px 0 0; - font-size: 10px; -} -.acks.chat-card .card-footer span:last-child { - border-right: none; - padding-right: 0; -} - -.dice-roll .dice-total.success { - color: inherit; - background: #c7d0c0; - border: 1px solid #006c00; -} -.dice-roll .dice-total.failure { - color: inherit; - background: #ffdddd; - border: 1px solid #6e0000; -} -.dice-roll .dice-total.critical { - color: green; -} -.dice-roll .dice-total.fumble { - color: red; -} - -/* ----------------------------------------- */ -/* Sheet Styles */ -/* ----------------------------------------- */ -/* ----------------------------------------- */ -/* Basic Structure */ -/* ----------------------------------------- */ -.acks.sheet.actor.character { - min-width: 450px; - min-height: 550px; - /* ----------------------------------------- */ - /* Sheet Header */ - /* ----------------------------------------- */ - /* ----------------------------------------- */ - /* Sheet Body */ - /* ----------------------------------------- */ - /* Encumbrance Bar */ - /* ----------------------------------------- */ - /* Item Controls */ - /* ----------------------------------------- */ -} -.acks.sheet.actor.character .sheet-header .xp-bonus { - top: -15px; - right: 3px; - color: #7a7971; - font-size: 10px; - position: absolute; -} -.acks.sheet.actor.character .sheet-body .tab { - height: 100%; -} -.acks.sheet.actor.character .sheet-body .attributes-tab { - justify-content: space-between; - height: 100%; -} -.acks.sheet.actor.character .sheet-body .attributes-tab .attribute-group { - position: relative; -} -.acks.sheet.actor.character .sheet-body .attributes-tab .attribute-group .modifiers-btn { - position: absolute; - left: 0; - top: -8px; -} -.acks.sheet.actor.character .sheet-body .resources { - display: flex; - justify-content: space-evenly; - flex-direction: column; -} -.acks.sheet.actor.character .sheet-body .resources .attribute { - flex: 0 0 55px; -} -.acks.sheet.actor.character .sheet-body .resources .attribute.attribute-secondaries { - flex: 0 0 40px; - margin-bottom: 5px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .languages { - margin: 2px; - flex: 0 0 130px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .languages .item-titles .item-controls { - flex: 0 0 20px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .languages ol { - height: 100px; - overflow: auto; - list-style: none; - padding: 5px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .languages ol li { - margin: 0; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .languages ol li:hover .item-controls { - display: flex; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .languages ol li .item-controls { - flex: 0 0 20px; - display: none; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .description { - margin: 2px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .description .editor { - height: 110px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory .description .editor .tox .tox-tbtn { - height: 24px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory.notes { - margin: 2px; -} -.acks.sheet.actor.character .sheet-body .notes-tab .inventory.notes .editor { - height: 150px; -} -.acks.sheet.actor.character .sheet-body .health { - height: 70px; - position: relative; -} -.acks.sheet.actor.character .sheet-body .health.armor-class { - background: url("/systems/acks/assets/shield.png") no-repeat center; - background-size: 70px; -} -.acks.sheet.actor.character .sheet-body .health.armor-class .shield { - text-align: right; - padding: 0 14px; - font-size: 18px; -} -.acks.sheet.actor.character .sheet-body .health .health-value { - font-size: 16px; - text-align: center; - font-weight: bolder; - text-shadow: 0 0 2px white, 0 1px 2px white, 1px 0 2px white, 1px 1px 2px white; -} -.acks.sheet.actor.character .sheet-body .health .health-top { - border-bottom: none; - position: absolute; - font-size: 24px; - top: 10px; - width: 70px; - left: calc(50% - 35px); -} -.acks.sheet.actor.character .sheet-body .health .health-bottom { - border-bottom: none; - position: absolute; - bottom: 8px; - width: 40px; - right: calc(50% + -20px); -} -.acks.sheet.actor.character .sheet-body .health .health-empty { - background: url("/systems/acks/assets/heart_empty.png") no-repeat center; - background-size: 70px; - background-position: top; -} -.acks.sheet.actor.character .sheet-body .health .health-full { - background: url("/systems/acks/assets/heart_full.png") no-repeat center; - background-size: 70px; - background-position: bottom; -} -.acks.sheet.actor.character .sheet-body .saving-throw .attribute-value.flat { - line-height: 30px; -} -.acks.sheet.actor.character .sheet-body .exploration .attribute { - margin: 4px; -} -.acks.sheet.actor.character .sheet-body .exploration .attribute .attribute-name { - text-align: left; - flex: 1 0 60px; - line-height: 25px; - font-size: 12px; -} -.acks.sheet.actor.character .encumbrance { - height: 12px; - background: url("/systems/acks/assets/back.png"); - margin: 1px 15px 0 1px; - border: 1px solid rgba(0, 0, 0, 0.9); - border-radius: 3px; - position: relative; -} -.acks.sheet.actor.character .encumbrance .encumbrance-bar { - position: absolute; - background: rgba(255, 0, 0, 0.6); - height: 10px; - border: 1px solid #777; - border-radius: 2px; -} -.acks.sheet.actor.character .encumbrance .encumbrance-label { - height: 10px; - padding: 0 5px; - position: absolute; - top: 0; - right: 10px; - font-size: 13px; - line-height: 12px; - text-align: right; - color: #EEE; - text-shadow: 0 0 5px #000; -} -.acks.sheet.actor.character .encumbrance .encumbrance-breakpoint { - display: block; - position: absolute; -} -.acks.sheet.actor.character .encumbrance .encumbrance-breakpoint.encumbrance-25 { - left: 25%; -} -.acks.sheet.actor.character .encumbrance .encumbrance-breakpoint.encumbrance-50 { - left: 50%; -} -.acks.sheet.actor.character .encumbrance .encumbrance-breakpoint.encumbrance-75 { - left: 75%; -} -.acks.sheet.actor.character .encumbrance .arrow-up { - bottom: 0; - width: 0; - height: 0; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-bottom: 4px solid #d8d6c9; -} -.acks.sheet.actor.character .encumbrance .arrow-down { - top: 0; - width: 0; - height: 0; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-top: 4px solid #d8d6c9; -} -.acks.sheet.actor.character .encumbrance.encumbered .arrow-up { - border-bottom: 4px solid rgba(0, 0, 0, 0.9); -} -.acks.sheet.actor.character .encumbrance.encumbered .arrow-down { - border-top: 4px solid rgba(0, 0, 0, 0.9); -} - -.acks.window-content .collapsed { - display: none; -} -.acks.window-content .margin { - margin: 5px; -} -.acks.window-content input { - text-align: center; -} -.acks.window-content input[type=number] { - -moz-appearance: textfield; -} -.acks.window-content input[type=number]::-webkit-inner-spin-button, -.acks.window-content input[type=number]::-webkit-outer-spin-button { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - margin: 0; -} -.acks.window-content input:not([type=checkbox]) { - background: none; - border: none; - border-radius: 0; - border-bottom: 1px solid #7a7971; -} -.acks.window-content input:not([type=checkbox]):hover:not(:disabled), .acks.window-content input:not([type=checkbox]):focus:not(:disabled) { - box-shadow: none; - background: linear-gradient(transparent, rgba(0, 0, 0, 0.1)); -} -.acks.window-content a:hover { - text-shadow: none; -} -.acks.window-content .resizable { - overflow: auto; -} - -.acks.sheet.item .sheet-header h1 input { - margin: 6px 2%; -} -.acks.sheet.item .sheet-header .details { - flex: 0 0 70px; -} -.acks.sheet.item .sheet-header .details label { - flex: 0 0 20px; -} -.acks.sheet.item .sheet-header .profile-img { - border: none; - flex: 0 0 84px; - height: 84px; -} -.acks.sheet.item .sheet-header .tag-list { - margin: 0; - height: 24px; - overflow: auto; - list-style: none; - padding: 1px; - display: flex; - flex-wrap: wrap; -} -.acks.sheet.item .sheet-header .tag-list .tag { - background: #4b4a44; - border-radius: 5px; - color: whitesmoke; - padding: 1px 5px; - height: 18px; - box-shadow: 0 0 3px #d8d6c9; - margin: 0 2px; -} -.acks.sheet.item .sheet-header .tag-list .tag i { - font-size: 8px; - vertical-align: top; - color: #d8d6c9; -} -.acks.sheet.item .sheet-body .stats { - flex: 0 0 80px; - border-right: 1px groove rgba(0, 0, 0, 0.2); - padding-right: 2px; - font-size: 13px; -} -.acks.sheet.item .sheet-body .stats .form-group { - margin: 1px; - border: 1px solid rgba(0, 0, 0, 0.15); -} -.acks.sheet.item .sheet-body .stats .form-group label { - background: rgba(0, 0, 0, 0.1); - padding: 0 4px; -} -.acks.sheet.item .sheet-body .stats .form-group input { - border-bottom: none; - margin: auto 0; -} -.acks.sheet.item .sheet-body .stats .form-group .form-fields.range .sep { - flex: 0 0 1px; - background: #7a7971; - margin: 4px 0; -} -.acks.sheet.item .sheet-body .stats .form-group.attack-type { - text-align: center; - padding: 2px; - font-size: 15px; -} -.acks.sheet.item .sheet-body .stats .form-group.attack-type a { - color: #969696; -} -.acks.sheet.item .sheet-body .stats .form-group.attack-type a.active, .acks.sheet.item .sheet-body .stats .form-group.attack-type a :hover { - color: rgba(0, 0, 0, 0.9); -} -.acks.sheet.item .sheet-body .stats .block-input { - display: flex; - flex-direction: column; - text-align: center; -} -.acks.sheet.item .sheet-body .stats.narrow .form-group input { - height: 18px; -} -.acks.sheet.item .sheet-body .description .editor { - height: 250px; -} -.acks.sheet.item .sheet-body .description .editor .editor-content { - padding: 0 5px; -} - -.acks.actor.monster { - min-height: 565px; - min-width: 460px; -} -.acks.actor.monster .header-details .summary .treasure-table { - text-align: center; -} -.acks.actor.monster .header-details .summary .check-field:hover .check { - display: block; -} -.acks.actor.monster .header-details .summary .check-field .check { - display: none; - line-height: 35px; - flex: 0 0 20px; - position: absolute; - font-size: 12px; -} -.acks.actor.monster .header-details .summary .check-field .check:hover { - color: rgba(0, 0, 0, 0.9); -} -.acks.actor.monster .sheet-body .editor { - height: 300px; -} -.acks.actor.monster .sheet-body .attributes-tab { - display: flex; - justify-content: space-around; - flex-direction: column; - height: 100%; -} -.acks.actor.monster .sheet-body .attributes-tab .attribute-row .attributes { - justify-content: space-between; -} -.acks.actor.monster .sheet-body .attributes-tab .attribute-row .attribute-group { - margin: 5px; -} -.acks.actor.monster .sheet-body .attributes-tab .attributes .attribute { - flex: 0 0 60px; -} -.acks.actor.monster .sheet-body .attributes-tab .attributes .attribute.health { - flex: 0 0 85px; -} -.acks.actor.monster .sheet-body .attributes-tab .attributes .attribute.saving-throw { - flex: 0 0 40px; -} -.acks.actor.monster .attributes .attribute.health { - position: relative; -} -.acks.actor.monster .attributes .attribute.health .attribute-name .hp-roll { - font-size: 12px; - position: absolute; - right: 5px; - top: 5px; - color: #d8d6c9; -} -.acks.actor.monster .attributes .attribute.health .attribute-name .hp-roll:hover { - color: white; -} -.acks.actor.monster .attribute-group .attacks-description { - margin: 2px; - padding: 0; - text-align: center; -} -.acks.actor.monster .attribute-group .attacks-description label { - color: #7a7971; - font-size: 10px; -} -.acks.actor.monster .panel.abilities .item-list .item-entry .item-pattern { - flex: 0 0 15px; - cursor: pointer; -} - -/* ----------------------------------------- */ -/* Sheet Styles */ -/* ----------------------------------------- */ - -/*# sourceMappingURL=acks.css.map */ diff --git a/src/lang/en.json b/src/lang/en.json index 492a593..b886a8c 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -1,276 +1,280 @@ { - "ACKS.Edit": "Edit", - "ACKS.Delete": "Delete", - "ACKS.Show": "Show", - "ACKS.Add": "Add", - "ACKS.Ok": "Ok", - "ACKS.Update": "Update", - "ACKS.Reset": "Reset", - "ACKS.Cancel": "Cancel", - "ACKS.Roll": "Roll", - "ACKS.Success": "Success", - "ACKS.Failure": "Failure", + "OSE.Edit": "Edit", + "OSE.Delete": "Delete", + "OSE.Show": "Show", + "OSE.Add": "Add", + "OSE.Ok": "Ok", + "OSE.Update": "Update", + "OSE.Reset": "Reset", + "OSE.Cancel": "Cancel", + "OSE.Roll": "Roll", + "OSE.Success": "Success", + "OSE.Failure": "Failure", - "ACKS.dialog.tweaks": "Tweaks", - "ACKS.dialog.partysheet": "Party Overview", - "ACKS.dialog.selectActors": "Select PCs", - "ACKS.dialog.dealXP": "Deal XP", - "ACKS.dialog.generator": "Character generator", - "ACKS.dialog.generateSaves": "Generate Saves", - "ACKS.dialog.generateScores": "Generate Scores", - "ACKS.dialog.generateScore": "Rolling {score} ({count})", + "OSE.dialog.tweaks": "Tweaks", + "OSE.dialog.partysheet": "Party Overview", + "OSE.dialog.selectActors": "Select PCs", + "OSE.dialog.dealXP": "Deal XP", + "OSE.dialog.generator": "Character generator", + "OSE.dialog.generateSaves": "Generate Saves", + "OSE.dialog.generateScores": "Generate Scores", + "OSE.dialog.generateScore": "Rolling {score} ({count})", - "ACKS.Formula": "Formula", - "ACKS.SitMod": "Situational Modifier", - "ACKS.Modifier": "Modifier", - "ACKS.Modifiers": "Modifiers", - "ACKS.RollMode": "Roll Mode", - "ACKS.RollExample": "e.g. +1d4", + "OSE.Formula": "Formula", + "OSE.SitMod": "Situational Modifier", + "OSE.Modifier": "Modifier", + "OSE.Modifiers": "Modifiers", + "OSE.RollMode": "Roll Mode", + "OSE.RollExample": "e.g. +1d4", - "ACKS.roll.formula": "{label} roll", - "ACKS.roll.appearing": "Appearing roll ({type})", - "ACKS.roll.morale": "Morale check", - "ACKS.roll.hd": "Hit Dice roll", - "ACKS.roll.attacksWith": "Attacks with {name}", - "ACKS.roll.attacks": "{name} attacks!", - "ACKS.roll.save": "{save} Save", - "ACKS.roll.details.save": "Roll 1d20 >= {save} for success", - "ACKS.roll.attribute": "{attribute} check", - "ACKS.roll.details.attribute": "Roll 1d20 <= {score} for success", - "ACKS.roll.exploration": "{exploration} test", - "ACKS.roll.details.exploration": "Roll 1d6 <= {expl} for success", - "ACKS.roll.reaction": "Reaction roll", - "ACKS.roll.initiative": "Group {group} rolls for Initiative!", - "ACKS.roll.individualInit": "{name} rolls for Initiative!", + "OSE.roll.formula": "{label} roll", + "OSE.roll.appearing": "Appearing roll ({type})", + "OSE.roll.morale": "Morale check", + "OSE.roll.hd": "Hit Dice roll", + "OSE.roll.attacksWith": "Attacks with {name}", + "OSE.roll.attacks": "{name} attacks!", + "OSE.roll.save": "{save} Save", + "OSE.roll.details.save": "Roll 1d20 >= {save} for success", + "OSE.roll.attribute": "{attribute} check", + "OSE.roll.details.attribute": "Roll 1d20 <= {score} for success", + "OSE.roll.exploration": "{exploration} test", + "OSE.roll.details.exploration": "Roll 1d6 <= {expl} for success", + "OSE.roll.reaction": "Reaction roll", + "OSE.roll.initiative": "Group {group} rolls for Initiative!", + "OSE.roll.individualInit": "{name} rolls for Initiative!", - "ACKS.table.treasure.roll": "Roll Treasure", + "OSE.table.treasure.roll": "Roll Treasure", - "ACKS.details.name": "Name", - "ACKS.details.class": "Class", - "ACKS.details.title": "Title", - "ACKS.details.alignment": "Alignment", - "ACKS.details.level": "Level", - "ACKS.details.experience.base": "Experience", - "ACKS.details.experience.bonus": "Bonus Experience", - "ACKS.details.experience.next": "Next level", - "ACKS.details.experience.share": "Experience Share", - "ACKS.details.experience.award": "XP Award", - "ACKS.details.treasure": "Treasure type", - "ACKS.details.treasureTable": "Table", - "ACKS.details.treasureTableHint": "Drop a rollable table here to roll the monster treasure", - "ACKS.details.morale": "Morale", - "ACKS.details.reaction": "Reaction", - "ACKS.details.appearing": "NA", + "OSE.details.name": "Name", + "OSE.details.class": "Class", + "OSE.details.title": "Title", + "OSE.details.alignment": "Alignment", + "OSE.details.level": "Level", + "OSE.details.experience.base": "Experience", + "OSE.details.experience.bonus": "Bonus Experience", + "OSE.details.experience.next": "Next level", + "OSE.details.experience.share": "Experience Share", + "OSE.details.experience.award": "XP Award", + "OSE.details.treasure": "Treasure type", + "OSE.details.treasureTable": "Table", + "OSE.details.treasureTableHint": "Drop a rollable table here to roll the monster treasure", + "OSE.details.morale": "Morale", + "OSE.details.reaction": "Reaction", + "OSE.details.appearing": "NA", - "ACKS.Attack": "Attack", - "ACKS.Encumbrance": "Encumbrance", + "OSE.Attack": "Attack", + "OSE.Encumbrance": "Encumbrance", - "ACKS.Retainer": "Retainer", - "ACKS.RetainerWage": "Wage", - "ACKS.RetainerUpkeep": "Upkeep", - "ACKS.Loyalty": "Loyalty Rating", - "ACKS.LoyaltyShort": "LR", + "OSE.Retainer": "Retainer", + "OSE.RetainerWage": "Wage", + "OSE.RetainerUpkeep": "Upkeep", + "OSE.Loyalty": "Loyalty Rating", + "OSE.LoyaltyShort": "LR", - "ACKS.scores.str.long": "Strength", - "ACKS.scores.str.short": "STR", - "ACKS.scores.wis.long": "Wisdom", - "ACKS.scores.wis.short": "WIS", - "ACKS.scores.int.long": "Intelligence", - "ACKS.scores.int.short": "INT", - "ACKS.scores.dex.long": "Dexterity", - "ACKS.scores.dex.short": "DEX", - "ACKS.scores.con.long": "Constitution", - "ACKS.scores.con.short": "CON", - "ACKS.scores.cha.long": "Charisma", - "ACKS.scores.cha.short": "CHA", + "OSE.scores.str.long": "Strength", + "OSE.scores.str.short": "STR", + "OSE.scores.wis.long": "Wisdom", + "OSE.scores.wis.short": "WIS", + "OSE.scores.int.long": "Intelligence", + "OSE.scores.int.short": "INT", + "OSE.scores.dex.long": "Dexterity", + "OSE.scores.dex.short": "DEX", + "OSE.scores.con.long": "Constitution", + "OSE.scores.con.short": "CON", + "OSE.scores.cha.long": "Charisma", + "OSE.scores.cha.short": "CHA", - "ACKS.saves.death.short": "D", - "ACKS.saves.death.long": "Poison & Death", - "ACKS.saves.wand.short": "W", - "ACKS.saves.wand.long": "Staffs & Wands", - "ACKS.saves.paralysis.short": "P", - "ACKS.saves.paralysis.long": "Paralysis & Petrify", - "ACKS.saves.breath.short": "B", - "ACKS.saves.breath.long": "Blast & Breath", - "ACKS.saves.spell.short": "S", - "ACKS.saves.spell.long": "Spells", - "ACKS.saves.magic.long": "Bonus vs Magic", + "OSE.saves.death.short": "D", + "OSE.saves.death.long": "Death Poison", + "OSE.saves.wand.short": "W", + "OSE.saves.wand.long": "Wands", + "OSE.saves.paralysis.short": "P", + "OSE.saves.paralysis.long": "Paralysis Petrify", + "OSE.saves.breath.short": "B", + "OSE.saves.breath.long": "Breath Attacks", + "OSE.saves.spell.short": "S", + "OSE.saves.spell.long": "Spells Rods Staves", + "OSE.saves.magic.long": "Bonus vs Magic", + "OSE.saves.magic.short": "vs Magic", - "ACKS.Health": "Hit Points", - "ACKS.HealthMax": "Maximum Hit Points", - "ACKS.HealthShort": "HP", - "ACKS.HitDice": "Hit Dice", - "ACKS.HitDiceShort": "HD", + "OSE.Health": "Hit Points", + "OSE.HealthMax": "Maximum Hit Points", + "OSE.HealthShort": "HP", + "OSE.HitDice": "Hit Dice", + "OSE.HitDiceShort": "HD", - "ACKS.movement.base": "Movement Rate", - "ACKS.movement.short": "MV", - "ACKS.movement.details": "Movement Details", - "ACKS.movement.encounter.long": "Encounter Movement Rate", - "ACKS.movement.encounter.short": "En", - "ACKS.movement.overland.long": "Overland Movement Rate", - "ACKS.movement.overland.short": "Ov", - "ACKS.movement.exploration.short": "Ex", - "ACKS.movement.exploration.long": "Exploration Movement Rate", + "OSE.movement.base": "Movement Rate", + "OSE.movement.short": "MV", + "OSE.movement.details": "Movement Details", + "OSE.movement.encounter.long": "Encounter Movement Rate", + "OSE.movement.encounter.short": "En", + "OSE.movement.overland.long": "Overland Movement Rate", + "OSE.movement.overland.short": "Ov", + "OSE.movement.exploration.short": "Ex", + "OSE.movement.exploration.long": "Exploration Movement Rate", - "ACKS.ArmorClassNaked": "Naked Armor Class", - "ACKS.ArmorClass": "Armor Class", - "ACKS.ArmorClassShort": "AC", - "ACKS.AscArmorClassShort": "AAC", - "ACKS.ArmorClassBonus": "Armor Class Bonus", - "ACKS.Thac0": "THAC0", - "ACKS.ABShort": "AB", - "ACKS.AB": "Attack Bonus", - "ACKS.MeleeShort": "MEL", - "ACKS.Melee": "Melee", - "ACKS.MeleeBonus": "Melee Bonus", - "ACKS.MissileShort": "MIS", - "ACKS.Missile": "Missile", - "ACKS.MissileBonus": "Missile Bonus", - "ACKS.Initiative": "Initiative", - "ACKS.InitiativeBonus": "Initiative Bonus", - "ACKS.InitiativeShort": "INIT", - "ACKS.Attacks": "Attacks Usable per Round", - "ACKS.AttacksShort": "ATT", - "ACKS.Damage": "Damage", - "ACKS.Spellcaster": "Spellcaster", + "OSE.ArmorClassNaked": "Naked Armor Class", + "OSE.ArmorClass": "Armor Class", + "OSE.ArmorClassShort": "AC", + "OSE.AscArmorClassShort": "AAC", + "OSE.ArmorClassBonus": "Armor Class Bonus", + "OSE.Thac0": "THAC0", + "OSE.ABShort": "AB", + "OSE.AB": "Attack Bonus", + "OSE.MeleeShort": "MEL", + "OSE.Melee": "Melee", + "OSE.MeleeBonus": "Melee Bonus", + "OSE.MissileShort": "MIS", + "OSE.Missile": "Missile", + "OSE.MissileBonus": "Missile Bonus", + "OSE.Initiative": "Initiative", + "OSE.InitiativeBonus": "Initiative Bonus", + "OSE.InitiativeShort": "INIT", + "OSE.Attacks": "Attacks Usable per Round", + "OSE.AttacksShort": "ATT", + "OSE.Damage": "Damage", + "OSE.Spellcaster": "Spellcaster", - "ACKS.Language": "Language", - "ACKS.SpokenLanguages": "Spoken Languages", - "ACKS.Literacy": "Literacy", - "ACKS.Literate": "Literate", - "ACKS.LiteracyBasic": "Basic", - "ACKS.Illiterate": "Illiterate", - "ACKS.NativeBroken": "Native (Broken)", - "ACKS.Native": "Native", - "ACKS.NativePlus1": "Native + 1", - "ACKS.NativePlus2": "Native + 2", - "ACKS.NativePlus3": "Native + 3", + "OSE.Language": "Language", + "OSE.SpokenLanguages": "Spoken Languages", + "OSE.Literacy": "Literacy", + "OSE.Literate": "Literate", + "OSE.LiteracyBasic": "Basic", + "OSE.Illiterate": "Illiterate", + "OSE.NativeBroken": "Native (Broken)", + "OSE.Native": "Native", + "OSE.NativePlus1": "Native + 1", + "OSE.NativePlus2": "Native + 2", + "OSE.NativePlus3": "Native + 3", - "ACKS.NPCReaction": "NPC Reaction", - "ACKS.RetainersMax": "#Retainers", + "OSE.NPCReaction": "NPC Reaction", + "OSE.RetainersMax": "#Retainers", - "ACKS.category.saves": "Saves", - "ACKS.category.attributes": "Attributes", - "ACKS.category.inventory": "Inventory", - "ACKS.category.abilities": "Abilities", - "ACKS.category.spells": "Spells", - "ACKS.category.notes": "Notes", - "ACKS.category.languages": "Languages", - "ACKS.category.description": "Description", - "ACKS.category.equipment": "Equipment", + "OSE.category.saves": "Saves", + "OSE.category.attributes": "Attributes", + "OSE.category.inventory": "Inventory", + "OSE.category.abilities": "Abilities", + "OSE.category.spells": "Spells", + "OSE.category.notes": "Notes", + "OSE.category.languages": "Languages", + "OSE.category.description": "Description", + "OSE.category.equipment": "Equipment", - "ACKS.Setting.Initiative": "Initiative", - "ACKS.Setting.InitiativeHint": "Grouped or individual initiative. Unique individual is only rolled at the start of the combat", - "ACKS.Setting.InitiativeOnce": "Unique individual Initiative", - "ACKS.Setting.InitiativeReroll": "Roll individual Initiative each Round", - "ACKS.Setting.InitiativeReset": "Reset individual Initiative each Round", - "ACKS.Setting.InitiativeGroup": "Grouped Initiative", - "ACKS.Setting.AscendingAC": "Ascending Armor Class", - "ACKS.Setting.AscendingACHint": "The more the better", - "ACKS.Setting.Morale": "Enable monsters Morale Rating", - "ACKS.Setting.MoraleHint": "Morale Rating is shown on monster sheets", - "ACKS.Setting.Encumbrance": "Encumbrance", - "ACKS.Setting.EncumbranceHint": "Choose the way encumbrance is calculated", - "ACKS.Setting.EncumbranceDisabled": "Disabled", - "ACKS.Setting.EncumbranceBasic": "Basic", - "ACKS.Setting.EncumbranceDetailed": "Detailed", - "ACKS.Setting.EncumbranceComplete": "Complete", - "ACKS.Setting.MovementAuto": "Calculate Movement", - "ACKS.Setting.SignificantTreasure": "Significant Treasure Weight", - "ACKS.Setting.SignificantTreasureHint": "Weight at which treasure will reduce the movement, only useful for basic encumbrance", + "OSE.Setting.Initiative": "Initiative", + "OSE.Setting.InitiativeHint": "Grouped or individual initiative.", + "OSE.Setting.InitiativeIndividual": "Individual initiative", + "OSE.Setting.InitiativeGroup": "Grouped Initiative", + "OSE.Setting.RerollInitiative": "Initiative persistence", + "OSE.Setting.RerollInitiativeHint": "Keeps, resets or rerolls initiative each round", + "OSE.Setting.InitiativeKeep": "Keep for each round", + "OSE.Setting.InitiativeReroll": "Reroll each round", + "OSE.Setting.InitiativeReset": "Reset each round", + "OSE.Setting.AscendingAC": "Ascending Armor Class", + "OSE.Setting.AscendingACHint": "The more the better", + "OSE.Setting.Morale": "Enable monsters Morale Rating", + "OSE.Setting.MoraleHint": "Morale Rating is shown on monster sheets", + "OSE.Setting.Encumbrance": "Encumbrance", + "OSE.Setting.EncumbranceHint": "Choose the way encumbrance is calculated", + "OSE.Setting.EncumbranceDisabled": "Disabled", + "OSE.Setting.EncumbranceBasic": "Basic", + "OSE.Setting.EncumbranceDetailed": "Detailed", + "OSE.Setting.EncumbranceComplete": "Complete", + "OSE.Setting.MovementAuto": "Calculate Movement", + "OSE.Setting.SignificantTreasure": "Significant Treasure Weight", + "OSE.Setting.SignificantTreasureHint": "Weight at which treasure will reduce the movement, only useful for basic encumbrance", - "ACKS.items.Equip": "Equip", - "ACKS.items.Unequip": "Unequip", - "ACKS.items.Misc": "Misc", - "ACKS.items.Weapons": "Weapons", - "ACKS.items.Treasure": "Treasure", - "ACKS.items.Armors": "Armors", - "ACKS.items.Weight": "Wgt.", - "ACKS.items.Qualities": "Qualities", - "ACKS.items.Notes": "Notes", - "ACKS.items.Cost": "Cost", - "ACKS.items.Quantity": "Qt.", - "ACKS.items.Roll": "Roll", - "ACKS.items.BlindRoll": "Blind", - "ACKS.items.RollTarget": "Target", - "ACKS.items.RollType": "Type", - "ACKS.items.Damage": "Damage", - "ACKS.items.ArmorAC": "AC", - "ACKS.items.ArmorAAC": "AAC", - "ACKS.items.Bonus": "Bonus", - "ACKS.items.AtkBonus": "Attack Bonus", - "ACKS.items.roundAttacks": "Attacks Spent this Round", - "ACKS.items.roundAttacksMax": "Maximum Attacks per Round", - "ACKS.items.resetAttacks": "Reset all Attacks per Round", - "ACKS.items.hasShield": "Has a Shield bonus", - "ACKS.items.typeTag": "Type a comma separated list of tag e.g 'Melee,Missile (5’–10’ / 11’–20’ / 21’–30’)' and press ENTER", - "ACKS.items.enterTag": "Tags", - "ACKS.items.pattern": "Attack pattern marker", + "OSE.items.Equip": "Equip", + "OSE.items.Unequip": "Unequip", + "OSE.items.Misc": "Misc", + "OSE.items.Weapons": "Weapons", + "OSE.items.Treasure": "Treasure", + "OSE.items.Armors": "Armors", + "OSE.items.Weight": "Wgt.", + "OSE.items.Qualities": "Qualities", + "OSE.items.Notes": "Notes", + "OSE.items.Cost": "Cost", + "OSE.items.Quantity": "Qt.", + "OSE.items.Roll": "Roll", + "OSE.items.BlindRoll": "Blind", + "OSE.items.RollTarget": "Target", + "OSE.items.RollType": "Type", + "OSE.items.Damage": "Damage", + "OSE.items.ArmorAC": "AC", + "OSE.items.ArmorAAC": "AAC", + "OSE.items.Bonus": "Bonus", + "OSE.items.AtkBonus": "Attack Bonus", + "OSE.items.roundAttacks": "Attacks Spent this Round", + "OSE.items.roundAttacksMax": "Maximum Attacks per Round", + "OSE.items.resetAttacks": "Reset all Attacks per Round", + "OSE.items.hasShield": "Has a Shield bonus", + "OSE.items.typeTag": "Type a comma separated list of tag e.g 'Melee,Missile (5’–10’ / 11’–20’ / 21’–30’)' and press ENTER", + "OSE.items.enterTag": "Tags", + "OSE.items.pattern": "Attack pattern marker", - "ACKS.items.Range": "Range", - "ACKS.items.Melee": "Melee", - "ACKS.items.Missile": "Missile", - "ACKS.items.Slow": "Slow", - "ACKS.items.TwoHanded": "Two-handed", - "ACKS.items.Blunt": "Blunt", - "ACKS.items.Brace": "Brace", - "ACKS.items.Splash": "Splash weapon", - "ACKS.items.Reload": "Reload", - "ACKS.items.Charge": "Charge", + "OSE.items.Range": "Range", + "OSE.items.Melee": "Melee", + "OSE.items.Missile": "Missile", + "OSE.items.Slow": "Slow", + "OSE.items.TwoHanded": "Two-handed", + "OSE.items.Blunt": "Blunt", + "OSE.items.Brace": "Brace", + "OSE.items.Splash": "Splash weapon", + "OSE.items.Reload": "Reload", + "OSE.items.Charge": "Charge", - "ACKS.armor.type": "Armor Type", - "ACKS.armor.unarmored": "Unarmored", - "ACKS.armor.light": "Light", - "ACKS.armor.heavy": "Heavy", - "ACKS.armor.shield": "Shield", + "OSE.armor.type": "Armor Type", + "OSE.armor.unarmored": "Unarmored", + "OSE.armor.light": "Light", + "OSE.armor.heavy": "Heavy", + "OSE.armor.shield": "Shield", - "ACKS.spells.spend": "{speaker} is casting {name}!", - "ACKS.spells.Memorized": "Memorized", - "ACKS.spells.Cast": "Cast", - "ACKS.spells.Range": "Range", - "ACKS.spells.Slots": "Slots", - "ACKS.spells.Class": "Class", - "ACKS.spells.Duration": "Duration", - "ACKS.spells.Level": "Level", - "ACKS.spells.Save": "Save", - "ACKS.spells.ResetSlots": "Reset Spell slots", + "OSE.spells.spend": "{speaker} is casting {name}!", + "OSE.spells.Memorized": "Memorized", + "OSE.spells.Cast": "Cast", + "OSE.spells.Range": "Range", + "OSE.spells.Slots": "Slots", + "OSE.spells.Class": "Class", + "OSE.spells.Duration": "Duration", + "OSE.spells.Level": "Level", + "OSE.spells.Save": "Save", + "OSE.spells.ResetSlots": "Reset Spell slots", - "ACKS.abilities.Requirements": "Requirements", + "OSE.abilities.Requirements": "Requirements", - "ACKS.exploration.ld.long": "Listen at Door", - "ACKS.exploration.ld.short": "Listen Door", - "ACKS.exploration.ld.abrev": "LD", - "ACKS.exploration.od.long": "Open Stuck Door", - "ACKS.exploration.od.short": "Open Door", - "ACKS.exploration.od.abrev": "OD", - "ACKS.exploration.sd.long": "Find Secret Door", - "ACKS.exploration.sd.short": "Secret Door", - "ACKS.exploration.sd.abrev": "SD", - "ACKS.exploration.ft.long": "Find Room Trap", - "ACKS.exploration.ft.short": "Find Trap", - "ACKS.exploration.ft.abrev": "FT", + "OSE.exploration.ld.long": "Listen at Door", + "OSE.exploration.ld.short": "Listen Door", + "OSE.exploration.ld.abrev": "LD", + "OSE.exploration.od.long": "Open Stuck Door", + "OSE.exploration.od.short": "Open Door", + "OSE.exploration.od.abrev": "OD", + "OSE.exploration.sd.long": "Find Secret Door", + "OSE.exploration.sd.short": "Secret Door", + "OSE.exploration.sd.abrev": "SD", + "OSE.exploration.ft.long": "Find Room Trap", + "OSE.exploration.ft.short": "Find Trap", + "OSE.exploration.ft.abrev": "FT", - "ACKS.messages.GetExperience": "{name} gained {value} experience points!", - "ACKS.messages.AttackSuccess": "Hits AC {result}! ({bonus})", - "ACKS.messages.AttackAscendingSuccess": "Hits AC {result}!", - "ACKS.messages.AttackFailure": "Attack hits AC {result} and misses ({bonus})", - "ACKS.messages.AttackAscendingFailure": "Attack hits AC {result} and misses", - "ACKS.messages.InflictsDamage": "Inflicts damage!", - "ACKS.messages.applyDamage": "Apply Damage", - "ACKS.messages.applyHealing": "Apply Healing", + "OSE.messages.GetExperience": "{name} gained {value} experience points!", + "OSE.messages.AttackSuccess": "Hits AC {result}! ({bonus})", + "OSE.messages.AttackAscendingSuccess": "Hits AC {result}!", + "OSE.messages.AttackFailure": "Attack fails ({bonus})", + "OSE.messages.AttackAscendingFailure": "Attack fails", + "OSE.messages.InflictsDamage": "Inflicts damage!", + "OSE.messages.applyDamage": "Apply Damage", + "OSE.messages.applyHealing": "Apply Healing", - "ACKS.colors.green": "Green", - "ACKS.colors.red": "Red", - "ACKS.colors.yellow": "Yellow", - "ACKS.colors.purple": "Purple", - "ACKS.colors.blue": "Blue", - "ACKS.colors.orange": "Orange", - "ACKS.colors.white": "White", + "OSE.colors.green": "Green", + "OSE.colors.red": "Red", + "OSE.colors.yellow": "Yellow", + "OSE.colors.purple": "Purple", + "OSE.colors.blue": "Blue", + "OSE.colors.orange": "Orange", + "OSE.colors.white": "White", - "ACKS.reaction.check": "Reaction Check", - "ACKS.reaction.Hostile": "{name} is Hostile", - "ACKS.reaction.Unfriendly": "{name} is Unfriendly", - "ACKS.reaction.Neutral": "{name} is Neutral", - "ACKS.reaction.Indifferent": "{name} is Indifferent", - "ACKS.reaction.Friendly": "{name} is Friendly" + "OSE.reaction.check": "Reaction Check", + "OSE.reaction.Hostile": "{name} is Hostile", + "OSE.reaction.Unfriendly": "{name} is Unfriendly", + "OSE.reaction.Neutral": "{name} is Neutral", + "OSE.reaction.Indifferent": "{name} is Indifferent", + "OSE.reaction.Friendly": "{name} is Friendly" } diff --git a/src/lang/es.json b/src/lang/es.json index 70052cc..3afb61c 100644 --- a/src/lang/es.json +++ b/src/lang/es.json @@ -1,241 +1,241 @@ { - "ACKS.Edit": "Editar", - "ACKS.Delete": "Borrar", - "ACKS.Show": "Ver", - "ACKS.Add": "Añadir", - "ACKS.Ok": "Ok", - "ACKS.Reset": "Reinciar", - "ACKS.Cancel": "Cancelar", - "ACKS.Roll": "Tirada", - "ACKS.Success": "Éxito", - "ACKS.Failure": "Fallo", + "OSE.Edit": "Editar", + "OSE.Delete": "Borrar", + "OSE.Show": "Ver", + "OSE.Add": "Añadir", + "OSE.Ok": "Ok", + "OSE.Reset": "Reinciar", + "OSE.Cancel": "Cancelar", + "OSE.Roll": "Tirada", + "OSE.Success": "Éxito", + "OSE.Failure": "Fallo", - "ACKS.dialog.tweaks": "Ajustes", - "ACKS.dialog.partysheet": "Party Sheet", + "OSE.dialog.tweaks": "Ajustes", + "OSE.dialog.partysheet": "Party Sheet", - "ACKS.Formula": "Formula", - "ACKS.SitMod": "Mod. Situational", - "ACKS.Modifier": "Modificador", - "ACKS.Modifiers": "Modificadors", - "ACKS.RollMode": "Modo Tirada", - "ACKS.RollExample": "ej. +1d4", + "OSE.Formula": "Formula", + "OSE.SitMod": "Mod. Situational", + "OSE.Modifier": "Modificador", + "OSE.Modifiers": "Modificadors", + "OSE.RollMode": "Modo Tirada", + "OSE.RollExample": "ej. +1d4", - "ACKS.roll.formula": "{label} tirada", - "ACKS.roll.appearing": "Aparición", - "ACKS.roll.morale": "Moral tirada", - "ACKS.roll.hd": "Tirada de Puntos de Golpe", - "ACKS.roll.attacksWith": "Ataca con {name}", - "ACKS.roll.attacks": "{name} ataca !", - "ACKS.roll.save": "Salv. {save}", - "ACKS.roll.details.save": "Tira 1d20 >= {save} para éxito", - "ACKS.roll.attribute": "Prueba de {attribute}", - "ACKS.roll.details.attribute": "Tira 1d20 <= {score} para éxito", - "ACKS.roll.exploration": "Prueba de {exploration}", - "ACKS.roll.details.exploration": "Tirar 1d6 <= {expl} para éxito", - "ACKS.roll.reaction": "Tirada de Reacción", + "OSE.roll.formula": "{label} tirada", + "OSE.roll.appearing": "Aparición", + "OSE.roll.morale": "Moral tirada", + "OSE.roll.hd": "Tirada de Puntos de Golpe", + "OSE.roll.attacksWith": "Ataca con {name}", + "OSE.roll.attacks": "{name} ataca !", + "OSE.roll.save": "Salv. {save}", + "OSE.roll.details.save": "Tira 1d20 >= {save} para éxito", + "OSE.roll.attribute": "Prueba de {attribute}", + "OSE.roll.details.attribute": "Tira 1d20 <= {score} para éxito", + "OSE.roll.exploration": "Prueba de {exploration}", + "OSE.roll.details.exploration": "Tirar 1d6 <= {expl} para éxito", + "OSE.roll.reaction": "Tirada de Reacción", - "ACKS.table.treasure.roll": "Roll Treasure", + "OSE.table.treasure.roll": "Roll Treasure", - "ACKS.details.name": "Nombre", - "ACKS.details.class": "Clase", - "ACKS.details.title": "Titulo", - "ACKS.details.alignment": "Alineamiento", - "ACKS.details.level": "Nivel", - "ACKS.details.experience.base": "Experiencia", - "ACKS.details.experience.bonus": "Bonus Experiencia", - "ACKS.details.experience.next": "Siguiente nivel", - "ACKS.details.experience.award": "Premio EXP", - "ACKS.details.treasure": "Tipo de Tesoro", - "ACKS.details.treasureTable": "Tabla", - "ACKS.details.treasureTableHint": "Arrastra una tabla aquí para tirar el tesoro del monstruo", - "ACKS.details.morale": "Moral", - "ACKS.details.reaction": "Reacción", - "ACKS.details.appearing": "NA", + "OSE.details.name": "Nombre", + "OSE.details.class": "Clase", + "OSE.details.title": "Titulo", + "OSE.details.alignment": "Alineamiento", + "OSE.details.level": "Nivel", + "OSE.details.experience.base": "Experiencia", + "OSE.details.experience.bonus": "Bonus Experiencia", + "OSE.details.experience.next": "Siguiente nivel", + "OSE.details.experience.award": "Premio EXP", + "OSE.details.treasure": "Tipo de Tesoro", + "OSE.details.treasureTable": "Tabla", + "OSE.details.treasureTableHint": "Arrastra una tabla aquí para tirar el tesoro del monstruo", + "OSE.details.morale": "Moral", + "OSE.details.reaction": "Reacción", + "OSE.details.appearing": "NA", - "ACKS.Attack": "Ataque", - "ACKS.Encumbrance": "Carga", + "OSE.Attack": "Ataque", + "OSE.Encumbrance": "Carga", - "ACKS.Retainer": "Seguidores", - "ACKS.RetainerWage": "Salario", - "ACKS.RetainerUpkeep": "Mantenimiento", - "ACKS.Loyalty": "Puntuación Lealtad", - "ACKS.LoyaltyShort": "PL", + "OSE.Retainer": "Seguidores", + "OSE.RetainerWage": "Salario", + "OSE.RetainerUpkeep": "Mantenimiento", + "OSE.Loyalty": "Puntuación Lealtad", + "OSE.LoyaltyShort": "PL", - "ACKS.scores.str.long": "Fuerza", - "ACKS.scores.str.short": "FUE", - "ACKS.scores.wis.long": "Sabiduría", - "ACKS.scores.wis.short": "SAB", - "ACKS.scores.int.long": "Inteligencia", - "ACKS.scores.int.short": "INT", - "ACKS.scores.dex.long": "Destreza", - "ACKS.scores.dex.short": "DES", - "ACKS.scores.con.long": "Constitucion", - "ACKS.scores.con.short": "CON", - "ACKS.scores.cha.long": "Carisma", - "ACKS.scores.cha.short": "CAR", + "OSE.scores.str.long": "Fuerza", + "OSE.scores.str.short": "FUE", + "OSE.scores.wis.long": "Sabiduría", + "OSE.scores.wis.short": "SAB", + "OSE.scores.int.long": "Inteligencia", + "OSE.scores.int.short": "INT", + "OSE.scores.dex.long": "Destreza", + "OSE.scores.dex.short": "DES", + "OSE.scores.con.long": "Constitucion", + "OSE.scores.con.short": "CON", + "OSE.scores.cha.long": "Carisma", + "OSE.scores.cha.short": "CAR", - "ACKS.saves.death.short": "M", - "ACKS.saves.death.long": "Veneno o Muerte", - "ACKS.saves.wand.short": "V", - "ACKS.saves.wand.long": "Varitas mágicas", - "ACKS.saves.paralysis.short": "P", - "ACKS.saves.paralysis.long": "Petrificación o Parálisis", - "ACKS.saves.breath.short": "A", - "ACKS.saves.breath.long": "Aliento de Dragón", - "ACKS.saves.spell.short": "C", - "ACKS.saves.spell.long": "Sort. Varas Báculos", - "ACKS.saves.magic.long": "Bonificación vs Magia", + "OSE.saves.death.short": "M", + "OSE.saves.death.long": "Veneno o Muerte", + "OSE.saves.wand.short": "V", + "OSE.saves.wand.long": "Varitas mágicas", + "OSE.saves.paralysis.short": "P", + "OSE.saves.paralysis.long": "Petrificación o Parálisis", + "OSE.saves.breath.short": "A", + "OSE.saves.breath.long": "Aliento de Dragón", + "OSE.saves.spell.short": "C", + "OSE.saves.spell.long": "Sort. Varas Báculos", + "OSE.saves.magic.long": "Bonificación vs Magia", - "ACKS.Health": "Puntos de Golpes", - "ACKS.HealthMax": "Puntos de Golpes Máximos", - "ACKS.HealthShort": "PG", - "ACKS.HitDice": "Puntos de Golpe", - "ACKS.HitDiceShort": "DG", + "OSE.Health": "Puntos de Golpes", + "OSE.HealthMax": "Puntos de Golpes Máximos", + "OSE.HealthShort": "PG", + "OSE.HitDice": "Puntos de Golpe", + "OSE.HitDiceShort": "DG", - "ACKS.movement.base": "Movimiento", - "ACKS.movement.short": "MV", - "ACKS.movement.details": "Detalles de Movimiento", - "ACKS.movement.encounter.long": "Combate", - "ACKS.movement.encounter.short": "Co", - "ACKS.movement.overland.long": "Base", - "ACKS.movement.overland.short": "Ba", - "ACKS.movement.exploration.short": "Ex", - "ACKS.movement.exploration.long": "Exploration Movement Rate", + "OSE.movement.base": "Movimiento", + "OSE.movement.short": "MV", + "OSE.movement.details": "Detalles de Movimiento", + "OSE.movement.encounter.long": "Combate", + "OSE.movement.encounter.short": "Co", + "OSE.movement.overland.long": "Base", + "OSE.movement.overland.short": "Ba", + "OSE.movement.exploration.short": "Ex", + "OSE.movement.exploration.long": "Exploration Movement Rate", - "ACKS.ArmorClassNaked": "Sin Armadura", - "ACKS.ArmorClass": "Clase de Armadura", - "ACKS.ArmorClassShort": "CA", - "ACKS.AscArmorClassShort": "CAA", - "ACKS.Thac0": "GAC0", - "ACKS.ABShort": "BA", - "ACKS.AB": "Bono Ataque", - "ACKS.MeleeShort": "CC", - "ACKS.Melee": "Cuerpo a Cuerpo", - "ACKS.MeleeBonus": "Bono CC", - "ACKS.MissileShort": "DIS", - "ACKS.Missile": "Distancia", - "ACKS.MissileBonus": "Bono Distancia", - "ACKS.Initiative": "Iniciativa", - "ACKS.InitiativeBonus": "Bonificador Iniciativa", - "ACKS.InitiativeShort": "INI", - "ACKS.Attacks": "Ataques usables por Round", - "ACKS.AttacksShort": "ATQ", - "ACKS.Damage": "Daño", - "ACKS.Spellcaster": "Lanzador Conjuros", + "OSE.ArmorClassNaked": "Sin Armadura", + "OSE.ArmorClass": "Clase de Armadura", + "OSE.ArmorClassShort": "CA", + "OSE.AscArmorClassShort": "CAA", + "OSE.Thac0": "GAC0", + "OSE.ABShort": "BA", + "OSE.AB": "Bono Ataque", + "OSE.MeleeShort": "CC", + "OSE.Melee": "Cuerpo a Cuerpo", + "OSE.MeleeBonus": "Bono CC", + "OSE.MissileShort": "DIS", + "OSE.Missile": "Distancia", + "OSE.MissileBonus": "Bono Distancia", + "OSE.Initiative": "Iniciativa", + "OSE.InitiativeBonus": "Bonificador Iniciativa", + "OSE.InitiativeShort": "INI", + "OSE.Attacks": "Ataques usables por Round", + "OSE.AttacksShort": "ATQ", + "OSE.Damage": "Daño", + "OSE.Spellcaster": "Lanzador Conjuros", - "ACKS.Language": "Lenguaje", - "ACKS.SpokenLanguages": "Lenguajes Hablados", - "ACKS.Literacy": "Leer/Esc.", - "ACKS.Literate": "Alfabetizado", - "ACKS.LiteracyBasic": "Basico", - "ACKS.Illiterate": "Analfabeto", - "ACKS.NPCReaction": "Reacción NPC", - "ACKS.RetainersMax": "#Seguidores", + "OSE.Language": "Lenguaje", + "OSE.SpokenLanguages": "Lenguajes Hablados", + "OSE.Literacy": "Leer/Esc.", + "OSE.Literate": "Alfabetizado", + "OSE.LiteracyBasic": "Basico", + "OSE.Illiterate": "Analfabeto", + "OSE.NPCReaction": "Reacción NPC", + "OSE.RetainersMax": "#Seguidores", - "ACKS.category.attributes": "Atributos", - "ACKS.category.inventory": "Inventario", - "ACKS.category.abilities": "Habilidades", - "ACKS.category.spells": "Conjuros", - "ACKS.category.notes": "Notas", - "ACKS.category.languages": "Lenguajes", - "ACKS.category.description": "Descripción", - "ACKS.category.equipment": "Equipo", + "OSE.category.attributes": "Atributos", + "OSE.category.inventory": "Inventario", + "OSE.category.abilities": "Habilidades", + "OSE.category.spells": "Conjuros", + "OSE.category.notes": "Notas", + "OSE.category.languages": "Lenguajes", + "OSE.category.description": "Descripción", + "OSE.category.equipment": "Equipo", - "ACKS.Setting.IndividualInit": "Iniciativa Individual", - "ACKS.Setting.IndividualInitHint": "La iniciativa se lanza por cada actor y se modifica por su puntuación de DES", - "ACKS.Setting.AscendingAC": "Categoria de Armadura Ascendente", - "ACKS.Setting.AscendingACHint": "En cuanto más mejor", - "ACKS.Setting.Morale": "Activar puntuación de Moral para monstruos", - "ACKS.Setting.MoraleHint": "La puntuación de moral se ve en las hojas de monstruo", - "ACKS.Setting.Encumbrance": "Carga", - "ACKS.Setting.EncumbranceHint": "Elige como se calcula la Carga", - "ACKS.Setting.EncumbranceDisabled": "Disabled", - "ACKS.Setting.EncumbranceBasic": "Básica", - "ACKS.Setting.EncumbranceDetailed": "Detallada", - "ACKS.Setting.MovementAuto": "Calcular Movimiento", - "ACKS.Setting.SignificantTreasure": "Peso de tesoro significativo", - "ACKS.Setting.SignificantTreasureHint": "Peso con el que el tesoro reducirá el movimiento, solo útil para el cálculo básico", + "OSE.Setting.IndividualInit": "Iniciativa Individual", + "OSE.Setting.IndividualInitHint": "La iniciativa se lanza por cada actor y se modifica por su puntuación de DES", + "OSE.Setting.AscendingAC": "Categoria de Armadura Ascendente", + "OSE.Setting.AscendingACHint": "En cuanto más mejor", + "OSE.Setting.Morale": "Activar puntuación de Moral para monstruos", + "OSE.Setting.MoraleHint": "La puntuación de moral se ve en las hojas de monstruo", + "OSE.Setting.Encumbrance": "Carga", + "OSE.Setting.EncumbranceHint": "Elige como se calcula la Carga", + "OSE.Setting.EncumbranceDisabled": "Disabled", + "OSE.Setting.EncumbranceBasic": "Básica", + "OSE.Setting.EncumbranceDetailed": "Detallada", + "OSE.Setting.MovementAuto": "Calcular Movimiento", + "OSE.Setting.SignificantTreasure": "Peso de tesoro significativo", + "OSE.Setting.SignificantTreasureHint": "Peso con el que el tesoro reducirá el movimiento, solo útil para el cálculo básico", - "ACKS.items.Equip": "Equipar", - "ACKS.items.Unequip": "Desequipar", - "ACKS.items.Misc": "Misc", - "ACKS.items.Weapons": "Armas", - "ACKS.items.Treasure": "Tesoro", - "ACKS.items.Armors": "Armaduras", - "ACKS.items.Weight": "Peso", - "ACKS.items.Qualities": "Cualidades", - "ACKS.items.Notes": "Notas", - "ACKS.items.Cost": "Coste", - "ACKS.items.Quantity": "Qt.", - "ACKS.items.Roll": "Tirada", - "ACKS.items.BlindRoll": "Ciega", - "ACKS.items.RollTarget": "Mira", - "ACKS.items.RollType": "Tipo", - "ACKS.items.Damage": "Daño", - "ACKS.items.Melee": "CC", - "ACKS.items.Missile": "Distancia", - "ACKS.items.Slow": "Slow", - "ACKS.items.ArmorAC": "CA", - "ACKS.items.ArmorAAC": "CAA", - "ACKS.items.Bonus": "Bonus", - "ACKS.items.roundAttacks": "Ataques usados este Round", - "ACKS.items.roundAttacksMax": "Máximo Ataques por Round", - "ACKS.items.resetAttacks": "Reiniciar Ataques por Round", - "ACKS.items.hasShield": "Tiene un bono de Escudo", - "ACKS.items.typeTag": "Escriba una lista de etiquetas separadas por comas, por ejemplo 'Melee, Misile (5'-10' / 11'-20' / 21'-30')'", + "OSE.items.Equip": "Equipar", + "OSE.items.Unequip": "Desequipar", + "OSE.items.Misc": "Misc", + "OSE.items.Weapons": "Armas", + "OSE.items.Treasure": "Tesoro", + "OSE.items.Armors": "Armaduras", + "OSE.items.Weight": "Peso", + "OSE.items.Qualities": "Cualidades", + "OSE.items.Notes": "Notas", + "OSE.items.Cost": "Coste", + "OSE.items.Quantity": "Qt.", + "OSE.items.Roll": "Tirada", + "OSE.items.BlindRoll": "Ciega", + "OSE.items.RollTarget": "Mira", + "OSE.items.RollType": "Tipo", + "OSE.items.Damage": "Daño", + "OSE.items.Melee": "CC", + "OSE.items.Missile": "Distancia", + "OSE.items.Slow": "Slow", + "OSE.items.ArmorAC": "CA", + "OSE.items.ArmorAAC": "CAA", + "OSE.items.Bonus": "Bonus", + "OSE.items.roundAttacks": "Ataques usados este Round", + "OSE.items.roundAttacksMax": "Máximo Ataques por Round", + "OSE.items.resetAttacks": "Reiniciar Ataques por Round", + "OSE.items.hasShield": "Tiene un bono de Escudo", + "OSE.items.typeTag": "Escriba una lista de etiquetas separadas por comas, por ejemplo 'Melee, Misile (5'-10' / 11'-20' / 21'-30')'", - "ACKS.armor.type": "Tipo Armadura", - "ACKS.armor.unarmored": "Sin Armadura", - "ACKS.armor.light": "Ligera", - "ACKS.armor.heavy": "Pesada", - "ACKS.armor.shield": "Escudo", + "OSE.armor.type": "Tipo Armadura", + "OSE.armor.unarmored": "Sin Armadura", + "OSE.armor.light": "Ligera", + "OSE.armor.heavy": "Pesada", + "OSE.armor.shield": "Escudo", - "ACKS.spells.spend": "{speaker} esta lanzando {name}!", - "ACKS.spells.Memorized": "Memorizado", - "ACKS.spells.Cast": "Lanzar", - "ACKS.spells.Range": "Alcance", - "ACKS.spells.Slots": "Espacios", - "ACKS.spells.Class": "Clase", - "ACKS.spells.Duration": "Duración", - "ACKS.spells.Level": "Nivel", - "ACKS.spells.Save": "Salvación", - "ACKS.spells.ResetSlots": "Reniciar Espacios de conjuro", + "OSE.spells.spend": "{speaker} esta lanzando {name}!", + "OSE.spells.Memorized": "Memorizado", + "OSE.spells.Cast": "Lanzar", + "OSE.spells.Range": "Alcance", + "OSE.spells.Slots": "Espacios", + "OSE.spells.Class": "Clase", + "OSE.spells.Duration": "Duración", + "OSE.spells.Level": "Nivel", + "OSE.spells.Save": "Salvación", + "OSE.spells.ResetSlots": "Reniciar Espacios de conjuro", - "ACKS.abilities.Requirements": "Requisitos", + "OSE.abilities.Requirements": "Requisitos", - "ACKS.exploration.ld.long": "Escuchar Ruidos", - "ACKS.exploration.ld.short": "Escuchar Ruidos", - "ACKS.exploration.ld.abrev": "ER", - "ACKS.exploration.od.long": "Abrir puertas", - "ACKS.exploration.od.short": "Abrir puertas", - "ACKS.exploration.od.abrev": "AP", - "ACKS.exploration.sd.long": "Detectar puertas secretas", - "ACKS.exploration.sd.short": "Puertas secretas", - "ACKS.exploration.sd.abrev": "PS", - "ACKS.exploration.ft.long": "Detectar trampas y fosos", - "ACKS.exploration.ft.short": "Detectar trampas", - "ACKS.exploration.ft.abrev": "DT", + "OSE.exploration.ld.long": "Escuchar Ruidos", + "OSE.exploration.ld.short": "Escuchar Ruidos", + "OSE.exploration.ld.abrev": "ER", + "OSE.exploration.od.long": "Abrir puertas", + "OSE.exploration.od.short": "Abrir puertas", + "OSE.exploration.od.abrev": "AP", + "OSE.exploration.sd.long": "Detectar puertas secretas", + "OSE.exploration.sd.short": "Puertas secretas", + "OSE.exploration.sd.abrev": "PS", + "OSE.exploration.ft.long": "Detectar trampas y fosos", + "OSE.exploration.ft.short": "Detectar trampas", + "OSE.exploration.ft.abrev": "DT", - "ACKS.messages.GetExperience": "{name} ha ganado {value} puntos de experiencia!", - "ACKS.messages.AttackSuccess": "Golpea CA {result}! ({bonus})", - "ACKS.messages.AttackAscendingSuccess": "Golpea CA {result}!", - "ACKS.messages.AttackFailure": "Falla el ataque ({bonus})", - "ACKS.messages.InflictsDamage": "Inflinge daño!", - "ACKS.ChatContextDamage": "Aplicar Daño", - "ACKS.ChatContextHealing": "Aplicar Curación", + "OSE.messages.GetExperience": "{name} ha ganado {value} puntos de experiencia!", + "OSE.messages.AttackSuccess": "Golpea CA {result}! ({bonus})", + "OSE.messages.AttackAscendingSuccess": "Golpea CA {result}!", + "OSE.messages.AttackFailure": "Falla el ataque ({bonus})", + "OSE.messages.InflictsDamage": "Inflinge daño!", + "OSE.ChatContextDamage": "Aplicar Daño", + "OSE.ChatContextHealing": "Aplicar Curación", - "ACKS.colors.green": "Verde", - "ACKS.colors.red": "Rojo", - "ACKS.colors.yellow": "Amarillo", - "ACKS.colors.purple": "Purpura", - "ACKS.colors.blue": "Azul", - "ACKS.colors.orange": "Naranja", - "ACKS.colors.white": "Blanco", + "OSE.colors.green": "Verde", + "OSE.colors.red": "Rojo", + "OSE.colors.yellow": "Amarillo", + "OSE.colors.purple": "Purpura", + "OSE.colors.blue": "Azul", + "OSE.colors.orange": "Naranja", + "OSE.colors.white": "Blanco", - "ACKS.reaction.check": "Tirada de Reacción", - "ACKS.reaction.Hostile": "{name} es Hostil", - "ACKS.reaction.Unfriendly": "{name} es Antipático", - "ACKS.reaction.Neutral": "{name} es Neutral", - "ACKS.reaction.Indifferent": "{name} es Indifferente", - "ACKS.reaction.Friendly": "{name} es Amistoso" + "OSE.reaction.check": "Tirada de Reacción", + "OSE.reaction.Hostile": "{name} es Hostil", + "OSE.reaction.Unfriendly": "{name} es Antipático", + "OSE.reaction.Neutral": "{name} es Neutral", + "OSE.reaction.Indifferent": "{name} es Indifferente", + "OSE.reaction.Friendly": "{name} es Amistoso" } diff --git a/src/lang/fr.json b/src/lang/fr.json index e947aaf..ce2eb4d 100644 --- a/src/lang/fr.json +++ b/src/lang/fr.json @@ -1,275 +1,279 @@ { - "ACKS.Edit": "Modifier", - "ACKS.Delete": "Supprimer", - "ACKS.Show": "Montrer", - "ACKS.Add": "Ajouter", - "ACKS.Ok": "Ok", - "ACKS.Update": "Mettre à jour", - "ACKS.Reset": "Réinitialiser", - "ACKS.Cancel": "Annuler", - "ACKS.Roll": "Lancer", - "ACKS.Success": "Succès", - "ACKS.Failure": "Échec", + "OSE.Edit": "Modifier", + "OSE.Delete": "Supprimer", + "OSE.Show": "Montrer", + "OSE.Add": "Ajouter", + "OSE.Ok": "Ok", + "OSE.Update": "Mettre à jour", + "OSE.Reset": "Réinitialiser", + "OSE.Cancel": "Annuler", + "OSE.Roll": "Lancer", + "OSE.Success": "Succès", + "OSE.Failure": "Échec", - "ACKS.dialog.tweaks": "Ajuster", - "ACKS.dialog.partysheet": "Fiche de Groupe", - "ACKS.dialog.selectActors": "Choisir PJs", - "ACKS.dialog.dealXP": "Donner XP", - "ACKS.dialog.generator": "Générateur de personnage", - "ACKS.dialog.generateSaves": "Générer les Sauvegardes", - "ACKS.dialog.generateScores": "Générer les Scores", - "ACKS.dialog.generateScore": "Création: {score} ({count})", + "OSE.dialog.tweaks": "Ajuster", + "OSE.dialog.partysheet": "Fiche de Groupe", + "OSE.dialog.selectActors": "Choisir PJs", + "OSE.dialog.dealXP": "Donner XP", + "OSE.dialog.generator": "Générateur de personnage", + "OSE.dialog.generateSaves": "Générer les Sauvegardes", + "OSE.dialog.generateScores": "Générer les Scores", + "OSE.dialog.generateScore": "Création: {score} ({count})", - "ACKS.Formula": "Formule", - "ACKS.SitMod": "Mod. de situation", - "ACKS.Modifier": "Modificateur", - "ACKS.Modifiers": "Modificateurs", - "ACKS.RollMode": "Mode de Jet", - "ACKS.RollExample": "ex. +1d4", + "OSE.Formula": "Formule", + "OSE.SitMod": "Mod. de situation", + "OSE.Modifier": "Modificateur", + "OSE.Modifiers": "Modificateurs", + "OSE.RollMode": "Mode de Jet", + "OSE.RollExample": "ex. +1d4", - "ACKS.roll.formula": "Jet de {label}", - "ACKS.roll.appearing": "Nombre Apparaissant", - "ACKS.roll.morale": "Jet de Moral", - "ACKS.roll.hd": "Lancer de Dé de Vie", - "ACKS.roll.attacksWith": "Attaque avec {name}", - "ACKS.roll.attacks": "{name} attaque !", - "ACKS.roll.save": "Sauv. de {save}", - "ACKS.roll.details.save": "Lancez 1d20 >= {save} pour réussir", - "ACKS.roll.attribute": "Jet de {attribute}", - "ACKS.roll.details.attribute": "Lancez 1d20 <= {score} pour réussir", - "ACKS.roll.exploration": "Test de {exploration}", - "ACKS.roll.details.exploration": "Lancez 1d6 <= {expl} pour réussir", - "ACKS.roll.reaction": "Jet de Réaction", - "ACKS.roll.initiative": "Le groupe {group} tire son Initiative !", - "ACKS.roll.individualInit": "{name} tire son Initiative!", + "OSE.roll.formula": "Jet de {label}", + "OSE.roll.appearing": "Nombre Apparaissant", + "OSE.roll.morale": "Jet de Moral", + "OSE.roll.hd": "Lancer de Dé de Vie", + "OSE.roll.attacksWith": "Attaque avec {name}", + "OSE.roll.attacks": "{name} attaque !", + "OSE.roll.save": "Sauv. de {save}", + "OSE.roll.details.save": "Lancez 1d20 >= {save} pour réussir", + "OSE.roll.attribute": "Jet de {attribute}", + "OSE.roll.details.attribute": "Lancez 1d20 <= {score} pour réussir", + "OSE.roll.exploration": "Test de {exploration}", + "OSE.roll.details.exploration": "Lancez 1d6 <= {expl} pour réussir", + "OSE.roll.reaction": "Jet de Réaction", + "OSE.roll.initiative": "Le groupe {group} tire son Initiative !", + "OSE.roll.individualInit": "{name} tire son Initiative!", - "ACKS.table.treasure.roll": "Trésor Aléatoire", + "OSE.table.treasure.roll": "Trésor Aléatoire", - "ACKS.details.name": "Nom", - "ACKS.details.class": "Classe", - "ACKS.details.title": "Titre", - "ACKS.details.alignment": "Alignement", - "ACKS.details.level": "Niveau", - "ACKS.details.experience.base": "Expérience", - "ACKS.details.experience.bonus": "Ajustement d'XP", - "ACKS.details.experience.next": "Prochain Niveau", - "ACKS.details.experience.share": "Part d'Expérience", - "ACKS.details.experience.award": "XP de Récompense", - "ACKS.details.treasure": "Type de Trésor", - "ACKS.details.treasureTable": "Table", - "ACKS.details.treasureTableHint": "Lâchez une Table aléatoire pour la lier", - "ACKS.details.morale": "Moral", - "ACKS.details.reaction": "Réaction", - "ACKS.details.appearing": "NA", + "OSE.details.name": "Nom", + "OSE.details.class": "Classe", + "OSE.details.title": "Titre", + "OSE.details.alignment": "Alignement", + "OSE.details.level": "Niveau", + "OSE.details.experience.base": "Expérience", + "OSE.details.experience.bonus": "Ajustement d'XP", + "OSE.details.experience.next": "Prochain Niveau", + "OSE.details.experience.share": "Part d'Expérience", + "OSE.details.experience.award": "XP de Récompense", + "OSE.details.treasure": "Type de Trésor", + "OSE.details.treasureTable": "Table", + "OSE.details.treasureTableHint": "Lâchez une Table aléatoire pour la lier", + "OSE.details.morale": "Moral", + "OSE.details.reaction": "Réaction", + "OSE.details.appearing": "NA", - "ACKS.Attack": "Attaque", - "ACKS.Encumbrance": "Encombrement", + "OSE.Attack": "Attaque", + "OSE.Encumbrance": "Encombrement", - "ACKS.Retainer": "Suivant", - "ACKS.RetainerWage": "Tarif", - "ACKS.RetainerUpkeep": "Entretien", - "ACKS.Loyalty": "Loyauté", - "ACKS.LoyaltyShort": "LOY", + "OSE.Retainer": "Suivant", + "OSE.RetainerWage": "Tarif", + "OSE.RetainerUpkeep": "Entretien", + "OSE.Loyalty": "Loyauté", + "OSE.LoyaltyShort": "LOY", - "ACKS.scores.str.long": "Force", - "ACKS.scores.str.short": "FOR", - "ACKS.scores.wis.long": "Sagesse", - "ACKS.scores.wis.short": "SAG", - "ACKS.scores.int.long": "Intelligence", - "ACKS.scores.int.short": "INT", - "ACKS.scores.dex.long": "Dextérité", - "ACKS.scores.dex.short": "DEX", - "ACKS.scores.con.long": "Constitution", - "ACKS.scores.con.short": "CON", - "ACKS.scores.cha.long": "Charisme", - "ACKS.scores.cha.short": "CHA", + "OSE.scores.str.long": "Force", + "OSE.scores.str.short": "FOR", + "OSE.scores.wis.long": "Sagesse", + "OSE.scores.wis.short": "SAG", + "OSE.scores.int.long": "Intelligence", + "OSE.scores.int.short": "INT", + "OSE.scores.dex.long": "Dextérité", + "OSE.scores.dex.short": "DEX", + "OSE.scores.con.long": "Constitution", + "OSE.scores.con.short": "CON", + "OSE.scores.cha.long": "Charisme", + "OSE.scores.cha.short": "CHA", - "ACKS.saves.death.short": "MP", - "ACKS.saves.death.long": "Mort Poison", - "ACKS.saves.wand.short": "B", - "ACKS.saves.wand.long": "Baguettes", - "ACKS.saves.paralysis.short": "PP", - "ACKS.saves.paralysis.long": "Paralysie Pétrification", - "ACKS.saves.breath.short": "S", - "ACKS.saves.breath.long": "Souffle", - "ACKS.saves.spell.short": "SBB", - "ACKS.saves.spell.long": "Sorts Bâtons", - "ACKS.saves.magic.long": "Sauv. Magie", + "OSE.saves.death.short": "MP", + "OSE.saves.death.long": "Mort Poison", + "OSE.saves.wand.short": "B", + "OSE.saves.wand.long": "Baguettes", + "OSE.saves.paralysis.short": "PP", + "OSE.saves.paralysis.long": "Paralysie Pétrification", + "OSE.saves.breath.short": "S", + "OSE.saves.breath.long": "Souffle", + "OSE.saves.spell.short": "SBB", + "OSE.saves.spell.long": "Sorts Bâtons", + "OSE.saves.magic.long": "Sauv. Magie", + "OSE.saves.magic.short": "vs Magie", - "ACKS.Health": "Points de Vie", - "ACKS.HealthMax": "Points de Vie Maximaux", - "ACKS.HealthShort": "PV", - "ACKS.HitDice": "Dé de Vie", - "ACKS.HitDiceShort": "DV", + "OSE.Health": "Points de Vie", + "OSE.HealthMax": "Points de Vie Maximaux", + "OSE.HealthShort": "PV", + "OSE.HitDice": "Dé de Vie", + "OSE.HitDiceShort": "DV", - "ACKS.movement.base": "Déplacement", - "ACKS.movement.short": "DP", - "ACKS.movement.details": "Détail du Déplacement", - "ACKS.movement.encounter.long": "Déplacement de Rencontre", - "ACKS.movement.encounter.short": "Ren", - "ACKS.movement.overland.long": "Déplacement en Extérieur", - "ACKS.movement.overland.short": "Ext", - "ACKS.movement.exploration.short": "Dp", - "ACKS.movement.exploration.long": "Déplacement", + "OSE.movement.base": "Déplacement", + "OSE.movement.short": "DP", + "OSE.movement.details": "Détail du Déplacement", + "OSE.movement.encounter.long": "Déplacement de Rencontre", + "OSE.movement.encounter.short": "Ren", + "OSE.movement.overland.long": "Déplacement en Extérieur", + "OSE.movement.overland.short": "Ext", + "OSE.movement.exploration.short": "Dp", + "OSE.movement.exploration.long": "Déplacement", - "ACKS.ArmorClassNaked": "Sans Armure", - "ACKS.ArmorClass": "Classe d'Armure", - "ACKS.ArmorClassShort": "CA", - "ACKS.AscArmorClassShort": "CAA", - "ACKS.ArmorClassBonus": "Bonus d'Armure", - "ACKS.Thac0": "THAC0", - "ACKS.ABShort": "BBA", - "ACKS.AB": "Bonus d'Attaque", - "ACKS.MeleeShort": "MEL", - "ACKS.Melee": "Mêlée", - "ACKS.MeleeBonus": "Bonus de Mêlée", - "ACKS.MissileShort": "DIS", - "ACKS.Missile": "Distance", - "ACKS.MissileBonus": "Bonus à Distance", - "ACKS.Initiative": "Initiative", - "ACKS.InitiativeBonus": "Bonus d'Initiative", - "ACKS.InitiativeShort": "INIT", - "ACKS.Attacks": "Attaques par Round", - "ACKS.AttacksShort": "ATT", - "ACKS.Damage": "Dégâts", - "ACKS.Spellcaster": "Lanceur de Sort", + "OSE.ArmorClassNaked": "Sans Armure", + "OSE.ArmorClass": "Classe d'Armure", + "OSE.ArmorClassShort": "CA", + "OSE.AscArmorClassShort": "CAA", + "OSE.ArmorClassBonus": "Bonus d'Armure", + "OSE.Thac0": "THAC0", + "OSE.ABShort": "BBA", + "OSE.AB": "Bonus d'Attaque", + "OSE.MeleeShort": "MEL", + "OSE.Melee": "Mêlée", + "OSE.MeleeBonus": "Bonus de Mêlée", + "OSE.MissileShort": "DIS", + "OSE.Missile": "Distance", + "OSE.MissileBonus": "Bonus à Distance", + "OSE.Initiative": "Initiative", + "OSE.InitiativeBonus": "Bonus d'Initiative", + "OSE.InitiativeShort": "INIT", + "OSE.Attacks": "Attaques par Round", + "OSE.AttacksShort": "ATT", + "OSE.Damage": "Dégâts", + "OSE.Spellcaster": "Lanceur de Sort", - "ACKS.Language": "Langue", - "ACKS.SpokenLanguages": "Langues parlées", - "ACKS.Literacy": "Lire/Écrire", - "ACKS.Literate": "Oui", - "ACKS.LiteracyBasic": "Basique", - "ACKS.Illiterate": "Non", - "ACKS.NativeBroken": "Natale (Primitif)", - "ACKS.Native": "Natale", - "ACKS.NativePlus1": "Natale + 1", - "ACKS.NativePlus2": "Natale + 2", - "ACKS.NativePlus3": "Natale + 3", + "OSE.Language": "Langue", + "OSE.SpokenLanguages": "Langues parlées", + "OSE.Literacy": "Lire/Écrire", + "OSE.Literate": "Oui", + "OSE.LiteracyBasic": "Basique", + "OSE.Illiterate": "Non", + "OSE.NativeBroken": "Natale (Primitif)", + "OSE.Native": "Natale", + "OSE.NativePlus1": "Natale + 1", + "OSE.NativePlus2": "Natale + 2", + "OSE.NativePlus3": "Natale + 3", - "ACKS.NPCReaction": "Réaction", - "ACKS.RetainersMax": "#Suivants", + "OSE.NPCReaction": "Réaction", + "OSE.RetainersMax": "#Suivants", - "ACKS.category.saves": "Sauvegardes", - "ACKS.category.attributes": "Stats", - "ACKS.category.inventory": "Inventaire", - "ACKS.category.abilities": "Aptitudes", - "ACKS.category.spells": "Sorts", - "ACKS.category.notes": "Notes", - "ACKS.category.languages": "Langues", - "ACKS.category.description": "Descriptions", - "ACKS.category.equipment": "Équipement", + "OSE.category.saves": "Sauvegardes", + "OSE.category.attributes": "Stats", + "OSE.category.inventory": "Inventaire", + "OSE.category.abilities": "Aptitudes", + "OSE.category.spells": "Sorts", + "OSE.category.notes": "Notes", + "OSE.category.languages": "Langues", + "OSE.category.description": "Descriptions", + "OSE.category.equipment": "Équipement", - "ACKS.Setting.Initiative": "Initiative", - "ACKS.Setting.InitiativeHint": "Initiative groupée ou individuelle. L'initiative unique est tirée une seule fois en début de combat.", - "ACKS.Setting.InitiativeOnce": "Initiative unique individuelle", - "ACKS.Setting.InitiativeReroll": "Initiative relancée chaque tour", - "ACKS.Setting.InitiativeReset": "Initiative mise à zéro chaque tour", - "ACKS.Setting.InitiativeGroup": "Initiative groupée", - "ACKS.Setting.AscendingAC": "Classe d'Armure Ascendante", - "ACKS.Setting.AscendingACHint": "Le plus est le mieux", - "ACKS.Setting.Morale": "Activer le Score de Moral", - "ACKS.Setting.MoraleHint": "Le Score de Moral est affiché sur la fiche de Monstre", - "ACKS.Setting.Encumbrance": "Encombrement", - "ACKS.Setting.EncumbranceHint": "Choisissez comment l'encombrement est calculé", - "ACKS.Setting.EncumbranceDisabled": "Désactivé", - "ACKS.Setting.EncumbranceBasic": "Basique", - "ACKS.Setting.EncumbranceDetailed": "Detaillé", - "ACKS.Setting.EncumbranceComplete": "Complet", - "ACKS.Setting.MovementAuto": "Calculer Déplacement", - "ACKS.Setting.SignificantTreasure": "Poids d'un Trésor Significatif", - "ACKS.Setting.SignificantTreasureHint": "Poids auquel le Trésor réduit le déplacement. Utilisé pour l'encombrement Basique", + "OSE.Setting.Initiative": "Initiative", + "OSE.Setting.InitiativeHint": "Initiative groupée ou individuelle.", + "OSE.Setting.InitiativeIndividual": "Initiative individuelle", + "OSE.Setting.InitiativeGroup": "Initiative groupée", + "OSE.Setting.RerollInitiative": "Persistance de l'initiative", + "OSE.Setting.RerollInitiativeHint": "Garde, met à zéro ou relance l'initiative à chaque tour", + "OSE.Setting.InitiativeKeep": "Initiative gardée à chaque tour", + "OSE.Setting.InitiativeReroll": "Initiative relancée chaque tour", + "OSE.Setting.InitiativeReset": "Initiative mise à zéro chaque tour", + "OSE.Setting.AscendingAC": "Classe d'Armure Ascendante", + "OSE.Setting.AscendingACHint": "Le plus est le mieux", + "OSE.Setting.Morale": "Activer le Score de Moral", + "OSE.Setting.MoraleHint": "Le Score de Moral est affiché sur la fiche de Monstre", + "OSE.Setting.Encumbrance": "Encombrement", + "OSE.Setting.EncumbranceHint": "Choisissez comment l'encombrement est calculé", + "OSE.Setting.EncumbranceDisabled": "Désactivé", + "OSE.Setting.EncumbranceBasic": "Basique", + "OSE.Setting.EncumbranceDetailed": "Detaillé", + "OSE.Setting.EncumbranceComplete": "Complet", + "OSE.Setting.MovementAuto": "Calculer Déplacement", + "OSE.Setting.SignificantTreasure": "Poids d'un Trésor Significatif", + "OSE.Setting.SignificantTreasureHint": "Poids auquel le Trésor réduit le déplacement. Utilisé pour l'encombrement Basique", - "ACKS.items.Equip": "Equiper", - "ACKS.items.Unequip": "Déséquiper", - "ACKS.items.Misc": "Divers", - "ACKS.items.Weapons": "Armes", - "ACKS.items.Treasure": "Trésor", - "ACKS.items.Armors": "Armures", - "ACKS.items.Weight": "Pds.", - "ACKS.items.Qualities": "Qualités", - "ACKS.items.Notes": "Notes", - "ACKS.items.Cost": "Coût", - "ACKS.items.Quantity": "Qt.", - "ACKS.items.Roll": "Jet", - "ACKS.items.BlindRoll": "Aveugle", - "ACKS.items.RollTarget": "Cible", - "ACKS.items.RollType": "Type", - "ACKS.items.Damage": "Dégâts", - "ACKS.items.ArmorAC": "CA", - "ACKS.items.ArmorAAC": "CAA", - "ACKS.items.Bonus": "Bonus", - "ACKS.items.AtkBonus": "Bonus d'Attaque", - "ACKS.items.roundAttacks": "Attaques utilisées ce tour", - "ACKS.items.roundAttacksMax": "Attaques max par tour", - "ACKS.items.resetAttacks": "Réinitialiser les Attaques", - "ACKS.items.hasShield": "A un bonus de Bouclier", - "ACKS.items.typeTag": "Tapez une liste de tags descriptifs ex. 'Mêlée,Missile (5’–10’ / 11’–20’ / 21’–30’)' puis Entrée", - "ACKS.items.enterTag": "Tags", - "ACKS.items.pattern": "Marqueur de schéma d'attaque", + "OSE.items.Equip": "Equiper", + "OSE.items.Unequip": "Déséquiper", + "OSE.items.Misc": "Divers", + "OSE.items.Weapons": "Armes", + "OSE.items.Treasure": "Trésor", + "OSE.items.Armors": "Armures", + "OSE.items.Weight": "Pds.", + "OSE.items.Qualities": "Qualités", + "OSE.items.Notes": "Notes", + "OSE.items.Cost": "Coût", + "OSE.items.Quantity": "Qt.", + "OSE.items.Roll": "Jet", + "OSE.items.BlindRoll": "Aveugle", + "OSE.items.RollTarget": "Cible", + "OSE.items.RollType": "Type", + "OSE.items.Damage": "Dégâts", + "OSE.items.ArmorAC": "CA", + "OSE.items.ArmorAAC": "CAA", + "OSE.items.Bonus": "Bonus", + "OSE.items.AtkBonus": "Bonus d'Attaque", + "OSE.items.roundAttacks": "Attaques utilisées ce tour", + "OSE.items.roundAttacksMax": "Attaques max par tour", + "OSE.items.resetAttacks": "Réinitialiser les Attaques", + "OSE.items.hasShield": "A un bonus de Bouclier", + "OSE.items.typeTag": "Tapez une liste de tags descriptifs ex. 'Mêlée,Missile (5’–10’ / 11’–20’ / 21’–30’)' puis Entrée", + "OSE.items.enterTag": "Tags", + "OSE.items.pattern": "Marqueur de schéma d'attaque", - "ACKS.items.Range": "Portée", - "ACKS.items.Melee": "Mêlée", - "ACKS.items.Missile": "Distance", - "ACKS.items.Slow": "Lent", - "ACKS.items.TwoHanded": "Deux-mains", - "ACKS.items.Blunt": "Contondant", - "ACKS.items.Brace": "Fortifier", - "ACKS.items.Splash": "Zone", - "ACKS.items.Reload": "Rechargement", - "ACKS.items.Charge": "Charge", + "OSE.items.Range": "Portée", + "OSE.items.Melee": "Mêlée", + "OSE.items.Missile": "Distance", + "OSE.items.Slow": "Lent", + "OSE.items.TwoHanded": "Deux-mains", + "OSE.items.Blunt": "Contondant", + "OSE.items.Brace": "Fortifier", + "OSE.items.Splash": "Zone", + "OSE.items.Reload": "Rechargement", + "OSE.items.Charge": "Charge", - "ACKS.armor.type": "Type d'Armure", - "ACKS.armor.unarmored": "Sans Armure", - "ACKS.armor.light": "Légère", - "ACKS.armor.heavy": "Lourde", - "ACKS.armor.shield": "Bouclier", + "OSE.armor.type": "Type d'Armure", + "OSE.armor.unarmored": "Sans Armure", + "OSE.armor.light": "Légère", + "OSE.armor.heavy": "Lourde", + "OSE.armor.shield": "Bouclier", - "ACKS.spells.spend": "{speaker} lance {name}!", - "ACKS.spells.Memorized": "Memorisé", - "ACKS.spells.Cast": "Lancé", - "ACKS.spells.Range": "Portée", - "ACKS.spells.Slots": "Emplacement", - "ACKS.spells.Class": "Classe", - "ACKS.spells.Duration": "Durée", - "ACKS.spells.Level": "Niveau", - "ACKS.spells.Save": "Sauvegarde", - "ACKS.spells.ResetSlots": "Réinitialiser les Emplacements", + "OSE.spells.spend": "{speaker} lance {name}!", + "OSE.spells.Memorized": "Memorisé", + "OSE.spells.Cast": "Lancé", + "OSE.spells.Range": "Portée", + "OSE.spells.Slots": "Emplacement", + "OSE.spells.Class": "Classe", + "OSE.spells.Duration": "Durée", + "OSE.spells.Level": "Niveau", + "OSE.spells.Save": "Sauvegarde", + "OSE.spells.ResetSlots": "Réinitialiser les Emplacements", - "ACKS.abilities.Requirements": "Prérequis", + "OSE.abilities.Requirements": "Prérequis", - "ACKS.exploration.ld.long": "Ecoute aux Portes", - "ACKS.exploration.ld.short": "Eco. Porte", - "ACKS.exploration.ld.abrev": "EP", - "ACKS.exploration.od.long": "Ouverture de Portes", - "ACKS.exploration.od.short": "Ouv. Porte", - "ACKS.exploration.od.abrev": "OP", - "ACKS.exploration.sd.long": "Détection des Passages Secrets", - "ACKS.exploration.sd.short": "Dét. Secrets", - "ACKS.exploration.sd.abrev": "DS", - "ACKS.exploration.ft.long": "Détecter les Pièges", - "ACKS.exploration.ft.short": "Dét. Pièges", - "ACKS.exploration.ft.abrev": "DP", + "OSE.exploration.ld.long": "Ecoute aux Portes", + "OSE.exploration.ld.short": "Eco. Porte", + "OSE.exploration.ld.abrev": "EP", + "OSE.exploration.od.long": "Ouverture de Portes", + "OSE.exploration.od.short": "Ouv. Porte", + "OSE.exploration.od.abrev": "OP", + "OSE.exploration.sd.long": "Détection des Passages Secrets", + "OSE.exploration.sd.short": "Dét. Secrets", + "OSE.exploration.sd.abrev": "DS", + "OSE.exploration.ft.long": "Détecter les Pièges", + "OSE.exploration.ft.short": "Dét. Pièges", + "OSE.exploration.ft.abrev": "DP", - "ACKS.messages.GetExperience": "{name} a gagné {value} points d'expérience !", - "ACKS.messages.AttackSuccess": "Touche une CA de {result}! ({bonus})", - "ACKS.messages.AttackAscendingSuccess": "Touche une CAA de {result}!", - "ACKS.messages.AttackFailure": "L'Attaque échoue ({bonus})", - "ACKS.messages.AttackAscendingFailure": "L'Attaque échoue", - "ACKS.messages.InflictsDamage": "Inflige des dégâts !", - "ACKS.messages.applyDamage": "Appliquer les dégâts", - "ACKS.messages.applyHealing": "Appliquer les soins", + "OSE.messages.GetExperience": "{name} a gagné {value} points d'expérience !", + "OSE.messages.AttackSuccess": "Touche une CA de {result}! ({bonus})", + "OSE.messages.AttackAscendingSuccess": "Touche une CAA de {result}!", + "OSE.messages.AttackFailure": "L'Attaque échoue ({bonus})", + "OSE.messages.AttackAscendingFailure": "L'Attaque échoue", + "OSE.messages.InflictsDamage": "Inflige des dégâts !", + "OSE.messages.applyDamage": "Appliquer les dégâts", + "OSE.messages.applyHealing": "Appliquer les soins", - "ACKS.colors.green": "Vert", - "ACKS.colors.red": "Rouge", - "ACKS.colors.yellow": "Jaune", - "ACKS.colors.purple": "Violet", - "ACKS.colors.blue": "Bleu", - "ACKS.colors.orange": "Orange", - "ACKS.colors.white": "Blanc", + "OSE.colors.green": "Vert", + "OSE.colors.red": "Rouge", + "OSE.colors.yellow": "Jaune", + "OSE.colors.purple": "Violet", + "OSE.colors.blue": "Bleu", + "OSE.colors.orange": "Orange", + "OSE.colors.white": "Blanc", - "ACKS.reaction.Hostile": "{name} est Hostile", - "ACKS.reaction.Unfriendly": "{name} est Inamical", - "ACKS.reaction.Neutral": "{name} est Neutre", - "ACKS.reaction.Indifferent": "{name} est Indifférent", - "ACKS.reaction.Friendly": "{name} est Amical" + "OSE.reaction.Hostile": "{name} est Hostile", + "OSE.reaction.Unfriendly": "{name} est Inamical", + "OSE.reaction.Neutral": "{name} est Neutre", + "OSE.reaction.Indifferent": "{name} est Indifférent", + "OSE.reaction.Friendly": "{name} est Amical" } diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index e48c1cb..d461dbc 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -1,274 +1,274 @@ { - "ACKS.Edit": "Editar", - "ACKS.Delete": "Apagar", - "ACKS.Show": "Mostrar", - "ACKS.Add": "Adicionar", - "ACKS.Ok": "Confirmar", - "ACKS.Update": "Atualizar", - "ACKS.Reset": "Reiniciar", - "ACKS.Cancel": "Cancelar", - "ACKS.Roll": "Rolar", - "ACKS.Success": "Sucesso", - "ACKS.Failure": "Falha", + "OSE.Edit": "Editar", + "OSE.Delete": "Apagar", + "OSE.Show": "Mostrar", + "OSE.Add": "Adicionar", + "OSE.Ok": "Confirmar", + "OSE.Update": "Atualizar", + "OSE.Reset": "Reiniciar", + "OSE.Cancel": "Cancelar", + "OSE.Roll": "Rolar", + "OSE.Success": "Sucesso", + "OSE.Failure": "Falha", - "ACKS.dialog.tweaks": "Ferramentas", - "ACKS.dialog.partysheet": "Visão do grupo", - "ACKS.dialog.selectActors": "Selecionar PJs", - "ACKS.dialog.dealXP": "Distribuir XP", - "ACKS.dialog.generator": "Gerar personagem", - "ACKS.dialog.generateSaves": "Gerar salvaguardas", - "ACKS.dialog.generateScores": "Gerar status", - "ACKS.dialog.generateScore": "Rolou {score} ({count})", + "OSE.dialog.tweaks": "Ferramentas", + "OSE.dialog.partysheet": "Visão do grupo", + "OSE.dialog.selectActors": "Selecionar PJs", + "OSE.dialog.dealXP": "Distribuir XP", + "OSE.dialog.generator": "Gerar personagem", + "OSE.dialog.generateSaves": "Gerar salvaguardas", + "OSE.dialog.generateScores": "Gerar status", + "OSE.dialog.generateScore": "Rolou {score} ({count})", - "ACKS.Formula": "Fórmula", - "ACKS.SitMod": "Modificador situacional", - "ACKS.Modifier": "Modificador", - "ACKS.Modifiers": "Modificadores", - "ACKS.RollMode": "Modo de rolagem", - "ACKS.RollExample": "ex. +1d4", + "OSE.Formula": "Fórmula", + "OSE.SitMod": "Modificador situacional", + "OSE.Modifier": "Modificador", + "OSE.Modifiers": "Modificadores", + "OSE.RollMode": "Modo de rolagem", + "OSE.RollExample": "ex. +1d4", - "ACKS.roll.formula": "{label} rolar", - "ACKS.roll.appearing": "Aparecimento da rolagem ({type})", - "ACKS.roll.morale": "Teste de moral", - "ACKS.roll.hd": "Rolar Dado de Vida", - "ACKS.roll.attacksWith": "Ataca com {name}", - "ACKS.roll.attacks": "{name} ataca!", - "ACKS.roll.save": "{save} Salvaguarda", - "ACKS.roll.details.save": "Rola 1d20 >= {save} para sucesso", - "ACKS.roll.attribute": "{attribute} teste", - "ACKS.roll.details.attribute": "Rolar 1d20 <= {score} para sucesso", - "ACKS.roll.exploration": "{exploration} teste", - "ACKS.roll.details.exploration": "Rolar 1d6 <= {expl} para sucesso", - "ACKS.roll.reaction": "Rolagem de reação", - "ACKS.roll.initiative": "Grupo {group} rola para iniciativa!", - "ACKS.roll.individualInit": "{name} rola para iniciativa!", + "OSE.roll.formula": "{label} rolar", + "OSE.roll.appearing": "Aparecimento da rolagem ({type})", + "OSE.roll.morale": "Teste de moral", + "OSE.roll.hd": "Rolar Dado de Vida", + "OSE.roll.attacksWith": "Ataca com {name}", + "OSE.roll.attacks": "{name} ataca!", + "OSE.roll.save": "{save} Salvaguarda", + "OSE.roll.details.save": "Rola 1d20 >= {save} para sucesso", + "OSE.roll.attribute": "{attribute} teste", + "OSE.roll.details.attribute": "Rolar 1d20 <= {score} para sucesso", + "OSE.roll.exploration": "{exploration} teste", + "OSE.roll.details.exploration": "Rolar 1d6 <= {expl} para sucesso", + "OSE.roll.reaction": "Rolagem de reação", + "OSE.roll.initiative": "Grupo {group} rola para iniciativa!", + "OSE.roll.individualInit": "{name} rola para iniciativa!", - "ACKS.table.treasure.roll": "Rolar tesouro", + "OSE.table.treasure.roll": "Rolar tesouro", - "ACKS.details.name": "Nome", - "ACKS.details.class": "Classe", - "ACKS.details.title": "Titulo", - "ACKS.details.alignment": "Alinhamento", - "ACKS.details.level": "Nivel", - "ACKS.details.experience.base": "Experiência", - "ACKS.details.experience.bonus": "Experiência Bônus", - "ACKS.details.experience.next": "Próximo nível", - "ACKS.details.experience.share": "Compartilhar experiência", - "ACKS.details.experience.award": "Prêmio XP", - "ACKS.details.treasure": "Tipo de tesouro", - "ACKS.details.treasureTable": "Tabela", - "ACKS.details.treasureTableHint": "solte uma tabela rolável aqui para rolar o tesouro do monstro", - "ACKS.details.morale": "Moral", - "ACKS.details.reaction": "Reação", - "ACKS.details.appearing": "NA", + "OSE.details.name": "Nome", + "OSE.details.class": "Classe", + "OSE.details.title": "Titulo", + "OSE.details.alignment": "Alinhamento", + "OSE.details.level": "Nivel", + "OSE.details.experience.base": "Experiência", + "OSE.details.experience.bonus": "Experiência Bônus", + "OSE.details.experience.next": "Próximo nível", + "OSE.details.experience.share": "Compartilhar experiência", + "OSE.details.experience.award": "Prêmio XP", + "OSE.details.treasure": "Tipo de tesouro", + "OSE.details.treasureTable": "Tabela", + "OSE.details.treasureTableHint": "solte uma tabela rolável aqui para rolar o tesouro do monstro", + "OSE.details.morale": "Moral", + "OSE.details.reaction": "Reação", + "OSE.details.appearing": "NA", - "ACKS.Attack": "Ataca", - "ACKS.Encumbrance": "Sobrecarga", + "OSE.Attack": "Ataca", + "OSE.Encumbrance": "Sobrecarga", - "ACKS.Retainer": "Empregado", - "ACKS.RetainerWage": "Salário", - "ACKS.RetainerUpkeep": "Manutenção", - "ACKS.Loyalty": "Classificação de lealdade", - "ACKS.LoyaltyShort": "CL", + "OSE.Retainer": "Empregado", + "OSE.RetainerWage": "Salário", + "OSE.RetainerUpkeep": "Manutenção", + "OSE.Loyalty": "Classificação de lealdade", + "OSE.LoyaltyShort": "CL", - "ACKS.scores.str.long": "Força", - "ACKS.scores.str.short": "FOR", - "ACKS.scores.wis.long": "Sabedoria", - "ACKS.scores.wis.short": "SAB", - "ACKS.scores.int.long": "Inteligência", - "ACKS.scores.int.short": "INT", - "ACKS.scores.dex.long": "Destreza", - "ACKS.scores.dex.short": "DES", - "ACKS.scores.con.long": "Constituição", - "ACKS.scores.con.short": "CON", - "ACKS.scores.cha.long": "Carisma", - "ACKS.scores.cha.short": "CAR", + "OSE.scores.str.long": "Força", + "OSE.scores.str.short": "FOR", + "OSE.scores.wis.long": "Sabedoria", + "OSE.scores.wis.short": "SAB", + "OSE.scores.int.long": "Inteligência", + "OSE.scores.int.short": "INT", + "OSE.scores.dex.long": "Destreza", + "OSE.scores.dex.short": "DES", + "OSE.scores.con.long": "Constituição", + "OSE.scores.con.short": "CON", + "OSE.scores.cha.long": "Carisma", + "OSE.scores.cha.short": "CAR", - "ACKS.saves.death.short": "Mt", - "ACKS.saves.death.long": "Morte Veneno", - "ACKS.saves.wand.short": "V", - "ACKS.saves.wand.long": "Varinhas", - "ACKS.saves.paralysis.short": "P", - "ACKS.saves.paralysis.long": "Paralisia Petrificar", - "ACKS.saves.breath.short": "S", - "ACKS.saves.breath.long": "Ataques de Sopro", - "ACKS.saves.spell.short": "Ma", - "ACKS.saves.spell.long": "Magias Bastões Cajados", - "ACKS.saves.magic.long": "Bônus vs Magia", + "OSE.saves.death.short": "Mt", + "OSE.saves.death.long": "Morte Veneno", + "OSE.saves.wand.short": "V", + "OSE.saves.wand.long": "Varinhas", + "OSE.saves.paralysis.short": "P", + "OSE.saves.paralysis.long": "Paralisia Petrificar", + "OSE.saves.breath.short": "S", + "OSE.saves.breath.long": "Ataques de Sopro", + "OSE.saves.spell.short": "Ma", + "OSE.saves.spell.long": "Magias Bastões Cajados", + "OSE.saves.magic.long": "Bônus vs Magia", - "ACKS.Health": "Pontos de Vida", - "ACKS.HealthMax": "Pontos de Vida máximo", - "ACKS.HealthShort": "PV", - "ACKS.HitDice": "Dados de Vida", - "ACKS.HitDiceShort": "DV", + "OSE.Health": "Pontos de Vida", + "OSE.HealthMax": "Pontos de Vida máximo", + "OSE.HealthShort": "PV", + "OSE.HitDice": "Dados de Vida", + "OSE.HitDiceShort": "DV", - "ACKS.movement.base": "Taxa de Movimento", - "ACKS.movement.short": "TM", - "ACKS.movement.details": "Detalhes do movimento", - "ACKS.movement.encounter.long": "Taxa de Movimento por Encontro", - "ACKS.movement.encounter.short": "TME", - "ACKS.movement.overland.long": "Taxa de Movimento Terrestre", - "ACKS.movement.overland.short": "TMT", - "ACKS.movement.exploration.short": "TE", - "ACKS.movement.exploration.long": "Taxa de Movimento em Exploração", + "OSE.movement.base": "Taxa de Movimento", + "OSE.movement.short": "TM", + "OSE.movement.details": "Detalhes do movimento", + "OSE.movement.encounter.long": "Taxa de Movimento por Encontro", + "OSE.movement.encounter.short": "TME", + "OSE.movement.overland.long": "Taxa de Movimento Terrestre", + "OSE.movement.overland.short": "TMT", + "OSE.movement.exploration.short": "TE", + "OSE.movement.exploration.long": "Taxa de Movimento em Exploração", - "ACKS.ArmorClassNaked": "Classe de Armadura despido", - "ACKS.ArmorClass": "Classe de Armadura", - "ACKS.ArmorClassShort": "CA", - "ACKS.AscArmorClassShort": "CAA", - "ACKS.ArmorClassBonus": "Bônus de Classe de Armadura", - "ACKS.Thac0": "TAC0", - "ACKS.ABShort": "BA", - "ACKS.AB": "Bônus de Ataque", - "ACKS.MeleeShort": "COR", - "ACKS.Melee": "Corpo a corpo", - "ACKS.MeleeBonus": "Bônus corpo a corpo", - "ACKS.MissileShort": "DIS", - "ACKS.Missile": "Distância", - "ACKS.MissileBonus": "Bônus a distância", - "ACKS.Initiative": "Iniciativa", - "ACKS.InitiativeBonus": "Bonus de Iniciativa", - "ACKS.InitiativeShort": "INIC", - "ACKS.Attacks": "Ataques possiveis por rodada", - "ACKS.AttacksShort": "ATA", - "ACKS.Damage": "Dano", - "ACKS.Spellcaster": "Conjurador", + "OSE.ArmorClassNaked": "Classe de Armadura despido", + "OSE.ArmorClass": "Classe de Armadura", + "OSE.ArmorClassShort": "CA", + "OSE.AscArmorClassShort": "CAA", + "OSE.ArmorClassBonus": "Bônus de Classe de Armadura", + "OSE.Thac0": "TAC0", + "OSE.ABShort": "BA", + "OSE.AB": "Bônus de Ataque", + "OSE.MeleeShort": "COR", + "OSE.Melee": "Corpo a corpo", + "OSE.MeleeBonus": "Bônus corpo a corpo", + "OSE.MissileShort": "DIS", + "OSE.Missile": "Distância", + "OSE.MissileBonus": "Bônus a distância", + "OSE.Initiative": "Iniciativa", + "OSE.InitiativeBonus": "Bonus de Iniciativa", + "OSE.InitiativeShort": "INIC", + "OSE.Attacks": "Ataques possiveis por rodada", + "OSE.AttacksShort": "ATA", + "OSE.Damage": "Dano", + "OSE.Spellcaster": "Conjurador", - "ACKS.Language": "Lingua", - "ACKS.SpokenLanguages": "Linguas faladas", - "ACKS.Literacy": "Alfabetização", - "ACKS.Literate": "Alfabetizado", - "ACKS.LiteracyBasic": "Básico", - "ACKS.Illiterate": "Analfabeto", - "ACKS.NativeBroken": "Nativo (Semi-alfabetizado)", - "ACKS.Native": "Nativo", - "ACKS.NativePlus1": "Nativo + 1", - "ACKS.NativePlus2": "Nativo + 2", - "ACKS.NativePlus3": "Nativo + 3", + "OSE.Language": "Lingua", + "OSE.SpokenLanguages": "Linguas faladas", + "OSE.Literacy": "Alfabetização", + "OSE.Literate": "Alfabetizado", + "OSE.LiteracyBasic": "Básico", + "OSE.Illiterate": "Analfabeto", + "OSE.NativeBroken": "Nativo (Semi-alfabetizado)", + "OSE.Native": "Nativo", + "OSE.NativePlus1": "Nativo + 1", + "OSE.NativePlus2": "Nativo + 2", + "OSE.NativePlus3": "Nativo + 3", - "ACKS.NPCReaction": "Reação do NPC", - "ACKS.RetainersMax": "#Retentor", + "OSE.NPCReaction": "Reação do NPC", + "OSE.RetainersMax": "#Retentor", - "ACKS.category.saves": "Salvaguarda", - "ACKS.category.attributes": "Atributos", - "ACKS.category.inventory": "Itens", - "ACKS.category.abilities": "Habilidades", - "ACKS.category.spells": "Magias", - "ACKS.category.notes": "Notas", - "ACKS.category.languages": "Linguas", - "ACKS.category.description": "Descrição", - "ACKS.category.equipment": "Equipamento", + "OSE.category.saves": "Salvaguarda", + "OSE.category.attributes": "Atributos", + "OSE.category.inventory": "Itens", + "OSE.category.abilities": "Habilidades", + "OSE.category.spells": "Magias", + "OSE.category.notes": "Notas", + "OSE.category.languages": "Linguas", + "OSE.category.description": "Descrição", + "OSE.category.equipment": "Equipamento", - "ACKS.Setting.Initiative": "Iniciativa", - "ACKS.Setting.InitiativeHint": "Iniciativa agrupada ou individual. Iniciativa única individual é somente rolada ao inicio do combate", - "ACKS.Setting.InitiativeOnce": "Iniciativa única individual", - "ACKS.Setting.InitiativeReroll": "Iniciativa individual por rodada", - "ACKS.Setting.InitiativeGroup": "Iniciativa agrupada", - "ACKS.Setting.AscendingAC": "Classe de armadura ascendente", - "ACKS.Setting.AscendingACHint": "Quanto maior melhor", - "ACKS.Setting.Morale": "Habilitar taxa de moral dos monstros", - "ACKS.Setting.MoraleHint": "Taxa de moral é mostrada na ficha dos monstros", - "ACKS.Setting.Encumbrance": "Sobrecarga", - "ACKS.Setting.EncumbranceHint": "Escolha como a sobrecarga é calculada", - "ACKS.Setting.EncumbranceDisabled": "Desabilitada", - "ACKS.Setting.EncumbranceBasic": "Básica", - "ACKS.Setting.EncumbranceDetailed": "Detalhada", - "ACKS.Setting.MovementAuto": "Calcular movimento", - "ACKS.Setting.SignificantTreasure": "Peso significativo do tesouro", - "ACKS.Setting.SignificantTreasureHint": "Peso com o qual o tesouro reduzirá o movimento, somente usar com sobrecarga básica", + "OSE.Setting.Initiative": "Iniciativa", + "OSE.Setting.InitiativeHint": "Iniciativa agrupada ou individual. Iniciativa única individual é somente rolada ao inicio do combate", + "OSE.Setting.InitiativeOnce": "Iniciativa única individual", + "OSE.Setting.InitiativeReroll": "Iniciativa individual por rodada", + "OSE.Setting.InitiativeGroup": "Iniciativa agrupada", + "OSE.Setting.AscendingAC": "Classe de armadura ascendente", + "OSE.Setting.AscendingACHint": "Quanto maior melhor", + "OSE.Setting.Morale": "Habilitar taxa de moral dos monstros", + "OSE.Setting.MoraleHint": "Taxa de moral é mostrada na ficha dos monstros", + "OSE.Setting.Encumbrance": "Sobrecarga", + "OSE.Setting.EncumbranceHint": "Escolha como a sobrecarga é calculada", + "OSE.Setting.EncumbranceDisabled": "Desabilitada", + "OSE.Setting.EncumbranceBasic": "Básica", + "OSE.Setting.EncumbranceDetailed": "Detalhada", + "OSE.Setting.MovementAuto": "Calcular movimento", + "OSE.Setting.SignificantTreasure": "Peso significativo do tesouro", + "OSE.Setting.SignificantTreasureHint": "Peso com o qual o tesouro reduzirá o movimento, somente usar com sobrecarga básica", - "ACKS.items.Equip": "Equipar", - "ACKS.items.Unequip": "Desequipar", - "ACKS.items.Misc": "Diverso", - "ACKS.items.Weapons": "Armas", - "ACKS.items.Treasure": "Tesouro", - "ACKS.items.Armors": "Proteção", - "ACKS.items.Weight": "Peso", - "ACKS.items.Qualities": "Qualidades", - "ACKS.items.Notes": "Notas", - "ACKS.items.Cost": "Custo", - "ACKS.items.Quantity": "Qt.", - "ACKS.items.Roll": "Rolar", - "ACKS.items.BlindRoll": "Ocultar", - "ACKS.items.RollTarget": "Alvo", - "ACKS.items.RollType": "Tipo", - "ACKS.items.Damage": "Dano", - "ACKS.items.ArmorAC": "CA", - "ACKS.items.ArmorAAC": "CAA", - "ACKS.items.Bonus": "Bônus", - "ACKS.items.AtkBonus": "Bônus ataque", - "ACKS.items.roundAttacks": "Ataques usados na rodada", - "ACKS.items.roundAttacksMax": "Máximo de ataques por rodada", - "ACKS.items.resetAttacks": "Reiniciar todos ataques por rodada", - "ACKS.items.hasShield": "Tem um bônus de escudo", - "ACKS.items.typeTag": "Digite virgula para separar a lista de tag", - "ACKS.items.enterTag": "Tags", - "ACKS.items.pattern": "Marcador padrão de ataque", + "OSE.items.Equip": "Equipar", + "OSE.items.Unequip": "Desequipar", + "OSE.items.Misc": "Diverso", + "OSE.items.Weapons": "Armas", + "OSE.items.Treasure": "Tesouro", + "OSE.items.Armors": "Proteção", + "OSE.items.Weight": "Peso", + "OSE.items.Qualities": "Qualidades", + "OSE.items.Notes": "Notas", + "OSE.items.Cost": "Custo", + "OSE.items.Quantity": "Qt.", + "OSE.items.Roll": "Rolar", + "OSE.items.BlindRoll": "Ocultar", + "OSE.items.RollTarget": "Alvo", + "OSE.items.RollType": "Tipo", + "OSE.items.Damage": "Dano", + "OSE.items.ArmorAC": "CA", + "OSE.items.ArmorAAC": "CAA", + "OSE.items.Bonus": "Bônus", + "OSE.items.AtkBonus": "Bônus ataque", + "OSE.items.roundAttacks": "Ataques usados na rodada", + "OSE.items.roundAttacksMax": "Máximo de ataques por rodada", + "OSE.items.resetAttacks": "Reiniciar todos ataques por rodada", + "OSE.items.hasShield": "Tem um bônus de escudo", + "OSE.items.typeTag": "Digite virgula para separar a lista de tag", + "OSE.items.enterTag": "Tags", + "OSE.items.pattern": "Marcador padrão de ataque", - "ACKS.items.Range": "Distância", - "ACKS.items.Melee": "Corpo", - "ACKS.items.Missile": "Projétil", - "ACKS.items.Slow": "Lenta", - "ACKS.items.TwoHanded": "Duas mãos", - "ACKS.items.Blunt": "Concussão", - "ACKS.items.Brace": "Braçadeira", - "ACKS.items.Splash": "Arma de respingo", - "ACKS.items.Reload": "Recarga", - "ACKS.items.Charge": "Carga", + "OSE.items.Range": "Distância", + "OSE.items.Melee": "Corpo", + "OSE.items.Missile": "Projétil", + "OSE.items.Slow": "Lenta", + "OSE.items.TwoHanded": "Duas mãos", + "OSE.items.Blunt": "Concussão", + "OSE.items.Brace": "Braçadeira", + "OSE.items.Splash": "Arma de respingo", + "OSE.items.Reload": "Recarga", + "OSE.items.Charge": "Carga", - "ACKS.armor.type": "Tipo de armadura", - "ACKS.armor.unarmored": "Sem armadura", - "ACKS.armor.light": "Leve", - "ACKS.armor.heavy": "Pesada", - "ACKS.armor.shield": "Escudo", + "OSE.armor.type": "Tipo de armadura", + "OSE.armor.unarmored": "Sem armadura", + "OSE.armor.light": "Leve", + "OSE.armor.heavy": "Pesada", + "OSE.armor.shield": "Escudo", - "ACKS.spells.spend": "{speaker} está conjurando {name}!", - "ACKS.spells.Memorized": "Memorizada", - "ACKS.spells.Cast": "Conjurar", - "ACKS.spells.Range": "Distância", - "ACKS.spells.Slots": "Espaços", - "ACKS.spells.Class": "Classe", - "ACKS.spells.Duration": "Duração", - "ACKS.spells.Level": "Nivel", - "ACKS.spells.Save": "Salvaguarda", - "ACKS.spells.ResetSlots": "Reiniciar espaços de magia", + "OSE.spells.spend": "{speaker} está conjurando {name}!", + "OSE.spells.Memorized": "Memorizada", + "OSE.spells.Cast": "Conjurar", + "OSE.spells.Range": "Distância", + "OSE.spells.Slots": "Espaços", + "OSE.spells.Class": "Classe", + "OSE.spells.Duration": "Duração", + "OSE.spells.Level": "Nivel", + "OSE.spells.Save": "Salvaguarda", + "OSE.spells.ResetSlots": "Reiniciar espaços de magia", - "ACKS.abilities.Requirements": "Requerimentos", + "OSE.abilities.Requirements": "Requerimentos", - "ACKS.exploration.ld.long": "Ouvir ruidos", - "ACKS.exploration.ld.short": "Ouvir ruidos", - "ACKS.exploration.ld.abrev": "OR", - "ACKS.exploration.od.long": "Abrir fechaduras", - "ACKS.exploration.od.short": "Abrir fechaduras", - "ACKS.exploration.od.abrev": "AF", - "ACKS.exploration.sd.long": "Encontrar portas secreta", - "ACKS.exploration.sd.short": "Portas Secretas", - "ACKS.exploration.sd.abrev": "PS", - "ACKS.exploration.ft.long": "Encontrar armadilhas em salas", - "ACKS.exploration.ft.short": "Encontrar armadilhas", - "ACKS.exploration.ft.abrev": "EA", + "OSE.exploration.ld.long": "Ouvir ruidos", + "OSE.exploration.ld.short": "Ouvir ruidos", + "OSE.exploration.ld.abrev": "OR", + "OSE.exploration.od.long": "Abrir fechaduras", + "OSE.exploration.od.short": "Abrir fechaduras", + "OSE.exploration.od.abrev": "AF", + "OSE.exploration.sd.long": "Encontrar portas secreta", + "OSE.exploration.sd.short": "Portas Secretas", + "OSE.exploration.sd.abrev": "PS", + "OSE.exploration.ft.long": "Encontrar armadilhas em salas", + "OSE.exploration.ft.short": "Encontrar armadilhas", + "OSE.exploration.ft.abrev": "EA", - "ACKS.messages.GetExperience": "{name} ganha {value} pontos de experiência!", - "ACKS.messages.AttackSuccess": "Acerta CA {result}! ({bonus})", - "ACKS.messages.AttackAscendingSuccess": "Acerta CA {result}!", - "ACKS.messages.AttackFailure": "Ataque falha ({bonus})", - "ACKS.messages.AttackAscendingFailure": "Ataque falha", - "ACKS.messages.InflictsDamage": "Inflige dano!", - "ACKS.messages.applyDamage": "Aplicar dano", - "ACKS.messages.applyHealing": "Aplicar cura", + "OSE.messages.GetExperience": "{name} ganha {value} pontos de experiência!", + "OSE.messages.AttackSuccess": "Acerta CA {result}! ({bonus})", + "OSE.messages.AttackAscendingSuccess": "Acerta CA {result}!", + "OSE.messages.AttackFailure": "Ataque falha ({bonus})", + "OSE.messages.AttackAscendingFailure": "Ataque falha", + "OSE.messages.InflictsDamage": "Inflige dano!", + "OSE.messages.applyDamage": "Aplicar dano", + "OSE.messages.applyHealing": "Aplicar cura", - "ACKS.colors.green": "Verde", - "ACKS.colors.red": "Vermelho", - "ACKS.colors.yellow": "Amarelo", - "ACKS.colors.purple": "Roxo", - "ACKS.colors.blue": "Azul", - "ACKS.colors.orange": "Laranja", - "ACKS.colors.white": "Branco", + "OSE.colors.green": "Verde", + "OSE.colors.red": "Vermelho", + "OSE.colors.yellow": "Amarelo", + "OSE.colors.purple": "Roxo", + "OSE.colors.blue": "Azul", + "OSE.colors.orange": "Laranja", + "OSE.colors.white": "Branco", - "ACKS.reaction.check": "Teste de reação", - "ACKS.reaction.Hostile": "{name} é Hostil", - "ACKS.reaction.Unfriendly": "{name} é Inamistoso", - "ACKS.reaction.Neutral": "{name} é Neutro", - "ACKS.reaction.Indifferent": "{name} é Indiferente", - "ACKS.reaction.Friendly": "{name} é Amigável" + "OSE.reaction.check": "Teste de reação", + "OSE.reaction.Hostile": "{name} é Hostil", + "OSE.reaction.Unfriendly": "{name} é Inamistoso", + "OSE.reaction.Neutral": "{name} é Neutro", + "OSE.reaction.Indifferent": "{name} é Indiferente", + "OSE.reaction.Friendly": "{name} é Amigável" } diff --git a/src/module/actor/actor-sheet.js b/src/module/actor/actor-sheet.js index 8775bb5..b49cf7e 100644 --- a/src/module/actor/actor-sheet.js +++ b/src/module/actor/actor-sheet.js @@ -1,7 +1,7 @@ -import { AcksActor } from "./entity.js"; -import { AcksEntityTweaks } from "../dialog/entity-tweaks.js"; +import { OseActor } from "./entity.js"; +import { OseEntityTweaks } from "../dialog/entity-tweaks.js"; -export class AcksActorSheet extends ActorSheet { +export class OseActorSheet extends ActorSheet { constructor(...args) { super(...args); } @@ -10,11 +10,10 @@ export class AcksActorSheet extends ActorSheet { getData() { const data = super.getData(); - data.config = CONFIG.ACKS; + data.config = CONFIG.OSE; // Settings - data.config.ascendingAC = game.settings.get("acks", "ascendingAC"); - data.config.encumbranceBasic = - game.settings.get("acks", "encumbranceOption") == "basic"; + data.config.ascendingAC = game.settings.get("ose", "ascendingAC"); + data.config.encumbrance = game.settings.get("ose", "encumbranceOption"); // Prepare owned items this._prepareItems(data); @@ -120,11 +119,19 @@ export class AcksActorSheet extends ActorSheet { } activateListeners(html) { + super.activateListeners(html); + // Item summaries html .find(".item .item-name h4") .click((event) => this._onItemSummary(event)); + html.find(".item .item-controls .item-show").click(async (ev) => { + const li = $(ev.currentTarget).parents(".item"); + const item = this.actor.getOwnedItem(li.data("itemId")); + item.show(); + }); + html.find(".saving-throw .attribute-name a").click((ev) => { let actorObject = this.actor; let element = event.currentTarget; @@ -132,12 +139,6 @@ export class AcksActorSheet extends ActorSheet { actorObject.rollSave(save, { event: event }); }); - html.find(".item .item-controls .item-show").click(async (ev) => { - const li = $(ev.currentTarget).parents(".item"); - const item = this.actor.getOwnedItem(li.data("itemId")); - item.show(); - }); - html.find(".item .item-rollable .item-image").click(async (ev) => { const li = $(ev.currentTarget).parents(".item"); const item = this.actor.getOwnedItem(li.data("itemId")); @@ -147,7 +148,7 @@ export class AcksActorSheet extends ActorSheet { data: { counter: { value: item.data.data.counter.value - 1 } }, }); } - item.rollWeapon({ skipDialog: ev.ctrlKey }); + item.rollWeapon({ skipDialog: ev.ctrlKey }); } else if (item.type == "spell") { item.spendSpell({ skipDialog: ev.ctrlKey }); } else { @@ -155,32 +156,37 @@ export class AcksActorSheet extends ActorSheet { } }); - html - .find(".memorize input") - .click((ev) => ev.target.select()) - .change(this._onSpellChange.bind(this)); - html.find(".attack a").click((ev) => { let actorObject = this.actor; let element = event.currentTarget; let attack = element.parentElement.parentElement.dataset.attack; const rollData = { actor: this.data, - roll: {} - } - actorObject.targetAttack(rollData, attack, {type: attack, skipDialog: ev.ctrlKey}); + roll: {}, + }; + actorObject.targetAttack(rollData, attack, { + type: attack, + skipDialog: ev.ctrlKey, + }); }); - - html.find(".spells .item-reset").click((ev) => { - this._resetSpells(ev); - }); - + html.find(".hit-dice .attribute-name a").click((ev) => { let actorObject = this.actor; actorObject.rollHitDice({ event: event }); }); - super.activateListeners(html); + // Everything below here is only needed if the sheet is editable + if (!this.options.editable) return; + + html + .find(".memorize input") + .click((ev) => ev.target.select()) + .change(this._onSpellChange.bind(this)); + + + html.find(".spells .item-reset").click((ev) => { + this._resetSpells(ev); + }); } // Override to set resizable initial size @@ -221,14 +227,14 @@ export class AcksActorSheet extends ActorSheet { let heightDelta = this.position.height - this.options.height; editor.style.height = `${ heightDelta + parseInt(container.dataset.editorSize) - }px`; + }px`; } }); } _onConfigureActor(event) { event.preventDefault(); - new AcksEntityTweaks(this.actor, { + new OseEntityTweaks(this.actor, { top: this.position.top + 40, left: this.position.left + (this.position.width - 400) / 2, }).render(true); @@ -246,7 +252,7 @@ export class AcksActorSheet extends ActorSheet { if (this.options.editable && canConfigure) { buttons = [ { - label: game.i18n.localize("ACKS.dialog.tweaks"), + label: game.i18n.localize("OSE.dialog.tweaks"), class: "configure-actor", icon: "fas fa-code", onclick: (ev) => this._onConfigureActor(ev), diff --git a/src/module/actor/character-sheet.js b/src/module/actor/character-sheet.js index 86d483f..96efd00 100644 --- a/src/module/actor/character-sheet.js +++ b/src/module/actor/character-sheet.js @@ -1,12 +1,12 @@ -import { AcksActor } from "./entity.js"; -import { AcksActorSheet } from "./actor-sheet.js"; -import { AcksCharacterModifiers } from "../dialog/character-modifiers.js"; -import { AcksCharacterCreator } from "../dialog/character-creation.js"; +import { OseActor } from "./entity.js"; +import { OseActorSheet } from "./actor-sheet.js"; +import { OseCharacterModifiers } from "../dialog/character-modifiers.js"; +import { OseCharacterCreator } from "../dialog/character-creation.js"; /** * Extend the basic ActorSheet with some very simple modifications */ -export class AcksActorSheetCharacter extends AcksActorSheet { +export class OseActorSheetCharacter extends OseActorSheet { constructor(...args) { super(...args); } @@ -19,14 +19,14 @@ export class AcksActorSheetCharacter extends AcksActorSheet { */ static get defaultOptions() { return mergeObject(super.defaultOptions, { - classes: ["acks", "sheet", "actor", "character"], - template: "systems/acks/templates/actors/character-sheet.html", + classes: ["ose", "sheet", "actor", "character"], + template: "systems/ose/templates/actors/character-sheet.html", width: 450, height: 530, resizable: true, tabs: [ { - navSelector: ".tabs", + navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "attributes", }, @@ -35,7 +35,7 @@ export class AcksActorSheetCharacter extends AcksActorSheet { } generateScores() { - new AcksCharacterCreator(this.actor, { + new OseCharacterCreator(this.actor, { top: this.position.top + 40, left: this.position.left + (this.position.width - 400) / 2, }).render(true); @@ -48,9 +48,9 @@ export class AcksActorSheetCharacter extends AcksActorSheet { getData() { const data = super.getData(); - data.config.ascendingAC = game.settings.get("acks", "ascendingAC"); - data.config.initiative = game.settings.get("acks", "initiative") != "group"; - data.config.encumbrance = game.settings.get("acks", "encumbranceOption"); + data.config.ascendingAC = game.settings.get("ose", "ascendingAC"); + data.config.initiative = game.settings.get("ose", "initiative") != "group"; + data.config.encumbrance = game.settings.get("ose", "encumbranceOption"); data.isNew = this.actor.isNew(); return data; @@ -58,11 +58,11 @@ export class AcksActorSheetCharacter extends AcksActorSheet { async _chooseLang() { - let choices = CONFIG.ACKS.languages; + let choices = CONFIG.OSE.languages; let templateData = { choices: choices }, dlg = await renderTemplate( - "/systems/acks/templates/actors/dialogs/lang-create.html", + "/systems/ose/templates/actors/dialogs/lang-create.html", templateData ); //Create Dialog window @@ -72,7 +72,7 @@ export class AcksActorSheetCharacter extends AcksActorSheet { content: dlg, buttons: { ok: { - label: game.i18n.localize("ACKS.Ok"), + label: game.i18n.localize("OSE.Ok"), icon: '', callback: (html) => { resolve({ @@ -82,7 +82,7 @@ export class AcksActorSheetCharacter extends AcksActorSheet { }, cancel: { icon: '', - label: game.i18n.localize("ACKS.Cancel"), + label: game.i18n.localize("OSE.Cancel"), }, }, default: "ok", @@ -94,7 +94,7 @@ export class AcksActorSheetCharacter extends AcksActorSheet { const data = this.actor.data.data; let update = duplicate(data[table]); this._chooseLang().then((dialogInput) => { - const name = CONFIG.ACKS.languages[dialogInput.choice]; + const name = CONFIG.OSE.languages[dialogInput.choice]; if (update.value) { update.value.push(name); } else { @@ -125,7 +125,7 @@ export class AcksActorSheetCharacter extends AcksActorSheet { _onShowModifiers(event) { event.preventDefault(); - new AcksCharacterModifiers(this.actor, { + new OseCharacterModifiers(this.actor, { top: this.position.top + 40, left: this.position.left + (this.position.width - 400) / 2, }).render(true); @@ -136,6 +136,50 @@ export class AcksActorSheetCharacter extends AcksActorSheet { * @param html {HTML} The prepared HTML object ready to be rendered into the DOM */ activateListeners(html) { + super.activateListeners(html); + + html.find(".ability-score .attribute-name a").click((ev) => { + let actorObject = this.actor; + let element = event.currentTarget; + let score = element.parentElement.parentElement.dataset.score; + let stat = element.parentElement.parentElement.dataset.stat; + if (!score) { + if (stat == "lr") { + actorObject.rollLoyalty(score, { event: event }); + } + } else { + actorObject.rollCheck(score, { event: event }); + } + }); + + html.find(".exploration .attribute-name a").click((ev) => { + let actorObject = this.actor; + let element = event.currentTarget; + let expl = element.parentElement.parentElement.dataset.exploration; + actorObject.rollExploration(expl, { event: event }); + }); + + html.find(".inventory .item-titles .item-caret").click((ev) => { + let items = $(event.currentTarget.parentElement.parentElement).children( + ".item-list" + ); + if (items.css("display") == "none") { + let el = $(event.currentTarget).find(".fas.fa-caret-right"); + el.removeClass("fa-caret-right"); + el.addClass("fa-caret-down"); + items.slideDown(200); + } else { + let el = $(event.currentTarget).find(".fas.fa-caret-down"); + el.removeClass("fa-caret-down"); + el.addClass("fa-caret-right"); + items.slideUp(200); + } + }); + + html.find("a[data-action='modifiers']").click((ev) => { + this._onShowModifiers(ev); + }); + // Everything below here is only needed if the sheet is editable if (!this.options.editable) return; @@ -200,53 +244,8 @@ export class AcksActorSheetCharacter extends AcksActorSheet { .click((ev) => ev.target.select()) .change(this._onQtChange.bind(this)); - html.find(".ability-score .attribute-name a").click((ev) => { - let actorObject = this.actor; - let element = event.currentTarget; - let score = element.parentElement.parentElement.dataset.score; - let stat = element.parentElement.parentElement.dataset.stat; - if (!score) { - if (stat == "lr") { - actorObject.rollLoyalty(score, { event: event }); - } - } else { - actorObject.rollCheck(score, { event: event }); - } - }); - - html.find(".exploration .attribute-name a").click((ev) => { - let actorObject = this.actor; - let element = event.currentTarget; - let expl = element.parentElement.parentElement.dataset.exploration; - actorObject.rollExploration(expl, { event: event }); - }); - - html.find(".inventory .item-titles .item-caret").click((ev) => { - let items = $(event.currentTarget.parentElement.parentElement).children( - ".item-list" - ); - if (items.css("display") == "none") { - let el = $(event.currentTarget).find(".fas.fa-caret-right"); - el.removeClass("fa-caret-right"); - el.addClass("fa-caret-down"); - items.slideDown(200); - } else { - let el = $(event.currentTarget).find(".fas.fa-caret-down"); - el.removeClass("fa-caret-down"); - el.addClass("fa-caret-right"); - items.slideUp(200); - } - }); - - html.find("a[data-action='modifiers']").click((ev) => { - this._onShowModifiers(ev); - }); - html.find("a[data-action='generate-scores']").click((ev) => { this.generateScores(ev); }); - - // Handle default listeners last so system listeners are triggered first - super.activateListeners(html); } } diff --git a/src/module/actor/entity.js b/src/module/actor/entity.js index 80ecbff..58f728e 100644 --- a/src/module/actor/entity.js +++ b/src/module/actor/entity.js @@ -1,6 +1,6 @@ -import { AcksDice } from "../dice.js"; +import { OseDice } from "../dice.js"; -export class AcksActor extends Actor { +export class OseActor extends Actor { /** * Extends data from base Actor class */ @@ -17,7 +17,7 @@ export class AcksActor extends Actor { this.computeTreasure(); // Determine Initiative - if (game.settings.get("acks", "initiative") != "group") { + if (game.settings.get("ose", "initiative") != "group") { data.initiative.value = data.initiative.mod; if (this.data.type == "character") { data.initiative.value += data.scores.dex.mod; @@ -42,7 +42,7 @@ export class AcksActor extends Actor { }).then(() => { const speaker = ChatMessage.getSpeaker({ actor: this }); ChatMessage.create({ - content: game.i18n.format("ACKS.messages.GetExperience", { + content: game.i18n.format("OSE.messages.GetExperience", { name: this.name, value: modified, }), @@ -71,7 +71,7 @@ export class AcksActor extends Actor { generateSave(hd) { let saves = {}; for (let i = 0; i <= hd; i++) { - let tmp = CONFIG.ACKS.monster_saves[i]; + let tmp = CONFIG.OSE.monster_saves[i]; if (tmp) { saves = tmp; } @@ -115,7 +115,7 @@ export class AcksActor extends Actor { } rollSave(save, options = {}) { - const label = game.i18n.localize(`ACKS.saves.${save}.long`); + const label = game.i18n.localize(`OSE.saves.${save}.long`); const rollParts = ["1d20"]; const data = { @@ -123,21 +123,24 @@ export class AcksActor extends Actor { roll: { type: "above", target: this.data.data.saves[save].value, + magic: this.data.data.scores.wis.mod }, - details: game.i18n.format("ACKS.roll.details.save", { save: label }), + details: game.i18n.format("OSE.roll.details.save", { save: label }), }; let skip = options.event && options.event.ctrlKey; + const rollMethod = this.data.type == "character" ? OseDice.RollSave : OseDice.Roll; + // Roll and return - return AcksDice.Roll({ + return rollMethod({ event: options.event, parts: rollParts, data: data, skipDialog: skip, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.format("ACKS.roll.save", { save: label }), - title: game.i18n.format("ACKS.roll.save", { save: label }), + flavor: game.i18n.format("OSE.roll.save", { save: label }), + title: game.i18n.format("OSE.roll.save", { save: label }), }); } @@ -153,19 +156,19 @@ export class AcksActor extends Actor { }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, skipDialog: true, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.localize("ACKS.roll.morale"), - title: game.i18n.localize("ACKS.roll.morale"), + flavor: game.i18n.localize("OSE.roll.morale"), + title: game.i18n.localize("OSE.roll.morale"), }); } rollLoyalty(options = {}) { - const label = game.i18n.localize(`ACKS.roll.loyalty`); + const label = game.i18n.localize(`OSE.roll.loyalty`); const rollParts = ["2d6"]; const data = { @@ -177,7 +180,7 @@ export class AcksActor extends Actor { }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, @@ -196,19 +199,19 @@ export class AcksActor extends Actor { roll: { type: "table", table: { - 2: game.i18n.format("ACKS.reaction.Hostile", { + 2: game.i18n.format("OSE.reaction.Hostile", { name: this.data.name, }), - 3: game.i18n.format("ACKS.reaction.Unfriendly", { + 3: game.i18n.format("OSE.reaction.Unfriendly", { name: this.data.name, }), - 6: game.i18n.format("ACKS.reaction.Neutral", { + 6: game.i18n.format("OSE.reaction.Neutral", { name: this.data.name, }), - 9: game.i18n.format("ACKS.reaction.Indifferent", { + 9: game.i18n.format("OSE.reaction.Indifferent", { name: this.data.name, }), - 12: game.i18n.format("ACKS.reaction.Friendly", { + 12: game.i18n.format("OSE.reaction.Friendly", { name: this.data.name, }), }, @@ -218,19 +221,19 @@ export class AcksActor extends Actor { let skip = options.event && options.event.ctrlKey; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, skipDialog: skip, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.localize("ACKS.reaction.check"), - title: game.i18n.localize("ACKS.reaction.check"), + flavor: game.i18n.localize("OSE.reaction.check"), + title: game.i18n.localize("OSE.reaction.check"), }); } rollCheck(score, options = {}) { - const label = game.i18n.localize(`ACKS.scores.${score}.long`); + const label = game.i18n.localize(`OSE.scores.${score}.long`); const rollParts = ["1d20"]; const data = { @@ -240,7 +243,7 @@ export class AcksActor extends Actor { target: this.data.data.scores[score].value, }, - details: game.i18n.format("ACKS.roll.details.attribute", { + details: game.i18n.format("OSE.roll.details.attribute", { score: label, }), }; @@ -248,19 +251,19 @@ export class AcksActor extends Actor { let skip = options.event && options.event.ctrlKey; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, skipDialog: skip, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.format("ACKS.roll.attribute", { attribute: label }), - title: game.i18n.format("ACKS.roll.attribute", { attribute: label }), + flavor: game.i18n.format("OSE.roll.attribute", { attribute: label }), + title: game.i18n.format("OSE.roll.attribute", { attribute: label }), }); } rollHitDice(options = {}) { - const label = game.i18n.localize(`ACKS.roll.hd`); + const label = game.i18n.localize(`OSE.roll.hd`); const rollParts = [this.data.data.hp.hd]; if (this.data.type == "character") { rollParts.push(this.data.data.scores.con.mod); @@ -274,7 +277,7 @@ export class AcksActor extends Actor { }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, @@ -305,19 +308,19 @@ export class AcksActor extends Actor { }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, skipDialog: true, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.format("ACKS.roll.appearing", { type: label }), - title: game.i18n.format("ACKS.roll.appearing", { type: label }), + flavor: game.i18n.format("OSE.roll.appearing", { type: label }), + title: game.i18n.format("OSE.roll.appearing", { type: label }), }); } rollExploration(expl, options = {}) { - const label = game.i18n.localize(`ACKS.exploration.${expl}.long`); + const label = game.i18n.localize(`OSE.exploration.${expl}.long`); const rollParts = ["1d6"]; const data = { @@ -326,7 +329,7 @@ export class AcksActor extends Actor { type: "below", target: this.data.data.exploration[expl], }, - details: game.i18n.format("ACKS.roll.details.exploration", { + details: game.i18n.format("OSE.roll.details.exploration", { expl: label, }), }; @@ -334,14 +337,14 @@ export class AcksActor extends Actor { let skip = options.event && options.event.ctrlKey; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, skipDialog: skip, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.format("ACKS.roll.exploration", { exploration: label }), - title: game.i18n.format("ACKS.roll.exploration", { exploration: label }), + flavor: game.i18n.format("OSE.roll.exploration", { exploration: label }), + title: game.i18n.format("OSE.roll.exploration", { exploration: label }), }); } @@ -369,14 +372,14 @@ export class AcksActor extends Actor { } // Damage roll - AcksDice.Roll({ + OseDice.Roll({ event: options.event, parts: dmgParts, data: rollData, skipDialog: true, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: `${attData.label} - ${game.i18n.localize("ACKS.Damage")}`, - title: `${attData.label} - ${game.i18n.localize("ACKS.Damage")}`, + flavor: `${attData.label} - ${game.i18n.localize("OSE.Damage")}`, + title: `${attData.label} - ${game.i18n.localize("OSE.Damage")}`, }); } @@ -384,7 +387,10 @@ export class AcksActor extends Actor { if (game.user.targets.size > 0) { for (let t of game.user.targets.values()) { data.roll.target = t; - await this.rollAttack(data, { type: type, skipDialog: options.skipDialog }); + await this.rollAttack(data, { + type: type, + skipDialog: options.skipDialog, + }); } } else { this.rollAttack(data, { type: type, skipDialog: options.skipDialog }); @@ -393,21 +399,21 @@ export class AcksActor extends Actor { rollAttack(attData, options = {}) { const data = this.data.data; - const rollParts = ["1d20x="]; + const rollParts = ["1d20"]; const dmgParts = []; - let label = game.i18n.format("ACKS.roll.attacks", { + let label = game.i18n.format("OSE.roll.attacks", { name: this.data.name, }); if (!attData.item) { dmgParts.push("1d6"); } else { - label = game.i18n.format("ACKS.roll.attacksWith", { + label = game.i18n.format("OSE.roll.attacksWith", { name: attData.item.name, }); dmgParts.push(attData.item.data.damage); } - let ascending = game.settings.get("acks", "ascendingAC"); + let ascending = game.settings.get("ose", "ascendingAC"); if (ascending) { rollParts.push(data.thac0.bba.toString()); } @@ -437,12 +443,12 @@ export class AcksActor extends Actor { thac0: thac0, dmg: dmgParts, save: attData.roll.save, - target: attData.roll.target + target: attData.roll.target, }, }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: rollData, @@ -494,20 +500,25 @@ export class AcksActor extends Actor { return; } const data = this.data.data; - let option = game.settings.get("acks", "encumbranceOption"); + let option = game.settings.get("ose", "encumbranceOption"); // Compute encumbrance let totalWeight = 0; let hasItems = false; Object.values(this.data.items).forEach((item) => { - if (item.type == "item" && (['complete', 'disabled'].includes(option) || item.data.treasure)) { - totalWeight += item.data.quantity.value * item.data.weight; + if (item.type == "item" && !item.data.treasure) { hasItems = true; - } else if (option != 'basic' && ['weapon', 'armor'].includes(item.type)) { + } + if ( + item.type == "item" && + (["complete", "disabled"].includes(option) || item.data.treasure) + ) { + totalWeight += item.data.quantity.value * item.data.weight; + } else if (option != "basic" && ["weapon", "armor"].includes(item.type)) { totalWeight += item.data.weight; } }); - if (option === 'detailed' && hasItems) totalWeight += 80; + if (option === "detailed" && hasItems) totalWeight += 80; data.encumbrance = { pct: Math.clamped( @@ -527,7 +538,7 @@ export class AcksActor extends Actor { _calculateMovement() { const data = this.data.data; - let option = game.settings.get("acks", "encumbranceOption"); + let option = game.settings.get("ose", "encumbranceOption"); let weight = data.encumbrance.value; let delta = data.encumbrance.max - 1600; if (["detailed", "complete"].includes(option)) { @@ -565,7 +576,7 @@ export class AcksActor extends Actor { data.movement.base = 60; break; } - if (weight > game.settings.get("acks", "significantTreasure")) { + if (weight > game.settings.get("ose", "significantTreasure")) { data.movement.base -= 30; } } @@ -593,7 +604,7 @@ export class AcksActor extends Actor { } // Compute AC let baseAc = 9; - let baseAac = 0; + let baseAac = 10; let AcShield = 0; let AacShield = 0; const data = this.data.data; @@ -631,27 +642,27 @@ export class AcksActor extends Actor { 16: 2, 18: 3, }; - data.scores.str.mod = AcksActor._valueFromTable( + data.scores.str.mod = OseActor._valueFromTable( standard, data.scores.str.value ); - data.scores.int.mod = AcksActor._valueFromTable( + data.scores.int.mod = OseActor._valueFromTable( standard, data.scores.int.value ); - data.scores.dex.mod = AcksActor._valueFromTable( + data.scores.dex.mod = OseActor._valueFromTable( standard, data.scores.dex.value ); - data.scores.cha.mod = AcksActor._valueFromTable( + data.scores.cha.mod = OseActor._valueFromTable( standard, data.scores.cha.value ); - data.scores.wis.mod = AcksActor._valueFromTable( + data.scores.wis.mod = OseActor._valueFromTable( standard, data.scores.wis.value ); - data.scores.con.mod = AcksActor._valueFromTable( + data.scores.con.mod = OseActor._valueFromTable( standard, data.scores.con.value ); @@ -666,12 +677,12 @@ export class AcksActor extends Actor { 16: 1, 18: 2, }; - data.scores.dex.init = AcksActor._valueFromTable( - standard, + data.scores.dex.init = OseActor._valueFromTable( + capped, data.scores.dex.value ); - data.scores.cha.npc = AcksActor._valueFromTable( - standard, + data.scores.cha.npc = OseActor._valueFromTable( + capped, data.scores.cha.value ); data.scores.cha.retain = data.scores.cha.mod + 4; @@ -685,28 +696,30 @@ export class AcksActor extends Actor { 16: 4, 18: 5, }; - data.exploration.odMod = AcksActor._valueFromTable( + data.exploration.odMod = OseActor._valueFromTable( od, data.scores.str.value ); const literacy = { - 3: "ACKS.Illiterate", - 9: "ACKS.Literate", + 0: "", + 3: "OSE.Illiterate", + 6: "OSE.LiteracyBasic", + 9: "OSE.Literate", }; - data.languages.literacy = AcksActor._valueFromTable( + data.languages.literacy = OseActor._valueFromTable( literacy, data.scores.int.value ); const spoken = { - 0: "ACKS.NativeBroken", - 3: "ACKS.Native", - 13: "ACKS.NativePlus1", - 16: "ACKS.NativePlus2", - 18: "ACKS.NativePlus3", + 0: "OSE.NativeBroken", + 3: "OSE.Native", + 13: "OSE.NativePlus1", + 16: "OSE.NativePlus2", + 18: "OSE.NativePlus3", }; - data.languages.spoken = AcksActor._valueFromTable( + data.languages.spoken = OseActor._valueFromTable( spoken, data.scores.int.value ); diff --git a/src/module/actor/monster-sheet.js b/src/module/actor/monster-sheet.js index 2d78f01..322e2e2 100644 --- a/src/module/actor/monster-sheet.js +++ b/src/module/actor/monster-sheet.js @@ -1,10 +1,10 @@ -import { AcksActor } from "./entity.js"; -import { AcksActorSheet } from "./actor-sheet.js"; +import { OseActor } from "./entity.js"; +import { OseActorSheet } from "./actor-sheet.js"; /** * Extend the basic ActorSheet with some very simple modifications */ -export class AcksActorSheetMonster extends AcksActorSheet { +export class OseActorSheetMonster extends OseActorSheet { constructor(...args) { super(...args); } @@ -17,8 +17,8 @@ export class AcksActorSheetMonster extends AcksActorSheet { */ static get defaultOptions() { return mergeObject(super.defaultOptions, { - classes: ["acks", "sheet", "monster", "actor"], - template: "systems/acks/templates/actors/monster-sheet.html", + classes: ["ose", "sheet", "monster", "actor"], + template: "systems/ose/templates/actors/monster-sheet.html", width: 450, height: 560, resizable: true, @@ -36,20 +36,20 @@ export class AcksActorSheetMonster extends AcksActorSheet { * Monster creation helpers */ async generateSave() { - let choices = CONFIG.ACKS.monster_saves; + let choices = CONFIG.OSE.monster_saves; let templateData = { choices: choices }, dlg = await renderTemplate( - "/systems/acks/templates/actors/dialogs/monster-saves.html", + "/systems/ose/templates/actors/dialogs/monster-saves.html", templateData ); //Create Dialog window new Dialog({ - title: game.i18n.localize("ACKS.dialog.generateSaves"), + title: game.i18n.localize("OSE.dialog.generateSaves"), content: dlg, buttons: { ok: { - label: game.i18n.localize("ACKS.Ok"), + label: game.i18n.localize("OSE.Ok"), icon: '', callback: (html) => { let hd = html.find('select[name="choice"]').val(); @@ -58,7 +58,7 @@ export class AcksActorSheetMonster extends AcksActorSheet { }, cancel: { icon: '', - label: game.i18n.localize("ACKS.Cancel"), + label: game.i18n.localize("OSE.Cancel"), }, }, default: "ok", @@ -75,7 +75,7 @@ export class AcksActorSheetMonster extends AcksActorSheet { const data = super.getData(); // Settings - data.config.morale = game.settings.get("acks", "morale"); + data.config.morale = game.settings.get("ose", "morale"); data.data.details.treasure.link = TextEditor.enrichHTML(data.data.details.treasure.table); data.isNew = this.actor.isNew(); return data; @@ -117,7 +117,7 @@ export class AcksActorSheetMonster extends AcksActorSheet { content: dlg, buttons: { ok: { - label: game.i18n.localize("ACKS.Ok"), + label: game.i18n.localize("OSE.Ok"), icon: '', callback: (html) => { resolve({ @@ -128,7 +128,7 @@ export class AcksActorSheetMonster extends AcksActorSheet { }, cancel: { icon: '', - label: game.i18n.localize("ACKS.Cancel"), + label: game.i18n.localize("OSE.Cancel"), }, }, default: "ok", @@ -170,6 +170,24 @@ export class AcksActorSheetMonster extends AcksActorSheet { * @param html {HTML} The prepared HTML object ready to be rendered into the DOM */ activateListeners(html) { + super.activateListeners(html); + + html.find(".morale-check a").click((ev) => { + let actorObject = this.actor; + actorObject.rollMorale({ event: event }); + }); + + html.find(".reaction-check a").click((ev) => { + let actorObject = this.actor; + actorObject.rollReaction({ event: event }); + }); + + html.find(".appearing-check a").click((ev) => { + let actorObject = this.actor; + let check = $(ev.currentTarget).closest('.check-field').data('check'); + actorObject.rollAppearing({ event: event, check: check }); + }); + // Everything below here is only needed if the sheet is editable if (!this.options.editable) return; @@ -220,22 +238,6 @@ export class AcksActorSheetMonster extends AcksActorSheet { this._resetCounters(ev); }); - html.find(".morale-check a").click((ev) => { - let actorObject = this.actor; - actorObject.rollMorale({ event: event }); - }); - - html.find(".reaction-check a").click((ev) => { - let actorObject = this.actor; - actorObject.rollReaction({ event: event }); - }); - - html.find(".appearing-check a").click((ev) => { - let actorObject = this.actor; - let check = $(ev.currentTarget).closest('.check-field').data('check'); - actorObject.rollAppearing({ event: event, check: check }); - }); - html .find(".counter input") .click((ev) => ev.target.select()) @@ -250,7 +252,7 @@ export class AcksActorSheetMonster extends AcksActorSheet { const li = $(ev.currentTarget).parents(".item"); const item = this.actor.getOwnedItem(li.data("itemId")); let currentColor = item.data.data.pattern; - let colors = Object.keys(CONFIG.ACKS.colors); + let colors = Object.keys(CONFIG.OSE.colors); let index = colors.indexOf(currentColor); if (index + 1 == colors.length) { index = 0; @@ -263,7 +265,5 @@ export class AcksActorSheetMonster extends AcksActorSheet { }); html.find('button[data-action="generate-saves"]').click(() => this.generateSave()); - // Handle default listeners last so system listeners are triggered first - super.activateListeners(html); } } diff --git a/src/module/chat.js b/src/module/chat.js index d4c445c..41e656e 100644 --- a/src/module/chat.js +++ b/src/module/chat.js @@ -11,13 +11,13 @@ export const addChatMessageContextOptions = function(html, options) { let canApply = li => canvas.tokens.controlled.length && li.find(".dice-roll").length; options.push( { - name: game.i18n.localize("ACKS.messages.applyDamage"), + name: game.i18n.localize("OSE.messages.applyDamage"), icon: '', condition: canApply, callback: li => applyChatCardDamage(li, 1) }, { - name: game.i18n.localize("ACKS.messages.applyHealing"), + name: game.i18n.localize("OSE.messages.applyHealing"), icon: '', condition: canApply, callback: li => applyChatCardDamage(li, -1) diff --git a/src/module/combat.js b/src/module/combat.js index 7fdf28b..5c29c81 100644 --- a/src/module/combat.js +++ b/src/module/combat.js @@ -1,10 +1,10 @@ -export class AcksCombat { +export class OseCombat { static rollInitiative(combat, data) { // Check groups data.combatants = []; let groups = {}; combat.data.combatants.forEach((cbt) => { - groups[cbt.flags.acks.group] = { present: true }; + groups[cbt.flags.ose.group] = { present: true }; data.combatants.push(cbt); }); @@ -12,7 +12,7 @@ export class AcksCombat { Object.keys(groups).forEach((group) => { let roll = new Roll("1d6").roll(); roll.toMessage({ - flavor: game.i18n.format('ACKS.roll.initiative', { group: CONFIG["ACKS"].colors[group] }), + flavor: game.i18n.format('OSE.roll.initiative', { group: CONFIG["OSE"].colors[group] }), }); groups[group].initiative = roll.total; }); @@ -26,17 +26,18 @@ export class AcksCombat { data.combatants[i].initiative = -789; } else { data.combatants[i].initiative = - groups[data.combatants[i].flags.acks.group].initiative; + groups[data.combatants[i].flags.ose.group].initiative; } } + combat.setupTurns(); } static async resetInitiative(combat, data) { - let updates = []; - combat.data.combatants.forEach((c, i) => { - updates.push({_id: c._id, initiative: ""}); - }); - await combat.updateEmbeddedEntity("Combatant", updates); + let reroll = game.settings.get("ose", "rerollInitiative"); + if (!["reset", "reroll"].includes(reroll)) { + return; + } + combat.resetAll(); } static async individualInitiative(combat, data) { @@ -65,7 +66,7 @@ export class AcksCombat { token: c.token._id, alias: c.token.name }, - flavor: game.i18n.format('ACKS.roll.individualInit', { name: c.token.name }) + flavor: game.i18n.format('OSE.roll.individualInit', { name: c.token.name }) }, {}); const chatData = roll.toMessage(messageData, { rollMode, create: false }); @@ -88,7 +89,7 @@ export class AcksCombat { ? '' : span.innerHTML; }); - let init = game.settings.get("acks", "initiative") == "group"; + let init = game.settings.get("ose", "initiative") == "group"; if (!init) { return; } @@ -108,19 +109,19 @@ export class AcksCombat { // Get group color let cmbtant = object.combat.getCombatant(ct.dataset.combatantId); - let color = cmbtant.flags.acks.group; + let color = cmbtant.flags.ose.group; // Append colored flag let controls = $(ct).find(".combatant-controls"); controls.prepend( - `` + `` ); }); - AcksCombat.addListeners(html); + OseCombat.addListeners(html); } static updateCombatant(combat, combatant, data) { - let init = game.settings.get("acks", "initiative"); + let init = game.settings.get("ose", "initiative"); // Why do you reroll ? if (combatant.actor.data.data.isSlow) { data.initiative = -789; @@ -134,7 +135,7 @@ export class AcksCombat { ct.initiative && ct.initiative != "-789.00" && ct._id != data._id && - ct.flags.acks.group == combatant.flags.acks.group + ct.flags.ose.group == combatant.flags.ose.group ) { groupInit = ct.initiative; // Set init @@ -151,7 +152,7 @@ export class AcksCombat { return; } let currentColor = ev.currentTarget.style.color; - let colors = Object.keys(CONFIG.ACKS.colors); + let colors = Object.keys(CONFIG.OSE.colors); let index = colors.indexOf(currentColor); if (index + 1 == colors.length) { index = 0; @@ -161,7 +162,7 @@ export class AcksCombat { let id = $(ev.currentTarget).closest(".combatant")[0].dataset.combatantId; game.combat.updateCombatant({ _id: id, - flags: { acks: { group: colors[index] } }, + flags: { ose: { group: colors[index] } }, }); }); @@ -170,8 +171,10 @@ export class AcksCombat { return; } let data = {}; - AcksCombat.rollInitiative(game.combat, data); - game.combat.update({ data: data }); + OseCombat.rollInitiative(game.combat, data); + game.combat.update({ data: data }).then(() => { + game.combat.setupTurns(); + }); }); } @@ -190,7 +193,7 @@ export class AcksCombat { break; } data.flags = { - acks: { + ose: { group: color, }, }; diff --git a/src/module/config.js b/src/module/config.js index 6a6ad7e..806c121 100644 --- a/src/module/config.js +++ b/src/module/config.js @@ -1,11 +1,11 @@ -export const ACKS = { +export const OSE = { scores: { - str: "ACKS.scores.str.long", - int: "ACKS.scores.int.long", - dex: "ACKS.scores.dex.long", - wis: "ACKS.scores.wis.long", - con: "ACKS.scores.con.long", - cha: "ACKS.scores.cha.long", + str: "OSE.scores.str.long", + int: "OSE.scores.int.long", + dex: "OSE.scores.dex.long", + wis: "OSE.scores.wis.long", + con: "OSE.scores.con.long", + cha: "OSE.scores.cha.long", }, roll_type: { result: "=", @@ -13,95 +13,80 @@ export const ACKS = { below: "≤" }, saves_short: { - death: "ACKS.saves.death.short", - wand: "ACKS.saves.wand.short", - paralysis: "ACKS.saves.paralysis.short", - breath: "ACKS.saves.breath.short", - spell: "ACKS.saves.spell.short", + death: "OSE.saves.death.short", + wand: "OSE.saves.wand.short", + paralysis: "OSE.saves.paralysis.short", + breath: "OSE.saves.breath.short", + spell: "OSE.saves.spell.short", }, saves_long: { - death: "ACKS.saves.death.long", - wand: "ACKS.saves.wand.long", - paralysis: "ACKS.saves.paralysis.long", - breath: "ACKS.saves.breath.long", - spell: "ACKS.saves.spell.long", + death: "OSE.saves.death.long", + wand: "OSE.saves.wand.long", + paralysis: "OSE.saves.paralysis.long", + breath: "OSE.saves.breath.long", + spell: "OSE.saves.spell.long", }, armor : { - unarmored: "ACKS.armor.unarmored", - light: "ACKS.armor.light", - heavy: "ACKS.armor.heavy", - shield: "ACKS.armor.shield", + unarmored: "OSE.armor.unarmored", + light: "OSE.armor.light", + heavy: "OSE.armor.heavy", + shield: "OSE.armor.shield", }, colors: { - green: "ACKS.colors.green", - red: "ACKS.colors.red", - yellow: "ACKS.colors.yellow", - purple: "ACKS.colors.purple", - blue: "ACKS.colors.blue", - orange: "ACKS.colors.orange", - white: "ACKS.colors.white" + green: "OSE.colors.green", + red: "OSE.colors.red", + yellow: "OSE.colors.yellow", + purple: "OSE.colors.purple", + blue: "OSE.colors.blue", + orange: "OSE.colors.orange", + white: "OSE.colors.white" }, languages: [ - "Northern", - "Jutlandic", - "Auran", - "Dwarvish", - "Elvish", - "Celedorean", - "Kemeshi", - "Krysean", - "Kushtun", - "Nicean", - "Opelenean", - "Rornish", - "Shebatean", - "Skysos", - "Somirean", - "Ancient Zaharan", - "Archaian", - "Besheradi", - "Bugbear", - "Classical Argollëan", - "Classical Auran", - "Doppelgänger", - "Draconic", - "Gargoyle", - "Gnoll", - "Gnomish", - "Goblin", - "Halfling", - "Harpy", - "Hobgoblin", - "Kobold", - "Lizardman", - "Medusa", - "Minotaur", - "Ogre", - "Orcish", - "Pixie", - "Thrassian" - ], + "Common", + "Lawful", + "Chaotic", + "Neutral", + "Bugbear", + "Doppelgänger", + "Dragon", + "Dwarvish", + "Elvish", + "Gargoyle", + "Gnoll", + "Gnomish", + "Goblin", + "Halfling", + "Harpy", + "Hobgoblin", + "Kobold", + "Lizard Man", + "Medusa", + "Minotaur", + "Ogre", + "Orcish", + "Pixie" + ], tags: { - melee: "ACKS.items.Melee", - missile: "ACKS.items.Missile", - slow: "ACKS.items.Slow", - twohanded: "ACKS.items.TwoHanded", - blunt: "ACKS.items.Blunt", - brace: "ACKS.items.Brace", - splash: "ACKS.items.Splash", - reload: "ACKS.items.Reload", - charge: "ACKS.items.Charge", + melee: "OSE.items.Melee", + missile: "OSE.items.Missile", + slow: "OSE.items.Slow", + twohanded: "OSE.items.TwoHanded", + blunt: "OSE.items.Blunt", + brace: "OSE.items.Brace", + splash: "OSE.items.Splash", + reload: "OSE.items.Reload", + charge: "OSE.items.Charge", }, tag_images: { - melee: "/systems/acks/assets/melee.png", - missile: "/systems/acks/assets/missile.png", - slow: "/systems/acks/assets/slow.png", - twohanded: "/systems/acks/assets/twohanded.png", - blunt: "/systems/acks/assets/blunt.png", - brace: "/systems/acks/assets/brace.png", - splash: "/systems/acks/assets/splash.png", - reload: "/systems/acks/assets/reload.png", - charge: "/systems/acks/assets/charge.png", + melee: "/systems/ose/assets/melee.png", + missile: "/systems/ose/assets/missile.png", + slow: "/systems/ose/assets/slow.png", + twohanded: "/systems/ose/assets/twohanded.png", + blunt: "/systems/ose/assets/blunt.png", + brace: "/systems/ose/assets/brace.png", + splash: "/systems/ose/assets/splash.png", + reload: "/systems/ose/assets/reload.png", + charge: "/systems/ose/assets/charge.png", }, monster_saves: { 0: { diff --git a/src/module/dialog/character-creation.js b/src/module/dialog/character-creation.js index fdededc..19dcf59 100644 --- a/src/module/dialog/character-creation.js +++ b/src/module/dialog/character-creation.js @@ -1,13 +1,13 @@ -import { AcksActor } from '../actor/entity.js'; -import { AcksDice } from "../dice.js"; +import { OseActor } from '../actor/entity.js'; +import { OseDice } from "../dice.js"; -export class AcksCharacterCreator extends FormApplication { +export class OseCharacterCreator extends FormApplication { static get defaultOptions() { const options = super.defaultOptions; - options.classes = ["acks", "dialog", "creator"], + options.classes = ["ose", "dialog", "creator"], options.id = 'character-creator'; options.template = - 'systems/acks/templates/actors/dialogs/character-creation.html'; + 'systems/ose/templates/actors/dialogs/character-creation.html'; options.width = 235; return options; } @@ -19,7 +19,7 @@ export class AcksCharacterCreator extends FormApplication { * @type {String} */ get title() { - return `${this.object.name}: ${game.i18n.localize('ACKS.dialog.generator')}`; + return `${this.object.name}: ${game.i18n.localize('OSE.dialog.generator')}`; } /* -------------------------------------------- */ @@ -31,7 +31,7 @@ export class AcksCharacterCreator extends FormApplication { getData() { let data = this.object.data; data.user = game.user; - data.config = CONFIG.ACKS; + data.config = CONFIG.OSE; data.counters = { str: 0, wis: 0, @@ -85,7 +85,7 @@ export class AcksCharacterCreator extends FormApplication { // Increase counter this.object.data.counters[score]++; - const label = score != "gold" ? game.i18n.localize(`ACKS.scores.${score}.long`) : "Gold"; + const label = score != "gold" ? game.i18n.localize(`OSE.scores.${score}.long`) : "Gold"; const rollParts = ["3d6"]; const data = { roll: { @@ -93,14 +93,14 @@ export class AcksCharacterCreator extends FormApplication { } }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: data, skipDialog: true, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.format('ACKS.dialog.generateScore', { score: label, count: this.object.data.counters[score] }), - title: game.i18n.format('ACKS.dialog.generateScore', { score: label, count: this.object.data.counters[score] }), + flavor: game.i18n.format('OSE.dialog.generateScore', { score: label, count: this.object.data.counters[score] }), + title: game.i18n.format('OSE.dialog.generateScore', { score: label, count: this.object.data.counters[score] }), }); } @@ -116,13 +116,13 @@ export class AcksCharacterCreator extends FormApplication { const gold = $(this.form.children).find('.gold-value').val(); const speaker = ChatMessage.getSpeaker({ actor: this }); const templateData = { - config: CONFIG.ACKS, + config: CONFIG.OSE, scores: scores, - title: game.i18n.localize("ACKS.dialog.generator"), + title: game.i18n.localize("OSE.dialog.generator"), stats: this.object.data.stats, gold: gold } - const content = await renderTemplate("/systems/acks/templates/chat/roll-creation.html", templateData) + const content = await renderTemplate("/systems/ose/templates/chat/roll-creation.html", templateData) ChatMessage.create({ content: content, speaker, @@ -159,7 +159,7 @@ export class AcksCharacterCreator extends FormApplication { const itemData = { name: "GP", type: "item", - img: "/systems/acks/assets/gold.png", + img: "/systems/ose/assets/gold.png", data: { treasure: true, cost: 1, diff --git a/src/module/dialog/character-modifiers.js b/src/module/dialog/character-modifiers.js index 6211943..54e5bf5 100644 --- a/src/module/dialog/character-modifiers.js +++ b/src/module/dialog/character-modifiers.js @@ -1,13 +1,13 @@ // eslint-disable-next-line no-unused-vars -import { AcksActor } from '../actor/entity.js'; +import { OseActor } from '../actor/entity.js'; -export class AcksCharacterModifiers extends FormApplication { +export class OseCharacterModifiers extends FormApplication { static get defaultOptions() { const options = super.defaultOptions; - options.classes = ["acks", "dialog", "modifiers"], + options.classes = ["ose", "dialog", "modifiers"], options.id = 'sheet-modifiers'; options.template = - 'systems/acks/templates/actors/dialogs/modifiers-dialog.html'; + 'systems/ose/templates/actors/dialogs/modifiers-dialog.html'; options.width = 240; return options; } diff --git a/src/module/dialog/entity-tweaks.js b/src/module/dialog/entity-tweaks.js index 61e4f25..ad2f74f 100644 --- a/src/module/dialog/entity-tweaks.js +++ b/src/module/dialog/entity-tweaks.js @@ -1,12 +1,12 @@ // eslint-disable-next-line no-unused-vars -import { AcksActor } from '../actor/entity.js'; +import { OseActor } from '../actor/entity.js'; -export class AcksEntityTweaks extends FormApplication { +export class OseEntityTweaks extends FormApplication { static get defaultOptions() { const options = super.defaultOptions; options.id = 'sheet-tweaks'; options.template = - 'systems/acks/templates/actors/dialogs/tweaks-dialog.html'; + 'systems/ose/templates/actors/dialogs/tweaks-dialog.html'; options.width = 380; return options; } @@ -18,7 +18,7 @@ export class AcksEntityTweaks extends FormApplication { * @type {String} */ get title() { - return `${this.object.name}: ${game.i18n.localize('ACKS.dialog.tweaks')}`; + return `${this.object.name}: ${game.i18n.localize('OSE.dialog.tweaks')}`; } /* -------------------------------------------- */ @@ -33,7 +33,7 @@ export class AcksEntityTweaks extends FormApplication { data.isCharacter = true; } data.user = game.user; - data.config = CONFIG.ACKS; + data.config = CONFIG.OSE; return data; } diff --git a/src/module/dialog/party-sheet.js b/src/module/dialog/party-sheet.js index 5e527fb..2c8f7d8 100644 --- a/src/module/dialog/party-sheet.js +++ b/src/module/dialog/party-sheet.js @@ -1,9 +1,9 @@ -export class AcksPartySheet extends FormApplication { +export class OsePartySheet extends FormApplication { static get defaultOptions() { return mergeObject(super.defaultOptions, { - classes: ["acks", "dialog", "party-sheet"], - template: "systems/acks/templates/apps/party-sheet.html", + classes: ["ose", "dialog", "party-sheet"], + template: "systems/ose/templates/apps/party-sheet.html", width: 280, height: 400, resizable: true, @@ -17,7 +17,7 @@ export class AcksPartySheet extends FormApplication { * @type {String} */ get title() { - return game.i18n.localize("ACKS.dialog.partysheet"); + return game.i18n.localize("OSE.dialog.partysheet"); } /* -------------------------------------------- */ @@ -28,11 +28,11 @@ export class AcksPartySheet extends FormApplication { */ getData() { const settings = { - ascending: game.settings.get('acks', 'ascendingAC') + ascending: game.settings.get('ose', 'ascendingAC') }; let data = { data: this.object, - config: CONFIG.ACKS, + config: CONFIG.OSE, user: game.user, settings: settings }; @@ -62,7 +62,7 @@ export class AcksPartySheet extends FormApplication {
`; let pcs = this.object.entities.filter((e) => { - return e.getFlag('acks', 'party') && e.data.type == "character"; + return e.getFlag('ose', 'party') && e.data.type == "character"; }); new Dialog({ title: "Deal Experience", @@ -70,7 +70,7 @@ export class AcksPartySheet extends FormApplication { buttons: { set: { icon: '', - label: game.i18n.localize("ACKS.dialog.dealXP"), + label: game.i18n.localize("OSE.dialog.dealXP"), callback: (html) => { let toDeal = html.find('input[name="total"]').val(); // calculate number of shares @@ -90,7 +90,7 @@ export class AcksPartySheet extends FormApplication { } async _selectActors(ev) { - const template = "/systems/acks/templates/apps/party-select.html"; + const template = "/systems/ose/templates/apps/party-select.html"; const templateData = { actors: this.object.entities } @@ -101,12 +101,12 @@ export class AcksPartySheet extends FormApplication { buttons: { set: { icon: '', - label: game.i18n.localize("ACKS.Update"), + label: game.i18n.localize("OSE.Update"), callback: (html) => { let checks = html.find("input[data-action='select-actor']"); checks.each(async (_, c) => { let key = c.getAttribute('name'); - await this.object.entities[key].setFlag('acks', 'party', c.checked); + await this.object.entities[key].setFlag('ose', 'party', c.checked); }); }, }, diff --git a/src/module/dice.js b/src/module/dice.js index 0379fce..616338b 100644 --- a/src/module/dice.js +++ b/src/module/dice.js @@ -1,4 +1,4 @@ -export class AcksDice { +export class OseDice { static digestResult(data, roll) { let result = { isSuccess: false, @@ -51,7 +51,7 @@ export class AcksDice { speaker = null, form = null, } = {}) { - const template = "systems/acks/templates/chat/roll-result.html"; + const template = "systems/ose/templates/chat/roll-result.html"; let chatData = { user: game.user._id, @@ -88,11 +88,11 @@ export class AcksDice { data.roll.blindroll = true; } - templateData.result = AcksDice.digestResult(data, roll); + templateData.result = OseDice.digestResult(data, roll); return new Promise((resolve) => { roll.render().then((r) => { - templateData.rollACKS = r; + templateData.rollOSE = r; renderTemplate(template, templateData).then((content) => { chatData.content = content; // Dice So Nice @@ -128,33 +128,39 @@ export class AcksDice { }; result.target = data.roll.thac0; - const targetAc = data.roll.target ? data.roll.target.actor.data.data.ac.value : 9; - const targetAac = data.roll.target ? data.roll.target.actor.data.data.aac.value : 0; - result.victim = data.roll.target ? data.roll.target.actor.name : null; + const targetAc = data.roll.target + ? data.roll.target.actor.data.data.ac.value + : 9; + const targetAac = data.roll.target + ? data.roll.target.actor.data.data.aac.value + : 0; + result.victim = data.roll.target ? data.roll.target.data.name : null; - if (game.settings.get("acks", "ascendingAC")) { - if (roll.total < targetAac + 10) { - result.details = game.i18n.format("ACKS.messages.AttackAscendingFailure", { - result: roll.total - 10, - bonus: result.target, - }); + if (game.settings.get("ose", "ascendingAC")) { + if (roll.total < targetAac) { + result.details = game.i18n.format( + "OSE.messages.AttackAscendingFailure", + { + bonus: result.target, + } + ); return result; } - result.details = game.i18n.format("ACKS.messages.AttackAscendingSuccess", { - result: roll.total - 10, + result.details = game.i18n.format("OSE.messages.AttackAscendingSuccess", { + result: roll.total, }); result.isSuccess = true; } else { // B/X Historic THAC0 Calculation if (result.target - roll.total > targetAc) { - result.details = game.i18n.format("ACKS.messages.AttackFailure", { + result.details = game.i18n.format("OSE.messages.AttackFailure", { bonus: result.target, }); return result; } result.isSuccess = true; let value = Math.clamped(result.target - roll.total, -3, 9); - result.details = game.i18n.format("ACKS.messages.AttackSuccess", { + result.details = game.i18n.format("OSE.messages.AttackSuccess", { result: value, bonus: result.target, }); @@ -170,7 +176,7 @@ export class AcksDice { speaker = null, form = null, } = {}) { - const template = "systems/acks/templates/chat/roll-attack.html"; + const template = "systems/ose/templates/chat/roll-attack.html"; let chatData = { user: game.user._id, @@ -181,7 +187,7 @@ export class AcksDice { title: title, flavor: flavor, data: data, - config: CONFIG.ACKS, + config: CONFIG.OSE, }; // Optionally include a situational bonus @@ -207,11 +213,11 @@ export class AcksDice { data.roll.blindroll = true; } - templateData.result = AcksDice.digestAttackResult(data, roll); + templateData.result = OseDice.digestAttackResult(data, roll); return new Promise((resolve) => { roll.render().then((r) => { - templateData.rollACKS = r; + templateData.rollOSE = r; dmgRoll.render().then((dr) => { templateData.rollDamage = dr; renderTemplate(template, templateData).then((content) => { @@ -257,6 +263,77 @@ export class AcksDice { }); } + static async RollSave({ + parts = [], + data = {}, + skipDialog = false, + speaker = null, + flavor = null, + title = null, + } = {}) { + let rolled = false; + const template = "systems/ose/templates/chat/roll-dialog.html"; + let dialogData = { + formula: parts.join(" "), + data: data, + rollMode: game.settings.get("core", "rollMode"), + rollModes: CONFIG.Dice.rollModes, + }; + + let rollData = { + parts: parts, + data: data, + title: title, + flavor: flavor, + speaker: speaker, + }; + if (skipDialog) { OseDice.sendRoll(rollData); } + + let buttons = { + ok: { + label: game.i18n.localize("OSE.Roll"), + icon: '', + callback: (html) => { + rolled = true; + rollData.form = html[0].children[0]; + roll = OseDice.sendRoll(rollData); + }, + }, + magic: { + label: game.i18n.localize("OSE.saves.magic.short"), + icon: '', + callback: (html) => { + rolled = true; + rollData.form = html[0].children[0]; + rollData.data.roll.target = parseInt(rollData.data.roll.target) + parseInt(rollData.data.roll.magic); + rollData.title += ` ${game.i18n.localize("OSE.saves.magic.short")} (${rollData.data.roll.magic})`; + roll = OseDice.sendRoll(rollData); + }, + }, + cancel: { + icon: '', + label: game.i18n.localize("OSE.Cancel"), + callback: (html) => { }, + }, + }; + + const html = await renderTemplate(template, dialogData); + let roll; + + //Create Dialog window + return new Promise((resolve) => { + new Dialog({ + title: title, + content: html, + buttons: buttons, + default: "ok", + close: () => { + resolve(rolled ? roll : false); + }, + }).render(true); + }); + } + static async Roll({ parts = [], data = {}, @@ -266,7 +343,7 @@ export class AcksDice { title = null, } = {}) { let rolled = false; - const template = "systems/acks/templates/chat/roll-dialog.html"; + const template = "systems/ose/templates/chat/roll-dialog.html"; let dialogData = { formula: parts.join(" "), data: data, @@ -283,26 +360,26 @@ export class AcksDice { }; if (skipDialog) { return ["melee", "missile", "attack"].includes(data.roll.type) - ? AcksDice.sendAttackRoll(rollData) - : AcksDice.sendRoll(rollData); + ? OseDice.sendAttackRoll(rollData) + : OseDice.sendRoll(rollData); } let buttons = { ok: { - label: game.i18n.localize("ACKS.Roll"), + label: game.i18n.localize("OSE.Roll"), icon: '', callback: (html) => { rolled = true; rollData.form = html[0].children[0]; roll = ["melee", "missile", "attack"].includes(data.roll.type) - ? AcksDice.sendAttackRoll(rollData) - : AcksDice.sendRoll(rollData); + ? OseDice.sendAttackRoll(rollData) + : OseDice.sendRoll(rollData); }, }, cancel: { icon: '', - label: game.i18n.localize("ACKS.Cancel"), - callback: (html) => {}, + label: game.i18n.localize("OSE.Cancel"), + callback: (html) => { }, }, }; diff --git a/src/module/helpers.js b/src/module/helpers.js index 6b8f88d..5b92cbe 100644 --- a/src/module/helpers.js +++ b/src/module/helpers.js @@ -39,8 +39,8 @@ export const registerHelpers = async function () { }); Handlebars.registerHelper("getTagIcon", function (tag) { - let idx = Object.keys(CONFIG.ACKS.tags).find(k => (CONFIG.ACKS.tags[k] == tag)); - return CONFIG.ACKS.tag_images[idx]; + let idx = Object.keys(CONFIG.OSE.tags).find(k => (CONFIG.OSE.tags[k] == tag)); + return CONFIG.OSE.tag_images[idx]; }); Handlebars.registerHelper("counter", function (status, value, max) { diff --git a/src/module/item/entity.js b/src/module/item/entity.js index 18e14f1..292b50f 100644 --- a/src/module/item/entity.js +++ b/src/module/item/entity.js @@ -1,9 +1,9 @@ -import { AcksDice } from "../dice.js"; +import { OseDice } from "../dice.js"; /** * Override and extend the basic :class:`Item` implementation */ -export class AcksItem extends Item { +export class OseItem extends Item { /* -------------------------------------------- */ /* Data Preparation */ /* -------------------------------------------- */ @@ -15,19 +15,19 @@ export class AcksItem extends Item { let img = CONST.DEFAULT_TOKEN; switch (this.data.type) { case "spell": - img = "/systems/acks/assets/default/spell.png"; + img = "/systems/ose/assets/default/spell.png"; break; case "ability": - img = "/systems/acks/assets/default/ability.png"; + img = "/systems/ose/assets/default/ability.png"; break; case "armor": - img = "/systems/acks/assets/default/armor.png"; + img = "/systems/ose/assets/default/armor.png"; break; case "weapon": - img = "/systems/acks/assets/default/weapon.png"; + img = "/systems/ose/assets/default/weapon.png"; break; case "item": - img = "/systems/acks/assets/default/item.png"; + img = "/systems/ose/assets/default/item.png"; break; } if (!this.data.img) this.data.img = img; @@ -132,14 +132,14 @@ export class AcksItem extends Item { }; // Roll and return - return AcksDice.Roll({ + return OseDice.Roll({ event: options.event, parts: rollParts, data: newData, skipDialog: true, speaker: ChatMessage.getSpeaker({ actor: this }), - flavor: game.i18n.format("ACKS.roll.formula", { label: label }), - title: game.i18n.format("ACKS.roll.formula", { label: label }), + flavor: game.i18n.format("OSE.roll.formula", { label: label }), + title: game.i18n.format("OSE.roll.formula", { label: label }), }); } @@ -170,7 +170,7 @@ export class AcksItem extends Item { data.tags.forEach((t) => { wTags += formatTag(t.value); }); - wTags += formatTag(CONFIG.ACKS.saves_long[data.save], "fa-skull"); + wTags += formatTag(CONFIG.OSE.saves_long[data.save], "fa-skull"); if (data.missile) { wTags += formatTag( data.range.short + "/" + data.range.medium + "/" + data.range.long, @@ -179,7 +179,7 @@ export class AcksItem extends Item { } return wTags; case "armor": - return `${formatTag(CONFIG.ACKS.armor[data.type], "fa-tshirt")}`; + return `${formatTag(CONFIG.OSE.armor[data.type], "fa-tshirt")}`; case "item": return ""; case "spell": @@ -187,13 +187,13 @@ export class AcksItem extends Item { data.range )}${formatTag(data.duration)}${formatTag(data.roll)}`; if (data.save) { - sTags += formatTag(CONFIG.ACKS.saves_long[data.save], "fa-skull"); + sTags += formatTag(CONFIG.OSE.saves_long[data.save], "fa-skull"); } return sTags; case "ability": let roll = ""; roll += data.roll ? data.roll : ""; - roll += data.rollTarget ? CONFIG.ACKS.roll_type[data.rollType] : ""; + roll += data.rollTarget ? CONFIG.OSE.roll_type[data.rollType] : ""; roll += data.rollTarget ? data.rollTarget : ""; return `${formatTag(data.requirements)}${formatTag(roll)}`; } @@ -222,13 +222,13 @@ export class AcksItem extends Item { } // Auto fill checkboxes switch (val) { - case CONFIG.ACKS.tags.melee: + case CONFIG.OSE.tags.melee: newData.melee = true; break; - case CONFIG.ACKS.tags.slow: + case CONFIG.OSE.tags.slow: newData.slow = true; break; - case CONFIG.ACKS.tags.missile: + case CONFIG.OSE.tags.missile: newData.missile = true; break; } @@ -288,11 +288,11 @@ export class AcksItem extends Item { hasDamage: this.hasDamage, isSpell: this.data.type === "spell", hasSave: this.hasSave, - config: CONFIG.ACKS, + config: CONFIG.OSE, }; // Render the chat card template - const template = `systems/acks/templates/chat/item-card.html`; + const template = `systems/ose/templates/chat/item-card.html`; const html = await renderTemplate(template, templateData); // Basic chat message data diff --git a/src/module/item/item-sheet.js b/src/module/item/item-sheet.js index f8ddfd6..01f5ce0 100644 --- a/src/module/item/item-sheet.js +++ b/src/module/item/item-sheet.js @@ -1,7 +1,7 @@ /** * Extend the basic ItemSheet with some very simple modifications */ -export class AcksItemSheet extends ItemSheet { +export class OseItemSheet extends ItemSheet { constructor(...args) { super(...args); @@ -17,7 +17,7 @@ export class AcksItemSheet extends ItemSheet { */ static get defaultOptions() { return mergeObject(super.defaultOptions, { - classes: ["acks", "sheet", "item"], + classes: ["ose", "sheet", "item"], width: 520, height: 390, resizable: false, @@ -35,7 +35,7 @@ export class AcksItemSheet extends ItemSheet { /** @override */ get template() { - const path = "systems/acks/templates/items/"; + const path = "systems/ose/templates/items/"; return `${path}/${this.item.data.type}-sheet.html`; } @@ -45,7 +45,7 @@ export class AcksItemSheet extends ItemSheet { */ getData() { const data = super.getData(); - data.config = CONFIG.ACKS; + data.config = CONFIG.OSE; return data; } diff --git a/src/module/macros.js b/src/module/macros.js index 259d946..5a80047 100644 --- a/src/module/macros.js +++ b/src/module/macros.js @@ -10,13 +10,13 @@ * @param {number} slot The hotbar slot to use * @returns {Promise} */ -export async function createAcksMacro(data, slot) { +export async function createOseMacro(data, slot) { if ( data.type !== "Item" ) return; if (!( "data" in data ) ) return ui.notifications.warn("You can only create macro buttons for owned Items"); const item = data.data; // Create the macro command - const command = `game.acks.rollItemMacro("${item.name}");`; + const command = `game.ose.rollItemMacro("${item.name}");`; let macro = game.macros.entities.find(m => (m.name === item.name) && (m.command === command)); if ( !macro ) { macro = await Macro.create({ @@ -24,7 +24,7 @@ export async function createAcksMacro(data, slot) { type: "script", img: item.img, command: command, - flags: {"acks.itemMacro": true} + flags: {"ose.itemMacro": true} }); } game.user.assignHotbarMacro(macro, slot); diff --git a/src/module/party.js b/src/module/party.js index 94ea77a..cb81955 100644 --- a/src/module/party.js +++ b/src/module/party.js @@ -1,25 +1,25 @@ -import { AcksPartySheet } from "./dialog/party-sheet.js"; +import { OsePartySheet } from "./dialog/party-sheet.js"; export const addControl = (object, html) => { - let control = ``; + let control = ``; html.find(".fas.fa-search").replaceWith($(control)) - html.find('.acks-party-sheet').click(ev => { + html.find('.ose-party-sheet').click(ev => { showPartySheet(object); }) } export const showPartySheet = (object) => { event.preventDefault(); - new AcksPartySheet(object, { + new OsePartySheet(object, { top: window.screen.height / 2 - 180, left:window.screen.width / 2 - 140, }).render(true); } export const update = (actor, data) => { - if (actor.getFlag('acks', 'party')) { + if (actor.getFlag('ose', 'party')) { Object.values(ui.windows).forEach(w => { - if (w instanceof AcksPartySheet) { + if (w instanceof OsePartySheet) { w.render(true); } }) diff --git a/src/module/preloadTemplates.js b/src/module/preloadTemplates.js index 10259a9..a23464e 100644 --- a/src/module/preloadTemplates.js +++ b/src/module/preloadTemplates.js @@ -1,19 +1,19 @@ export const preloadHandlebarsTemplates = async function () { const templatePaths = [ //Character Sheets - 'systems/acks/templates/actors/character-html.html', - 'systems/acks/templates/actors/monster-html.html', + 'systems/ose/templates/actors/character-html.html', + 'systems/ose/templates/actors/monster-html.html', //Actor partials //Sheet tabs - 'systems/acks/templates/actors/partials/character-header.html', - 'systems/acks/templates/actors/partials/character-attributes-tab.html', - 'systems/acks/templates/actors/partials/character-abilities-tab.html', - 'systems/acks/templates/actors/partials/character-spells-tab.html', - 'systems/acks/templates/actors/partials/character-inventory-tab.html', - 'systems/acks/templates/actors/partials/character-notes-tab.html', + 'systems/ose/templates/actors/partials/character-header.html', + 'systems/ose/templates/actors/partials/character-attributes-tab.html', + 'systems/ose/templates/actors/partials/character-abilities-tab.html', + 'systems/ose/templates/actors/partials/character-spells-tab.html', + 'systems/ose/templates/actors/partials/character-inventory-tab.html', + 'systems/ose/templates/actors/partials/character-notes-tab.html', - 'systems/acks/templates/actors/partials/monster-header.html', - 'systems/acks/templates/actors/partials/monster-attributes-tab.html' + 'systems/ose/templates/actors/partials/monster-header.html', + 'systems/ose/templates/actors/partials/monster-attributes-tab.html' ]; return loadTemplates(templatePaths); }; diff --git a/src/module/settings.js b/src/module/settings.js index 489cdf0..4ac7bc1 100644 --- a/src/module/settings.js +++ b/src/module/settings.js @@ -1,24 +1,36 @@ export const registerSettings = function () { - game.settings.register("acks", "initiative", { - name: game.i18n.localize("ACKS.Setting.Initiative"), - hint: game.i18n.localize("ACKS.Setting.InitiativeHint"), + game.settings.register("ose", "initiative", { + name: game.i18n.localize("OSE.Setting.Initiative"), + hint: game.i18n.localize("OSE.Setting.InitiativeHint"), default: "group", scope: "world", type: String, config: true, choices: { - disabled: "ACKS.Setting.InitiativeOnce", - rerolled: "ACKS.Setting.InitiativeReroll", - reset: "ACKS.Setting.InitiativeReset", - group: "ACKS.Setting.InitiativeGroup", + individual: "OSE.Setting.InitiativeIndividual", + group: "OSE.Setting.InitiativeGroup", }, onChange: _ => window.location.reload() }); - game.settings.register("acks", "ascendingAC", { - name: game.i18n.localize("ACKS.Setting.AscendingAC"), - hint: game.i18n.localize("ACKS.Setting.AscendingACHint"), + game.settings.register("ose", "rerollInitiative", { + name: game.i18n.localize("OSE.Setting.RerollInitiative"), + hint: game.i18n.localize("OSE.Setting.RerollInitiativeHint"), + default: "reset", + scope: "world", + type: String, + config: true, + choices: { + keep: "OSE.Setting.InitiativeKeep", + reset: "OSE.Setting.InitiativeReset", + reroll: "OSE.Setting.InitiativeReroll", + } + }); + + game.settings.register("ose", "ascendingAC", { + name: game.i18n.localize("OSE.Setting.AscendingAC"), + hint: game.i18n.localize("OSE.Setting.AscendingACHint"), default: false, scope: "world", type: Boolean, @@ -26,34 +38,34 @@ export const registerSettings = function () { onChange: _ => window.location.reload() }); - game.settings.register("acks", "morale", { - name: game.i18n.localize("ACKS.Setting.Morale"), - hint: game.i18n.localize("ACKS.Setting.MoraleHint"), + game.settings.register("ose", "morale", { + name: game.i18n.localize("OSE.Setting.Morale"), + hint: game.i18n.localize("OSE.Setting.MoraleHint"), default: false, scope: "world", type: Boolean, config: true, }); - game.settings.register("acks", "encumbranceOption", { - name: game.i18n.localize("ACKS.Setting.Encumbrance"), - hint: game.i18n.localize("ACKS.Setting.EncumbranceHint"), + game.settings.register("ose", "encumbranceOption", { + name: game.i18n.localize("OSE.Setting.Encumbrance"), + hint: game.i18n.localize("OSE.Setting.EncumbranceHint"), default: "detailed", scope: "world", type: String, config: true, choices: { - disabled: "ACKS.Setting.EncumbranceDisabled", - basic: "ACKS.Setting.EncumbranceBasic", - detailed: "ACKS.Setting.EncumbranceDetailed", - complete: "ACKS.Setting.EncumbranceComplete", + disabled: "OSE.Setting.EncumbranceDisabled", + basic: "OSE.Setting.EncumbranceBasic", + detailed: "OSE.Setting.EncumbranceDetailed", + complete: "OSE.Setting.EncumbranceComplete", }, onChange: _ => window.location.reload() }); - game.settings.register("acks", "significantTreasure", { - name: game.i18n.localize("ACKS.Setting.SignificantTreasure"), - hint: game.i18n.localize("ACKS.Setting.SignificantTreasureHint"), + game.settings.register("ose", "significantTreasure", { + name: game.i18n.localize("OSE.Setting.SignificantTreasure"), + hint: game.i18n.localize("OSE.Setting.SignificantTreasureHint"), default: 800, scope: "world", type: Number, diff --git a/src/module/treasure.js b/src/module/treasure.js index b288181..7d8253d 100644 --- a/src/module/treasure.js +++ b/src/module/treasure.js @@ -1,15 +1,15 @@ export const augmentTable = (table, html, data) => { // Treasure Toggle let head = html.find(".sheet-header"); - const flag = table.object.getFlag("acks", "treasure"); + const flag = table.object.getFlag("ose", "treasure"); const treasure = flag ? "
" : "
"; head.append(treasure); html.find(".toggle-treasure").click((ev) => { - let isTreasure = table.object.getFlag("acks", "treasure"); - table.object.setFlag("acks", "treasure", !isTreasure); + let isTreasure = table.object.getFlag("ose", "treasure"); + table.object.setFlag("ose", "treasure", !isTreasure); }); // Treasure table formatting @@ -21,7 +21,7 @@ export const augmentTable = (table, html, data) => { html.find(".result-weight").first().text("Chance"); // Replace Roll button - const roll = ``; + const roll = ``; html.find(".sheet-footer .roll").replaceWith(roll); } @@ -30,38 +30,44 @@ export const augmentTable = (table, html, data) => { }); }; -async function rollTreasure(table, options = {}) { - let percent = (chance) => { - let roll = new Roll("1d100").roll(); +function drawTreasure(table, data) { + const percent = (chance) => { + const roll = new Roll("1d100").roll(); return roll.total <= chance; }; + data.treasure = {}; + if (table.getFlag('ose', 'treasure')) { + table.results.forEach((r) => { + if (percent(r.weight)) { + const text = table._getResultChatText(r); + data.treasure[r._id] = ({ + img: r.img, + text: TextEditor.enrichHTML(text), + }); + if ((r.type === CONST.TABLE_RESULT_TYPES.ENTITY) && (r.collection === "RollTable")) { + const embeddedTable = game.tables.get(r.resultId); + drawTreasure(embeddedTable, data.treasure[r._id]); + } + } + }); + } else { + const results = table.roll().results; + results.forEach((s) => { + const text = TextEditor.enrichHTML(table._getResultChatText(s)); + data.treasure[s._id] = {img: s.img, text: text}; + }); + } + return data; +} + +async function rollTreasure(table, options = {}) { + // Draw treasure + const data = drawTreasure(table, {}); let templateData = { - treasure: [], + treasure: data.treasure, table: table, }; - let ids = []; - table.results.forEach((r) => { - if (percent(r.weight)) { - let text = ""; - switch (r.type) { - case 0: - text = r.text; - break; - case 1: - text = `@${r.collection}[${r.resultId}]{${r.text}}`; - break; - case 2: - text = `@Compendium[${r.collection}.${r.resultId}]{${r.text}}`; - } - templateData.treasure.push({ - id: r._id, - img: r.img, - text: TextEditor.enrichHTML(text), - }); - ids.push(r._id); - } - }); - + // Animation if (options.event) { let results = $(event.currentTarget.parentElement) @@ -69,20 +75,20 @@ async function rollTreasure(table, options = {}) { .find(".table-result"); results.each((_, item) => { item.classList.remove("active"); - if (ids.includes(item.dataset.resultId)) { + if (data.treasure[item.dataset.resultId]) { item.classList.add("active"); } }); } let html = await renderTemplate( - "systems/acks/templates/chat/roll-treasure.html", + "systems/ose/templates/chat/roll-treasure.html", templateData ); let chatData = { content: html, - sound: "/systems/acks/assets/coins.mp3" + // sound: "/systems/ose/assets/coins.mp3" } let rollMode = game.settings.get("core", "rollMode"); diff --git a/src/acks.js b/src/ose.js similarity index 56% rename from src/acks.js rename to src/ose.js index 557b94a..4b2de1b 100644 --- a/src/acks.js +++ b/src/ose.js @@ -1,18 +1,18 @@ // Import Modules -import { AcksItemSheet } from "./module/item/item-sheet.js"; -import { AcksActorSheetCharacter } from "./module/actor/character-sheet.js"; -import { AcksActorSheetMonster } from "./module/actor/monster-sheet.js"; +import { OseItemSheet } from "./module/item/item-sheet.js"; +import { OseActorSheetCharacter } from "./module/actor/character-sheet.js"; +import { OseActorSheetMonster } from "./module/actor/monster-sheet.js"; import { preloadHandlebarsTemplates } from "./module/preloadTemplates.js"; -import { AcksActor } from "./module/actor/entity.js"; -import { AcksItem } from "./module/item/entity.js"; -import { ACKS } from "./module/config.js"; +import { OseActor } from "./module/actor/entity.js"; +import { OseItem } from "./module/item/entity.js"; +import { OSE } from "./module/config.js"; import { registerSettings } from "./module/settings.js"; import { registerHelpers } from "./module/helpers.js"; import * as chat from "./module/chat.js"; import * as treasure from "./module/treasure.js"; import * as macros from "./module/macros.js"; import * as party from "./module/party.js"; -import { AcksCombat } from "./module/combat.js"; +import { OseCombat } from "./module/combat.js"; /* -------------------------------------------- */ /* Foundry VTT Initialization */ @@ -25,12 +25,12 @@ Hooks.once("init", async function () { */ CONFIG.Combat.initiative = { formula: "1d6 + @initiative.value", - decimals: 0, + decimals: 2, }; - CONFIG.ACKS = ACKS; + CONFIG.OSE = OSE; - game.acks = { + game.ose = { rollItemMacro: macros.rollItemMacro, }; @@ -40,21 +40,21 @@ Hooks.once("init", async function () { // Register custom system settings registerSettings(); - CONFIG.Actor.entityClass = AcksActor; - CONFIG.Item.entityClass = AcksItem; + CONFIG.Actor.entityClass = OseActor; + CONFIG.Item.entityClass = OseItem; // Register sheet application classes Actors.unregisterSheet("core", ActorSheet); - Actors.registerSheet("acks", AcksActorSheetCharacter, { + Actors.registerSheet("ose", OseActorSheetCharacter, { types: ["character"], makeDefault: true, }); - Actors.registerSheet("acks", AcksActorSheetMonster, { + Actors.registerSheet("ose", OseActorSheetMonster, { types: ["monster"], makeDefault: true, }); Items.unregisterSheet("core", ItemSheet); - Items.registerSheet("acks", AcksItemSheet, { makeDefault: true }); + Items.registerSheet("ose", OseItemSheet, { makeDefault: true }); await preloadHandlebarsTemplates(); }); @@ -66,19 +66,19 @@ Hooks.once("setup", function () { // Localize CONFIG objects once up-front const toLocalize = ["saves_short", "saves_long", "scores", "armor", "colors", "tags"]; for (let o of toLocalize) { - CONFIG.ACKS[o] = Object.entries(CONFIG.ACKS[o]).reduce((obj, e) => { + CONFIG.OSE[o] = Object.entries(CONFIG.OSE[o]).reduce((obj, e) => { obj[e[0]] = game.i18n.localize(e[1]); return obj; }, {}); } - for (let l of CONFIG.ACKS.languages) { - CONFIG.ACKS.languages[l] = game.i18n.localize(CONFIG.ACKS.languages[l]); + for (let l of CONFIG.OSE.languages) { + CONFIG.OSE.languages[l] = game.i18n.localize(CONFIG.OSE.languages[l]); } }); Hooks.once("ready", async () => { Hooks.on("hotbarDrop", (bar, data, slot) => - macros.createAcksMacro(data, slot) + macros.createOseMacro(data, slot) ); }); @@ -88,20 +88,20 @@ Hooks.on("renderSidebarTab", async (object, html) => { party.addControl(object, html); } if (object instanceof Settings) { - let gamesystem = html.find(".game-system"); + let gamesystem = html.find("#game-details"); // SRD Link - let acks = gamesystem.find('h4').last(); - acks.append(` SRD`); + let ose = gamesystem.find('h4').last(); + ose.append(` SRD`); // License text - const template = "systems/acks/templates/chat/license.html"; + const template = "systems/ose/templates/chat/license.html"; const rendered = await renderTemplate(template); - gamesystem.append(rendered); + gamesystem.find(".system").append(rendered); // User guide let docs = html.find("button[data-action='docs']"); const styling = "border:none;margin-right:2px;vertical-align:middle;margin-bottom:5px"; - $(``).insertAfter(docs); + $(``).insertAfter(docs); html.find('button[data-action="userguide"]').click(ev => { new FrameViewer('https://mesfoliesludiques.gitlab.io/foundryvtt-ose', {resizable: true}).render(true); }); @@ -109,35 +109,42 @@ Hooks.on("renderSidebarTab", async (object, html) => { }); Hooks.on("preCreateCombatant", (combat, data, options, id) => { - let init = game.settings.get("acks", "initiative"); + let init = game.settings.get("ose", "initiative"); if (init == "group") { - AcksCombat.addCombatant(combat, data, options, id); + OseCombat.addCombatant(combat, data, options, id); } }); Hooks.on("preUpdateCombatant", (combat, combatant, data) => { - AcksCombat.updateCombatant(combat, combatant, data); + OseCombat.updateCombatant(combat, combatant, data); }); Hooks.on("renderCombatTracker", (object, html, data) => { - AcksCombat.format(object, html, data); + OseCombat.format(object, html, data); }); Hooks.on("preUpdateCombat", async (combat, data, diff, id) => { - let init = game.settings.get("acks", "initiative"); + let init = game.settings.get("ose", "initiative"); + let reroll = game.settings.get("ose", "rerollInitiative"); if (!data.round) { return; } + if (data.round !== 1) { + if (reroll === "reset") { + OseCombat.resetInitiative(combat, data, diff, id); + return; + } else if (reroll === "keep") { + return; + } + } if (init === "group") { - AcksCombat.rollInitiative(combat, data, diff, id); - } else if (init === "rerolled") { - AcksCombat.individualInitiative(combat, data, diff, id); - } else if (init === "reset") { - AcksCombat.resetInitiative(combat, data, diff, id); + OseCombat.rollInitiative(combat, data, diff, id); + } else if (init === "individual") { + OseCombat.individualInitiative(combat, data, diff, id); } }); -Hooks.on("renderChatLog", (app, html, data) => AcksItem.chatListeners(html)); +Hooks.on("renderChatLog", (app, html, data) => OseItem.chatListeners(html)); Hooks.on("getChatLogEntryContext", chat.addChatMessageContextOptions); Hooks.on("renderChatMessage", chat.addChatMessageButtons); Hooks.on("renderRollTableConfig", treasure.augmentTable); diff --git a/src/acks.scss b/src/ose.scss similarity index 100% rename from src/acks.scss rename to src/ose.scss diff --git a/src/scss/actor-base.scss b/src/scss/actor-base.scss index 81da001..94c70d3 100644 --- a/src/scss/actor-base.scss +++ b/src/scss/actor-base.scss @@ -9,7 +9,7 @@ } } -.acks.sheet.actor { +.ose.sheet.actor { $detailsHeight: 44px; .blinking { font-weight: bold; diff --git a/src/scss/apps.scss b/src/scss/apps.scss index d0138cb..5b638c2 100644 --- a/src/scss/apps.scss +++ b/src/scss/apps.scss @@ -1,11 +1,11 @@ -.acks.roll-dialog { +.ose.roll-dialog { .roll-details { font-weight: bold; text-align: center; } } -.acks.dialog.creator { +.ose.dialog.creator { .attribute-list { .form-fields { flex: 0 0 50px; @@ -32,7 +32,7 @@ } } -.acks.dialog.party-sheet { +.ose.dialog.party-sheet { min-width: 250px; min-height: 250px; .window-content { @@ -120,7 +120,7 @@ } #sidebar #actors .directory-header .header-search { - .acks-party-sheet { + .ose-party-sheet { width: 32px; text-align: center; line-height: 20px; @@ -130,7 +130,7 @@ } } -.acks.dialog.modifiers { +.ose.dialog.modifiers { .attribute-bonuses { label { font-weight: bold; @@ -150,7 +150,7 @@ color: white; margin: 0 2px 5px 8px; border-radius: 8px; - background: url("/systems/acks/assets/treasure.png") no-repeat center; + background: url("/systems/ose/assets/treasure.png") no-repeat center; background-size: cover; padding: 5px 8px; cursor: pointer; @@ -176,7 +176,7 @@ } } -#settings .acks.game-license { +#settings .ose.game-license { font-size: 12px; .button { text-align: center; @@ -187,7 +187,7 @@ } } -.acks.chat-block { +.ose.chat-block { margin: 0; .chat-header { height: 46px; @@ -263,7 +263,7 @@ } } -.acks.chat-card { +.ose.chat-card { font-style: normal; font-size: 12px; @@ -306,6 +306,18 @@ } line-height: 36px; } + .sub { + padding-left: 25px; + line-height: 28px; + img { + flex: 0 0 28px; + border: none; + } + div { + text-indent: 10px; + font-size: 14px; + } + } } h3 { font-size: 12px; diff --git a/src/scss/character.scss b/src/scss/character.scss index 5b7c7a5..5561fa3 100644 --- a/src/scss/character.scss +++ b/src/scss/character.scss @@ -3,7 +3,7 @@ /* ----------------------------------------- */ /* Basic Structure */ /* ----------------------------------------- */ -.acks.sheet.actor.character { +.ose.sheet.actor.character { min-width: 450px; min-height: 550px; @@ -98,7 +98,7 @@ } .health { &.armor-class { - background: url('/systems/acks/assets/shield.png') no-repeat center; + background: url('/systems/ose/assets/shield.png') no-repeat center; background-size: 70px; .shield { text-align: right; @@ -130,12 +130,12 @@ right: calc(50% + -20px); } .health-empty { - background: url('/systems/acks/assets/heart_empty.png') no-repeat center; + background: url('/systems/ose/assets/heart_empty.png') no-repeat center; background-size: 70px; background-position: top; } .health-full { - background: url('/systems/acks/assets/heart_full.png') no-repeat center; + background: url('/systems/ose/assets/heart_full.png') no-repeat center; background-size: 70px; background-position: bottom; } diff --git a/src/scss/core.scss b/src/scss/core.scss index ff806f9..ad868f7 100644 --- a/src/scss/core.scss +++ b/src/scss/core.scss @@ -1,4 +1,4 @@ -.acks.window-content { +.ose .window-content { // Utils .collapsed { display: none; diff --git a/src/scss/item.scss b/src/scss/item.scss index 91fa1d8..8f0b264 100644 --- a/src/scss/item.scss +++ b/src/scss/item.scss @@ -1,4 +1,4 @@ -.acks.sheet.item { +.ose.sheet.item { .sheet-header { h1 { input { diff --git a/src/scss/monster.scss b/src/scss/monster.scss index 3c70ec7..1ff1437 100644 --- a/src/scss/monster.scss +++ b/src/scss/monster.scss @@ -1,4 +1,4 @@ -.acks.actor.monster { +.ose.actor.monster { min-height: 565px; min-width: 460px; .header-details { diff --git a/src/scss/variables.scss b/src/scss/variables.scss index f6ed20c..14055cd 100644 --- a/src/scss/variables.scss +++ b/src/scss/variables.scss @@ -3,7 +3,7 @@ /* Sheet Styles */ /* ----------------------------------------- */ -$darkBackground: url('/systems/acks/assets/back.png'); +$darkBackground: url('/systems/ose/assets/back.png'); $colorDark: rgba(0, 0, 0, 0.9); $colorFaint: #d8d6c9; $colorInactive: #969696; diff --git a/src/system.json b/src/system.json index 442c5fb..99b43d4 100644 --- a/src/system.json +++ b/src/system.json @@ -1,14 +1,14 @@ { - "name": "acks", - "title": "Adventurer Conqueror Kings System", - "description": "Play B/X OSR modules with ACKS on Foundry VTT", - "version": "0.1.0", + "name": "ose", + "title": "Old-School Essentials", + "description": "Play B/X OSR modules with Old-School Essentials on Foundry VTT", + "version": "1.0.3", "minimumCoreVersion": "0.6.2", - "compatibleCoreVersion": "0.6.5", + "compatibleCoreVersion": "0.6.6", "templateVersion": 2, - "author": "The Happy Anarchist", - "esmodules": ["acks.js"], - "styles": ["acks.css"], + "author": "U~man", + "esmodules": ["ose.js"], + "styles": ["ose.css"], "packs": [], "languages": [ { @@ -39,7 +39,7 @@ ], "gridDistance": 5, "gridUnits": "ft", - "url": "https://github.com/thehappyanarchist/foundryacks", - "manifest": "https://github.com/thehappyanarchist/foundryacks/raw/master/src/system.json", - "download": "https://github.com/thehappyanarchist/foundryacks/-/raw/master/package/ose-v1.0.0.zip" + "url": "https://gitlab.com/mesfoliesludiques/foundryvtt-ose", + "manifest": "https://gitlab.com/mesfoliesludiques/foundryvtt-ose/raw/master/src/system.json", + "download": "https://gitlab.com/mesfoliesludiques/foundryvtt-ose/-/raw/master/package/ose-v1.0.3.zip" } diff --git a/src/templates/actors/character-sheet.html b/src/templates/actors/character-sheet.html index e28ebd6..3b70129 100644 --- a/src/templates/actors/character-sheet.html +++ b/src/templates/actors/character-sheet.html @@ -1,48 +1,48 @@
{{! Sheet Header }}
- {{> "systems/acks/templates/actors/partials/character-header.html"}} + {{> "systems/ose/templates/actors/partials/character-header.html"}}
{{! Sheet Tab Navigation }} -