Merge branch 'add-rollup' into 'master'

Add rollup

Closes #81

See merge request dungeonslayers/ds4!92
This commit is contained in:
Johannes Loher 2021-03-17 18:09:18 +00:00
commit 45978a1a78
17 changed files with 510 additions and 399 deletions

3
.eslintignore Normal file
View file

@ -0,0 +1,3 @@
/dist
/.pnp.js
/.yarn/

View file

@ -6,9 +6,24 @@ module.exports = {
sourceType: "module", sourceType: "module",
}, },
extends: ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"], env: {
browser: true,
},
plugins: ["@typescript-eslint"], extends: ["plugin:@typescript-eslint/recommended", "plugin:jest/recommended", "plugin:prettier/recommended"],
rules: {}, plugins: ["@typescript-eslint", "jest"],
rules: {
// Specify any specific ESLint rules.
},
overrides: [
{
files: ["./*.js"],
rules: {
"@typescript-eslint/no-var-requires": "off",
},
},
],
}; };

View file

@ -58,7 +58,7 @@ build:
cache: cache:
<<: *global_cache <<: *global_cache
script: | script: |
yarn updateManifest --update=${RELEASE_TYPE} yarn bump-version --release=${RELEASE_TYPE}
RELEASE_VERSION=$(jq -r '.version' < package.json) RELEASE_VERSION=$(jq -r '.version' < package.json)
git add package.json src/system.json git add package.json src/system.json
git --no-pager diff git --no-pager diff

5
.prettierignore Normal file
View file

@ -0,0 +1,5 @@
/dist
/package-lock.json
/.pnp.js
/.yarn/
/.vscode/

16
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,16 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"runtimeExecutable": "/usr/bin/chromium",
"name": "Launch Chrome against localhost",
"url": "http://localhost:30000/game",
"webRoot": "${workspaceFolder}/dist"
}
]
}

View file

@ -1,161 +1,77 @@
const gulp = require("gulp"); const { rollup } = require("rollup");
const fs = require("fs-extra");
const path = require("path");
const chalk = require("chalk");
const stringify = require("json-stringify-pretty-compact");
const typescript = require("typescript");
const ts = require("gulp-typescript");
const sass = require("gulp-sass");
const argv = require("yargs").argv; const argv = require("yargs").argv;
const chalk = require("chalk");
const fs = require("fs-extra");
const gulp = require("gulp");
const path = require("path");
const rollupConfig = require("./rollup.config");
const semver = require("semver");
const sass = require("gulp-sass");
sass.compiler = require("sass"); sass.compiler = require("sass");
function getConfig() { /********************/
const configPath = path.resolve(process.cwd(), "foundryconfig.json"); /* CONFIGURATION */
let config; /********************/
if (fs.existsSync(configPath)) { const name = path.basename(path.resolve("."));
config = fs.readJSONSync(configPath); const sourceDirectory = "./src";
return config; const distDirectory = "./dist";
} else { const stylesDirectory = path.join(sourceDirectory, "scss");
return; const stylesExtension = ".scss";
} const sourceFileExtension = ".ts";
} const staticFiles = ["assets", "fonts", "lang", "packs", "templates", "system.json", "template.json"];
const getDownloadURL = (version) =>
function getManifest() { `https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/${version}/download?job=build`;
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<typescript.SourceFile>}
*/
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: (_program) => ({
after: [createTransformer()],
}),
});
/********************/ /********************/
/* BUILD */ /* BUILD */
/********************/ /********************/
/** /**
* Build TypeScript * Build the distributable JavaScript code
*/ */
function buildTS() { async function buildCode() {
return gulp.src("src/**/*.ts").pipe(tsConfig()).pipe(gulp.dest("dist")); const build = await rollup({ input: rollupConfig.input, plugins: rollupConfig.plugins });
return build.write(rollupConfig.output);
} }
/** /**
* Build SASS * Build style sheets
*/ */
function buildSASS() { function buildStyles() {
return gulp.src("src/*.scss").pipe(sass().on("error", sass.logError)).pipe(gulp.dest("dist")); return gulp
.src(path.join(stylesDirectory, `${name}${stylesExtension}`))
.pipe(sass().on("error", sass.logError))
.pipe(gulp.dest(path.join(distDirectory, "css")));
} }
/** /**
* Copy static files * Copy static files
*/ */
async function copyFiles() { async function copyFiles() {
const statics = ["lang", "fonts", "assets", "templates", "packs", "module.json", "system.json", "template.json"]; for (const file of staticFiles) {
try { if (fs.existsSync(path.join(sourceDirectory, file))) {
for (const file of statics) { await fs.copy(path.join(sourceDirectory, file), path.join(distDirectory, file));
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 * Watch for changes for each build step
*/ */
function buildWatch() { function buildWatch() {
gulp.watch("src/**/*.ts", { ignoreInitial: false }, buildTS);
gulp.watch("src/**/*.scss", { ignoreInitial: false }, buildSASS);
gulp.watch( gulp.watch(
["src/fonts", "src/lang", "src/templates", "src/*.json", "src/packs"], path.join(sourceDirectory, "**", `*${sourceFileExtension}`).replace(/\\/g, "/"),
{ ignoreInitial: false },
buildCode,
);
gulp.watch(
path.join(stylesDirectory, "**", `*${stylesExtension}`).replace(/\\/g, "/"),
{ ignoreInitial: false },
buildStyles,
);
gulp.watch(
staticFiles.map((file) => path.join(sourceDirectory, file).replace(/\\/g, "/")),
{ ignoreInitial: false }, { ignoreInitial: false },
copyFiles, copyFiles,
); );
@ -166,44 +82,20 @@ function buildWatch() {
/********************/ /********************/
/** /**
* Remove built files from `dist` folder * Remove built files from `dist` folder while ignoring source files
* while ignoring source files
*/ */
async function clean() { async function clean() {
const name = path.basename(path.resolve(".")); const files = [...staticFiles, "module"];
const files = [];
// If the project uses TypeScript if (fs.existsSync(path.join(stylesDirectory, `${name}${stylesExtension}`))) {
if (fs.existsSync(path.join("src", "module", `${name}.ts`))) { files.push("css");
files.push(
"lang",
"templates",
"assets",
"module",
"packs",
`${name}.js`,
"module.json",
"system.json",
"template.json",
);
}
// If the project uses SASS
if (fs.existsSync(path.join("src", `${name}.scss`))) {
files.push("fonts", `${name}.css`);
} }
console.log(" ", chalk.yellow("Files to clean:")); console.log(" ", chalk.yellow("Files to clean:"));
console.log(" ", chalk.blueBright(files.join("\n "))); console.log(" ", chalk.blueBright(files.join("\n ")));
// Attempt to remove the files
try {
for (const filePath of files) { for (const filePath of files) {
await fs.remove(path.join("dist", filePath)); await fs.remove(path.join(distDirectory, filePath));
}
return Promise.resolve();
} catch (err) {
Promise.reject(err);
} }
} }
@ -211,121 +103,112 @@ async function clean() {
/* LINK */ /* LINK */
/********************/ /********************/
/**
* Get the data path of Foundry VTT based on what is configured in `foundryconfig.json`
*/
function getDataPath() {
const config = fs.readJSONSync("foundryconfig.json");
if (config?.dataPath) {
if (!fs.existsSync(path.resolve(config.dataPath))) {
throw new Error("User Data path invalid, no Data directory found");
}
return path.resolve(config.dataPath);
} else {
throw new Error("No User Data path defined in foundryconfig.json");
}
}
/** /**
* Link build to User Data folder * Link build to User Data folder
*/ */
async function linkUserData() { async function linkUserData() {
const name = path.basename(path.resolve(".")); let destinationDirectory;
const config = fs.readJSONSync("foundryconfig.json"); if (fs.existsSync(path.resolve(".", sourceDirectory, "system.json"))) {
destinationDirectory = "systems";
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 { } else {
throw Error(`Could not find ${chalk.blueBright("module.json")} or ${chalk.blueBright("system.json")}`); throw new Error(`Could not find ${chalk.blueBright("system.json")}`);
} }
let linkDir; const linkDirectory = path.resolve(getDataPath(), destinationDirectory, name);
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) { if (argv.clean || argv.c) {
console.log(chalk.yellow(`Removing build in ${chalk.blueBright(linkDir)}`)); console.log(chalk.yellow(`Removing build in ${chalk.blueBright(linkDirectory)}.`));
await fs.remove(linkDir); await fs.remove(linkDirectory);
} else if (!fs.existsSync(linkDir)) { } else if (!fs.existsSync(linkDirectory)) {
console.log(chalk.green(`Copying build to ${chalk.blueBright(linkDir)}`)); console.log(chalk.green(`Copying build to ${chalk.blueBright(linkDirectory)}.`));
await fs.symlink(path.resolve("./dist"), linkDir); await fs.ensureDir(path.resolve(linkDirectory, ".."));
} await fs.symlink(path.resolve(".", distDirectory), linkDirectory);
return Promise.resolve();
} catch (err) {
Promise.reject(err);
} }
} }
/*********************/ /********************/
/* PACKAGE */ /* VERSIONING */
/*********************/ /********************/
/** /**
* Update version and URLs in the manifest JSON * Get the contents of the manifest file as object.
*/ */
function updateManifest(cb) { function getManifest() {
const manifestPath = path.join(sourceDirectory, "system.json");
if (fs.existsSync(manifestPath)) {
return {
file: fs.readJSONSync(manifestPath),
name: "system.json",
};
}
}
/**
* Get the target version based on on the current version and the argument passed as release.
*/
function getTargetVersion(currentVersion, release) {
if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) {
return semver.inc(currentVersion, release);
} else {
return semver.valid(release);
}
}
/**
* Update version and download URL.
*/
function bumpVersion(cb) {
const packageJson = fs.readJSONSync("package.json"); const packageJson = fs.readJSONSync("package.json");
const manifest = getManifest(); const manifest = getManifest();
if (!manifest) cb(Error(chalk.red("Manifest JSON not found"))); if (!manifest) cb(Error(chalk.red("Manifest JSON not found")));
try { try {
const version = argv.update || argv.u; const release = argv.release || argv.r;
/* Update version */ const currentVersion = packageJson.version;
const versionMatch = /^(\d{1,}).(\d{1,}).(\d{1,})$/; if (!release) {
const currentVersion = manifest.file.version; return cb(Error("Missing release type"));
let targetVersion = "";
if (!version) {
cb(Error("Missing version number"));
} }
if (versionMatch.test(version)) { const targetVersion = getTargetVersion(currentVersion, release);
targetVersion = version;
} else {
targetVersion = currentVersion.replace(versionMatch, (substring, major, minor, patch) => {
console.log(substring, Number(major) + 1, Number(minor) + 1, Number(patch) + 1);
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(patch) + 1}`;
} else {
return "";
}
});
}
if (targetVersion === "") { if (!targetVersion) {
return cb(Error(chalk.red("Error: Incorrect version arguments."))); return cb(new Error(chalk.red("Error: Incorrect version arguments")));
} }
if (targetVersion === currentVersion) { if (targetVersion === currentVersion) {
return cb(Error(chalk.red("Error: Target version is identical to current version."))); return cb(new Error(chalk.red("Error: Target version is identical to current version")));
} }
console.log(`Updating version number to '${targetVersion}'`); console.log(`Updating version number to '${targetVersion}'`);
packageJson.version = targetVersion; packageJson.version = targetVersion;
manifest.file.version = targetVersion;
/* Update URL */
const result = `https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/${targetVersion}/download?job=build`;
manifest.file.download = result;
const prettyProjectJson =
stringify(manifest.file, {
maxLength: 40,
indent: 4,
}) + "\n";
fs.writeJSONSync("package.json", packageJson, { spaces: 4 }); fs.writeJSONSync("package.json", packageJson, { spaces: 4 });
fs.writeFileSync(path.join(manifest.root, manifest.name), prettyProjectJson, "utf8");
manifest.file.version = targetVersion;
manifest.file.download = getDownloadURL(targetVersion);
fs.writeJSONSync(path.join(sourceDirectory, manifest.name), manifest.file, { spaces: 4 });
return cb(); return cb();
} catch (err) { } catch (err) {
@ -333,10 +216,10 @@ function updateManifest(cb) {
} }
} }
const execBuild = gulp.parallel(buildTS, buildSASS, copyFiles); const execBuild = gulp.parallel(buildCode, buildStyles, copyFiles);
exports.build = gulp.series(clean, execBuild); exports.build = gulp.series(clean, execBuild);
exports.watch = buildWatch; exports.watch = buildWatch;
exports.clean = clean; exports.clean = clean;
exports.link = linkUserData; exports.link = linkUserData;
exports.updateManifest = updateManifest; exports.bumpVersion = bumpVersion;

View file

@ -34,46 +34,46 @@
"build": "gulp build", "build": "gulp build",
"build:watch": "gulp watch", "build:watch": "gulp watch",
"link-project": "gulp link", "link-project": "gulp link",
"clean": "gulp clean && gulp link --clean", "clean": "gulp clean",
"updateManifest": "gulp updateManifest", "clean:link": "gulp link --clean",
"lint": "eslint 'src/**/*.ts' --cache", "bump-version": "gulp bumpVersion",
"lint:fix": "eslint 'src/**/*.ts' --cache --fix", "lint": "eslint --ext .ts,.js .",
"lint:fix": "eslint --ext .ts,.js --fix .",
"test": "jest", "test": "jest",
"test:watch": "jest --watch", "test:watch": "jest --watch",
"test:ci": "jest --ci --reporters=default --reporters=jest-junit", "test:ci": "jest --ci --reporters=default --reporters=jest-junit",
"format": "prettier --write 'src/**/*.(ts|json|scss)'", "format": "prettier --write \"./**/*.(ts|js|json|scss)\"",
"postinstall": "husky install" "postinstall": "husky install"
}, },
"devDependencies": { "devDependencies": {
"@league-of-foundry-developers/foundry-vtt-types": "^0.7.9-3", "@league-of-foundry-developers/foundry-vtt-types": "^0.7.9-3",
"@rollup/plugin-node-resolve": "^11.2.0",
"@types/fs-extra": "^9.0.8", "@types/fs-extra": "^9.0.8",
"@types/jest": "^26.0.20", "@types/jest": "^26.0.20",
"@typescript-eslint/eslint-plugin": "^4.16.1", "@typescript-eslint/eslint-plugin": "^4.18.0",
"@typescript-eslint/parser": "^4.16.1", "@typescript-eslint/parser": "^4.18.0",
"chalk": "^4.1.0", "chalk": "^4.1.0",
"eslint": "^7.21.0", "eslint": "^7.22.0",
"eslint-config-prettier": "^8.1.0", "eslint-config-prettier": "^8.1.0",
"eslint-plugin-jest": "^24.3.2",
"eslint-plugin-prettier": "^3.3.1", "eslint-plugin-prettier": "^3.3.1",
"fs-extra": "^9.1.0", "fs-extra": "^9.1.0",
"gulp": "^4.0.2", "gulp": "^4.0.2",
"gulp-sass": "^4.1.0", "gulp-sass": "^4.1.0",
"gulp-typescript": "^6.0.0-alpha.1",
"husky": "^5.1.3", "husky": "^5.1.3",
"jest": "^26.6.3", "jest": "^26.6.3",
"jest-junit": "^12.0.0", "jest-junit": "^12.0.0",
"json-stringify-pretty-compact": "^3.0.0",
"lint-staged": "^10.5.4", "lint-staged": "^10.5.4",
"prettier": "^2.2.1", "prettier": "^2.2.1",
"rollup": "^2.41.4",
"rollup-plugin-typescript2": "^0.30.0",
"sass": "^1.32.8", "sass": "^1.32.8",
"semver": "^7.3.4",
"ts-jest": "^26.5.3", "ts-jest": "^26.5.3",
"tslib": "^2.1.0",
"typescript": "^4.2.3", "typescript": "^4.2.3",
"yargs": "^16.2.0" "yargs": "^16.2.0"
}, },
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": { "lint-staged": {
"*.ts": "eslint --cache --fix", "*.ts": "eslint --cache --fix",
"*.(json|scss)": "prettier --write" "*.(json|scss)": "prettier --write"

12
rollup.config.js Normal file
View file

@ -0,0 +1,12 @@
const typescript = require("rollup-plugin-typescript2");
const { nodeResolve } = require("@rollup/plugin-node-resolve");
module.exports = {
input: "src/module/ds4.ts",
output: {
dir: "dist/module",
format: "es",
sourcemap: true,
},
plugins: [nodeResolve(), typescript({})],
};

View file

@ -3,5 +3,5 @@
"compilerOptions": { "compilerOptions": {
"types": ["@league-of-foundry-developers/foundry-vtt-types", "jest"] "types": ["@league-of-foundry-developers/foundry-vtt-types", "jest"]
}, },
"include": ["src", "./"] "include": ["../src", "./"]
} }

View file

@ -1,27 +0,0 @@
@use 'sass:meta';
/* Global styles */
@include meta.load-css("scss/global/accessibility");
@include meta.load-css("scss/global/flex");
@include meta.load-css("scss/global/fonts");
@include meta.load-css("scss/global/grid");
@include meta.load-css("scss/global/window");
@include meta.load-css("scss/components/actor_sheet");
@include meta.load-css("scss/components/dice_total");
/* Styles limited to ds4 sheets */
.ds4 {
@include meta.load-css("scss/components/attributes_traits");
@include meta.load-css("scss/components/apps");
@include meta.load-css("scss/components/basic_property");
@include meta.load-css("scss/components/character_progression");
@include meta.load-css("scss/components/character_values");
@include meta.load-css("scss/components/combat_values");
@include meta.load-css("scss/components/description");
@include meta.load-css("scss/components/forms");
@include meta.load-css("scss/components/item_list");
@include meta.load-css("scss/components/tabs");
@include meta.load-css("scss/components/talent_rank_equation");
@include meta.load-css("scss/components/currency");
@include meta.load-css("scss/components/rollable_image");
}

27
src/scss/ds4.scss Normal file
View file

@ -0,0 +1,27 @@
@use 'sass:meta';
/* Global styles */
@include meta.load-css("global/accessibility");
@include meta.load-css("global/flex");
@include meta.load-css("global/fonts");
@include meta.load-css("global/grid");
@include meta.load-css("global/window");
@include meta.load-css("components/actor_sheet");
@include meta.load-css("components/dice_total");
/* Styles limited to ds4 sheets */
.ds4 {
@include meta.load-css("components/attributes_traits");
@include meta.load-css("components/apps");
@include meta.load-css("components/basic_property");
@include meta.load-css("components/character_progression");
@include meta.load-css("components/character_values");
@include meta.load-css("components/combat_values");
@include meta.load-css("components/description");
@include meta.load-css("components/forms");
@include meta.load-css("components/item_list");
@include meta.load-css("components/tabs");
@include meta.load-css("components/talent_rank_equation");
@include meta.load-css("components/currency");
@include meta.load-css("components/rollable_image");
}

View file

@ -2,33 +2,33 @@
font-family: "Lora"; font-family: "Lora";
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
src: local("Lora"), url("fonts/Lora/Lora.woff") format("woff"); src: local("Lora"), url("/systems/ds4/fonts/Lora/Lora.woff") format("woff");
} }
@font-face { @font-face {
font-family: "Lora"; font-family: "Lora";
font-style: normal; font-style: normal;
font-weight: bold; font-weight: bold;
src: local("Lora"), url("fonts/Lora/Lora-Bold.woff") format("woff"); src: local("Lora"), url("/systems/ds4/fonts/Lora/Lora-Bold.woff") format("woff");
} }
@font-face { @font-face {
font-family: "Lora"; font-family: "Lora";
font-style: italic; font-style: italic;
font-weight: normal; font-weight: normal;
src: local("Lora"), url("fonts/Lora/Lora-Italic.woff") format("woff"); src: local("Lora"), url("/systems/ds4/fonts/Lora/Lora-Italic.woff") format("woff");
} }
@font-face { @font-face {
font-family: "Lora"; font-family: "Lora";
font-style: italic; font-style: italic;
font-weight: bold; font-weight: bold;
src: local("Lora"), url("fonts/Lora/Lora-BoldItalic.woff") format("woff"); src: local("Lora"), url("/systems/ds4/fonts/Lora/Lora-BoldItalic.woff") format("woff");
} }
@font-face { @font-face {
font-family: "Wood Stamp"; font-family: "Wood Stamp";
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
src: local("Wood Stamp"), url("fonts/Woodstamp/Woodstamp.woff") format("woff"); src: local("Wood Stamp"), url("/systems/ds4/fonts/Woodstamp/Woodstamp.woff") format("woff");
} }

View file

@ -9,6 +9,6 @@ $margin-lg: $padding-lg;
$default-input-height: 26px; $default-input-height: 26px;
$official-icons-path: "assets/icons/official"; $official-icons-path: "/systems/ds4/assets/icons/official";
$border-groove: 2px groove colors.$c-border-groove; $border-groove: 2px groove colors.$c-border-groove;

View file

@ -26,7 +26,7 @@
} }
], ],
"esmodules": ["module/ds4.js"], "esmodules": ["module/ds4.js"],
"styles": ["ds4.css"], "styles": ["css/ds4.css"],
"scripts": [], "scripts": [],
"packs": [ "packs": [
{ {

4
tsconfig.eslint.json Normal file
View file

@ -0,0 +1,4 @@
{
"extends": "./tsconfig.json",
"include": ["src", "spec", "*.js"]
}

View file

@ -6,7 +6,8 @@
"esModuleInterop": true, "esModuleInterop": true,
"moduleResolution": "node", "moduleResolution": "node",
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"strict": true "strict": true,
"sourceMap": true
}, },
"include": ["src"] "include": ["src"]
} }

368
yarn.lock
View file

@ -1070,6 +1070,47 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@rollup/plugin-node-resolve@npm:^11.2.0":
version: 11.2.0
resolution: "@rollup/plugin-node-resolve@npm:11.2.0"
dependencies:
"@rollup/pluginutils": ^3.1.0
"@types/resolve": 1.17.1
builtin-modules: ^3.1.0
deepmerge: ^4.2.2
is-module: ^1.0.0
resolve: ^1.19.0
peerDependencies:
rollup: ^1.20.0||^2.0.0
checksum: 173bb5822b8a6fd3a2c09303efd437711062885099dd1a4a6e91b449b99fcf5a4dc43e7d3836edeaca85ef7235547a193a3011314298ecbc529e8b123c371718
languageName: node
linkType: hard
"@rollup/pluginutils@npm:^3.1.0":
version: 3.1.0
resolution: "@rollup/pluginutils@npm:3.1.0"
dependencies:
"@types/estree": 0.0.39
estree-walker: ^1.0.1
picomatch: ^2.2.2
peerDependencies:
rollup: ^1.20.0||^2.0.0
checksum: 45da6411e045d1b034242a8144f4a5e8c02ff1b68a2e0857807f5bb4b091c416f2015e075057f0f0dec200e7b35efe6ed4e301b43e365cedea09192f01a6839b
languageName: node
linkType: hard
"@rollup/pluginutils@npm:^4.1.0":
version: 4.1.0
resolution: "@rollup/pluginutils@npm:4.1.0"
dependencies:
estree-walker: ^2.0.1
picomatch: ^2.2.2
peerDependencies:
rollup: ^1.20.0||^2.0.0
checksum: 566b8d2bcc0d52877f8c9f364026be40fa921c8d5860b5f2a5f476658dfebf462536632f079aa3f52fafe64d8aea6741c20bb198e67b33eaba8f9fe69b38ae3f
languageName: node
linkType: hard
"@sinonjs/commons@npm:^1.7.0": "@sinonjs/commons@npm:^1.7.0":
version: 1.8.2 version: 1.8.2
resolution: "@sinonjs/commons@npm:1.8.2" resolution: "@sinonjs/commons@npm:1.8.2"
@ -1129,6 +1170,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/estree@npm:0.0.39":
version: 0.0.39
resolution: "@types/estree@npm:0.0.39"
checksum: 43e5361de39969def145f32f4599391ab13055ec94841f1633a7cfe10f0e8a940ebf0e9a4b2770454a6bddd034b57e7e0d51a4d565cb2714ee2accf10a7718be
languageName: node
linkType: hard
"@types/fs-extra@npm:^9.0.8": "@types/fs-extra@npm:^9.0.8":
version: 9.0.8 version: 9.0.8
resolution: "@types/fs-extra@npm:9.0.8" resolution: "@types/fs-extra@npm:9.0.8"
@ -1233,6 +1281,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/resolve@npm:1.17.1":
version: 1.17.1
resolution: "@types/resolve@npm:1.17.1"
dependencies:
"@types/node": "*"
checksum: 8e72a73574f9489760662498c1ad512a8d4084a5db15f327e0d785cb277bb0a3146cd049241a8e3268bd0ed204ad3ee7b4a6b4622ef681e70547be9af258ca6a
languageName: node
linkType: hard
"@types/sizzle@npm:*": "@types/sizzle@npm:*":
version: 2.3.2 version: 2.3.2
resolution: "@types/sizzle@npm:2.3.2" resolution: "@types/sizzle@npm:2.3.2"
@ -1270,12 +1327,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/eslint-plugin@npm:^4.16.1": "@typescript-eslint/eslint-plugin@npm:^4.18.0":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/eslint-plugin@npm:4.16.1" resolution: "@typescript-eslint/eslint-plugin@npm:4.18.0"
dependencies: dependencies:
"@typescript-eslint/experimental-utils": 4.16.1 "@typescript-eslint/experimental-utils": 4.18.0
"@typescript-eslint/scope-manager": 4.16.1 "@typescript-eslint/scope-manager": 4.18.0
debug: ^4.1.1 debug: ^4.1.1
functional-red-black-tree: ^1.0.1 functional-red-black-tree: ^1.0.1
lodash: ^4.17.15 lodash: ^4.17.15
@ -1288,66 +1345,66 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: 873347906fdfe9a70dc80b80f1cbcc6dff00fae5a367ec186e52c6ce616941aa757cd5bc8dbba706f86633df4af396e6c33d68b890983444417a3e76a94c9ad4 checksum: f137baf23f42345986a3570016ef0bacfff9f1e973f87962e09b826dde26b2f3d4c383a2b22839d2cd46baeb54753ac52c8837d41aa6caaf2ce122efdefea689
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/experimental-utils@npm:4.16.1": "@typescript-eslint/experimental-utils@npm:4.18.0, @typescript-eslint/experimental-utils@npm:^4.0.1":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/experimental-utils@npm:4.16.1" resolution: "@typescript-eslint/experimental-utils@npm:4.18.0"
dependencies: dependencies:
"@types/json-schema": ^7.0.3 "@types/json-schema": ^7.0.3
"@typescript-eslint/scope-manager": 4.16.1 "@typescript-eslint/scope-manager": 4.18.0
"@typescript-eslint/types": 4.16.1 "@typescript-eslint/types": 4.18.0
"@typescript-eslint/typescript-estree": 4.16.1 "@typescript-eslint/typescript-estree": 4.18.0
eslint-scope: ^5.0.0 eslint-scope: ^5.0.0
eslint-utils: ^2.0.0 eslint-utils: ^2.0.0
peerDependencies: peerDependencies:
eslint: "*" eslint: "*"
checksum: 526ca13632841963ed29fcd3688ff300d5ee3ecd442b8e1e540bee7fe09e4595cd43da7aa6c3c5f27c8876f55c823b4fd34e9639ceaf1f8af2a5db4561c57e82 checksum: 1f1357b38aa6e1dc9088abec1c259372ff124be215644283df1725421c3faeeb90ca463c5e549247f10918d18031cd56b58b366d22a5c90e23f601826d1d7f3a
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/parser@npm:^4.16.1": "@typescript-eslint/parser@npm:^4.18.0":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/parser@npm:4.16.1" resolution: "@typescript-eslint/parser@npm:4.18.0"
dependencies: dependencies:
"@typescript-eslint/scope-manager": 4.16.1 "@typescript-eslint/scope-manager": 4.18.0
"@typescript-eslint/types": 4.16.1 "@typescript-eslint/types": 4.18.0
"@typescript-eslint/typescript-estree": 4.16.1 "@typescript-eslint/typescript-estree": 4.18.0
debug: ^4.1.1 debug: ^4.1.1
peerDependencies: peerDependencies:
eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: 9ce7c8b2ec9679c6428b44fe06f6a56f145b54b72549691d97e3d6a4ffd0fc116ca61bdef695e77c3217fc30f2988434078e09009ab2dc5ec028e6f3cecb9a16 checksum: d2f907dc2888078fa6aaca329e39209cc0ceff0dfe43657835b9fbd73678d848077572fdf451dd0cae4ea199b8bfa0f3791037bd9174049668914c7a8ac55157
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/scope-manager@npm:4.16.1": "@typescript-eslint/scope-manager@npm:4.18.0":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/scope-manager@npm:4.16.1" resolution: "@typescript-eslint/scope-manager@npm:4.18.0"
dependencies: dependencies:
"@typescript-eslint/types": 4.16.1 "@typescript-eslint/types": 4.18.0
"@typescript-eslint/visitor-keys": 4.16.1 "@typescript-eslint/visitor-keys": 4.18.0
checksum: 2872ae6b3c1afe6d0de2168cf4c14864ac6183de8db081f8efc236a4a6f6448d59f80abc529ab3b50b48b8a9a5b21c4bacbad8936a384ca3c2f1bb4b950fd4de checksum: c543d4bf73ad0193cca7303c376f15b099ee861be492a210cfc19909d2ec828b7dc898a59e17c89cc91e4cc2ea450731a83671d136cd995fb9b77f8a7db4d440
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/types@npm:4.16.1": "@typescript-eslint/types@npm:4.18.0":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/types@npm:4.16.1" resolution: "@typescript-eslint/types@npm:4.18.0"
checksum: 5df220b8dff372540921d8ef478f4107e6eb51824e7346c942dafc2d181cd937983fa80f44c2e94abf28b57a303e72205915d2bca13ac37c028a98710fd37baa checksum: 45d3df0c4993ceab017df2a4502bb2e3d9b21e6554997a539b88dfa5899c83bf6156a823d15eeb679e65dec15ab07ff371c6e5c09f98c166ed94f79a8223ffab
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/typescript-estree@npm:4.16.1": "@typescript-eslint/typescript-estree@npm:4.18.0":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/typescript-estree@npm:4.16.1" resolution: "@typescript-eslint/typescript-estree@npm:4.18.0"
dependencies: dependencies:
"@typescript-eslint/types": 4.16.1 "@typescript-eslint/types": 4.18.0
"@typescript-eslint/visitor-keys": 4.16.1 "@typescript-eslint/visitor-keys": 4.18.0
debug: ^4.1.1 debug: ^4.1.1
globby: ^11.0.1 globby: ^11.0.1
is-glob: ^4.0.1 is-glob: ^4.0.1
@ -1356,17 +1413,17 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
typescript: typescript:
optional: true optional: true
checksum: d09de17eb15f08a44574d62a3eadcacd6d331372bd7525cfb7d08d9caeb8d09c2f5a195927ea48a71996337baab47bf9c7d50549c160b901be6a6bc1df9c3f39 checksum: b77e150d281d50aad89f915c05310b5f94fa2b1fc64eada20460d8a7f10c42d4c2a5ccffe185f128c965fc9bd209f77a0df8e1779af18b0a3a383241564ecc4b
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/visitor-keys@npm:4.16.1": "@typescript-eslint/visitor-keys@npm:4.18.0":
version: 4.16.1 version: 4.18.0
resolution: "@typescript-eslint/visitor-keys@npm:4.16.1" resolution: "@typescript-eslint/visitor-keys@npm:4.18.0"
dependencies: dependencies:
"@typescript-eslint/types": 4.16.1 "@typescript-eslint/types": 4.18.0
eslint-visitor-keys: ^2.0.0 eslint-visitor-keys: ^2.0.0
checksum: 7b3f87165fc3533e80c8e5848306dca7ffbe7a6c04c40895cb5cdbfdf55bca606933efae20c16d91576e0ab926f8f539257b1fb13231aac3b0c8ad9d741042c9 checksum: 654576d330531386773facffc715e213602721de8ca2f6268d71186a732975031954119fba414a4d502b4827b3941fae068ebb4368b4b7f94e937597b3f57d82
languageName: node languageName: node
linkType: hard linkType: hard
@ -2063,6 +2120,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"builtin-modules@npm:^3.1.0":
version: 3.2.0
resolution: "builtin-modules@npm:3.2.0"
checksum: f0e7240f70ae472a0a0167bf76d2e828c73028fe60be8cd229939c38a27527ea68c92f700553dac1316fa124af3037bc7a765ca0e029a03d2e9201dfb372ea24
languageName: node
linkType: hard
"cache-base@npm:^1.0.1": "cache-base@npm:^1.0.1":
version: 1.0.1 version: 1.0.1
resolution: "cache-base@npm:1.0.1" resolution: "cache-base@npm:1.0.1"
@ -2463,6 +2527,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"commondir@npm:^1.0.1":
version: 1.0.1
resolution: "commondir@npm:1.0.1"
checksum: 98f18ad14f0ea38e0866db365bc8496f2a74250cf47ec96b94913e1b0574c99b4ff837a9f05dbc68d82505fd06b52dfba4f6bbe6fbda43094296cfaf33b475a0
languageName: node
linkType: hard
"component-emitter@npm:^1.2.1": "component-emitter@npm:^1.2.1":
version: 1.3.0 version: 1.3.0
resolution: "component-emitter@npm:1.3.0" resolution: "component-emitter@npm:1.3.0"
@ -2821,26 +2892,30 @@ __metadata:
resolution: "dungeonslayers4@workspace:." resolution: "dungeonslayers4@workspace:."
dependencies: dependencies:
"@league-of-foundry-developers/foundry-vtt-types": ^0.7.9-3 "@league-of-foundry-developers/foundry-vtt-types": ^0.7.9-3
"@rollup/plugin-node-resolve": ^11.2.0
"@types/fs-extra": ^9.0.8 "@types/fs-extra": ^9.0.8
"@types/jest": ^26.0.20 "@types/jest": ^26.0.20
"@typescript-eslint/eslint-plugin": ^4.16.1 "@typescript-eslint/eslint-plugin": ^4.18.0
"@typescript-eslint/parser": ^4.16.1 "@typescript-eslint/parser": ^4.18.0
chalk: ^4.1.0 chalk: ^4.1.0
eslint: ^7.21.0 eslint: ^7.22.0
eslint-config-prettier: ^8.1.0 eslint-config-prettier: ^8.1.0
eslint-plugin-jest: ^24.3.2
eslint-plugin-prettier: ^3.3.1 eslint-plugin-prettier: ^3.3.1
fs-extra: ^9.1.0 fs-extra: ^9.1.0
gulp: ^4.0.2 gulp: ^4.0.2
gulp-sass: ^4.1.0 gulp-sass: ^4.1.0
gulp-typescript: ^6.0.0-alpha.1
husky: ^5.1.3 husky: ^5.1.3
jest: ^26.6.3 jest: ^26.6.3
jest-junit: ^12.0.0 jest-junit: ^12.0.0
json-stringify-pretty-compact: ^3.0.0
lint-staged: ^10.5.4 lint-staged: ^10.5.4
prettier: ^2.2.1 prettier: ^2.2.1
rollup: ^2.41.4
rollup-plugin-typescript2: ^0.30.0
sass: ^1.32.8 sass: ^1.32.8
semver: ^7.3.4
ts-jest: ^26.5.3 ts-jest: ^26.5.3
tslib: ^2.1.0
typescript: ^4.2.3 typescript: ^4.2.3
yargs: ^16.2.0 yargs: ^16.2.0
languageName: unknown languageName: unknown
@ -3049,6 +3124,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint-plugin-jest@npm:^24.3.2":
version: 24.3.2
resolution: "eslint-plugin-jest@npm:24.3.2"
dependencies:
"@typescript-eslint/experimental-utils": ^4.0.1
peerDependencies:
"@typescript-eslint/eslint-plugin": ">= 4"
eslint: ">=5"
peerDependenciesMeta:
"@typescript-eslint/eslint-plugin":
optional: true
checksum: caf92f0bab6800bbf1fcfa8d75e1b7ad2bfb77914abdf1f0c33ac2b0d3b15c48cbec7b36a828931048f71dc181bbda9ede1d74b9a153f92029de0680644d1d14
languageName: node
linkType: hard
"eslint-plugin-prettier@npm:^3.3.1": "eslint-plugin-prettier@npm:^3.3.1":
version: 3.3.1 version: 3.3.1
resolution: "eslint-plugin-prettier@npm:3.3.1" resolution: "eslint-plugin-prettier@npm:3.3.1"
@ -3097,9 +3187,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint@npm:^7.21.0": "eslint@npm:^7.22.0":
version: 7.21.0 version: 7.22.0
resolution: "eslint@npm:7.21.0" resolution: "eslint@npm:7.22.0"
dependencies: dependencies:
"@babel/code-frame": 7.12.11 "@babel/code-frame": 7.12.11
"@eslint/eslintrc": ^0.4.0 "@eslint/eslintrc": ^0.4.0
@ -3118,7 +3208,7 @@ __metadata:
file-entry-cache: ^6.0.1 file-entry-cache: ^6.0.1
functional-red-black-tree: ^1.0.1 functional-red-black-tree: ^1.0.1
glob-parent: ^5.0.0 glob-parent: ^5.0.0
globals: ^12.1.0 globals: ^13.6.0
ignore: ^4.0.6 ignore: ^4.0.6
import-fresh: ^3.0.0 import-fresh: ^3.0.0
imurmurhash: ^0.1.4 imurmurhash: ^0.1.4
@ -3126,7 +3216,7 @@ __metadata:
js-yaml: ^3.13.1 js-yaml: ^3.13.1
json-stable-stringify-without-jsonify: ^1.0.1 json-stable-stringify-without-jsonify: ^1.0.1
levn: ^0.4.1 levn: ^0.4.1
lodash: ^4.17.20 lodash: ^4.17.21
minimatch: ^3.0.4 minimatch: ^3.0.4
natural-compare: ^1.4.0 natural-compare: ^1.4.0
optionator: ^0.9.1 optionator: ^0.9.1
@ -3140,7 +3230,7 @@ __metadata:
v8-compile-cache: ^2.0.3 v8-compile-cache: ^2.0.3
bin: bin:
eslint: bin/eslint.js eslint: bin/eslint.js
checksum: aa8fd50cddc4ab259e2d0ff8f43f0601060543c12e335d76ee074bf25ad02a885bea9d48a367de736d3bdb871de7eb62e6d67930c0173cc46280ddd0f236e740 checksum: 9be0a215b6b1e2941318b3e0c11ada8ba9a4adacf5960ab916d07f1d619828af40cba00e8ed7d151b8c715ba8ea81f4c2a56e46a2558d9795788b4f410a95ec4
languageName: node languageName: node
linkType: hard linkType: hard
@ -3197,6 +3287,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"estree-walker@npm:^1.0.1":
version: 1.0.1
resolution: "estree-walker@npm:1.0.1"
checksum: 85e7cee763e9125a7d8a947b3a06a8b9282873936df220dd0d791d9b3315e45e40ab096b43ba71bdc99140c11a6d23fdcf686642dc119a7b2d6181004fdb24d2
languageName: node
linkType: hard
"estree-walker@npm:^2.0.1":
version: 2.0.2
resolution: "estree-walker@npm:2.0.2"
checksum: 378cc9d3be56962c5219c55ad1fde732cb7d55a11cde5acbf5995f39ddd0e98c1095a43c0ef15a520d1d6910e816bd3daff5fc5d7d38baaf8b12d5a2970df57c
languageName: node
linkType: hard
"esutils@npm:^2.0.2": "esutils@npm:^2.0.2":
version: 2.0.3 version: 2.0.3
resolution: "esutils@npm:2.0.3" resolution: "esutils@npm:2.0.3"
@ -3478,6 +3582,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"find-cache-dir@npm:^3.3.1":
version: 3.3.1
resolution: "find-cache-dir@npm:3.3.1"
dependencies:
commondir: ^1.0.1
make-dir: ^3.0.2
pkg-dir: ^4.1.0
checksum: b1e23226ee89fba89646aa5f72d084c6d04bb64f6d523c9cb2d57a1b5280fcac39e92fd5be572e2fae8a83aa70bc5b797ce33a826b9a4b92373cc38e66d4aa64
languageName: node
linkType: hard
"find-up@npm:^1.0.0": "find-up@npm:^1.0.0":
version: 1.1.2 version: 1.1.2
resolution: "find-up@npm:1.1.2" resolution: "find-up@npm:1.1.2"
@ -3621,6 +3736,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fs-extra@npm:8.1.0":
version: 8.1.0
resolution: "fs-extra@npm:8.1.0"
dependencies:
graceful-fs: ^4.2.0
jsonfile: ^4.0.0
universalify: ^0.1.0
checksum: 056a96d4f55ab8728b021e251175a4a6440d1edb5845e6c2e8e010019bde3e63de188a0eb99386c21c71804ca1a571cd6e08f507971f10a2bc4f4f7667720fa4
languageName: node
linkType: hard
"fs-extra@npm:^9.1.0": "fs-extra@npm:^9.1.0":
version: 9.1.0 version: 9.1.0
resolution: "fs-extra@npm:9.1.0" resolution: "fs-extra@npm:9.1.0"
@ -3669,7 +3795,7 @@ fsevents@^1.2.7:
languageName: node languageName: node
linkType: hard linkType: hard
fsevents@^2.1.2: "fsevents@^2.1.2, fsevents@~2.3.1":
version: 2.3.2 version: 2.3.2
resolution: "fsevents@npm:2.3.2" resolution: "fsevents@npm:2.3.2"
dependencies: dependencies:
@ -3688,7 +3814,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"fsevents@patch:fsevents@^2.1.2#builtin<compat/fsevents>": "fsevents@patch:fsevents@^2.1.2#builtin<compat/fsevents>, fsevents@patch:fsevents@~2.3.1#builtin<compat/fsevents>":
version: 2.3.2 version: 2.3.2
resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin<compat/fsevents>::version=2.3.2&hash=11e9ea" resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin<compat/fsevents>::version=2.3.2&hash=11e9ea"
dependencies: dependencies:
@ -3941,6 +4067,15 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"globals@npm:^13.6.0":
version: 13.6.0
resolution: "globals@npm:13.6.0"
dependencies:
type-fest: ^0.20.2
checksum: 0322d9c1b210be233060aa79592bc65c45572237be8dbedabf830dbd70120ac21f8721309a396782463e60c4cc0b92a6476a348b4b13e481f35e361195328b8e
languageName: node
linkType: hard
"globby@npm:^11.0.1": "globby@npm:^11.0.1":
version: 11.0.2 version: 11.0.2
resolution: "globby@npm:11.0.2" resolution: "globby@npm:11.0.2"
@ -4033,22 +4168,6 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"gulp-typescript@npm:^6.0.0-alpha.1":
version: 6.0.0-alpha.1
resolution: "gulp-typescript@npm:6.0.0-alpha.1"
dependencies:
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
peerDependencies:
typescript: "~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev "
checksum: 39ee6423d25da5cffab8942af65973629e48af23c6fb1aa91f19a4142d8b42f50c052784c99982a4bb45c7f58aba731dad87225b599414bbb2510e9cf875de03
languageName: node
linkType: hard
"gulp@npm:^4.0.2": "gulp@npm:^4.0.2":
version: 4.0.2 version: 4.0.2
resolution: "gulp@npm:4.0.2" resolution: "gulp@npm:4.0.2"
@ -4341,7 +4460,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.0, inherits@npm:~2.0.3": "inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.0, inherits@npm:~2.0.3":
version: 2.0.4 version: 2.0.4
resolution: "inherits@npm:2.0.4" resolution: "inherits@npm:2.0.4"
checksum: 98426da247ddfc3dcd7d7daedd90c3ca32d5b08deca08949726f12d49232aef94772a07b36cf4ff833e105ae2ef931777f6de4a6dd8245a216b9299ad4a50bea checksum: 98426da247ddfc3dcd7d7daedd90c3ca32d5b08deca08949726f12d49232aef94772a07b36cf4ff833e105ae2ef931777f6de4a6dd8245a216b9299ad4a50bea
@ -4574,6 +4693,13 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"is-module@npm:^1.0.0":
version: 1.0.0
resolution: "is-module@npm:1.0.0"
checksum: 2cbd41e2760874130b76aee84cc53120c4feef0d0f196fa665326857b444c8549909cc840f3f3a59652a7e8df46146a77f6c0f3f70a578704e03670975843e74
languageName: node
linkType: hard
"is-negated-glob@npm:^1.0.0": "is-negated-glob@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "is-negated-glob@npm:1.0.0" resolution: "is-negated-glob@npm:1.0.0"
@ -5373,13 +5499,6 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"json-stringify-pretty-compact@npm:^3.0.0":
version: 3.0.0
resolution: "json-stringify-pretty-compact@npm:3.0.0"
checksum: 743d0485399d51e052835f8b6ccfb150a1c37ccd41d0be7c6bbfa49778fe0d1a50f123d44d2fbf759f560c2ae0e9341da8de056b583a7959c4c391ca89f31840
languageName: node
linkType: hard
"json-stringify-safe@npm:~5.0.1": "json-stringify-safe@npm:~5.0.1":
version: 5.0.1 version: 5.0.1
resolution: "json-stringify-safe@npm:5.0.1" resolution: "json-stringify-safe@npm:5.0.1"
@ -5398,6 +5517,18 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"jsonfile@npm:^4.0.0":
version: 4.0.0
resolution: "jsonfile@npm:4.0.0"
dependencies:
graceful-fs: ^4.1.6
dependenciesMeta:
graceful-fs:
optional: true
checksum: a40b7b64da41c84b0dc7ad753737ba240bb0dc50a94be20ec0b73459707dede69a6f89eb44b4d29e6994ed93ddf8c9b6e57f6b1f09dd707567959880ad6cee7f
languageName: node
linkType: hard
"jsonfile@npm:^6.0.1": "jsonfile@npm:^6.0.1":
version: 6.1.0 version: 6.1.0
resolution: "jsonfile@npm:6.1.0" resolution: "jsonfile@npm:6.1.0"
@ -5639,7 +5770,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"lodash@npm:4.x, lodash@npm:^4.0.0, lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:~4.17.10": "lodash@npm:4.x, lodash@npm:^4.0.0, lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.10":
version: 4.17.21 version: 4.17.21
resolution: "lodash@npm:4.17.21" resolution: "lodash@npm:4.17.21"
checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468
@ -5696,7 +5827,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"make-dir@npm:^3.0.0": "make-dir@npm:^3.0.0, make-dir@npm:^3.0.2":
version: 3.1.0 version: 3.1.0
resolution: "make-dir@npm:3.1.0" resolution: "make-dir@npm:3.1.0"
dependencies: dependencies:
@ -6621,7 +6752,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1": "picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2":
version: 2.2.2 version: 2.2.2
resolution: "picomatch@npm:2.2.2" resolution: "picomatch@npm:2.2.2"
checksum: 20fa75e0a58b39d83425b3db68744d5f6f361fd4fd66ec7745d884036d502abba0d553a637703af79939b844164b13e60eea339ccb043d7fbd74c3da2592b864 checksum: 20fa75e0a58b39d83425b3db68744d5f6f361fd4fd66ec7745d884036d502abba0d553a637703af79939b844164b13e60eea339ccb043d7fbd74c3da2592b864
@ -6711,7 +6842,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"pkg-dir@npm:^4.2.0": "pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0":
version: 4.2.0 version: 4.2.0
resolution: "pkg-dir@npm:4.2.0" resolution: "pkg-dir@npm:4.2.0"
dependencies: dependencies:
@ -6954,7 +7085,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"readable-stream@npm:2 || 3, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": "readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6":
version: 2.3.7 version: 2.3.7
resolution: "readable-stream@npm:2.3.7" resolution: "readable-stream@npm:2.3.7"
dependencies: dependencies:
@ -7214,7 +7345,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.18.1, resolve@^1.4.0": "resolve@1.20.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.4.0":
version: 1.20.0 version: 1.20.0
resolution: "resolve@npm:1.20.0" resolution: "resolve@npm:1.20.0"
dependencies: dependencies:
@ -7224,7 +7355,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"resolve@patch:resolve@^1.1.6#builtin<compat/resolve>, resolve@patch:resolve@^1.1.7#builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#builtin<compat/resolve>, resolve@patch:resolve@^1.18.1#builtin<compat/resolve>, resolve@patch:resolve@^1.4.0#builtin<compat/resolve>": "resolve@patch:resolve@1.20.0#builtin<compat/resolve>, resolve@patch:resolve@^1.1.6#builtin<compat/resolve>, resolve@patch:resolve@^1.1.7#builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#builtin<compat/resolve>, resolve@patch:resolve@^1.18.1#builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#builtin<compat/resolve>, resolve@patch:resolve@^1.4.0#builtin<compat/resolve>":
version: 1.20.0 version: 1.20.0
resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin<compat/resolve>::version=1.20.0&hash=3388aa" resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin<compat/resolve>::version=1.20.0&hash=3388aa"
dependencies: dependencies:
@ -7290,6 +7421,36 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"rollup-plugin-typescript2@npm:^0.30.0":
version: 0.30.0
resolution: "rollup-plugin-typescript2@npm:0.30.0"
dependencies:
"@rollup/pluginutils": ^4.1.0
find-cache-dir: ^3.3.1
fs-extra: 8.1.0
resolve: 1.20.0
tslib: 2.1.0
peerDependencies:
rollup: ">=1.26.3"
typescript: ">=2.4.0"
checksum: 3bf7a4d398f53461d6486ddb92f3649e646a6d1f89340090bb242764e9ba09e97d48659ffa9135e3c8b898d9ed3bcca9269e0d6beaef4e44659ae06791f79bea
languageName: node
linkType: hard
"rollup@npm:^2.41.4":
version: 2.41.4
resolution: "rollup@npm:2.41.4"
dependencies:
fsevents: ~2.3.1
dependenciesMeta:
fsevents:
optional: true
bin:
rollup: dist/bin/rollup
checksum: 993457491ed6d89d247839a4466e76dd95a5d4ba85a2419aaa02b431612eda62d79ec2c7700ab841bf0ebde8efc729f321e81ccf64b8387260d6916e24a90575
languageName: node
linkType: hard
"rsvp@npm:^4.8.4": "rsvp@npm:^4.8.4":
version: 4.8.5 version: 4.8.5
resolution: "rsvp@npm:4.8.5" resolution: "rsvp@npm:4.8.5"
@ -7435,7 +7596,7 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2": "semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4":
version: 7.3.4 version: 7.3.4
resolution: "semver@npm:7.3.4" resolution: "semver@npm:7.3.4"
dependencies: dependencies:
@ -8103,16 +8264,6 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"through2@npm:^3.0.1":
version: 3.0.2
resolution: "through2@npm:3.0.2"
dependencies:
inherits: ^2.0.4
readable-stream: 2 || 3
checksum: 26c76a8989c8870e422c262506b55020ab42ae9c0888b8096dd140f8d6ac09ada59f71cddd630ccc5b3aa0bba373c223a27b969e830ee6040f12db952c15a8cd
languageName: node
linkType: hard
"through@npm:^2.3.8": "through@npm:^2.3.8":
version: 2.3.8 version: 2.3.8
resolution: "through@npm:2.3.8" resolution: "through@npm:2.3.8"
@ -8276,6 +8427,13 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"tslib@npm:2.1.0, tslib@npm:^2.1.0":
version: 2.1.0
resolution: "tslib@npm:2.1.0"
checksum: d8f5bdd067611651c6b846c2388f4dc8ba1f5af124e66105f5263d1ad56da17f4b8c6566887ca2f205c5a9758451871ceca87d5d06087af2dca1699c5e33db69
languageName: node
linkType: hard
"tslib@npm:^1.8.1, tslib@npm:^1.9.0": "tslib@npm:^1.8.1, tslib@npm:^1.9.0":
version: 1.14.1 version: 1.14.1
resolution: "tslib@npm:1.14.1" resolution: "tslib@npm:1.14.1"
@ -8342,6 +8500,13 @@ fsevents@^2.1.2:
languageName: node languageName: node
linkType: hard linkType: hard
"type-fest@npm:^0.20.2":
version: 0.20.2
resolution: "type-fest@npm:0.20.2"
checksum: 1f887bc6150e632fb772fd28e33c22a4ab036c6f484fa9ac2e2115f6cae9d62bba7ca0368e3332b539d85bd2c8391c7bff22ad410abcbc9ab3774d61e250b210
languageName: node
linkType: hard
"type-fest@npm:^0.6.0": "type-fest@npm:^0.6.0":
version: 0.6.0 version: 0.6.0
resolution: "type-fest@npm:0.6.0" resolution: "type-fest@npm:0.6.0"
@ -8489,6 +8654,13 @@ typescript@^4.2.3:
languageName: node languageName: node
linkType: hard linkType: hard
"universalify@npm:^0.1.0":
version: 0.1.2
resolution: "universalify@npm:0.1.2"
checksum: 420fc6547357782c700d53e9a92506a8e95345b13e97684c8f9ab75237912ec2ebb6af8ac10d4f7406b7b6bd21c58f6c5c0811414fb0b4091b78b4743fa6806e
languageName: node
linkType: hard
"universalify@npm:^2.0.0": "universalify@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "universalify@npm:2.0.0" resolution: "universalify@npm:2.0.0"
@ -8626,7 +8798,7 @@ typescript@^4.2.3:
languageName: node languageName: node
linkType: hard linkType: hard
"vinyl-fs@npm:^3.0.0, vinyl-fs@npm:^3.0.3": "vinyl-fs@npm:^3.0.0":
version: 3.0.3 version: 3.0.3
resolution: "vinyl-fs@npm:3.0.3" resolution: "vinyl-fs@npm:3.0.3"
dependencies: dependencies:
@ -8675,7 +8847,7 @@ typescript@^4.2.3:
languageName: node languageName: node
linkType: hard linkType: hard
"vinyl@npm:^2.0.0, vinyl@npm:^2.2.0": "vinyl@npm:^2.0.0":
version: 2.2.1 version: 2.2.1
resolution: "vinyl@npm:2.2.1" resolution: "vinyl@npm:2.2.1"
dependencies: dependencies: