diff --git a/.gitignore b/.gitignore index b0a36c5fe..168301bf8 100644 --- a/.gitignore +++ b/.gitignore @@ -51,4 +51,8 @@ npm-debug.log .settings .tmproj nbproject -Thumbs.db +Thumbs.db + +# Ignore AI agent files +CLAUDE.md +.claude diff --git a/_mur/common/util-data-settings.ts b/_mur/common/util-data-settings.ts index 5e804549d..bd5bdcba9 100644 --- a/_mur/common/util-data-settings.ts +++ b/_mur/common/util-data-settings.ts @@ -64,7 +64,7 @@ type PropToken = { MetaDef & SchemaMeta; -/// DECODE METHODS //////////////////////////////////////////////////////////// +/// DECODE/ENCODE METHODS ///////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** a dotProp is a string with a groupID and a propID separated by a period */ function DecodeDotProp(dotProp: string): PropToken { @@ -72,7 +72,7 @@ function DecodeDotProp(dotProp: string): PropToken { if (extra.length > 0) return { error: `invalid dotProp: ${dotProp}` }; if (!IsCamelCase(groupID)) return { error: `invalid group name: ${groupID}` }; if (!IsCamelCase(propID)) return { error: `invalid prop name: ${propID}` }; - return { groupID, propID }; + return { groupID, propID, parts: [groupID, propID] }; } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** a prop submit object is a single key object with a dotProp key and a value, diff --git a/_mur/node-server/@node-index.mts b/_mur/node-server/@node-index.mts index 706dce86d..1be126d06 100644 --- a/_mur/node-server/@node-index.mts +++ b/_mur/node-server/@node-index.mts @@ -25,7 +25,6 @@ export * as FILE from './file.mts'; /// INTEROP MODULES /////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - export * as NCI from './nc-server-interop.mts'; -export * as SettingMgr from './mur-settings-mgr.mts'; /// FORWARDED COMMON EXPORTS ////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/_mur/node-server/mur-settings-mgr.mts b/_mur/node-server/mur-settings-mgr.mts deleted file mode 100644 index bd9e039e8..000000000 --- a/_mur/node-server/mur-settings-mgr.mts +++ /dev/null @@ -1,232 +0,0 @@ -/*//////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - MUR Template Editor Manager - - This is the coutnerpart to the `template-schema.js` file, intended to - manage the viewdata used for rendering the MURSettingEditor component. - - note: the canonical settings file is _default.template.toml - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * //////////////////////////////////////*/ - -import * as FILE from './file.mts'; -import * as PATH from 'node:path'; -import * as TEXT from '../common/util-text.ts'; -import { parse, stringify, Document } from 'yaml'; -import * as NCI from './nc-server-interop.mts'; -import { TerminalLog } from '../common/util-prompts.ts'; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const DBG = false; -const LOG = TerminalLog('SetMgr', 'TagPink'); -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const SETTINGS = { - _schemaVersion: '' // will be loaded -}; - -/// RUNTIME_DIR INITIALIZATION //////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** this will register the message handler 'SRV_PSOP' for client-sourced - * operations */ -NCI.QueueMessageRegistration('SRV_PSOP', pkt => { - const { data } = pkt; - const accessToken = pkt.accessToken; - // todo: validate accessToken - - const { op } = data; - if (op === 'get') return PSOP_Get(pkt); - if (op === 'update') return PSOP_Update(pkt); - if (op === 'persist') return PSOP_Persist(pkt); - return { error: `unknown operation: ${op}` }; // required by UNISYS network protocol -}); - -/// PERMISSIONS AND ACCESS CONTROL PLACEHOLDERS /////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** return a string value if there is an error, otherwise return false-ish */ -function assert_AccessToken(pkt): string { - const { accessToken } = pkt; - if (accessToken === undefined) return 'missing accessToken'; - if (typeof accessToken !== 'string') return 'invalid accessToken'; - if (accessToken.length === 0) return 'empty accessToken'; - return ''; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** return a string value if there is an error, otherwise return false-ish */ -function assert_HasPermission(): string { - return ''; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** return a string value if there is an error, otherwise return false-ish */ -function assert_ValidateData(): string { - return ''; -} - -/// SRV_PSOP HANDLERS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function PSOP_Get(pkt) { - return { settings: SETTINGS }; // required by UNISYS network protocol -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** the 'update' operation expects either groupName+propObj or dotProp+value - * to determine what to update */ -function PSOP_Update(pkt) { - // validate accessToken globally - assert_AccessToken(pkt); - // decode packaet operation - const { groupName, propObj } = pkt.data; // update group - const { dotProp, value } = pkt.data; // update property - // case 1 - update a group with a an object of props - if (groupName && propObj) UpdateGroup(groupName, propObj); - // case 2 - update a property with a value - else if (dotProp && value !== undefined) return UpdateProperty(dotProp, value); - // if got this far, there - return { error: 'missing groupName/propObj or dotProp/value' }; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function PSOP_Persist(pkt) { - const filename = pkt.Data('filename'); - if (typeof filename !== 'string') return { error: `filename should be string` }; - WriteDefaultSettings(filename); - return { status: 'ok' }; // required by UNISYS network protocol -} - -/// SERVER-SIDE SETTINGS UPDATE METHODS /////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function UpdateGroup(groupName, propObj) { - assert_HasPermission(); - assert_ValidateData(); - Object.assign(SETTINGS[groupName], propObj); - NCI.NetSend('CLI_PSDATA', { groupName, propObj }); - return { status: 'ok' }; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function UpdateProperty(dotProp, value) { - assert_HasPermission(); - if (TEXT.IsDottedProperty(dotProp) === false) - return { error: `invalid dotProp: ${dotProp}` }; - const [groupName, propName] = dotProp.split('.'); - assert_ValidateData(); - // SETTINGS[groupName][propName] = value; - NCI.NetSend('CLI_PSDATA', { dotProp, value }); - return { status: 'ok' }; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function UpdateSettings(settingsObj) { - assert_HasPermission(); - assert_ValidateData(); - Object.assign(SETTINGS, settingsObj); - NCI.NetSend('CLI_PSDATA', { settings: SETTINGS }); - return { status: 'ok' }; -} - -/// API YAML METHODS ////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** loads all the matching .yaml files in order to create a composite settings - * object that is stored in its SETTINGS object */ -function LoadSettings(dir) { - const fn = 'LoadSettings:'; - if (dir === undefined) throw Error(`${fn} arg should be path string`); - if (typeof dir !== 'string') throw Error(`${fn} arg should be string`); - const files = [ - 'props-proj-meta', - 'props-proj-pacl', - 'props-proj-settings', - 'props-citation', - 'base-types-comment', - 'base-values', - 'base-controls', - 'layout-edge', - 'layout-node', - 'layout-proj', - 'values-comment-prompts' - ]; - // process files - let detectedSchema = ''; - const u_short = NCI.ShortPath; - files.forEach(f => { - const p = PATH.join(dir, `${f}.yaml`); - if (!FILE.FileExists(p)) { - throw Error(`specified schema file not found: ${u_short(p)}`); - } - const yaml: string = FILE.ReadFile(p).toString(); - const { - _schemaLayer, - _schemaVersion: _sch, - ...obj - } = parse(yaml, { merge: true }); - // detect schema version mismatch for this file - if (!detectedSchema) detectedSchema = _sch; - if (detectedSchema !== _sch) { - const pfile = `'${files[0]}.yaml'`; - const cfile = `'${u_short(p)}'`; - LOG(`schema mismatch: ${cfile}: ${_sch} nomatch ${pfile}`); - process.exit(1); - } - // check for _schemaLayer and handle differently - if (typeof _schemaLayer === 'string' && _schemaLayer.length > 0) { - if (SETTINGS[_schemaLayer] === undefined) SETTINGS[_schemaLayer] = {}; - Object.assign(SETTINGS[_schemaLayer], obj); - } else Object.assign(SETTINGS, obj); - }); - // after processing all files, update the schema version - SETTINGS._schemaVersion = detectedSchema; - return SETTINGS; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** write the current SETTINGS object as a YAML file to the template root */ -function WriteDefaultSettings(fileName?) { - const fn = 'WriteDefaultSettings:'; - const { templateDir } = NCI.GetPaths(); - fileName = fileName || '_default.template.yaml'; - const doc = new Document(SETTINGS); - const cmt = [ - '## DO NOT EDIT THIS FILE DIRECTLY ##', - '## Instead, edit the individual template files in the app-templates directory', - '## to set the property declarations', - '## Note that this is the data SCHEMA, not the data VALUES allowed by the schema.', - '## Look in the runtime directory for the values file.' - ]; - doc.commentBefore = cmt.join('\n'); - const yaml = stringify(doc); - FILE.WriteFile(PATH.join(templateDir, fileName), yaml); -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** write the incoming SETTINGS object values as a YAML file in the runtime - * root directory */ -function WriteSettingsValues(settingsObj) { - const fn = 'WriteSettingsValues:'; - const { runtimeDir, dataset } = NCI.GetPaths(); - LOG(`${fn} would write 'values-${dataset}.yaml' to '${runtimeDir}'`); -} - -/// API GETTERS //////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** retrieve the settings object */ -function Get() { - return SETTINGS; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** return layout metadata for a given groupName or all */ -function GetMetaDefs(groupName) { - const metaDefs = SETTINGS['MetaDefs']; - if (metaDefs === undefined) return { error: `no MetaDefs` }; - if (groupName === undefined) return { ...metaDefs }; - if (typeof groupName !== 'string') return { error: `groupName must be string` }; - const found = metaDefs[groupName]; - if (metaDefs[groupName] === undefined && found) - return { - error: `make sure MetaDefs follow PropertyDefs for ${groupName}` - }; - return found || { error: `no LayoutDef for ${groupName}` }; -} - -/// EXPORT CLASS DEFINITION /////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export { - LoadSettings, // (dir_yaml_settings_files) => obj - WriteDefaultSettings, // (filename?) => void - WriteSettingsValues, // (settings, filename?) => void - Get, // () => obj - GetMetaDefs // (groupName?) => obj -}; diff --git a/_mur/package-lock.json b/_mur/package-lock.json deleted file mode 100644 index 01f4bddc0..000000000 --- a/_mur/package-lock.json +++ /dev/null @@ -1,1019 +0,0 @@ -{ - "name": "ursys-nc", - "version": "0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "ursys-nc", - "version": "0.1", - "devDependencies": { - "esbuild": "^v0.25.0", - "esbuild-plugin-copy": "^2.1.1", - "esbuild-plugin-umd-wrapper": "^3.0.0", - "tsx": "^4.19.3" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/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 - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, - "node_modules/esbuild-plugin-copy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz", - "integrity": "sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "fs-extra": "^10.0.1", - "globby": "^11.0.3" - }, - "peerDependencies": { - "esbuild": ">= 0.14.0" - } - }, - "node_modules/esbuild-plugin-umd-wrapper": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/esbuild-plugin-umd-wrapper/-/esbuild-plugin-umd-wrapper-3.0.0.tgz", - "integrity": "sha512-Ht3jrO7r8oF8FgPIhMnfNQvYLHhz2QA1ggPqfBhoVq0VfYNczqJ6nwQ4PhO5UvrUymn+Q0Nc50xpiDbxI+KR2Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tsx": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", - "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", - "dev": true, - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - } - } -} diff --git a/_mur/package.json b/_mur/package.json index c7abf9100..228497aed 100644 --- a/_mur/package.json +++ b/_mur/package.json @@ -14,13 +14,13 @@ "browser": "./_dist/mur-web-cjs.js", "main": "./_dist/mur-node.cjs", "devDependencies": { - "esbuild": "^v0.25.0", + "esbuild": "^0.25.5", "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-umd-wrapper": "^3.0.0", "tsx": "^4.19.3" }, "dependencies": { - "@melloware/coloris": "^0.24.0", + "immer": "^10.1.1", "yaml": "^2.7.0" } } diff --git a/_mur/web-client/@web-index.ts b/_mur/web-client/@web-index.ts index b0e19ed81..609f28e12 100644 --- a/_mur/web-client/@web-index.ts +++ b/_mur/web-client/@web-index.ts @@ -9,12 +9,10 @@ /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// ben's comment manager export * as COMMENT from './comment/ac-comment.ts'; -/// sri's web components -export * as ViewLib from './viewlib/index.ts'; /// interop with NetCreate export * as NCI from './nc-client-interop.ts'; /// settings client -export * as Settings from './mur-settings-client.ts'; +export * as Settings from './nc-settings-client.ts'; /// data normalization export * as DataNorm from '../common/util-data-norm.ts'; diff --git a/_mur/web-client/comment/dc-comment.ts b/_mur/web-client/comment/dc-comment.ts index a6c4283cd..52d3f2f1d 100644 --- a/_mur/web-client/comment/dc-comment.ts +++ b/_mur/web-client/comment/dc-comment.ts @@ -336,13 +336,16 @@ const DEFAULT_CommentTypes: Array = [ function m_LoadUsers(dbUsers: TUserObject[]) { dbUsers.forEach(u => USERS.set(u.id, u.name)); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function m_LoadCommentTypes(commentTypes: TCommentType[]) { COMMENTTYPES.clear(); commentTypes.forEach(t => COMMENTTYPES.set(t.slug, t)); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function m_LoadComments(comments: TComment[]) { comments.forEach(c => COMMENTS.set(c.comment_id, c)); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function m_LoadReadBy(readby: TReadByObject[]) { readby.forEach(r => READBY.set(r.comment_id, r.commenter_ids)); } @@ -357,11 +360,14 @@ function Init() { // Load Defaults // m_LoadCommentTypes(DEFAULT_CommentTypes); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function LoadTemplate(commentTypes: Array) { // fall back order: template.toml > DEFAULT_CommentTypes > DEFAULT_COMMENTTYPE // fall back to DEFAULT_CommentTypes if DEFAULT_CommentTypes is not in dc-comments // or a single DEFAULT_COMMENTTYPE if it's completely missing + if (commentTypes === undefined) { + console.log(PR, 'No custom commentTypes provided in template, using defaults'); + } const types = commentTypes || (DEFAULT_CommentTypes && DEFAULT_CommentTypes.length > 0 @@ -369,7 +375,7 @@ function LoadTemplate(commentTypes: Array) { : [DEFAULT_COMMENTTYPE]); m_LoadCommentTypes(types); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * @param {Object} data * @param {Object} data.users @@ -404,34 +410,40 @@ function LoadDB(data: TLokiData) { // Derive Secondary Values m_DeriveValues(); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetUsers(): TUserMap { return USERS; } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetUser(uid): TUserName { return USERS.get(uid); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetUserName(uid): TUserName { const u = USERS.get(uid); return u !== undefined ? u : uid; // fallback to using `uid` if there's no record } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetCurrentUser(): TUserName { // TODO Placeholder return 'Ben32'; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetCommentTypes(): TCommentTypeMap { return COMMENTTYPES; } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetCommentType(slug: CType): TCommentType { return COMMENTTYPES.get(slug); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetDefaultCommentType(): TCommentType { // returns the first comment type object if (COMMENTTYPES.size < 1) throw new Error('dc-comments: No comment types defined!'); return GetCommentType(GetDefaultCommentTypeSlug()); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetDefaultCommentTypeSlug(): CType { // returns the first comment type slug // fall back order: template.toml > DEFAULT_CommentTypes > DEFAULT_COMMENTTYPE @@ -439,14 +451,15 @@ function GetDefaultCommentTypeSlug(): CType { throw new Error('dc-comments: No comment types defined!'); return COMMENTTYPES.keys().next().value; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetCOMMENTS(): TCommentMap { return COMMENTS; } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetComment(cid: TCommentID): TComment { return COMMENTS.get(cid); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function m_DeriveValues() { ROOTS.clear(); REPLY_ROOTS.clear(); @@ -465,7 +478,7 @@ function m_DeriveValues() { if (DBG) console.log('REPLY_ROOTS', REPLY_ROOTS); if (DBG) console.log('NEXT', NEXT); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function AddComment(data): TComment { if (data.cref === undefined) throw new Error('Comments must have a collection ref!'); @@ -492,7 +505,7 @@ function AddComment(data): TComment { return comment; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * API Call to processes a single update * @param {Object} cobj TComment @@ -501,6 +514,7 @@ function UpdateComment(cobj: TComment) { m_UpdateComment(cobj); m_DeriveValues(); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * Processes a single update * @param {Object} cobj TComment @@ -515,6 +529,7 @@ function m_UpdateComment(cobj: TComment) { // ); COMMENTS.set(cobj.comment_id, cobj); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * API Call to batch updates an array of updated comments * @param {Object[]} cobjs TComment[] @@ -523,7 +538,7 @@ function HandleUpdatedComments(cobjs: TComment[]) { cobjs.forEach(cobj => m_UpdateComment(cobj)); m_DeriveValues(); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * Safely delete a comment and queue it for deletion * This is necessary to also return the `id` @@ -539,6 +554,7 @@ function m_safeDeleteAndQueue(cid): TCommentQueueActions { } throw new Error(`Comment ${cid} not found. This should not happen!`); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * @param {Object} parms * @param {Object} parms.collection_ref @@ -727,7 +743,7 @@ function RemoveComment(parms): TCommentQueueActions[] { m_DeriveValues(); return queuedActions; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * @param {Object} parms * @param {Object} parms.collection_ref @@ -747,7 +763,7 @@ function RemoveAllCommentsForCref(parms): TCommentQueueActions[] { m_DeriveValues(); return queuedActions; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * Checks if the current root and all children are marked deleted. * Ignores the NEXT root items @@ -766,7 +782,7 @@ function m_AllAreMarkedDeleted(rootCommentId: TCommentID): boolean { }); return allAreMarkedDeleted; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * Batch updates an array of removed comment ids * @param {number[]} comment_ids @@ -778,7 +794,7 @@ function HandleRemovedComments(comment_ids: TCommentID[]) { }); m_DeriveValues(); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * `uid` can be undefined if user is not logged in */ @@ -788,22 +804,23 @@ function MarkCommentRead(cid: TCommentID, uid: TUserID) { if (!readby.includes(uid)) readby.push(uid); READBY.set(cid, readby); } +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function MarkCommentUnread(cid: TCommentID, uid: TUserID) { // Mark the comment NOT read const readby = READBY.get(cid) || []; const updatedReadby = readby.filter(readByUid => readByUid !== uid); READBY.set(cid, updatedReadby); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function IsMarkedRead(cid: TCommentID, uid: TUserID): boolean { const readby = READBY.get(cid) || []; return readby.includes(uid); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function IsMarkedDeleted(cid: TCommentID): boolean { return COMMENTS.get(cid).comment_isMarkedDeleted; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** Walk down the next items starting with the current * Ignores child threads * @returns {string[]} comment_ids @@ -815,7 +832,7 @@ function m_GetNexts(cid: TCommentID): TCommentID[] { if (nextId) results.push(nextId, ...m_GetNexts(nextId)); return results; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** Gets all the child reply comments under the root * Does not include the rootCid * @param {string} rootCid root comment id @@ -828,7 +845,7 @@ function m_GetReplies(rootCid: TCommentID): TCommentID[] { if (replyRootId) results.push(replyRootId, ...m_GetNexts(replyRootId)); return results; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** recursively add replies and next * 1. Adds nested children reply threads first * 2. Then adds the next younger sibling @@ -853,7 +870,7 @@ function m_GetRepliesAndNext(cid: TCommentID): TCommentID[] { return results; } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * Get all the comment ids related to a particular collection_ref * based on ROOTS. @@ -874,7 +891,7 @@ function GetThreadedCommentIds(cref: TCollectionRef): TCommentID[] { } if (DBG) console.log('GetThreadedView', GetThreadedCommentIds('1')); if (DBG) console.log('GetThreadedView', GetThreadedCommentIds('2')); - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** * [Currently not used] * Get all the comments related to a particular collection_ref @@ -886,7 +903,7 @@ function GetThreadedCommentData(cref: TCollectionRef): TComment[] { // convert ids to comment objects return threaded_comments_ids.map(cid => COMMENTS.get(cid)); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // NOT USED? // // /** @@ -900,11 +917,10 @@ function GetThreadedCommentData(cref: TCollectionRef): TComment[] { // // convert ids to comment objects // return threaded_comments_ids.map(cid => COMMENTS.get(cid)); // } - function GetReadby(cid: TCommentID): TUserID[] { return READBY.get(cid); } - +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function GetCrefs(): TCollectionRef[] { return [...ROOTS.keys()]; } diff --git a/_mur/web-client/mur-settings-client.ts b/_mur/web-client/mur-settings-client.ts deleted file mode 100644 index 32a3721e9..000000000 --- a/_mur/web-client/mur-settings-client.ts +++ /dev/null @@ -1,140 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - URSYS-MIN (MUR) / SETTINGS CLIENTS - this module connects with server-side mur-settings-mgr.mts module - and stays in synch with it - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import * as NCI from './nc-client-interop.ts'; -import { ConsoleStyler } from '../common/util-prompts.ts'; -import { EventMachine } from '../common/class-event-machine.ts'; - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -import type { DataObj, OpResult } from '../_types/ursys.ts'; -type SNA_EvtHandler = (evt: string, param: DataObj) => void; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const LOG = console.log.bind(console); -const PR = ConsoleStyler('settings', 'TagCyan'); -const DBG = true; -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -let SETTINGS: DataObj = {}; -const EM = new EventMachine('settings_client'); -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NCI.QueueHook('LOADASSETS', async () => { - const fn = 'LOADASSETS:'; - const data = await NCI.NetCall('SRV_PSOP', { op: 'get' }); - if (data.error) throw Error(`${fn} ${data.error}`); - if (data.settings === undefined) throw Error(`${fn} no settings found in data`); - if (Object.keys(data.settings).length === 0) - console.warn(`${fn} received empty settings object`, data); - SETTINGS = data.settings; -}); - -/// RUNTIME INITIALIZATION //////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** this code block will run as soon as the module is loaded */ -(async () => { - // register for settings server push messages - NCI.QueueMessageRegistration('CLI_PSDATA', m_ReceiveServerChanges); -})(); - -/// HELPER METHODS //////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** handle incoming settings change from the server */ -function m_ReceiveServerChanges(data: DataObj) { - if (DBG) LOG(...PR(`client received update`), data); - - // case 1: group set of properties - const { groupName, propObj } = data; // update group - if (groupName && propObj) { - const groupObj = SETTINGS[groupName]; - if (groupObj === undefined) SETTINGS[groupName] = {}; - Object.assign(SETTINGS[groupName], propObj); - EM.emit(groupName, propObj); - EM.emit('*', { [groupName]: propObj }); - return; - } - - // case 2: single property update - const { dotProp, value } = data; // update property - if (dotProp !== undefined && value !== undefined) { - const [gkey, pkey] = dotProp.split('.'); - if (SETTINGS[gkey] === undefined) SETTINGS[gkey] = {}; - if (SETTINGS[gkey][pkey] === undefined) SETTINGS[gkey][pkey] = {}; - Object.assign(SETTINGS[gkey][pkey], value); - EM.emit(dotProp, value); - EM.emit('*', { [gkey]: { [pkey]: value } }); - return; - } - - // case 3: full settings update - const { settings } = data; // update all settings - if (settings !== undefined) { - SETTINGS = Object.assign(SETTINGS, settings); - EM.emit('*', settings); - return; - } - - /// case 4: nothing is set - throw Error(`server pushed unknown data format`, data); -} - -/// API METHODS /////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: return either the entire settings object, or a groupKey */ -function Get(groupName?: string): OpResult { - const fn = 'Get:'; - if (typeof groupName === 'string' && groupName.length > 0) { - if (SETTINGS[groupName] !== undefined) return SETTINGS[groupName]; - return { error: `groupName '${groupName}' not found in settings` }; - } - return SETTINGS; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: update a single property in the settings object to the server - * which will then push the change to all clients */ -async function UpdateProperty(dotProp: string, value: any) { - if (DBG) LOG(...PR(`client push property update`, { dotProp, value })); - const opResult = await NCI.NetCall('SRV_PSOP', { op: 'update', dotProp, value }); - return opResult; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: update a group of properties in the settings object to the server - * which will then push the change to all clients */ -async function UpdateGroup(groupName: string, propObj: DataObj) { - if (DBG) LOG(...PR(`client push group update`, { groupName, propObj })); - const opResult = await NCI.NetCall('SRV_PSOP', { - op: 'update', - groupName, - propObj - }); - return opResult; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: Subscribe to setting change event. The scope is either * or a specific - * subkey of the settings object */ -function Subscribe(scope: string = '*', evHdl: SNA_EvtHandler) { - EM.on(scope, evHdl); -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: Unsubscribe from setting change event */ -function Unsubscribe(scope: string = '*', evHdl: SNA_EvtHandler) { - EM.off(scope, evHdl); -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export { - // - Get, // (subkey?: string) => Promise - UpdateProperty, // - UpdateGroup, - // - Subscribe, // (scope: string, evHdl: SNA_EvtHandler) => void - Unsubscribe // (scope: string, evHdl: SNA_EvtHandler) => void -}; -export { GetSettingsContext, useSettings } from './mur-settings-context.ts'; diff --git a/_mur/web-client/mur-settings-context.ts b/_mur/web-client/mur-settings-context.ts deleted file mode 100644 index 3ea3a566e..000000000 --- a/_mur/web-client/mur-settings-context.ts +++ /dev/null @@ -1,73 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - MUR Settings Context - - Centralized React Context for Settings Manager - - Usage: - - wrap your component tree with - - use the `useSettings` hook in your components - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import React, { createContext } from 'react'; -import { Get, UpdateProperty, UpdateGroup } from './mur-settings-client.ts'; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const SettingsContext = createContext({ origin: 'mur-settings-context' }); -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function GetSettingsContext() { - return SettingsContext; -} - -/// HOOKS ///////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** React Hook to manage settings context. Note that this module is - * defined in a different React context than the legacy app, so you - * have to duplicate it over there somewhere to match both instance - * and potentailly the version */ -function useSettings() { - const [lastSettingsUpdate, updateSettings] = React.useState({}); - - /** universal get settings */ - const get = dotProp => Get(dotProp); - - /** update property via settings manager, then trigger rerender */ - const updateProperty = async (dotProp, value) => { - const opResult = await UpdateProperty(dotProp, value); - const { error, changed } = opResult; - if (error) { - console.error(`updateProperty: ${error}`); - return false; // indicate failure - } - updateSettings(opResult); // trigger a rerender - return true; - }; - - /** update group of properties via settings manager, then trigger rerender */ - const updateGroup = async (groupName, propObj) => { - const opResult = await UpdateGroup(groupName, propObj); - const { error, changed } = opResult; - if (error) { - console.error(`updateGroup: ${error}`); - return false; - } - updateSettings(opResult); // trigger a rerender - return true; - }; - - return { - // to trigger rerender - lastSettingsUpdate, - forceUpdate: () => updateSettings({ timestamp: new Date().toISOString() }), - // api - get, - updateProperty, - updateGroup - }; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export { useSettings, GetSettingsContext }; diff --git a/_mur/web-client/nc-client-interop.ts b/_mur/web-client/nc-client-interop.ts index 2f2c7eca8..a4ab15c5d 100644 --- a/_mur/web-client/nc-client-interop.ts +++ b/_mur/web-client/nc-client-interop.ts @@ -42,7 +42,7 @@ type NC_HandlerObj = { /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const LOG = console.log.bind(console); const PR = ConsoleStyler('interop', 'TagPink'); -let DBG = true; +let DBG = false; const ERR_NONET = 'UDATA instance not initialized'; const ERR_NOSYS = 'UNISYS instance not initialized'; const ERR_LATE = 'Cannot queue hook after InteropConnect'; @@ -88,7 +88,7 @@ function m_ProcessHookQueue() { /** register message handlers for NetCreate client in DOMContentLoaded * handler in init.jsx */ function InteropConnect(unisys: NC_Unisys) { - LOG(...PR('InteropConnect')); + if (DBG) LOG(...PR('InteropConnect')); UNISYS = unisys; UMOD = UNISYS.NewModule('mur-interop'); UDATA = UNISYS.NewDataLink(UMOD); diff --git a/_mur/web-client/nc-settings-client.ts b/_mur/web-client/nc-settings-client.ts new file mode 100644 index 000000000..ac51307b7 --- /dev/null +++ b/_mur/web-client/nc-settings-client.ts @@ -0,0 +1,237 @@ +/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ + + URSYS-MIN (MUR) / NC SETTINGS CLIENTS + + This is a NetCreate specific module that is designed to work with + react-settings-bridge.js. + + This module uses React conventions. We are forced to use React hooks + like useReducer and useContext to manage state within components useState and + useEffect to trigger rerenders; React simply isn't designed to be used with + more straightforward top-down data flow like a mature framework. + +\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ + +import { produce, current, enableMapSet } from 'immer'; +import { ConsoleStyler } from '../common/util-prompts.ts'; +import { EventMachine } from '../common/class-event-machine.ts'; + +/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +import type { DataObj, OpResult } from '../_types/ursys.ts'; +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +type SNA_EvtHandler = (evt: string, param: DataObj) => void; +type ActionObj = { + op: 'update' | 'revert' | 'submit'; + propDef?: string; // 'group.prop' or just 'prop' + value?: any; // new value for the property + saveFunction?: (data: DataObj) => OpResult; // optional save function +}; +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +type DraftObj = { + template: DataObj; // original settings object + pending?: DataObj | null; // pending changes + isDirty?: boolean; // true if there are pending changes + changeSet?: Set; // set of changed propDefs +}; + +/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const LOG = console.log.bind(console); +const PR = ConsoleStyler('settings', 'TagCyan'); +const DBG = false; +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const EM = new EventMachine('settings_client'); + +/// HELPER METHODS ////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** HELPER: simple decoder for a valid dotProp string. If there is only one + * prop (without a dot), then it will assume it's a propName and will + * return [ undefined, propName ]. Otherwise it will return [groupID, propID] */ +function DecodeDotProp(propDef: string) { + if (typeof propDef !== 'string') + throw Error(`Invalid propDef ${propDef}, expected 'group.prop'`); + if (propDef.length === 0) + throw Error(`Invalid propDef ${propDef}, expected 'group.prop'`); + const [groupID, propID, ...extra] = propDef.split('.'); + if (extra.length > 0) + throw Error(`Invalid propDef ${propDef}, expected 'group.prop'`); + if (propID === undefined) return [undefined, groupID]; + return [groupID, propID]; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** HELPER: simple encoder for a valid dotProp string. If there is only one + * prop (without a dot), then it will return just the propName. Otherwise + * it will return 'groupID.propID' */ +function EncodeDotProp(groupID: string | undefined, propID: string): string { + const fn = 'EncodeDotProp:'; + // single arg? then assume it's a propID + const gidOK = + groupID !== undefined && typeof groupID === 'string' && groupID.length > 0; + const pidOK = + propID !== undefined && typeof propID === 'string' && propID.length > 0; + if (propID === undefined && gidOK) return groupID; + // if (undefined, propID) then return propID + if (pidOK && !gidOK) return propID; + // got this far, ppropID should be a string + if (!pidOK) throw Error(`${fn} bad propID ${propID}`); + return `${groupID}.${propID}`; +} + +/// DISPATCHER API //////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +let m_dispatcher = null; +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: GetDispatcher creates a m_dispatcher function for use with the + * Dispatch method. It understands start, update, revert, and submit. + * This is passed to useReducer in MURSettingsEditor. The function + * signature of the returned function is dispatch(actionObj) => newState + * */ +function GetDispatcher() { + if (m_dispatcher) return m_dispatcher; // already set + const fn = 'GetDispatcher:'; + enableMapSet(); // enable Map and Set support in immer + m_dispatcher = produce((draft: DraftObj, action: ActionObj) => { + const { op, propDef, value, saveFunction } = action; + let group, prop; + switch (op) { + // update is called by individual property editors like TextInput + case 'update': + if (!draft.pending) { + if (DBG) LOG(...PR('create pending copy')); + draft.pending = JSON.parse(JSON.stringify(draft.template)); + draft.isDirty = false; + draft.changeSet = new Set(); + } + [group, prop] = DecodeDotProp(propDef); + // groupless properties are at the top level of the template + if (group === undefined) { + if (DBG) LOG(...PR('update no group'), { prop, value }); + if (draft.pending === draft.template) + throw Error(`${fn} pending/template are the same`); + const orig = current(draft).template[prop]; + const curr = current(draft).pending[prop]; + if (curr !== value) { + draft.pending[prop] = value; + draft.changeSet.add(prop); + draft.isDirty = value !== orig; + } else if (DBG) LOG(...PR('- no change for', prop)); + if (DBG) LOG(...PR(` orig[${prop}]`, orig), `curr[${prop}]`, curr); + } + // grouped properties are nested in the template + else { + if (DBG) LOG(...PR('update with group'), { group, prop, value }); + if (draft.pending[group] === undefined) { + throw Error(`${fn} invalid group referenced in ${propDef}`); + } + const orig = current(draft).template[group][prop]; + const curr = current(draft).pending[group][prop]; + if (curr !== value) { + draft.pending[group][prop] = value; + draft.changeSet.add(propDef); + draft.isDirty = value !== orig; + } else if (DBG) LOG(...PR('- no change for', propDef)); + } + break; + // revert is called by the MURSettingsEditor Revert Changes button + case 'revert': + // on revert, clear pending and isDirty, no write done + if (draft.pending) { + if (DBG) LOG(...PR('revert changes', current(draft).changeSet)); + draft.pending = null; + draft.isDirty = false; + draft.changeSet.clear(); + } else { + if (DBG) LOG(...PR('revert: no pending changes')); + if (DBG) LOG(...PR('- template', current(draft).template)); + } + break; + // submit is called by the MURSettingsEditor Save Changes button + case 'submit': + if (typeof saveFunction !== 'function') { + throw Error(`${fn} no saveFunction provided for submit`); + } + // on submit, copy pending to template + // immer handles object immutability + if (draft.pending && draft.isDirty) { + if (DBG) LOG(...PR('submit changes', current(draft).changeSet)); + draft.template = JSON.parse(JSON.stringify(draft.pending)); + draft.pending = null; + draft.isDirty = false; + draft.changeSet.clear(); + // invoke save function passed in the action + saveFunction(current(draft).template) + .then((result: OpResult) => { + if (result.OK) { + if (DBG) LOG(...PR('submit: success', result)); + } else if (DBG) LOG(...PR('submit: error', result)); + }) + .catch(err => { + if (DBG) LOG(...PR('submit: error', err)); + }); + } else { + if (DBG) LOG(...PR('submit: no pending changes')); + if (DBG) LOG(...PR('- template', current(draft).template)); + } + break; + default: + throw Error(`${fn} Unknown operation '${op}' for propDef ${propDef}`); + } + // return the modified draft object + return draft; + }); +} + +/// REACH DISPATCHER API ////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +let m_has_pending = false; // flag to indicate if there are pending changes +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: used by MURSettingsEditor useReducer, which returns [state, dispatch] + * during construction. The dispatch function is this one. the state + * that's accessible through [viewState, \]. The initial state is created + * in MURSettingsEditor and passed as the first argument. Subsequent + * changes to the state are made by calling this function with an + * action object that has the following properties: + * - op: 'update', 'revert', or 'submit' + * - propDef: 'group.prop' or just 'prop' if no group is used + * - value: the new value for the property + * @param state - current state to mutate + * @param action - { op, propDef, value } + * @returns new state object that useReducer will use to update the state + * and re-render the component. + */ +function Dispatch(state, action) { + const immer_dispatch = GetDispatcher(); // not the same as useReducer dispatch! + const newState = immer_dispatch(state, action); + m_has_pending = newState.pending !== null; + return newState; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: if there were pendinng operations from the last Dispatch call, + * return true */ +function HasPendingChanges() { + return m_has_pending; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Subscribe to setting change event. The scope is either * or a specific + * subkey of the settings object */ +function Subscribe(scope: string = '*', evHdl: SNA_EvtHandler) { + EM.on(scope, evHdl); +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Unsubscribe from setting change event */ +function Unsubscribe(scope: string = '*', evHdl: SNA_EvtHandler) { + EM.off(scope, evHdl); +} + +/// EXPORTS /////////////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +export { + Dispatch, // (state, action) => newState + HasPendingChanges, // () => boolean + DecodeDotProp, + EncodeDotProp, + // + Subscribe, // (scope: string, evHdl: SNA_EvtHandler) => void + Unsubscribe // (scope: string, evHdl: SNA_EvtHandler) => void +}; diff --git a/_mur/web-client/viewlib/class-datagroup.ts b/_mur/web-client/viewlib/class-datagroup.ts deleted file mode 100644 index 5cff23ee8..000000000 --- a/_mur/web-client/viewlib/class-datagroup.ts +++ /dev/null @@ -1,83 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - UI_DataGroup implements the UI data group manager for managing named sets - of named properties based on DataObj { [key: string]: any }. This is a flat - dictionary of named properties. - - When a data group is updated, the new data is merged with the existing data - and the group is updated. The data group is then dispatched as a custom event - - This class uses vanilla JS events for dispatching CustomEvent with the name - 'ui--update'. - - - NOTES - - - This is similar to `class-state-mgr` but does not have the stringent - conformance requirements. This is a more lightweight version intended - for use in vanilla JS applications using SNA ViewLib. - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import * as TEXT from '../../common/util-text.ts'; -import * as NORM from '../../common/util-data-norm.ts'; - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -import type { DataObj } from '../../_types/ursys.d.ts'; - -/// CLASS DECLARATION ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UI_DataGroup { - // - private datatype: string; - private _dict: Map; - - constructor(typeName: string) { - this._dict = new Map(); - this.datatype = TEXT.AssertKeyword(typeName).toLowerCase(); - } - - /** API: get data event name */ - public getDataEventName(): string { - return `ui-${this.datatype}-update`; - } - - /** API: update the group */ - public updateGroup(groupName: string, newData: Partial): CustomEvent { - const group = this._dict.get(groupName) || ({} as T); - const data = { ...group, ...newData }; - this._dict.set(groupName, data); - // return a custom event ready to be dispatched - const eventName = this.getDataEventName(); - const detail = { group: groupName, type: this.datatype, [this.datatype]: data }; - const event = new CustomEvent(eventName, { detail }); - return event; - } - - /** API: return a copy of group data */ - public getGroup(groupName: string): T { - const group = this._dict.get(groupName) || {}; - if (!group) throw Error(`DataGroup '${groupName}' not found`); - return NORM.DeepClone(group) as T; - } - - /** API: return array of group names */ - public getGroupNames(): string[] { - return Array.from(this._dict.keys()); - } - - /** API: return true if group exists */ - public hasGroup(groupName: string): boolean { - return this._dict.has(groupName); - } - - /* API: return a clone of the entire data of all groups */ - public getAllData(): T { - const data = Object.fromEntries(this._dict.entries()); - return NORM.DeepClone(data) as T; - } -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UI_DataGroup; diff --git a/_mur/web-client/viewlib/css/ui-shell.css b/_mur/web-client/viewlib/css/ui-shell.css deleted file mode 100644 index cdfff0f8d..000000000 --- a/_mur/web-client/viewlib/css/ui-shell.css +++ /dev/null @@ -1,42 +0,0 @@ -/* STYLING FOR UI SHELL INDEX */ -/* add styling in views/[hash].css next to [hash].html */ - -body { - box-sizing: border-box; - display: grid; - grid-template-rows: auto 1fr; - height: 100vh; - margin: 0; - - background-color: lightgray; - color: #333; - font-family: monospace; -} - -#shell-view { - box-sizing: border-box; - overflow: auto; - padding: 10px; -} - -#shell-info { - box-sizing: border-box; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -#shell-info p { - text-align: center; -} - -tt { - color: maroon; -} - -@media (max-height: 600px) { - #shell-info p { - display: none; - } -} diff --git a/_mur/web-client/viewlib/index.ts b/_mur/web-client/viewlib/index.ts deleted file mode 100644 index 61ac5c661..000000000 --- a/_mur/web-client/viewlib/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - URSYS-MIN (MUR) / VIEWLIB - copied from: _ur/addons/uiplay/app-source/viewlib - - --- interim development version --- - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// export { DeclareComponents } from './webc/auto-webc-imports.ts'; -export { AttachRouter, DeclareComponents } from './router.ts'; diff --git a/_mur/web-client/viewlib/router.ts b/_mur/web-client/viewlib/router.ts deleted file mode 100644 index 1419105ee..000000000 --- a/_mur/web-client/viewlib/router.ts +++ /dev/null @@ -1,157 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - SNA Router - loads root views from the views directory, based on #hash.html - also inserts css object into head matching #hash.css - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -let VIEW_ANCHOR: HTMLElement | null = null; -let DBG = true; -const LOG = console.log.bind(console); - -/// HELPERS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** HELPER: Decode location #hash/param/param - * returns params in-order, separated by slashes - * also scans for key/value pairs separate - * @returns { view: string, params: string[], values: { k: string, v: string }[] } - */ -function m_DecodeLocationHash() { - const hash = window.location.hash; - const [hh, qq] = hash.split('?'); - const bits = hh.split('/'); - let [view, ...args] = bits; - if (view.startsWith('#')) view = view.slice(1); - // does args have any illegal '?', '&', '=' characters? - let illegal = args.filter( - p => p.includes('?') || p.includes('&') || p.includes('=') - ); - if (illegal.length) return { error: 'invalid hash', hash }; - if (qq) { - const params = new URLSearchParams(qq); - const values = {}; - [...params].map(([k, v]) => (values[k] = v === '' ? true : v)); - return { hash, view, args, values }; - } else return { hash, view, args }; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** HELPER: replace the view anchor with a new view. The view anchor is - *
and new view is
...fragment...
, - * so we copy id and class from the anchor to the new view. This ensures - * that shell's child hierarchy is maintained, so main css layout rules - * are not broken. */ -function m_ReplaceViewAnchorWith(newView: HTMLElement) { - // clone the attributes from the anchor to the new view - newView.id = VIEW_ANCHOR.id; - newView.className = VIEW_ANCHOR.className; - VIEW_ANCHOR.replaceWith(newView); - VIEW_ANCHOR = newView; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** HELPER: route to the page and load dependent assets */ -async function m_RouteHash(event?: HashChangeEvent) { - // proceed to load the new content] - const { error, hash, view, args, values } = m_DecodeLocationHash(); - if (error) { - VIEW_ANCHOR.innerHTML = `[Invalid Hash ${hash}]`; - return; - } - // if no view is defined then we are done - if (!view) { - VIEW_ANCHOR.innerHTML = `[no default view defined in router]`; - return; - } - const res = await fetch(`views/${view}.html`); - if (!res.ok) { - console.error(`Failed to route to ${view}`); - VIEW_ANCHOR.innerHTML = `[Unroutable Hash #${view}]`; - return; - } - - const html = await res.text(); - const newView = document.createElement('div'); - newView.innerHTML = html; - - // look for script content to append to the new view - newView.querySelectorAll('script').forEach(s => { - const js = document.createElement('script'); - js.textContent = s.textContent; - js.type = 'module'; - // replace the unparsed script with the new one - // which executes immediately - s.replaceWith(js); - }); - - if (DBG) { - LOG( - `router: %c'views/${view}.html'%c fragment fetched`, - 'color: darkgreen', - 'color:auto' - ); - } - - // get the data-css and data-js attributes - const viewRoot = newView.children[0]; // div > fragment html - if (viewRoot !== undefined) { - let cssFile = viewRoot.getAttribute('data-viewcss'); - let jsFile = viewRoot.getAttribute('data-viewjs'); - - // insert a css load for the view - if (cssFile) { - if (cssFile.endsWith('.css')) cssFile = cssFile.slice(0, -4); - const css = document.createElement('link'); - css.rel = 'stylesheet'; - css.href = `views/${cssFile}.css`; - document.head.appendChild(css); - } else if (DBG) { - LOG( - `router: %c'data-viewcss'%c attribute skipped`, - 'color: darkgreen', - 'color:auto' - ); - } - // insert a js file to the view itself - if (jsFile) { - if (jsFile.endsWith('.js')) jsFile = jsFile.slice(0, -3); - const js = document.createElement('script'); - js.src = `/js/${jsFile}.js`; - js.type = 'module'; - viewRoot.appendChild(js); - } else if (DBG) { - LOG( - `router: %c'data-viewjs'%c attribute skipped'`, - 'color: darkgreen', - 'color:auto' - ); - } - } else { - console.warn( - `router: %c'${view}.html'%c has no root element; skipped css/js sideloading`, - 'color: darkgreen', - 'color:auto' - ); - } - m_ReplaceViewAnchorWith(newView); -} - -/// API METHODS /////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: add handlers if not already added */ -function AttachRouter(e: HTMLElement, defaultHash?: string) { - if (VIEW_ANCHOR) return; // already initialized - window.addEventListener('hashchange', m_RouteHash); - window.addEventListener('load', m_RouteHash); - VIEW_ANCHOR = e; - if (typeof defaultHash !== 'string') return; - if (!defaultHash.startsWith('#')) console.warn('defaultHash must start with #'); - if (window.location.hash === defaultHash) return; - window.location.hash = defaultHash; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export { AttachRouter }; -export { DeclareComponents } from './webc/auto-webc-imports.ts'; diff --git a/_mur/web-client/viewlib/viewstate-mgr.ts b/_mur/web-client/viewlib/viewstate-mgr.ts deleted file mode 100644 index e22db9522..000000000 --- a/_mur/web-client/viewlib/viewstate-mgr.ts +++ /dev/null @@ -1,69 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - view state manager - manages view-related state - - The main state and metadata manager API are exposed as methods - - GetStateGroup(name: string): StateObj - - UpdateStateGroup(name: string, state: StateObj): void - - GetMetadata(name: string): DataObj - - UpdateMetadata(name: string, metadata: StateObj): void - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import UIDataGroup from './class-datagroup.ts'; - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -import type { DataObj } from '../../_types/ursys.d.ts'; -type StateObj = DataObj; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const STATE = new UIDataGroup('state'); -const METADATA = new UIDataGroup('meta'); -const DBG = false; - -/// API FUNCTIONS ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** metadata is used for template info */ -function UpdateMetadata(groupName: string, newMeta: DataObj): void { - const event = METADATA.updateGroup(groupName, newMeta); - if (DBG) console.log('dispatching meta', event); - document.dispatchEvent(event); -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** state is used for logical component state values and settings */ -function UpdateStateGroup(groupName: string, newState: StateObj): void { - const event = STATE.updateGroup(groupName, newState); - if (DBG) console.log('dispatching state', event); - document.dispatchEvent(event); -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function GetMetadata(name: string): DataObj { - return METADATA.getGroup(name); -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function GetStateGroup(name: string): StateObj { - return STATE.getGroup(name); -} - -/// DEBUGGING EXPORTS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -globalThis.update_meta = UpdateMetadata; -globalThis.update_state = UpdateStateGroup; -globalThis.get_meta = GetMetadata; -globalThis.get_state = GetStateGroup; -globalThis.state_mgr = STATE; -globalThis.meta_mgr = METADATA; - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export { - // component state - GetStateGroup, - UpdateStateGroup, - // component metadata - UpdateMetadata, - GetMetadata -}; -export type { DataObj, StateObj }; diff --git a/_mur/web-client/viewlib/webc/ac-button.ts b/_mur/web-client/viewlib/webc/ac-button.ts deleted file mode 100644 index 1361908c7..000000000 --- a/_mur/web-client/viewlib/webc/ac-button.ts +++ /dev/null @@ -1,50 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - action button - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import StatelyElement from './lib/class-stately-element'; -import type { DataObj, StateObj } from '../viewstate-mgr'; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const DBG = true; - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class ActionButton extends StatelyElement { - // - button: HTMLButtonElement; - - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - } - - connectedCallback() { - super.connectedCallback(); - const name = this.initName(); - const group = this.initGroup(); - this.shadowRoot!.innerHTML = ` - - `; - this.button = this.shadowRoot!.querySelector('button')!; - this.button.addEventListener('click', this.handleClick); - } - - /// INCOMING METATDATA /// - - receiveMetadata(name: string, data: DataObj) {} - - /// LOCAL INPUT HANDLING /// - - private handleClick = (event: Event): void => { - event.preventDefault(); - if (DBG) console.log('ac-button', this.name); - }; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default ActionButton; diff --git a/_mur/web-client/viewlib/webc/auto-webc-imports.ts b/_mur/web-client/viewlib/webc/auto-webc-imports.ts deleted file mode 100644 index a2cd6a4bd..000000000 --- a/_mur/web-client/viewlib/webc/auto-webc-imports.ts +++ /dev/null @@ -1,30 +0,0 @@ -/// was sna webcomponent autogenerated file -/// in _mur it is picked-up by the simplified esbuild script - -import IN_BUTTON from './in-button.ts'; -import IN_TEXT from './in-text.ts'; -import NC_LOGIN from './nc-login.ts'; -import NC_NODE from './nc-node.ts'; -import UI_FRAME from './ui-frame.ts'; -import UI_GROUP from './ui-group.ts'; -import UI_METADATA from './ui-metadata.ts'; -import UI_PANEL from './ui-panel.ts'; -import UI_RACK from './ui-rack.ts'; -import UI_TABBED from './ui-tabbed.ts'; -import AC_BUTTON from './ac-button.ts'; - -function DeclareComponents() { - customElements.define('in-button', IN_BUTTON); - customElements.define('in-text', IN_TEXT); - customElements.define('nc-login', NC_LOGIN); - customElements.define('nc-node', NC_NODE); - customElements.define('ui-frame', UI_FRAME); - customElements.define('ui-group', UI_GROUP); - customElements.define('ui-panel', UI_PANEL); - customElements.define('ui-rack', UI_RACK); - customElements.define('ui-tabbed', UI_TABBED); - customElements.define('ui-metadata', UI_METADATA); - customElements.define('ac-button', AC_BUTTON); -} - -export { DeclareComponents }; diff --git a/_mur/web-client/viewlib/webc/in-button.ts b/_mur/web-client/viewlib/webc/in-button.ts deleted file mode 100644 index e78fda9b5..000000000 --- a/_mur/web-client/viewlib/webc/in-button.ts +++ /dev/null @@ -1,52 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - input button - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import StatelyElement from './lib/class-stately-element'; -import type { DataObj, StateObj } from '../viewstate-mgr'; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const DBG = true; - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class InputButton extends StatelyElement { - // - button: HTMLButtonElement; - - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - } - - connectedCallback() { - super.connectedCallback(); - console.log('connectedCallback', this.name); - const name = this.initName(); - const group = this.initGroup(); - this.shadowRoot!.innerHTML = ` - - `; - this.button = this.shadowRoot!.querySelector('button')!; - this.button.addEventListener('click', this.handleClick); - } - - /// INCOMING METATDATA /// - - receiveMetadata(data: DataObj) {} - - /// LOCAL INPUT HANDLING /// - - private handleClick = (event: Event): void => { - console.log('clicked', this.name); - event.preventDefault(); - if (DBG) console.log('in-button', this.name); - }; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default InputButton; diff --git a/_mur/web-client/viewlib/webc/in-text.ts b/_mur/web-client/viewlib/webc/in-text.ts deleted file mode 100644 index f1f9d1e8e..000000000 --- a/_mur/web-client/viewlib/webc/in-text.ts +++ /dev/null @@ -1,154 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - UIInputText implements a text field, initializing its label and tooltip - - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import StatelyElement from './lib/class-stately-element'; -import type { DataObj, StateObj } from '../viewstate-mgr'; -import { ConsoleStyler } from '../../../common/util-prompts.ts'; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const DBG = false; -const LOG = console.log.bind(console); -const PR = ConsoleStyler('in-text', 'TagGray'); - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UIInputText extends StatelyElement { - input: HTMLInputElement; - label: HTMLLabelElement; - tooltip: HTMLDivElement; - timer: ReturnType; - - /** webcomponent lifecycle: element without attributes */ - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - } - - /** webcomponent lifecycle: element attributes are stable */ - connectedCallback() { - super.connectedCallback(); - const name = this.name; - this.shadowRoot!.innerHTML = ` - - - -
- `; - this.input = this.shadowRoot!.querySelector('input')!; - this.input.addEventListener('keypress', this.handleKeypress); - this.input.addEventListener('input', this.handleTyping); - this.label = this.shadowRoot!.querySelector('label')!; - this.label.addEventListener('mouseover', this.handleHover); - this.label.addEventListener('mouseout', this.handleHoverOut); - this.tooltip = this.shadowRoot!.querySelector('div.tooltip')!; - } - - disconnectedCallback() { - super.disconnectedCallback(); - this.input.removeEventListener('keypress', this.handleKeypress); - this.input.removeEventListener('input', this.handleTyping); - this.label.removeEventListener('mouseover', this.handleHover); - this.label.removeEventListener('mouseout', this.handleHoverOut); - } - - /// INCOMING METATDATA, STATE /// - - /** UPDATE: data received is already filtered by element's group/name */ - receiveMetadata(meta: DataObj) { - if (DBG) LOG(...PR(`receiveMetadata[${this.name}]`), meta); - const { label, tooltip, placeholder } = meta; - this.label.innerText = label; - this.tooltip.innerText = tooltip; - if (placeholder) this.input.placeholder = placeholder; - } - - /** UPDATE: state is already filtered by element's group/name */ - receiveState(state: StateObj) { - const { value } = state; - if (value !== this.input.value) { - this.input.value = value; - if (DBG) LOG(...PR(`receiveState[${this.name}]`), state); - } else { - if (DBG) LOG(...PR(`receiveState[${this.name}] no change`), state); - } - } - - /// LOCAL INPUT HANDLING /// - - /** EVENT: submit the value on enter keypress */ - private handleKeypress = (event: KeyboardEvent): void => { - if (event.key === 'Enter') { - this.submitChange(); - } - }; - - /** EVENT: live decode the value on input but don't send */ - private handleTyping = (event: Event): void => { - const { value } = this.input; - if (DBG) LOG(...PR(`live decode [${this.name}]`), value); - }; - - /** EVENT: show tooltip on hover */ - private handleHover = (event: MouseEvent): void => { - const { style: tt } = this.tooltip; - // position tooltip above label - const { style: ll } = this.label; - ll.color = 'maroon'; - if (this.timer) clearTimeout(this.timer); - this.timer = setTimeout(() => { - if (this.tooltip.textContent === '') return; - this.timer = null; - tt.display = 'block'; - const labelRect = this.label.getBoundingClientRect(); - const ttRect = this.tooltip.getBoundingClientRect(); - tt.top = `${labelRect.top - ttRect.height}px`; - tt.left = `${labelRect.left}px`; - }, 1000); - }; - - /** EVENT: hide tooltip on mouseout */ - private handleHoverOut = (event: MouseEvent): void => { - if (this.timer) { - clearTimeout(this.timer); - this.timer = null; - } - const { style } = this.tooltip; - style.display = 'none'; - const { style: ll } = this.label; - ll.color = 'inherit'; - }; - - /// USER ACTIONS /// - - /** ACTION: submit the value change to state manager */ - private submitChange = (): void => { - const state = this.encodeState({ value: this.input.value }); - this.sendState(state); - }; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UIInputText; diff --git a/_mur/web-client/viewlib/webc/lib/class-stately-element.ts b/_mur/web-client/viewlib/webc/lib/class-stately-element.ts deleted file mode 100644 index d635915fe..000000000 --- a/_mur/web-client/viewlib/webc/lib/class-stately-element.ts +++ /dev/null @@ -1,117 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - A UIStatelyElement is a base class for all UI components need to - (1) communicate value changes to a centralized state manager - (2) initialize their options and template from a YAML textNode - associated with it. - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import { UpdateMetadata, UpdateStateGroup } from '../../viewstate-mgr'; - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -import type { DataObj, StateObj } from '../../viewstate-mgr'; - -/// CLASS DECLARATION ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** UIStatelyElement maintains connection with the centralized state manager - * and metadata manager above. It provides a base class for all UI components - * that need to communicate with the state manager and metadata manager. */ -class UIStatelyElement extends HTMLElement { - // - name: string; - group: string; - // - constructor() { - super(); - } - - /// UTILITY ACCESSORS /// - - /** set this.name from string or from attribute */ - initName(name?: string): string { - if (name === undefined) { - if (this.getAttribute('name') === undefined) return; - this.name = this.getAttribute('name'); - return this.name; - } - if (typeof name !== 'string') - throw Error('UIStatelyElement name attribute must be a string'); - this.name = name; - return this.name; - } - - /** set this.group from string or from attribute. note that it - * the 'group' attribute may be assigned _after_ the element is created - * (e.g. ui-group on slotchange event), so if this.group is null check - * that it is called again */ - initGroup(group?: string): string { - if (group === undefined) { - if (this.getAttribute('group') === undefined) return; - this.group = this.getAttribute('group'); - return this.group; - } - if (typeof group !== 'string') - throw Error('UIStatelyElement group attribute must be a string'); - this.group = group; - return this.group; - } - - /// SUBCLASSER METHODS /// - - /** subclassers override to receive metadata. the sender is responsible for - * using subclass group/name to prefilter */ - receiveMetadata(meta: DataObj): void {} - - /** subclassers override to receive state. the sender is responsible for - * using subclass group/name to prefilter */ - receiveState(state: StateObj): void {} - - /** subclassers use this as-is */ - sendMetadata(metagroup: string, meta: DataObj): void { - UpdateMetadata(metagroup, meta); - } - - /** subclassers use this as-is */ - sendState(state: StateObj): void { - const groupName = this.group || this.getAttribute('group'); - UpdateStateGroup(groupName, state); - } - - /// HELPERS /// - - /** given an unadorned state object, return a new object with the name as key */ - encodeState(state: StateObj): StateObj { - return { [this.name]: state }; - } - - /** given a state object, try to find matching object in the state, first - * looking for groupName/name, then just name. If not found, return {} */ - findState(statish: StateObj): StateObj { - const groupName = this.group; - const name = this.name || this.getAttribute('name'); - if (statish[groupName]) { - const obj = statish[groupName][name]; - if (obj === undefined) return {}; - return obj; - } - if (statish[name]) return statish[name]; - return {}; - } - - /// BOILERPLATE /// - - /** vestigial methods for subclassers */ - connectedCallback(): void { - this.initName(); // this is usually valid - this.initGroup(); // see comments for function - } - - /** vestigial methods for subclassers */ - disconnectedCallback(): void {} -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UIStatelyElement; // the class diff --git a/_mur/web-client/viewlib/webc/lib/meta-parser.ts b/_mur/web-client/viewlib/webc/lib/meta-parser.ts deleted file mode 100644 index dd261fd74..000000000 --- a/_mur/web-client/viewlib/webc/lib/meta-parser.ts +++ /dev/null @@ -1,29 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import YAML from 'yaml'; -import * as TEXT from '../../../../common/util-text.ts'; - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -import type { DataObj as StateObj } from '../../../../_types/ursys.d.ts'; - -/// API METHODS /////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function ParseText(metaText: string): StateObj { - const meta = YAML.parse(metaText); - if (typeof meta !== 'object' || meta === null) { - throw new Error('Invalid metadata format'); - } - return meta as StateObj; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function AssertGroupName(name: string): string { - if (!TEXT.IsCamelCase(name)) throw Error(`Invalid group name: ${name}`); - return name; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export { ParseText, AssertGroupName }; diff --git a/_mur/web-client/viewlib/webc/nc-login.ts b/_mur/web-client/viewlib/webc/nc-login.ts deleted file mode 100644 index 38428dcef..000000000 --- a/_mur/web-client/viewlib/webc/nc-login.ts +++ /dev/null @@ -1,80 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - Proof of concept web component - Does not use StatelyElement...needs update? - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -const LOG = console.log.bind(console); - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** generic token decoder interface */ -type TokenData = { - error?: string; // true for invalid token, message in hint - hint?: string; // current decoded status - parts?: string[]; // decoded parts of token -}; -interface Validator { - decodeToken(token: string): TokenData; -} - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class NCLoginControl extends HTMLElement { - // - validator: Validator; - - constructor() { - super(); - // create shadow DOM - const shadow = this.attachShadow({ mode: 'open' }); - shadow.innerHTML = ` -
- type your login token - - -
- `; - // attach event listeners - const input = shadow.querySelector('input'); - input.addEventListener('input', this.onInput.bind(this)); - const button = shadow.querySelector('button'); - button.addEventListener('click', this.onSubmit.bind(this)); - // add styling - const style = document.createElement('style'); - style.textContent = ``; - shadow.appendChild(style); - // is UR available? - if (globalThis.UR) { - const PR = globalThis.UR.ConsoleStyler('nclogin'); - LOG(...PR('UR is defined in nc-login globalThis')); - } - } - - onInput(e: Event) { - const input = e.target as HTMLInputElement; - const token = input.value; - if (this.validator) { - console.log('validating token'); - const data = this.validator.decodeToken(token); - const hint = data.error ? data.hint : 'valid token'; - input.title = hint; - } - } - - onSubmit(e: Event) { - const input = this.shadowRoot.querySelector('input') as HTMLInputElement; - const token = input.value; - const data = this.validator.decodeToken(token); - if (data.error) { - alert(data.hint); - return; - } - alert('login success'); - } -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default NCLoginControl; diff --git a/_mur/web-client/viewlib/webc/nc-node.ts b/_mur/web-client/viewlib/webc/nc-node.ts deleted file mode 100644 index a6f053873..000000000 --- a/_mur/web-client/viewlib/webc/nc-node.ts +++ /dev/null @@ -1,103 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - Dummy NCNode - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import ControlGroup from './ui-group'; - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class NCNode extends HTMLElement { - // - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - } - - connectedCallback() { - this.render(); - } - - render() { - this.shadowRoot.innerHTML = ` - - -
- - - - - - - - - - DELETE - EDIT - -
-
- -
-
-
-
- -
-
- - Provenance -
- History - -
- - -
-
-
- - notes: - label: "Notes OK" - tooltip: > - Notes for this node are very very long, so you shouldn't - have to worry about anything - placeholder: "type some notes" - color: - label: "Color" - tooltip: "Click to set a color" - tags: - label: "Tags" - tooltip: "Tags for this node" - placeholder: "comma separated" - provenance: - label: "Provenance" - tooltip: "Provenance for this node" - comments: - label: "Comments" - tooltip: "Comments for this node" - degrees: - label: "Degrees" - tooltip: "Degrees of separation" - - - edit: - label: "Edit" - tooltip: "Edit this node" - cite: - label: "Cite" - tooltip: "Cite this node" - - `; - } -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default NCNode; diff --git a/_mur/web-client/viewlib/webc/ui-frame.ts b/_mur/web-client/viewlib/webc/ui-frame.ts deleted file mode 100644 index 176ff9da3..000000000 --- a/_mur/web-client/viewlib/webc/ui-frame.ts +++ /dev/null @@ -1,47 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/// HELPER METHODS //////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UI_Frame extends HTMLElement { - constructor() { - super(); // Always call super first in constructor - const shadow = this.attachShadow({ mode: 'open' }); - shadow.innerHTML = ` - - - - `; - const wrapper = document.createElement('div'); - const style = document.createElement('style'); - - style.textContent = ` - div { - background: tomato; - padding: 10px; - color: white; - } - ::slotted(.console) { - display:none; - } - `; - - wrapper.textContent = 'Hello, I am a Frame component!'; - shadow.appendChild(style); - } - - connectedCallback() {} - - disconnectedCallback() {} - - attributeChangedCallback(name, oldValue, newValue) {} -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UI_Frame; diff --git a/_mur/web-client/viewlib/webc/ui-group.ts b/_mur/web-client/viewlib/webc/ui-group.ts deleted file mode 100644 index 517a2cc7a..000000000 --- a/_mur/web-client/viewlib/webc/ui-group.ts +++ /dev/null @@ -1,145 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - UIGroup is the parent container StatelyElements (viewlib components). - It is used to distribute state and metadata updates to its children. - - It has a 'group' attribute that is used to identify its slotted children - that are StatelyElements. - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import { ConsoleStyler } from '../../../common/util-prompts.ts'; -import { AssertGroupName } from './lib/meta-parser'; - -/// TYPE DECLARATIONS ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -import StatelyElement from './lib/class-stately-element'; -const LOG = console.log.bind(console); -const PR = ConsoleStyler('ui-group', 'TagGray'); - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const CN = 'UIGroup:'; -const DBG = false; - -/// CLASS DECLARATION ///////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UIGroup extends HTMLElement { - private uiElements: { [name: string]: StatelyElement }; - private _slot!: HTMLSlotElement; // save found slot - private _evtqueue: CustomEvent[]; - private group: string; - - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - this.shadowRoot!.innerHTML = ``; - this.uiElements = {}; - this._evtqueue = []; - // bind handlers - this.handleSlotChange = this.handleSlotChange.bind(this); - this.onStateUpdate = this.onStateUpdate.bind(this); - this.onMetadataUpdate = this.onMetadataUpdate.bind(this); - } - - connectedCallback(): void { - const group = AssertGroupName(this.getAttribute('group')); - this.group = group; - // - const slot = this.shadowRoot!.querySelector('slot'); - if (!slot) throw Error(`${CN} Slot element not found`); - this._slot = slot; - slot.addEventListener('slotchange', this.handleSlotChange); - document.addEventListener('ui-meta-update', this.onMetadataUpdate); - document.addEventListener('ui-state-update', this.onStateUpdate); - } - - disconnectedCallback(): void { - this._slot.removeEventListener('slotchange', this.handleSlotChange); - this.removeEventListener('ui-meta-update', this.onMetadataUpdate); - this.removeEventListener('ui-state-update', this.onStateUpdate); - } - - /** called when the slots have changed or rendered, assigning the - * group attribute to the slotted elements unless one already exists */ - private handleSlotChange(): void { - const slotNodes = this._slot.assignedElements(); - // remove uiElements that are no longer in the slot - Object.keys(this.uiElements).forEach(key => { - if (!slotNodes.includes(this.uiElements[key])) { - delete this.uiElements[key]; - if (DBG) LOG(...PR(`input ${key} removed from group ${this.group}`)); - } - }); - // add 'group' attribute to all slotted elements - slotNodes.forEach(child => { - if (child instanceof StatelyElement) { - const inputName = child.getAttribute('name'); - if (!inputName) return; - this.uiElements[inputName] = child; - if (child.hasAttribute('group')) return; - child.setAttribute('group', this.group); - child.initGroup(); // remember to initialize - } - }); - - this._processMetaQueue(); - } - - /// BOILERPLATE /// - - /** EVENT: When metadata is updated during first connectedCallback, - * it may need to queued until the slotchange event has been processed. */ - private onMetadataUpdate = (event: CustomEvent): void => { - const { group } = event.detail; - if (group !== this.group) return; - // - const elements = Object.values(this!.uiElements); - if (elements.length === 0) { - if (DBG) LOG(...PR('no elements found, queueing event', event)); - this._evtqueue.push(event); - return; - } - this._processMetaQueue(); - }; - - /** HELPER: process the metadata queue, sending metadata to elements - * with matching name. This is called when the slotchange event has - * been processed and the elements are available. */ - private _processMetaQueue = (): void => { - if (DBG) LOG(...PR('processing metadata queue', this._evtqueue)); - // send metadata to elements with matching name - this._evtqueue.forEach(event => { - const { group, type, meta } = event.detail; - const elements = Object.values(this.uiElements); - elements.forEach(element => { - const isStately = element instanceof StatelyElement; - if (!isStately) return; - const matchMeta = meta[element.name]; - if (!matchMeta) return; - element.receiveMetadata(matchMeta); - }); // elements - }); // _evtqueue - // clear queue - this._evtqueue = []; - }; - - /** EVENT: State updates are sent by the state manager, and this - * method routes matching state to the elements in the group. */ - private onStateUpdate = (event: CustomEvent): void => { - const { group, state } = event.detail; - if (group !== this.group) return; - // all elements if ui-group are of type group - Object.values(this.uiElements).forEach(element => { - if (!(element instanceof StatelyElement)) return; - if (!(element.group === group)) return; - const matchState = state[element.name]; - if (!matchState) return; - element.receiveState(matchState); - }); - }; -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UIGroup; diff --git a/_mur/web-client/viewlib/webc/ui-metadata.ts b/_mur/web-client/viewlib/webc/ui-metadata.ts deleted file mode 100644 index 074971a78..000000000 --- a/_mur/web-client/viewlib/webc/ui-metadata.ts +++ /dev/null @@ -1,45 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - UIMetadata reads its contained YAML text and parses it into a metadata object, - which is then sent to the centralized state manager that distributes - changes to all StatelyGroups. - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -import { ParseText, AssertGroupName } from './lib/meta-parser'; -import { UpdateMetadata } from '../viewstate-mgr'; - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const cn = 'UIMetadata:'; - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UIMetadata extends HTMLElement { - // - group: string; - - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - const slot = document.createElement('slot'); - slot.style.display = 'none'; - this.shadowRoot!.appendChild(slot); - } - - /** parses the YAML text and sends it to the state manager */ - connectedCallback() { - this.group = AssertGroupName(this.getAttribute('for')); - const slots = this.shadowRoot!.querySelectorAll('slot'); - if (slots.length !== 1) throw Error(`${cn} must have one slot`); - const tn = slots[0].assignedNodes()[0]; - if (tn.nodeType !== Node.TEXT_NODE) throw Error(`${cn} must be text node`); - const metaObj = ParseText(tn.textContent); - if (!metaObj) throw Error(`${cn} invalid metadata format`); - UpdateMetadata(this.group, metaObj); - } -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UIMetadata; diff --git a/_mur/web-client/viewlib/webc/ui-panel.ts b/_mur/web-client/viewlib/webc/ui-panel.ts deleted file mode 100644 index f79befc52..000000000 --- a/_mur/web-client/viewlib/webc/ui-panel.ts +++ /dev/null @@ -1,42 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/// HELPER METHODS //////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UI_Panel extends HTMLElement { - constructor() { - super(); // Always call super first in constructor - const shadow = this.attachShadow({ mode: 'open' }); - shadow.innerHTML = ``; - const wrapper = document.createElement('div'); - const style = document.createElement('style'); - - style.textContent = ` - div { - background: tomato; - padding: 10px; - color: white; - } - `; - - wrapper.textContent = 'Hello, I am a Panel component!'; - shadow.appendChild(style); - shadow.appendChild(wrapper); - } - - connectedCallback() {} - - disconnectedCallback() {} - - attributeChangedCallback(name, oldValue, newValue) {} -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UI_Panel; diff --git a/_mur/web-client/viewlib/webc/ui-rack.ts b/_mur/web-client/viewlib/webc/ui-rack.ts deleted file mode 100644 index 99a6d2329..000000000 --- a/_mur/web-client/viewlib/webc/ui-rack.ts +++ /dev/null @@ -1,42 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -/// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/// HELPER METHODS //////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class UI_Rack extends HTMLElement { - constructor() { - super(); // Always call super first in constructor - const shadow = this.attachShadow({ mode: 'open' }); - shadow.innerHTML = ``; - const wrapper = document.createElement('div'); - const style = document.createElement('style'); - - style.textContent = ` - div { - background: orange; - padding: 10px; - color: white; - } - `; - - wrapper.textContent = 'Hello, I am a Rack component!'; - shadow.appendChild(style); - shadow.appendChild(wrapper); - } - - connectedCallback() {} - - disconnectedCallback() {} - - attributeChangedCallback(name, oldValue, newValue) {} -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default UI_Rack; diff --git a/_mur/web-client/viewlib/webc/ui-tabbed.ts b/_mur/web-client/viewlib/webc/ui-tabbed.ts deleted file mode 100644 index 8c795cac0..000000000 --- a/_mur/web-client/viewlib/webc/ui-tabbed.ts +++ /dev/null @@ -1,68 +0,0 @@ -/*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - Tabbed Panel Web Component - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ - -/// WEB COMPONENT ///////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -class NCTabbedView extends HTMLElement { - // - constructor() { - super(); - this.attachShadow({ mode: 'open' }); - } - - /** lifecycle: called when inserted, moved, removed-reattached to DOM **/ - connectedCallback() { - this.render(); - } - - /** creates the tab bar for divs with 'data-tabname' attribute **/ - render() { - const slots = Array.from(this.querySelectorAll('div[data-tabname]')); - if (slots.length === 0) { - this.shadowRoot.innerHTML = '
[No tab views defined]
'; - return; - } - // programmatically create buttons for each slot - let tabsHTML = ''; - slots.forEach(slot => { - const label = slot.getAttribute('data-tabname'); - tabsHTML += ``; - }); - this.shadowRoot.innerHTML = ` - -
${tabsHTML}
-
- `; - // attach event listeners - const buttons = this.shadowRoot.querySelectorAll('button'); - buttons.forEach((button, i) => { - button.addEventListener('click', () => this.selectTab(i)); - }); - // hide all but the first slot - this.selectTab(0); - } - - selectTab(slotIndex: number) { - const slot = this.shadowRoot.querySelector('slot'); - const slots = slot ? slot.assignedElements() : []; - slots.forEach((el, i) => { - if (el instanceof HTMLElement) { - el.style.display = slotIndex === i ? 'block' : 'none'; - } - }); - const buttons = this.shadowRoot.querySelectorAll('button'); - buttons.forEach((button, i) => { - button.classList.toggle('active', i === slotIndex); - }); - } -} - -/// EXPORTS /////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -export default NCTabbedView; diff --git a/app-templates/_default.template.toml b/app-templates/_default.template.toml index b81a0613c..88f5794ff 100644 --- a/app-templates/_default.template.toml +++ b/app-templates/_default.template.toml @@ -25,6 +25,35 @@ nodeDefaultTransparency = 1 edgeDefaultTransparency = 0.7 searchColor = "#008800" sourceColor = "#FFa500" +_schemaVersion = "2.1" + +[_ui._editor.global] +label = "Global Settings" +description = "Project-wide settings" + +[_ui.name] +type = "string" +label = "Graph Name" +tooltip = "Enter a name for this graph project" +help = "Pick a short meaningful unique name" + +[_ui.description] +type = "string" +label = "Graph Description" +tooltip = "Add descriptive text about this graph" +help = "Short meaningful description text" + +[_ui.secretKey] +type = "string" +label = "Unique Key" +tooltip = "Unique keys make tokens unique even with same group and project" +help = "Change the key to make login tokens unique to a graph" + +[_ui.adminPassword] +type = "password" +label = "Admin Password" +tooltip = "Set the admin password for the graph" +help = "This password protects access to the Advanced Settings Panel" [citation] text = "No citation set" diff --git a/app-templates/_default.template.yaml b/app-templates/_default.template.yaml deleted file mode 100644 index 694eef8ec..000000000 --- a/app-templates/_default.template.yaml +++ /dev/null @@ -1,613 +0,0 @@ -### DO NOT EDIT THIS FILE DIRECTLY ## -### Instead, edit the individual template files in the app-templates directory -### to set the property declarations -### Note that this is the data SCHEMA, not the data VALUES allowed by the schema. -### Look in the runtime directory for the values file. - -_schemaVersion: "2.0" -PropertyDefs: - projectMeta: - description: - type: string - default: Project Description - permissions: - requireLogin: - type: boolean - default: false - hideDeleteNodeButton: - type: boolean - default: false - allowLoggedInUserToImport: - type: boolean - default: false - accessControls: - duplicateWarning: - type: string - default: "NOTE: At least one other node has the same name. Use search or the - node table to check the others." - nodeIsLockedMessage: - type: string - default: This node is currently being edited by someone else, please try again - later. - edgeIsLockedMessage: - type: string - default: This edge is currently being edited by someone else, please try again - later. - templateIsLockedMessage: - type: string - default: The template is currently being edited, please try again later. - importIsLockedMessage: - type: string - default: Data is currently being imported, please try again later. - prompts: - filterFade: - type: string - default: Fade - filterFadeHelp: - type: string - default: Show matches, Fade others - filterReduce: - type: string - default: Reduce - filterReduceHelp: - type: string - default: Show matches, Reduce (remove) others & recalculate sizes - filterFocus: - type: string - default: Focus - filterFocusHelp: - type: string - default: Show only nodes connected to the selected node within range - nodeSettings: - nodeSizeDefault: - type: number - default: 5 - nodeSizeMax: - type: number - default: 50 - nodeDefaultTransparency: - type: number - default: 1 - edgeSettings: - edgeSizeDefault: - type: number - default: 1 - edgeSizeMax: - type: number - default: 25 - edgeDefaultTransparency: - type: number - default: 0.7 - colorSettings: - searchColor: - type: number - default: "#008800" - sourceColor: - type: number - default: "#FFa500" - citationPrompts: - citation: - type: string - default: No citation set -TypeDefs: - CommentType: - type: object - slug.type: id - label.type: string - prompts: - type: object - format.type: string - "prompt.type:": string - help.type: string - feedback.type: string - ValueTypes: - - any - - string - - boolean - - number - - object - - array - - range - - float - - int - - hex - - hexColor - - timestamp - - idString - - item - - itemList - - itemDict - EnumTypes: - Foo: - - a - - b - - c - Bar: - - a - - b - - c -ComponentDefs: - GroupTags: - - ui-form - - ui-metadata - - ui-group - InputTags: - - in-text - - in-checkbox - - in-number - - in-integer - - in-select - - in-range - - in-slider - - in-range - - in-color - - in-token - - in-date - - in-time - - in-datetime - OutputTags: - - out-text - - out-number - - out-integer - - out-checkbox - - out-ol - - out-ul - - out-date - - out-time - - out-datetime - Panels: - - out-table -MetaDefs: - EdgeDefCommon: - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - EdgeDef: - control: ui-form - id: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Id - help: System-generated unique id - source: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Source - help: Edge source node - target: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Target - help: Edge target node - type: - control: in-select - options: - - color: "#eeeeee" - label: "" - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Type - help: Type of edge connection - notes: - control: in-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Notes - help: Significance of the connection - weight: - control: in-number - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Weight - help: Weight of edge - conditions: - - isGraphTooltip - infoOrigin: - control: in-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Info Origin - help: Who created this? (aka Source) - conditions: - - isGraphTooltip - - isProvenance - citation: - control: in-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Citation - help: Source Book.Chapter (e.g. "Part 2 06.03") - category: - control: in-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Category - help: Category (deprecated) - conditions: - - isHidden - created: - control: out-datetime - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Created - help: Date and time edge was created - conditions: - - isGraphTooltip - createdBy: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Created By - help: Author who created the edge - conditions: - - isGraphTooltip - updated: - control: out-datetime - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Updated - help: Date and time edge was last modified - conditions: - - isGraphTooltip - updatedBy: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Updated By - help: Author who updated the edge - conditions: - - isGraphTooltip - revision: - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - control: out-integer - label: Revision - help: Number of times this edge has been revised - conditions: - - isGraphTooltip - NodeDefCommon: - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - NodeDef: - control: ui-form - id: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Id - help: System-generated unique id - type: - control: in-select - options: - - color: "#eeeeee" - label: "" - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Target - help: Select a category - notes: - control: in-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Notes - help: General purpose notes text field - conditions: - - isGraphTooltip - info: - control: in-number - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Number - help: Some number comparison - conditions: - - isGraphTooltip - infoSource: - control: in-text - label: Info Source - help: Who created this? (aka Source) - conditions: - - isGraphTooltip - degrees: - control: out-number - label: Degrees - help: Number of edges connected to this node - conditions: - - isGraphTooltip - created: - control: out-datetime - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Created - help: Date and time edge was created - conditions: - - isGraphTooltip - createdBy: - control: out-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Created By - help: Author who created the edge - conditions: - - isGraphTooltip - updated: - control: out-datetime - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Updated - help: Date and time edge was last modified - conditions: - - isGraphTooltip - updatedBy: - control: in-text - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Updated By - help: Author who updated the edge - conditions: - - isGraphTooltip - revision: - control: out-integer - isProvenance: - control: in-checkbox - default: false - hidden: - control: in-checkbox - default: false - includeInGraphTooltip: - control: in-checkbox - default: false - label: Revision - help: Number of times this edge has been revised - conditions: - - isGraphTooltip - projectMeta: - _groupMeta: - title: Project Metadata - description: project-wide settings - description: - label: description - tooltip: Enter a description for the project - help: Enter a description for the project - citationPrompts: - citation: - label: Citation - tooltip: Enter the citation for the project - help: Enter the citation for the project - permissions: - requireLogin: - label: Login - tooltip: user must login to use the application - hideDeleteNodeButton: - label: Hide Delete Node - tooltip: users cannot delete nodes - allowLoggedInUserToImport: - label: Allow Import - tooltip: logged in users can import data - accessControls: - duplicateWarning: - label: duplicateWarning - nodeIsLockedMessage: - label: nodeIsLockedMessage - edgeIsLockedMessage: - label: edgeIsLockedMessage - templateIsLockedMessage: - label: templateIsLockedMessage - importIsLockedMessage: - label: importIsLockedMessage - prompts: - filterFade: - label: Fade - filterFadeHelp: - label: Fade Help - filterReduce: - label: Reduce - filterReduceHelp: - label: Reduce Help - filterFocus: - label: Focus - filterFocusHelp: - label: Focus Help - nodeSettings: - nodeSizeDefault: - label: Default Size - nodeSizeMax: - label: Max Size - nodeDefaultTransparency: - label: Transparency - edgeSettings: - edgeSizeDefault: - label: Default Size - edgeSizeMax: - label: Max Size - edgeDefaultTransparency: - label: Transparency - colorSettings: - searchColor: - label: Search Color - sourceColor: - label: Source Color -commentPrompts: - - slug: cmt - label: Comment - prompts: - - format: text - prompt: Comment - help: Use this for any general comment. - feedback: "" - - slug: tellmemore - label: Evidence Critique or Suggestion - prompts: - - format: text - prompt: Tell me more - help: "Can you tell me more about ... " - feedback: "" diff --git a/app-templates/base-controls.yaml b/app-templates/base-controls.yaml deleted file mode 100644 index bbdc0cd75..000000000 --- a/app-templates/base-controls.yaml +++ /dev/null @@ -1,43 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: ComponentDefs - -# these correspond to webcomponent custom tags - -GroupTags: - - ui-form - - ui-metadata - - ui-group - -InputTags: - # html built-in - - in-text - - in-checkbox - - in-number - - in-integer - - in-select - - in-range - - in-slider - # extended controls - - in-range - - in-color - - in-token - - in-date - - in-time - - in-datetime - -OutputTags: - # html built-in - - out-text - - out-number - - out-integer - - out-checkbox - - out-ol - - out-ul - # extended controls - - out-date - - out-time - - out-datetime - -Panels: - - out-table diff --git a/app-templates/base-types-comment.yaml b/app-templates/base-types-comment.yaml deleted file mode 100644 index 284550fff..000000000 --- a/app-templates/base-types-comment.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: TypeDefs - -# this declares the data structure of a "comment type" -# the actual stored values are in 'set-ui-comment-types.yaml' - -# declare complex types (PascalCase) -CommentType: - type: object - slug.type: id - label.type: string - prompts: - type: object - format.type: string - prompt.type:: string - help.type: string - feedback.type: string diff --git a/app-templates/base-values.yaml b/app-templates/base-values.yaml deleted file mode 100644 index 410ee9913..000000000 --- a/app-templates/base-values.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: TypeDefs - -# declare core types -ValueTypes: - - any - - string - - boolean - - number - - object - - array - # extended types - - range - - float - - int - - hex - - hexColor - - timestamp - # these are special collection types - - idString # unique string id - - item # DataObj { propName:value } - - itemList # Item[] array - - itemDict # map of { itemName:Item } - -# declare enumerations (PascalCase) -EnumTypes: - Foo: [a, b, c] - Bar: - - a - - b - - c diff --git a/app-templates/layout-edge.yaml b/app-templates/layout-edge.yaml deleted file mode 100644 index b4a9c11e3..000000000 --- a/app-templates/layout-edge.yaml +++ /dev/null @@ -1,118 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: MetaDefs - -# shared elements type setting - -EdgeDefCommon: &SharedControls - isProvenance: - control: 'in-checkbox' - default: false - hidden: - control: 'in-checkbox' - default: false - includeInGraphTooltip: - control: 'in-checkbox' - default: false - -# ui metadata definition for edges -# note that this definition comingles visual properties with -# metadata which might need detangling - -EdgeDef: - control: 'ui-form' - - id: # id ui field - control: 'out-text' - <<: *SharedControls - label: 'Id' - help: 'System-generated unique id' - - source: - control: 'out-text' - <<: *SharedControls - label: 'Source' - help: 'Edge source node' - - target: - control: 'out-text' - <<: *SharedControls - label: 'Target' - help: 'Edge target node' - - type: # edge types - control: 'in-select' - options: - - color: '#eeeeee' - label: '' - <<: *SharedControls - label: 'Type' - help: 'Type of edge connection' - - notes: - control: 'in-text' - <<: *SharedControls - label: 'Notes' - help: 'Significance of the connection' - - weight: - control: 'in-number' - <<: *SharedControls - label: 'Weight' - help: 'Weight of edge' - conditions: [isGraphTooltip] - - infoOrigin: - control: 'in-text' - <<: *SharedControls - label: 'Info Origin' - help: 'Who created this? (aka Source)' - conditions: [isGraphTooltip, isProvenance] - - citation: - control: 'in-text' - <<: *SharedControls - label: 'Citation' - help: 'Source Book.Chapter (e.g. "Part 2 06.03")' - - category: - control: 'in-text' - <<: *SharedControls - label: 'Category' - help: 'Category (deprecated)' - conditions: [isHidden] - - created: - control: 'out-datetime' - <<: *SharedControls - label: 'Created' - help: 'Date and time edge was created' - conditions: [isGraphTooltip] - - createdBy: - control: 'out-text' - <<: *SharedControls - label: 'Created By' - help: 'Author who created the edge' - conditions: [isGraphTooltip] - - updated: - control: 'out-datetime' - <<: *SharedControls - label: 'Updated' - help: 'Date and time edge was last modified' - conditions: [isGraphTooltip] - - updatedBy: - control: 'out-text' - <<: *SharedControls - label: 'Updated By' - help: 'Author who updated the edge' - conditions: [isGraphTooltip] - - revision: - <<: *SharedControls - control: 'out-integer' - label: 'Revision' - help: 'Number of times this edge has been revised' - conditions: [isGraphTooltip] diff --git a/app-templates/layout-node.yaml b/app-templates/layout-node.yaml deleted file mode 100644 index 1a51cbf76..000000000 --- a/app-templates/layout-node.yaml +++ /dev/null @@ -1,99 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: MetaDefs - -# shared elements type setting - -NodeDefCommon: &SharedControls - isProvenance: - control: 'in-checkbox' - default: false - hidden: - control: 'in-checkbox' - default: false - includeInGraphTooltip: - control: 'in-checkbox' - default: false - -# ui metadata definition for nodes -# note that this definition comingles visual properties with -# metadata which might need detangling - -NodeDef: - control: 'ui-form' - - id: - control: 'out-text' - <<: *SharedControls - label: 'Id' - help: 'System-generated unique id' - - type: # edge types - control: 'in-select' - options: # categories - - color: '#eeeeee' - label: '' - <<: *SharedControls - label: 'Target' - help: 'Select a category' - - notes: - control: 'in-text' - <<: *SharedControls - label: 'Notes' - help: 'General purpose notes text field' - conditions: [isGraphTooltip] - - info: - control: 'in-number' - <<: *SharedControls - label: 'Number' - help: 'Some number comparison' - conditions: [isGraphTooltip] - - infoSource: - control: 'in-text' - label: 'Info Source' - help: 'Who created this? (aka Source)' - conditions: [isGraphTooltip] - - degrees: - control: 'out-number' - label: 'Degrees' - help: 'Number of edges connected to this node' - conditions: [isGraphTooltip] - - created: - control: 'out-datetime' - <<: *SharedControls - label: 'Created' - help: 'Date and time edge was created' - conditions: [isGraphTooltip] - - createdBy: - control: 'out-text' - <<: *SharedControls - label: 'Created By' - help: 'Author who created the edge' - conditions: [isGraphTooltip] - - updated: - control: 'out-datetime' - <<: *SharedControls - label: 'Updated' - help: 'Date and time edge was last modified' - conditions: [isGraphTooltip] - - updatedBy: - control: 'in-text' - <<: *SharedControls - label: 'Updated By' - help: 'Author who updated the edge' - conditions: [isGraphTooltip] - - revision: - control: 'out-integer' - <<: *SharedControls - label: 'Revision' - help: 'Number of times this edge has been revised' - conditions: [isGraphTooltip] diff --git a/app-templates/layout-proj.yaml b/app-templates/layout-proj.yaml deleted file mode 100644 index f9fccfcf3..000000000 --- a/app-templates/layout-proj.yaml +++ /dev/null @@ -1,89 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: MetaDefs - -# this file declares the default metadata for rendering a project -# user interface. it does not store values! it defines the text that -# shows in user interface elements! - -# Defaults for project metadata -projectMeta: - _groupMeta: - title: 'Project Metadata' - description: 'project-wide settings' - description: - label: 'description' - tooltip: 'Enter a description for the project' - help: 'Enter a description for the project' - -# Default citation settings for the project (?) -citationPrompts: - citation: - label: 'Citation' - tooltip: 'Enter the citation for the project' - help: 'Enter the citation for the project' - -# Global default permissions for the running application -permissions: - requireLogin: - label: 'Login' - tooltip: 'user must login to use the application' - hideDeleteNodeButton: - label: 'Hide Delete Node' - tooltip: 'users cannot delete nodes' - allowLoggedInUserToImport: - label: 'Allow Import' - tooltip: 'logged in users can import data' - -# Strings related to access control -accessControls: - duplicateWarning: - label: 'duplicateWarning' - nodeIsLockedMessage: - label: 'nodeIsLockedMessage' - edgeIsLockedMessage: - label: 'edgeIsLockedMessage' - templateIsLockedMessage: - label: 'templateIsLockedMessage' - importIsLockedMessage: - label: 'importIsLockedMessage' - -prompts: - # filter tab panels - filterFade: - label: 'Fade' - filterFadeHelp: - label: 'Fade Help' - filterReduce: - label: 'Reduce' - filterReduceHelp: - label: 'Reduce Help' - filterFocus: - label: 'Focus' - filterFocusHelp: - label: 'Focus Help' - -# Node Defaults for GraphView -nodeSettings: - nodeSizeDefault: - label: 'Default Size' - nodeSizeMax: - label: 'Max Size' - nodeDefaultTransparency: - label: 'Transparency' - -# EdgeDefaults for GraphView -edgeSettings: - edgeSizeDefault: - label: 'Default Size' - edgeSizeMax: - label: 'Max Size' - edgeDefaultTransparency: - label: 'Transparency' - -# Color Defaults for GraphView -colorSettings: - searchColor: - label: 'Search Color' - sourceColor: - label: 'Source Color' diff --git a/app-templates/props-citation.yaml b/app-templates/props-citation.yaml deleted file mode 100644 index ead826d20..000000000 --- a/app-templates/props-citation.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: PropertyDefs - -# Default citation settings for the project (?) -citationPrompts: - citation: - type: string - default: 'No citation set' diff --git a/app-templates/props-proj-meta.yaml b/app-templates/props-proj-meta.yaml deleted file mode 100644 index 6fe5bef65..000000000 --- a/app-templates/props-proj-meta.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: PropertyDefs - -# Defaults for project metadata -projectMeta: - description: - type: string - default: 'Project Description' diff --git a/app-templates/props-proj-pacl.yaml b/app-templates/props-proj-pacl.yaml deleted file mode 100644 index 012587479..000000000 --- a/app-templates/props-proj-pacl.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: PropertyDefs - -# Global default permissions for the running application -permissions: - requireLogin: - type: boolean - default: false - hideDeleteNodeButton: - type: boolean - default: false - allowLoggedInUserToImport: - type: boolean - default: false - -# Strings related to access control -accessControls: - duplicateWarning: - type: string - default: 'NOTE: At least one other node has the same name. Use search or the node table to check the others.' - nodeIsLockedMessage: - type: string - default: 'This node is currently being edited by someone else, please try again later.' - edgeIsLockedMessage: - type: string - default: 'This edge is currently being edited by someone else, please try again later.' - templateIsLockedMessage: - type: string - default: 'The template is currently being edited, please try again later.' - importIsLockedMessage: - type: string - default: 'Data is currently being imported, please try again later.' diff --git a/app-templates/props-proj-settings.yaml b/app-templates/props-proj-settings.yaml deleted file mode 100644 index dd39360d9..000000000 --- a/app-templates/props-proj-settings.yaml +++ /dev/null @@ -1,57 +0,0 @@ -# metadata -_schemaVersion: '2.0' -_schemaLayer: PropertyDefs - -prompts: - # filter tab panels - filterFade: - type: string - default: 'Fade' - filterFadeHelp: - type: string - default: 'Show matches, Fade others' - filterReduce: - type: string - default: 'Reduce' - filterReduceHelp: - type: string - default: 'Show matches, Reduce (remove) others & recalculate sizes' - filterFocus: - type: string - default: 'Focus' - filterFocusHelp: - type: string - default: 'Show only nodes connected to the selected node within range' - -# Node Defaults for GraphView -nodeSettings: - nodeSizeDefault: - type: number - default: 5 - nodeSizeMax: - type: number - default: 50 - nodeDefaultTransparency: - type: number - default: 1 - -# EdgeDefaults for GraphView -edgeSettings: - edgeSizeDefault: - type: number - default: 1 - edgeSizeMax: - type: number - default: 25 - edgeDefaultTransparency: - type: number - default: 0.7 - -# Color Defaults for GraphView -colorSettings: - searchColor: - type: number - default: '#008800' # color used to hilight a search result - sourceColor: - type: number - default: '#FFa500' # color used to hilight a source diff --git a/app-templates/values-comment-prompts.yaml b/app-templates/values-comment-prompts.yaml deleted file mode 100644 index e0e49e6ee..000000000 --- a/app-templates/values-comment-prompts.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# metadata -_schemaVersion: '2.0' - -# Default comment types made available in the comment manager -# The intent of this seems to be a collection of prompts used -# to provide a commenting template for students in the dialog box - -# this is a list of two objects of type CommentType, which is -# declared in 'declare-ui-comment-types.yaml' -commentPrompts: - - slug: 'cmt' - label: 'Comment' - prompts: - - format: 'text' - prompt: 'Comment' - help: 'Use this for any general comment.' - feedback: '' - - slug: 'tellmemore' - label: 'Evidence Critique or Suggestion' - prompts: - - format: 'text' - prompt: 'Tell me more' - help: 'Can you tell me more about ... ' - feedback: '' diff --git a/app/init.jsx b/app/init.jsx index d4d014a55..b13959f38 100644 --- a/app/init.jsx +++ b/app/init.jsx @@ -32,7 +32,8 @@ const MUR = require('ursys-min'); /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// When the DOM is loaded, initialize UNISYS document.addEventListener('DOMContentLoaded', () => { - console.groupCollapsed('init.jsx bootstrap'); + // HACK MAKE SURE TO COLLAPSE BEFORE PR SUBMISSION + console.group('init.jsx bootstrap'); console.log( '%cINIT %cDOMContentLoaded. Starting UNISYS Lifecycle!', 'color:blue', @@ -107,10 +108,6 @@ function m_RenderApp() { if (DBG) console.log('%cINIT %cReactDOM.render() begin', 'color:blue', 'color:auto'); - // declare web components for MUR - MUR.ViewLib.DeclareComponents(); - // - return new Promise((resolve, reject) => { try { ReactDOM.render(, document.querySelector('#app-container'), () => { diff --git a/app/system/datastore.js b/app/system/datastore.js index cb0d07623..957e8b5e1 100644 --- a/app/system/datastore.js +++ b/app/system/datastore.js @@ -302,7 +302,7 @@ DSTOR.PromiseTOMLFile = function (tomlFile) { /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** API: Load D3 Database */ -DSTOR.PromiseD3Data = function () { +DSTOR.PromiseDataset = function () { // UDATA.Call() returns a promise return UDATA.Call('SRV_DBGET', {}); // server.js }; diff --git a/app/unisys/common-session.js b/app/unisys/common-session.js index 1d9d3322d..2bffc06ab 100644 --- a/app/unisys/common-session.js +++ b/app/unisys/common-session.js @@ -62,7 +62,7 @@ SESUTIL.DecodeToken = function (token, templateSalt) { salt = `${classId}${projId}${templateSalt}`; } else { salt = `${classId}${projId}`; // skips `dataset` - console.warn('"salt" is not defined. Using only classId and projId.'); + console.log('NOTE: "salt" is not defined. Using only classId and projId.'); } if (DBG) diff --git a/app/unisys/server-database.js b/app/unisys/server-database.js index 0637d00ad..82c38ce6f 100644 --- a/app/unisys/server-database.js +++ b/app/unisys/server-database.js @@ -16,7 +16,7 @@ const DBG = false; /// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = const Loki = require('lokijs'); const PATH = require('path'); -const FS = require('fs-extra'); +const FSE = require('fs-extra'); const TOML = require('@iarna/toml'); /// CONSTANTS ///////////////////////////////////////////////////////////////// @@ -47,10 +47,11 @@ let NODES; // loki "nodes" collection let EDGES; // loki "edges" collection let COMMENTS; // loki "comments" collection let READBY; // loki "readby" collection +let TEMPLATE; let m_locked_nodes; // map key = nodeID, value = uaddr initiating the lock let m_locked_edges; // map key = edgeID, value = uaddr initiating the lock let m_locked_comments; // map key = commentID, value = uaddr initiating the lock -let TEMPLATE; +let m_template_locks; // set of uaddr that have locks on template setting editing let m_open_editors = []; // array of template, node, or edge editors /// formatting const BL = s => `\x1b[1;34m${s}\x1b[0m`; @@ -65,14 +66,14 @@ let DB = {}; Used by PKT_MergeDatabase to clone the db before importing. Saves the db in the runtime folder with a timestamp suffix. */ function m_BackupDatabase() { - FS.ensureDirSync(PATH.dirname(db_file)); - if (FS.existsSync(db_file)) { + FSE.ensureDirSync(PATH.dirname(db_file)); + if (FSE.existsSync(db_file)) { const timestamp = new Date().toISOString().replace(/:/g, '.'); const backupDBFilePath = m_GetValidDBFilePath( BACKUPPATH + NC_CONFIG.dataset + '_' + timestamp ); console.log(PR, 'Saving database backup to', backupDBFilePath); - FS.copySync(db_file, backupDBFilePath); + FSE.copySync(db_file, backupDBFilePath); } } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -82,11 +83,11 @@ function m_DefaultTemplatePath() { } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** API: Initialize the database */ -DB.InitializeDatabase = function (options = {}) { +DB.InitializeDataset = function (options = {}) { let dataset = NC_CONFIG.dataset; db_file = m_GetValidDBFilePath(dataset); - FS.ensureDirSync(PATH.dirname(db_file)); - if (!FS.existsSync(db_file)) { + FSE.ensureDirSync(PATH.dirname(db_file)); + if (!FSE.existsSync(db_file)) { console.log( PR, YL(`NOTICE: NO EXISTING DATABASE ${db_file}, so creating BLANK DATABASE...`) @@ -95,7 +96,7 @@ DB.InitializeDatabase = function (options = {}) { // console.log(PR, YL(`loading dataset`), `${BL(db_file)}...`); let ropt = { autoload: true, - autoloadCallback: f_DatabaseInitialize, + autoloadCallback: async_DatabaseInitialize, autosave: true, autosaveCallback: f_AutosaveStatus, autosaveInterval: 4000 // save every four seconds @@ -111,7 +112,7 @@ DB.InitializeDatabase = function (options = {}) { nothing to do with the database :| /*/ - async function f_DatabaseInitialize() { + async function async_DatabaseInitialize() { // on the first load of (non-existent database), we will have no // collections so we can detect the absence of our collections and // add (and configure) them now. @@ -181,7 +182,7 @@ DB.InitializeDatabase = function (options = {}) { } console.log( PR, - 'dataset loaded', + 'graph data loaded', BL(db_file), `m_max_nodeID '${m_max_nodeID}', m_max_edgeID '${m_max_edgeID}'` ); @@ -204,10 +205,12 @@ DB.InitializeDatabase = function (options = {}) { m_db.saveDatabase(); + // load non-database assets from dataset.toml, creating + // it if necessary await m_LoadTemplate(); m_MigrateTemplate(); m_ValidateTemplate(); - } // end f_DatabaseInitialize + } // end async_DatabaseInitialize // UTILITY FUNCTION function f_AutosaveStatus() { @@ -220,56 +223,32 @@ DB.InitializeDatabase = function (options = {}) { `AUTOSAVING! ${nodeCount} NODES / ${edgeCount} EDGES / ${commentCount} COMMENTS / ${readbyCount} READBY <3` ); } -}; // InitializeDatabase() -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** Loads a *.template.toml file from the server. */ -function m_LoadTOMLTemplate(templateFilePath) { - return new Promise((resolve, reject) => { - const templateFile = FS.readFile(templateFilePath, 'utf8', (err, data) => { - if (err) throw err; - const json = TOML.parse(data); - TEMPLATE = json; - console.log(PR, 'template loaded', BL(templateFilePath)); - resolve({ Loaded: true }); - }); - }); -} +}; // InitializeDataset() + +/// TEMPLATE LOADER /////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** Load Template - 1. Tries to load a TOML template - 2. If it can't be found, tries to load the JSON template and convert it - 3. If that fails, clone the default TOML template and load it - Called by - * DB.InitializeDatabase - * DB.WriteTemplateTOML - */ +/** Load Template */ async function m_LoadTemplate() { const TOMLPath = m_GetTemplateTOMLFilePath(); - FS.ensureDirSync(PATH.dirname(TOMLPath)); - /*/ SRI NOTE - ripping out the json template conversion to simplify loading and - avoid wasting time validating this poorly structured code - /*/ - // Does the TOML template exist? - if (FS.existsSync(TOMLPath)) { - // 1. If TOML exists, load it - await m_LoadTOMLTemplate(TOMLPath); - } else { - // clone _default.template.toml - console.log(PR, `NO EXISTING TEMPLATE ${TOMLPath}`); - FS.copySync(m_DefaultTemplatePath(), TOMLPath); - // then load it - await m_LoadTOMLTemplate(TOMLPath); + FSE.ensureDirSync(PATH.dirname(TOMLPath)); + if (!FSE.existsSync(TOMLPath)) { + console.log(PR, `Cloning default template to ${TOMLPath}`); + FSE.copySync(m_DefaultTemplatePath(), TOMLPath); } -} + const data = FSE.readFileSync(TOMLPath, 'utf8'); + const json = TOML.parse(data); + TEMPLATE = json; + // don't clear the locks of a reload of template happens post-init + if (m_template_locks === undefined) m_template_locks = new Set(); + console.log(PR, 'Template loaded', BL(TOMLPath)); +} /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** Updated Migrate Template - WARNING - * The original m_MigrateTemplate() uses a lot of indirection and references - * an "unused" module called "template-schema.js" that wass very much used */ +/** Migrate the in-memory TEMPLATE object to latest schema version. These + * changes are not persisted unless the template is saved through the UI. */ function m_MigrateTemplate() { // - const T = TEMPLATE; // mirroring original hacky approach + const T = TEMPLATE; const EDF = T.edgeDefs; const NDF = T.nodeDefs; const nset = prop => prop === undefined; @@ -342,15 +321,40 @@ function m_MigrateTemplate() { // Migrate 1.5 to 2.0 Template Version T._schemaVersion = '2.0'; -} + // Migrate 2.0 to 2.1 - Add missing _ui defaults from _default.template.toml + // Load the default template to get _ui defaults + T._schemaVersion = '2.1'; + const defaultTemplatePath = m_DefaultTemplatePath(); + if (FSE.existsSync(defaultTemplatePath)) { + try { + const defaultTemplateContent = FSE.readFileSync(defaultTemplatePath, 'utf8'); + const defaultTemplate = TOML.parse(defaultTemplateContent); + + // Copy _ui defaults if they don't exist in current template + if (defaultTemplate._ui) { + if (nset(T._ui)) T._ui = {}; + + // Deep merge _ui section from default template + Object.keys(defaultTemplate._ui).forEach(key => { + if (nset(T._ui[key])) { + T._ui[key] = defaultTemplate._ui[key]; + } + }); + } + } catch (err) { + console.warn( + PR, + 'Failed to load default template for _ui migration:', + err.message + ); + } + } +} /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** Validate Template File - Lazy check of template object definitions to make sure they are of - expected types and values so the UI doesn't choke and die. Throws an error - if property is missing. - */ -// eslint-disable-next-line complexity +/** Validate Template Object. This checks that the in-memory TEMPLATE object has + * expected values and types and throws errors for showstopping discrepancies. + * Note that this does not actually persist the template back to disk. */ function m_ValidateTemplate() { try { // 1. Validate built-in fields @@ -370,8 +374,8 @@ function m_ValidateTemplate() { throw 'Missing `edgeDefs.target` label=' + edgeDefs.target; // 2. Validate deprecated fields - // `TEMPLATE.version` was added after 2.0. - if (!TEMPLATE.version) { + // `TEMPLATE._schemaVersion` was added after 2.0. + if (!TEMPLATE._schemaVersion) { // nodeDefs if (nodeDefs.type === undefined) throw 'Missing `nodeDefs.type` type= ' + nodeDefs.type; @@ -436,21 +440,39 @@ function m_ValidateTemplate() { throw 'Missing `edgeDefs.category` info=' + edgeDefs.category; } else { // Placeholder for future version checks - // if (TEMPLATE.version <= "2.0") { + // if (TEMPLATE._schemaVersion <= "2.0") { // // do something // } } + + // 3. Validate _ui section (v2.1+) + if (TEMPLATE._ui === undefined) { + console.warn( + PR, + 'Missing `_ui` section in template. UI field definitions will not be available.' + ); + } else { + // Check for core _ui field definitions that should be present + const coreUIFields = ['name', 'description', 'secretKey', 'adminPassword']; + coreUIFields.forEach(field => { + if (TEMPLATE._ui[field] === undefined) { + console.warn( + PR, + `Missing _ui definition for core field '${field}'. Default UI behavior will be used.` + ); + } + }); + } } catch (error) { const templateFileName = m_GetTemplateTOMLFilePath(); console.error('Error loading template `', templateFileName, '`::::', error); } } - /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** API: load database - * note: InitializeDatabase() was already called on system initialization + * note: InitializeDataset() was already called on system initialization * to populate the NODES and EDGES structures */ -DB.PKT_GetDatabase = function (pkt) { +DB.PKT_GetDataset = function (pkt) { let nodes = NODES.chain().data({ removeMeta: false }); let edges = EDGES.chain().data({ removeMeta: false }); let comments = COMMENTS.chain().data(); @@ -458,7 +480,7 @@ DB.PKT_GetDatabase = function (pkt) { if (DBG) console.log( PR, - `PKT_GetDatabase ${pkt.Info()} (loaded ${nodes.length} nodes, ${ + `PKT_GetDataset ${pkt.Info()} (loaded ${nodes.length} nodes, ${ edges.length } edges)` ); @@ -490,7 +512,7 @@ DB.PKT_SetDatabase = function (pkt) { READBY.insert(readby); console.log(PR, `PKT_SetDatabase complete. Data available on next get.`); m_db.close(); - DB.InitializeDatabase(); + DB.InitializeDataset(); LOGGER.WriteRLog(pkt.InfoObj(), `setdatabase`); return { OK: true }; }; @@ -513,7 +535,7 @@ DB.PKT_InsertDatabase = function (pkt) { READBY.insert(readby); console.log(PR, `PKT_InsertDatabase complete. Data available on next get.`); m_db.close(); - DB.InitializeDatabase(); + DB.InitializeDataset(); LOGGER.WriteRLog(pkt.InfoObj(), `setdatabase`); return { OK: true }; }; @@ -560,7 +582,7 @@ DB.PKT_MergeDatabase = function (pkt) { return new Promise((resolve, reject) => m_db.saveDatabase(err => { if (err) reject(new Error('rejected')); - DB.InitializeDatabase(); + DB.InitializeDataset(); LOGGER.WriteRLog(pkt.InfoObj(), `mergedatabase`); resolve({ OK: true }); }) @@ -623,6 +645,8 @@ DB.PKT_ReplaceDatabase = function (pkt) { LOGGER.WriteRLog(pkt.InfoObj(), `replacedatabase`); return { OK: true }; }; + +/// ID HELPER FUNCTIONS /////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// WARN: Side Effect: Changes `m_max_nodeID` function m_CalculateMaxNodeID() { @@ -719,6 +743,8 @@ function m_CalculateMaxCommentID() { } return m_max_commentID; } + +/// NODE LOCKING METHODS ////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DB.PKT_RequestLockNode = function (pkt) { let { nodeID } = pkt.Data(); @@ -730,7 +756,7 @@ DB.PKT_RequestLockNode = function (pkt) { return m_MakeLockError(`nodeID ${nodeID} is already locked`); // SUCCESS // single matching node exists and is not yet locked, so lock it - m_locked_nodes.set(nodeID, uaddr); + m_locked_nodes.add(uaddr); return { nodeID, locked: true }; }; /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -778,6 +804,8 @@ function m_IsInvalidNode(nodeID) { function m_MakeLockError(info) { return { NOP: `ERR`, INFO: info }; } + +/// EDGE LOCKING METHODS ////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DB.PKT_RequestLockEdge = function (pkt) { let { edgeID } = pkt.Data(); @@ -833,6 +861,8 @@ function m_IsInvalidEdge(edgeID) { // no retval is no error! return undefined; } + +/// COMMENT LOCKING /////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DB.PKT_RequestLockComment = function (pkt) { let { commentID } = pkt.Data(); @@ -864,6 +894,8 @@ DB.PKT_IsCommentLocked = function (pkt) { const isLocked = m_locked_comments.has(commentID); return { commentID, locked: isLocked }; }; + +/// UNLOCK ALL METHODS //////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DB.PKT_RequestUnlockAllNodes = function (pkt) { m_locked_nodes = new Map(); @@ -890,9 +922,11 @@ DB.PKT_RequestUnlockAll = function (pkt) { /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** called by server-network when a client disconnects we want to unlock any * nodes and edges they had locked. */ -DB.RequestUnlock = function (uaddr) { +DB.UnlockByUADDR = function (uaddr) { m_locked_nodes.forEach((value, key) => { - if (value === uaddr) m_locked_nodes.delete(key); + if (value === uaddr) { + m_locked_nodes.delete(key); + } }); m_locked_edges.forEach((value, key) => { if (value === uaddr) m_locked_edges.delete(key); @@ -900,7 +934,13 @@ DB.RequestUnlock = function (uaddr) { m_locked_comments.forEach((value, key) => { if (value === uaddr) m_locked_comments.delete(key); }); + if (m_template_locks.has(uaddr)) { + console.log(PR, `template lock ${uaddr}' released`); + m_template_locks.delete(uaddr); + } }; + +/// NODE, EDGE, COMMENT UPDATE METHODS //////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // eslint-disable-next-line complexity DB.PKT_Update = function (pkt) { @@ -1383,7 +1423,7 @@ function m_CommentUpdate(comment, pkt) { retval = { op: 'error-multinodeid' }; } return retval; -} // if comment +} /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function m_CommentRemove(commentID, pkt) { if (DBG) console.log(PR, `PKT_Update ${pkt.Info()} DELETE commentID ${commentID}`); @@ -1409,6 +1449,7 @@ DB.AppendNodeLog = function (node, pkt) { console.log(PR, 'nodelog', out); } }; +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DB.FilterNodeLog = function (node) { let newNode = Object.assign({}, node); Reflect.deleteProperty(newNode, '_nlog'); @@ -1436,6 +1477,7 @@ DB.FilterEdgeLog = function (edge) { Reflect.deleteProperty(newEdge, '_elog'); return newEdge; }; + /// COMMENT ANNOTATION //////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** write/remove packet SourceGroupID() information into the comment before writing @@ -1457,6 +1499,7 @@ DB.FilterCommentLog = function (comment) { Reflect.deleteProperty(newComment, '_nlog'); return newComment; }; + /// READBY ANNOTATION //////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** write/remove packet SourceGroupID() information into the readby before writing @@ -1504,9 +1547,9 @@ DB.WriteDbJSON = function (filePath) { let data = { nodes, edges, comments, readby }; let json = JSON.stringify(data); if (DBG) console.log(PR, `ensuring DIR ${PATH.dirname(filePath)}`); - FS.ensureDirSync(PATH.dirname(filePath)); + FSE.ensureDirSync(PATH.dirname(filePath)); if (DBG) console.log(PR, `writing file ${filePath}`); - FS.writeFileSync(filePath, json); + FSE.writeFileSync(filePath, json); console.log(PR, `*** WROTE JSON DATABASE ${filePath}`); } else { console.log(PR, `ERR path ${filePath} must be a pathname`); @@ -1514,9 +1557,47 @@ DB.WriteDbJSON = function (filePath) { } }); }; + +/// TEMPLATE LOCKING METHODS ////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** called by Template Editor and DB.WriteTemplateTOML - */ +/** called by SRV_REQ_TEMPLATE_LOCK. Returns { error, success, uaddr, + * lockedBy } */ +DB.PKT_RequestLockTemplate = pkt => { + if (m_template_locks === undefined) return { error: 'template not yet loaded' }; + const uaddr = pkt.s_uaddr; + if (m_template_locks.size > 0) { + const uaddrs = [...m_template_locks.keys()]; + if (uaddrs.includes(pkt.s_uaddr)) return { success: true, uaddr: pkt.s_uaddr }; + else + return { + error: `template already locked by ${uaddrs}`, + lockedBy: uaddrs, + uaddr + }; + } + // if we're not locked, lock it! + m_template_locks.add(uaddr); + console.log(PR, `${uaddr} locked template`); + return { success: true, uaddr }; +}; +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** called by SRV_REQ_TEMPLATE_UNLOCK. Returns { error, success, uaddr, + * lockedBy } */ +DB.PKT_RequestUnlockTemplate = pkt => { + if (m_template_locks === undefined) return { error: 'template not yet loaded' }; + const uaddr = pkt.s_uaddr; + if (m_template_locks.has(uaddr)) { + m_template_locks.delete(uaddr); + console.log(PR, `${uaddr} unlocked template`); + return { success: true, uaddr }; + } + const uaddrs = [...m_template_locks.keys()]; + return { error: `template not locked by ${uaddr}`, lockedBy: uaddrs, uaddr }; +}; + +/// TEMPLATE READ+WRITE METHODS /////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** called by Template Editor and DB.WriteTemplateTOML */ function m_GetTemplateTOMLFileName() { return NC_CONFIG.dataset + TEMPLATE_EXT; } @@ -1540,27 +1621,25 @@ DB.WriteTemplateTOML = pkt => { if (pkt.data === undefined) throw 'DB.WriteTemplateTOML pkt received with no `data`'; const templateFilePath = pkt.data.path || m_GetTemplateTOMLFilePath(); - FS.ensureDirSync(PATH.dirname(templateFilePath)); - // Does the template exist? If so, rename the old version with curren timestamp. - if (FS.existsSync(templateFilePath)) { + FSE.ensureDirSync(PATH.dirname(templateFilePath)); + // first back-up the old template file + if (FSE.existsSync(templateFilePath)) { const timestamp = new Date().toISOString().replace(/:/g, '.'); const backupFilePath = RUNTIMEPATH + NC_CONFIG.dataset + '_' + timestamp + TEMPLATE_EXT; - FS.copySync(templateFilePath, backupFilePath); + FSE.copySync(templateFilePath, backupFilePath); console.log(PR, 'Backed up template to', backupFilePath); } + // write the new template file const toml = TOML.stringify(pkt.data.template); - return FS.outputFile(templateFilePath, toml) - .then(data => { - console.log(PR, 'Saved template to', templateFilePath); - // reload template - m_LoadTemplate(); - return { OK: true, info: templateFilePath }; - }) - .catch(err => { - console.log(PR, 'Failed trying to save', templateFilePath, err); - return { OK: false, info: 'Failed trying to save', templateFilePath }; - }); + try { + FSE.outputFileSync(templateFilePath, toml); + m_LoadTemplate(); + return { OK: true, info: templateFilePath }; + } catch (err) { + console.error(PR, 'Failed trying to save', templateFilePath, err); + return { OK: false, info: 'Failed trying to save', templateFilePath }; + } }; /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** Clones the existing toml template @@ -1570,12 +1649,12 @@ DB.WriteTemplateTOML = pkt => { */ DB.CloneTemplateTOML = function (filePath) { const TOMLPath = m_GetTemplateTOMLFilePath(); - FS.ensureDirSync(PATH.dirname(TOMLPath)); + FSE.ensureDirSync(PATH.dirname(TOMLPath)); // Does the template exist? - if (!FS.existsSync(TOMLPath)) { + if (!FSE.existsSync(TOMLPath)) { console.error(PR, `ERR could not find template ${TOMLPath}`); } else { - FS.copySync(TOMLPath, filePath); + FSE.copySync(TOMLPath, filePath); console.log(PR, `*** COPIED TEMPLATE ${TOMLPath} to ${filePath}`); } }; @@ -1607,7 +1686,7 @@ DB.RegenerateDefaultTemplate = () => { edited or data is being imported, any editor that is opened registers as an OPENEDITOR. The UI will also pre-emptively disable edit buttons whenever the open editors have been updated via a broacast of the - `EDIT_PERMISSIONS_UPDATE` message by server.js. + `CLI_UPDATE_LOCKSTATE` message by server.js. * When a Template editor is open, "Import", "Node Edit", "Edge Edit", "Add New Node", and "Add New Edge" buttons are all disabled. @@ -1630,7 +1709,7 @@ DB.RegenerateDefaultTemplate = () => { UI elements query `GetEditStatus` to figure out what they should enable or disable. - UI elements should also listen to `EDIT_PERMISSIONS_UPDATE` to + UI elements should also listen to `CLI_UPDATE_LOCKSTATE` to enable or disable elements. Note that multiple `node` and `edge` editors can be open at the same @@ -1688,22 +1767,41 @@ DB.GetEditStatus = pkt => { */ DB.RequestEditLock = pkt => { m_open_editors.push(pkt.Data().editor); + console.log(PR, `RequestEditLock: ${pkt.Data().editor} added to open editors`); return DB.GetEditStatus(pkt); }; /** - * Deregister a template, import, node or edge as being actively edited. + * Deregister a import, node or edge as being actively edited. * @param {Object} pkt * @param {string} pkt.editor - 'template', 'importer', 'node', 'edge', or 'comment' * @returns { templateBeingEdited: boolean, importActive: boolean, nodeOrEdgeBeingEdited: boolean, commentBeingEdited: boolean } + * NOTE: 'template' is no longer handled here */ DB.ReleaseEditLock = pkt => { - const i = m_open_editors.findIndex(e => e === pkt.Data().editor); - if (i > -1) m_open_editors.splice(i, 1); + const { editor } = pkt.Data(); + const i = m_open_editors.findIndex(e => e === editor); + if (i > -1) { + if (DBG) + console.log( + PR, + `ReleaseEditLock: ${editor} found in open editors`, + m_open_editors + ); + m_open_editors.splice(i, 1); + if (DBG) console.log(PR, `ReleaseEditLock: open editors is now`, m_open_editors); + } else { + if (DBG) + console.warn( + PR, + `ReleaseEditLock: ${editor} not found in open editors`, + m_open_editors + ); + } return DB.GetEditStatus(pkt); }; -/// UTILITIES FOR LOADING DATA /// - +/// HELPER UTILITIES FOR LOADING DATA ///////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** Migrates old network data to new formats based on the template defintion. * This will automatically migrate any field/property that is marked `isRequired` * and has a `defaultValue` defined. diff --git a/app/unisys/server-network.js b/app/unisys/server-network.js index de2aacb96..b633fc661 100644 --- a/app/unisys/server-network.js +++ b/app/unisys/server-network.js @@ -235,7 +235,7 @@ function m_ResetPongTimer(uaddr) { PR, 'pong not received before time ran out -- CLIENT CONNECTION DEAD!' ); - DB.RequestUnlock(uaddr); + DB.UnlockByUADDR(uaddr); }, DEFS.SERVER_HEARTBEAT_INTERVAL * 2); } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -479,7 +479,7 @@ function m_SocketDelete(socket) { }); } // Unlock everything if the socket is being removed - DB.RequestUnlock(uaddr); + DB.UnlockByUADDR(uaddr); // console list if (DBG) m_ListSockets(`del ${socket.UADDR}`); } diff --git a/app/unisys/server.js b/app/unisys/server.js index c220c5f2f..348611cd1 100644 --- a/app/unisys/server.js +++ b/app/unisys/server.js @@ -21,6 +21,13 @@ const PR = PROMPTS.Pad('MUR_SET'); const ROOT = PATH.resolve(__dirname, '../../'); const TEST_TEMPL_DIR = PATH.resolve(ROOT, 'app-templates'); +/// HELPER FUNCTIONS //////////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** print message and data for passed packet */ +function sprint_message(pkt) { + return `got '${pkt.Message()}' data=${JSON.stringify(pkt.Data())}`; +} + /// API CREATE MODULE ///////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var UNISYS = {}; @@ -29,23 +36,22 @@ var UNISYS = {}; * network values, so it can embed them in the index.ejs file for webapps * override = { port } */ UNISYS.InitializeNetwork = override => { - // MUR INTEROP: connect to MUR + // MUR INTEROP: connect MUR to UNISYS MUR.NCI.InteropConnect(UNET, NC_CONFIG); - // MUR INTEROP: load settings and persist unified file - const settings = MUR.SettingMgr.LoadSettings(TEST_TEMPL_DIR); - MUR.SettingMgr.WriteDefaultSettings(); - console.log(PR, `Loaded settings: [${Object.keys(settings).join(', ')}`); // MUR INTEROP: end // resume NetCreate server initialization - UDB.InitializeDatabase(override); + UDB.InitializeDataset(override); return UNET.InitializeNetwork(override); }; + +/// REGISTER MESSAGE HANDLERS ///////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** RegisterHandlers() is called before network is started, so they're * ready to run. These are server-implemented reserved messages. */ UNISYS.RegisterHandlers = () => { + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // define local handlers UNET.HandleMessage('SRV_REFLECT', function (pkt) { pkt.Data().serverSays = 'REFLECTING'; @@ -54,7 +60,7 @@ UNISYS.RegisterHandlers = () => { // return the original packet return pkt; }); - // + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_REG_HANDLERS', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); // now need to store the handlers somehow. @@ -62,37 +68,39 @@ UNISYS.RegisterHandlers = () => { // or return a new data object that will replace pkt.data return data; }); - // + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBGET', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); - return UDB.PKT_GetDatabase(pkt); + return UDB.PKT_GetDataset(pkt); }); - // + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBSET', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_SetDatabase(pkt); }); - // - /// Add new node/edges to db after an import + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** Add new node/edges to db after an import */ UNET.HandleMessage('SRV_DBINSERT', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_InsertDatabase(pkt); }); - // Update or add new node/edges to db after an import + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** Update or add new node/edges to db after an import */ UNET.HandleMessage('SRV_DBMERGE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_MergeDatabase(pkt); }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Emulate a project load for Turbo360 UNET.HandleMessage('SRV_DBREPLACE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_ReplaceDatabase(pkt); }); - /** TEMPLATE / IMPORT / NODE / EDGE EDITOR LOCKING **/ - - /** Reports on whether template, import, or node/edge are being edited + /// OLD FILE LOCKING API ////////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** Reports on whether template, import, or node/edge are being edited. Also includes template + * and import operation status as part of lockable edit state. * @return { templateBeingEdited: boolean, importActive: boolean, nodeOrEdgeBeingEdited: boolean } */ UNET.HandleMessage('SRV_GET_EDIT_STATUS', pkt => { @@ -101,55 +109,76 @@ UNISYS.RegisterHandlers = () => { const data = UDB.GetEditStatus(pkt); return data; }); - /** Requested by Node / Edge Editor when user wants to edit node / edge - * @return { templateBeingEdited: boolean, importActive: boolean, nodeOrEdgeBeingEdited: boolean } + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** Requested by Node / EdgEe Editor when user wants to edit node / edge. Also includes template + * and import operation status as part of lockable edit state. + * @return { templateBeingEdited: boolean, importActive: boolean, nodeOrEdgeBeingEdited: boolean } */ UNET.HandleMessage('SRV_REQ_EDIT_LOCK', pkt => { // server-database if (DBG) console.log(PR, sprint_message(pkt)); const editStatus = UDB.RequestEditLock(pkt); // Broadcast Lock State - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); return editStatus; }); - /** - * @return { templateBeingEdited: boolean, importActive: boolean, nodeOrEdgeBeingEdited: boolean } + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** Release all locks related to nodes, template editing, and import operations. + * @return { templateBeingEdited: boolean, importActive: boolean, nodeOrEdgeBeingEdited: boolean } */ UNET.HandleMessage('SRV_RELEASE_EDIT_LOCK', pkt => { // server-database if (DBG) console.log(PR, sprint_message(pkt)); const editStatus = UDB.ReleaseEditLock(pkt); // Broadcast Lock State - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); return editStatus; }); - /** TEMPLATE EDITING **/ - + /// TEMPLATE EDITING ////////////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_TEMPLATE_REGENERATE_DEFAULT', pkt => { - // server-database if (DBG) console.log(PR, sprint_message(pkt)); return UDB.RegenerateDefaultTemplate(); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_TEMPLATESAVE', pkt => { - // server-database if (DBG) console.log(PR, sprint_message(pkt)); - UNET.NetSend('NET_TEMPLATE_UPDATE', pkt.data.template); // Broadcast template to other computers on the net - return UDB.WriteTemplateTOML(pkt); + const result = UDB.WriteTemplateTOML(pkt); + if (result.OK) { + UNET.NetSend('NET_TEMPLATE_UPDATE', pkt.data.template); + } else { + const errMsg = `Error saving template: ${result.info}, ${result.templateFilePath}`; + console.log(PR, errMsg); + } + return result; }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_GET_TEMPLATETOML_FILENAME', () => { return UDB.GetTemplateTOMLFileName(); }); - - /// Update all EXISTING nodes/edges after a Template edit + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** Update all EXISTING nodes/edges after a Template edit */ UNET.HandleMessage('SRV_DBUPDATE_ALL', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_UpdateDatabase(pkt); }); - /** NODE/EDGE EDITING **/ + /// TEMPLATE LOCKING ////////////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + UNET.HandleMessage('SRV_REQ_TEMPLATE_LOCK', function (pkt) { + const lockResult = UDB.PKT_RequestLockTemplate(pkt); + return lockResult; + }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + UNET.HandleMessage('SRV_REQ_TEMPLATE_UNLOCK', function (pkt) { + const unlockResult = UDB.PKT_RequestUnlockTemplate(pkt); + return unlockResult; + }); - // receives a packet from a client + /// NODE & EDGE EDITING /////////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** receives a packet from a client */ UNET.HandleMessage('SRV_DBUPDATE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); let data = UDB.PKT_Update(pkt); @@ -170,8 +199,8 @@ UNISYS.RegisterHandlers = () => { // return SRV_DBUPDATE value (required) return { OK: true, info: 'SRC_DBUPDATE' }; }); - - // receives a batch of packets from a client + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** receives a batch of packets from a client */ UNET.HandleMessage('SRV_DBBATCHUPDATE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); let retvals = UDB.PKT_BatchUpdate(pkt); @@ -181,25 +210,26 @@ UNISYS.RegisterHandlers = () => { // return SRV_DBBATCHUPDATE value (required) return { OK: true, info: 'SRV_DBBATCHUPDATE' }; }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_CALCULATE_MAXNODEID', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_CalculateMaxNodeID(pkt); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBGETNODEID', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_GetNewNodeID(pkt); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBGETNODEIDS', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_GetNewNodeIDs(pkt); }); - /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// DB LOCKING - /** - * @param {object} pkt - * @param {string} pkt.data.nodeID + /// NODE & EDGE LOCKING /////////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** @param {object} pkt + * @param {string} pkt.data.nodeID */ UNET.HandleMessage('SRV_DBLOCKNODE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); @@ -212,10 +242,11 @@ UNISYS.RegisterHandlers = () => { pkt.SetData(pktData); const editStatus = UDB.RequestEditLock(pkt); // - broadcast lock state - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); } return lockResult; // handle callback }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBUNLOCKNODE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); const unlockResult = UDB.PKT_RequestUnlockNode(pkt); @@ -227,10 +258,11 @@ UNISYS.RegisterHandlers = () => { pkt.SetData(pktData); const editStatus = UDB.ReleaseEditLock(pkt); // - broadcast lock state - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); } return unlockResult; // handle callback }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBLOCKEDGE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); const lockResult = UDB.PKT_RequestLockEdge(pkt); @@ -242,10 +274,11 @@ UNISYS.RegisterHandlers = () => { pkt.SetData(pktData); const editStatus = UDB.RequestEditLock(pkt); // = broadcast lock state - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); } return lockResult; // handle callback }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBUNLOCKEDGE', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); const unlockResult = UDB.PKT_RequestUnlockEdge(pkt); @@ -257,16 +290,18 @@ UNISYS.RegisterHandlers = () => { pkt.SetData(pktData); const editStatus = UDB.ReleaseEditLock(pkt); // - broadcast lock state - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); } return unlockResult; // handle callback }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBISEDGELOCKED', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_IsEdgeLocked(pkt); }); + /// COMMENT LOCKING /////////////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBLOCKCOMMENT', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); const lockResult = UDB.PKT_RequestLockComment(pkt); @@ -278,11 +313,11 @@ UNISYS.RegisterHandlers = () => { pkt.SetData(pktData); const editStatus = UDB.ReleaseEditLock(pkt); // - broadcast lock state - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); } return lockResult; // handle callback }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBUNLOCKCOMMENT', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); const unlockResult = UDB.PKT_RequestUnlockComment(pkt); @@ -294,68 +329,72 @@ UNISYS.RegisterHandlers = () => { pkt.SetData(pktData); const editStatus = UDB.ReleaseEditLock(pkt); // - broadcast lock state - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', editStatus); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', editStatus); } return unlockResult; // handle callback }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBISCOMMENTLOCKED', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_IsCommentLocked(pkt); }); + /// SUPER UNLOCKING EVERYTHING //////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + UNET.HandleMessage('SRV_DBUNLOCKALL', function (pkt) { + if (DBG) console.log(PR, sprint_message(pkt)); + const res = UDB.PKT_RequestUnlockAll(pkt); + // Broadcast Lock State + const data = UDB.GetEditStatus(pkt); + UNET.NetSend('CLI_UPDATE_LOCKSTATE', data); + return res; + }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBUNLOCKALLNODES', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_RequestUnlockAllNodes(pkt); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBUNLOCKALLEDGES', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_RequestUnlockAllEdges(pkt); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBUNLOCKALLCOMMENTS', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_RequestUnlockAllComments(pkt); }); - UNET.HandleMessage('SRV_DBUNLOCKALL', function (pkt) { - if (DBG) console.log(PR, sprint_message(pkt)); - const res = UDB.PKT_RequestUnlockAll(pkt); - // Broadcast Lock State - const data = UDB.GetEditStatus(pkt); - UNET.NetSend('EDIT_PERMISSIONS_UPDATE', data); - return res; - }); + /// UTILITY MESSAGE SERVICES ////////////////////////////////// + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_CALCULATE_MAXEDGEID', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_CalculateMaxEdgeID(pkt); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBGETEDGEID', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_GetNewEdgeID(pkt); }); + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBGETEDGEIDS', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_GetNewEdgeIDs(pkt); }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_DBGETCOMMENTID', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return UDB.PKT_GetNewCommentID(pkt); }); - + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UNET.HandleMessage('SRV_LOG_EVENT', function (pkt) { if (DBG) console.log(PR, sprint_message(pkt)); return LOGGER.PKT_LogEvent(pkt); }); - - // utility function // - function sprint_message(pkt) { - return `got '${pkt.Message()}' data=${JSON.stringify(pkt.Data())}`; - } }; + /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** StartNetwork() is called by brunch-server after the Express webserver - */ +/** StartNetwork() is called by brunch-server after the Express webserver */ UNISYS.StartNetwork = () => { UNET.StartNetwork(); }; diff --git a/app/view/netcreate/components/MURPropertyGroup.jsx b/app/view/netcreate/components/MURPropertyGroup.jsx index ce243b4af..4a836d024 100644 --- a/app/view/netcreate/components/MURPropertyGroup.jsx +++ b/app/view/netcreate/components/MURPropertyGroup.jsx @@ -1,18 +1,19 @@ /*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ MUR Property Group Component - used by mur-settings-client.jsx to generate a text input component \*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ const React = require('react'); const RSB = require('./react-settings-bridge'); -const { DerefGroupDef } = RSB; import TextInput from './MURTextInput'; +const { ConsoleStyler } = require('ursys-min'); /// CONSTANTS ///////////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const DBG = true; +const LOG = console.log.bind(console); +const PR = ConsoleStyler('PGroup', 'TagBlue'); /// HELPER METHODS //////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -27,37 +28,58 @@ function GroupHeader(props) { /// COMPONENTS //////////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** A PropertyGroup component that displays a group of properties, having + * received groupName */ function PropertyGroup(props) { - const { - groupDef, // { groupname: { propname: { type, default }, {}... } - metaDef // { groupname:{ propname: { _groupMeta, propname: metaDef, {}... } } - } = props; - if (DBG) { - if (typeof groupDef !== 'object') return

PropertyGroup bad groupDef

; - if (typeof metaDef !== 'object') return

PropertyGroup bad metaDef

; + const groupName = props.groupName || ''; // e.g. 'graphSettings' + const { draft } = React.useContext(RSB.SettingsContext); + const uiData = draft.template._ui || {}; + + // editable properties are in propsData and propNames + // which are derived by scanning uiData which is the metadata + // dictionary that determines what the UI should display + + let propNames; // array of property names to display + let propsData = {}; // related + + // handle a blank groupName as the special case where all the + // ungrouped settings in the TEMPLATE are considered "globalsList" + if (groupName === '') { + propNames = RSB.GetUISettingsList(uiData).globalsList || []; + propNames.forEach(p => (propsData[p] = uiData[p])); + propsData._src = ''; + if (uiData._editor && uiData._editor.global) { + propsData._editor = uiData._editor.global; + } else { + propsData._editor = { label: '', description: '' }; + } + } + // for all other groups, just copy the uiData into propsData + else { + propsData = uiData[groupName] || {}; + propsData._src = groupName; + propNames = Object.keys(uobj).filter(RSB.IsUIGroup(uobj)); } - const gdata = DerefGroupDef(groupDef); - if (gdata.error) return

PropertyGroup bad groupDef {gdata.error}

; - const { groupName, properties } = gdata; - const propList = Object.keys(properties); // list of property names - const meta = metaDef[groupName]; - const { title, description } = meta._groupMeta || {}; + + // look for title in propsData or _editor.global + const metadata = propsData[groupName] || propsData._editor || {}; + const grpTitle = metadata.label || groupName.toUpperCase() || ''; + const grpDesc = metadata.description || ''; const key = `pg-${groupName}`; + + /// RENDER /// + return ( <div key={key} style={{ margin: '1rem' }}> <details open> <summary> - <GroupHeader label={title || groupName} /> + <GroupHeader label={grpTitle} /> </summary> - {description && ( - <p style={{ color: 'gray', fontStyle: 'italic' }}>{description}</p> - )} - {propList.map(p => { - if (properties[p].type) { - const key = `in-${groupName}.${p}`; - return <TextInput propDef={properties[p]} metaDef={meta[p]} key={key} />; - } - return null; + {grpDesc && <p style={{ color: 'gray', fontStyle: 'italic' }}>{grpDesc}</p>} + {propNames.map(p => { + const propDef = RSB.EncodeDotProp(groupName, p); + const inputKey = `in-${propDef}`; + return <TextInput propDef={propDef} key={inputKey} />; })} </details> </div> diff --git a/app/view/netcreate/components/MURSettingsEditor.jsx b/app/view/netcreate/components/MURSettingsEditor.jsx index d6076d6e5..8ca444c82 100644 --- a/app/view/netcreate/components/MURSettingsEditor.jsx +++ b/app/view/netcreate/components/MURSettingsEditor.jsx @@ -1,144 +1,110 @@ /*//////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ MUR Property Editor Panel - (test replacement `NCTemplate.jsx`) + (replacement for deprecated `NCTemplate.jsx`) - Requires that init.jsx has called UR.ViewLib.DeclareComponents() to make - custom web components available _before_ React renders anything. + Concept: This design assumes "Property Groups" that contain "Properties" + in a data object, which is different than how TEMPLATE is organized. + The MURSettingsEditor figures out what Property Groups are available, + and writes PropertyGroup components that themselves render the specific + Input components for each property. + + Unfortunately, React itself does not lend itself to this kind of top- + down data sharing, so we have to jump through hoops to make it work + through various hooks and context providers. \*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * //////////////////////////////////////*/ const React = require('react'); const { ConsoleStyler } = require('ursys-min'); const RSB = require('./react-settings-bridge'); +// components const PropertyGroup = require('./MURPropertyGroup'); -const { diff } = require('deep-object-diff'); +const ToDoList = require('./MURSettingsToDo'); +const { SettingsContext } = RSB; // import SettingsContext from the bridge /// RUNTIME INITIALIZATION //////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const DBG = true; -const PR = ConsoleStyler('SetEdit', 'TagBlue'); +const PR = ConsoleStyler('SEdit', 'TagBlue'); const LOG = console.log.bind(console); -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** a react context object, providing access to the values prop of the - * SettingsProvider. It has to be defined within the React App root */ -const SettingsContext = RSB.GetSettingsContext(); // get the settings context /// REACT COMPONENT /////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function MURSettingsEditor() { - const api = RSB.useSettings(); - const [oldState, saveOldState] = React.useState(api.lastSettingsUpdate); - const [showToDo, setShowToDo] = React.useState(true); + /// SETUP /// - function saveChanges() { - saveOldState(api.lastSettingsUpdate); - LOG(...PR('would save changes')); - } + const initialState = { template: RSB.GetTemplate() }; + const [showToDo, setShowToDo] = React.useState(false); + const [hasLock, setHasLock] = React.useState(!RSB.IsTemplateLocked()); + const [draft, dispatch] = React.useReducer(RSB.Dispatch, initialState); + const value = { hasLock, draft, dispatch }; + const { globalsList, groupList } = RSB.GetUISettingsList(draft.template._ui); + + /// LOCKING /// + + React.useEffect(() => { + (async () => { + if (await RSB.LockTemplate()) { + setHasLock(true); + LOG(...PR('Locking template on mount')); + } else { + setHasLock(false); + LOG(...PR('Failed to lock template on mount')); + } + })(); + return () => RSB.ReleaseTemplate(); + }, []); // empty dependency array means this runs once on mount + + /// HANDLERS /// function revertChanges() { - LOG(...PR('would revert changes')); + dispatch({ op: 'revert' }); } - const propDefs = RSB.GetPropertyDefs(); - const metaDefs = RSB.GetMetaDefs(); - const { opBtnStyle, modColor } = RSB.GetStyles(); + function submitChanges() { + dispatch({ op: 'submit', saveFunction: RSB.PersistTemplate }); + } + + /// RENDER PREP /// - const mod = api.lastSettingsUpdate !== oldState; + const { opBtnStyle, modColor } = RSB.GetStyles(); + const mod = draft.isDirty; const backgroundColor = mod ? modColor : 'white'; const color = mod ? 'black' : 'gray'; const btnStyle = { ...opBtnStyle, backgroundColor, color }; - const toDoList = ( - <div> - <ul> - <li>graph name</li> - <li>graph description</li> - <li>secret key (for tokens)</li> - <li>admin password</li> - <li> - Node Definitions - <ul> - <li> - Node Type - <ul> - <li>1: [label, color]</li> - <li>2: [label, color]</li> - <li>...7</li> - </ul> - </li> - <li>Notes -- label, type, hide</li> - <li>Info -- label, type, hide</li> - <li>InfoSource -- label, type, hide</li> - </ul> - </li> - <li> - Edge Definitions - <ul> - <li> - Edge Type - <ul> - <li>1: [label, color]</li> - <li>2: [label, color]</li> - <li>...7</li> - </ul> - </li> - <li>Notes -- label, type, hide</li> - <li>InfoOrigin -- label, type, hide</li> - <li>Citation -- label, type, hide</li> - <li>Category -- label, type, hide</li> - </ul> - </li> - <li> - Comment Types - <ul> - <li>slug</li> - <li>label</li> - <li> - prompts - <ul> - <li>1: [format, prompt, help, feedback]</li> - <li>2: [format, prompt, help, feedback]</li> - </ul> - </li> - </ul> - </li> - </ul> - <p>NOTES: </p> - <ul> - <li> - `isProvenance` will place a field in the Proveannce tab. But we do not - expect teachers to need to change that. - </li> - <li> - Ideally teachers can add and remove new Node and Edge field definitions, - rather merely re-purposing existing fields. e.g. they might add an Event - Date field. - </li> - </ul> - </div> - ); - return ( - <SettingsContext.Provider value={api} modified={mod}> - <button style={btnStyle} onClick={saveChanges} disabled={!mod}> + /// RENDER /// + + // save, revert, toggle + const ButtonBar = hasLock ? ( + <div> + <button style={btnStyle} onClick={submitChanges} disabled={!mod}> Save Changes </button> -   <button style={btnStyle} onClick={revertChanges} disabled={!mod}> Revert Changes </button> - <button style={btnStyle} onClick={() => setShowToDo(!showToDo)}> +   + <button style={opBtnStyle} onClick={() => setShowToDo(!showToDo)}> {showToDo ? 'ShowWIP' : 'ShowToDo'} </button> - {!showToDo && - Object.keys(propDefs).map(gn => ( - <PropertyGroup - groupDef={{ [gn]: propDefs[gn] }} - metaDef={{ [gn]: metaDefs[gn] }} - key={gn} - /> - ))} - {showToDo && toDoList} + </div> + ) : ( + <p>Template is locked by another user.</p> + ); + + // note: template global settings not grouped, so prepend as special case group="" + const GroupList = groupList.map(gn => <PropertyGroup groupName={gn} key={gn} />); + GroupList.unshift(<PropertyGroup groupName="" key="global-settings" />); + + // + + return ( + <SettingsContext.Provider value={value}> + {ButtonBar} + {!showToDo && GroupList} + {showToDo && ToDoList} </SettingsContext.Provider> ); } diff --git a/app/view/netcreate/components/MURSettingsToDo.jsx b/app/view/netcreate/components/MURSettingsToDo.jsx new file mode 100644 index 000000000..9295ae58d --- /dev/null +++ b/app/view/netcreate/components/MURSettingsToDo.jsx @@ -0,0 +1,125 @@ +/*//////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ + + MUR Settings To Do List + This is just a list of things that need to be done, imported by + MURSettingsEditor.jsx as a reminder of what needs to be done. + +\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * //////////////////////////////////////*/ + +const React = require('react'); + +/// TO DO LIST //////////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +module.exports = ( + <div> + <p> + This list is defined in MURSettingsToDo.jsx and imported by + MURSettingsEditor.jsx. + </p> + <ul> + <li> + graphName <tt>:string</tt> + </li> + <li> + graphDescription <tt>:string</tt> + </li> + <li> + secretKey (for tokens) <tt>:string</tt> + </li> + <li> + adminPassword <tt>:string</tt> + </li> + <li> + Node Definitions + <ul> + <li> + Node Type + <ul> + <li> + 1: [label<tt>:string</tt>, color<tt>:colorChoice</tt>] + </li> + <li>...7</li> + </ul> + </li> + <li> + Notes: label<tt>:string</tt>, hide + <tt>:boolean</tt> + </li> + <li> + Info: label<tt>:string</tt>, hide<tt>:boolean</tt> + </li> + <li> + InfoSource: label<tt>:string</tt>, hide + <tt>:boolean</tt> + </li> + </ul> + </li> + <li> + Edge Definitions + <ul> + <li> + Edge Type + <ul> + <li> + 1: [label<tt>:string</tt>, color<tt>:colorChoice</tt>] + </li> + <li>...7</li> + </ul> + </li> + <li> + Notes: label<tt>:string</tt>, hide + <tt>:boolean</tt> + </li> + <li> + InfoOrigin: label<tt>:string</tt>, hide + <tt>:boolean</tt> + </li> + <li> + Citation: label<tt>:string</tt>, hide + <tt>:boolean</tt> + </li> + <li> + Category: label<tt>:string</tt>, hide + <tt>:boolean</tt> + </li> + </ul> + </li> + <li> + Comment Types + <ul> + <li> + slug<tt>:string</tt> + </li> + <li> + label<tt>:string</tt> + </li> + <li> + prompts + <ul> + <li> + 1: [format<tt>:string</tt>, prompt<tt>:string</tt>, help + <tt>:string</tt>, feedback<tt>:string</tt>] + </li> + <li> + 2: [format<tt>:string</tt>, prompt<tt>:string</tt>, help + <tt>:string</tt>, feedback<tt>:string</tt>] + </li> + </ul> + </li> + </ul> + </li> + </ul> + <p>NOTES: </p> + <ul> + <li> + `isProvenance` will place a field in the Proveannce tab. But we do not expect + teachers to need to change that. + </li> + <li> + Ideally teachers can add and remove new Node and Edge field definitions, + rather merely re-purposing existing fields. e.g. they might add an Event Date + field. + </li> + </ul> + </div> +); diff --git a/app/view/netcreate/components/MURTextInput.jsx b/app/view/netcreate/components/MURTextInput.jsx index 7cdf3da4b..1c7a9cdce 100644 --- a/app/view/netcreate/components/MURTextInput.jsx +++ b/app/view/netcreate/components/MURTextInput.jsx @@ -1,86 +1,92 @@ /*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ MUR Text Input Component - used by mur-settings-client.jsx to generate a text input component \*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ const React = require('react'); -const { Settings } = require('ursys-min'); // import the settings manager const RSB = require('./react-settings-bridge'); +const { ConsoleStyler } = require('ursys-min'); /// CONSTANTS ///////////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const DBG = true; const LOG = console.log.bind(console); -const SettingsContext = RSB.GetSettingsContext(); +const PR = ConsoleStyler('InText', 'TagBlue'); /// STYLING OBJECTS /////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const { itemGrid, labelStyle, inputStyle, popupStyle, modColor } = RSB.GetStyles(); +/// HELPER METHODS //////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** quote a string or return as-is number */ +function $(strOrNum) { + return typeof strOrNum === 'string' ? `'${strOrNum}'` : strOrNum; +} + /// TEXT INPUT COMPONENT ////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** A TextInput component */ function TextInput(props) { - const { propDef, metaDef } = props; - if (DBG) { - if (typeof propDef !== 'object') return <p>TextInput bad groupDef</p>; - if (typeof metaDef !== 'object') return <p>TextInput bad metaDef</p>; - } - const { value, default: defValue } = propDef; - const { label, tooltip, help, placeholder } = metaDef; + const { propDef } = props; + const { draft, hasLock, dispatch } = React.useContext(RSB.SettingsContext); + const data = RSB.DecodeUIData(draft.template, propDef); + const { name, value, default: defValue } = data; + const { label, tooltip, help, placeholder } = data; + // declare reactive render state + // note that this only runs on the FIRST render, which is why + // we need the useEffect() to work around it const [labelColor, setLabelColor] = React.useState('black'); const [tooltipStyle, setTooltipStyle] = React.useState({ ...popupStyle }); - const [oldStyle, setOldStyle] = React.useState({ ...popupStyle }); - const [oldValue] = React.useState(value || defValue); + const templateValue = value || defValue; const [inputValue, setInputValue] = React.useState(value || defValue); - /// CONTEXT /// - - const api = React.useContext(SettingsContext); - - /// TESTS /// - - function assert_is_modified() { - if (label === 'description') - console.log( - `old / input / propDef\n${oldValue} \t${inputValue} \t${propDef.value}` - ); - } + // this is a workaround for React's stupidity about dataflow, state + // retention with hooks, and other bullshit. + React.useEffect(() => { + if (!draft.pending) { + const data = RSB.DecodeUIData(draft.template, propDef); + setInputValue(data.value || data.default); + } + }, [draft.pending]); /// UI-SETTINGS INTEROP EVENT UPDATES /// - // send data to settings object, which will trigger rerender - const submitToSettings = async value => { - LOG('would check data', propDef); - LOG('would call RSB.UpdateProperty(args)'); - // api.forceUpdate(); + // send data to draft object, which will trigger rerender + const submitToSettings = async event => { + const value = String(event.target.value); + dispatch({ + op: 'update', + propDef, + value + }); }; /// LOCAL EVENT UPDATES /// - // input changes will update the current inputValue + // input changes will update the current templateValue =value || defValue; const handleTyping = event => { - propDef.value = event.target.value; - setInputValue(propDef.value); + const value = event.target.value; + setInputValue(value); }; - // input key return will submit the value to settings object + // input key return will submit the value to draft object const handleEnterKey = async event => { - if (event.key === 'Enter') submitToSettings(event.target.value); + if (event.key === 'Enter') submitToSettings(event); }; // hovering over label will show tooltip const handleTooltip = event => { if (event.type === 'mouseover') { const offset = RSB.EventTargetOffsetStyle(event); + const content = tooltip || ''; setTooltipStyle({ ...popupStyle, ...offset, display: 'block', - content: tooltip || '' + content }); setLabelColor('maroon'); } else if (event.type === 'mouseout') { @@ -89,32 +95,32 @@ function TextInput(props) { } }; - // hovering over a changed input will show the old value - const showOldValue = event => { - if (oldValue === inputValue) { - setOldStyle({ ...popupStyle }); - return; - } else if (event.type === 'mouseover') { - const offset = RSB.EventTargetOffsetStyle(event); - setOldStyle({ - ...popupStyle, - ...offset, - display: 'block', - content: oldValue || '' - }); - } else if (event.type === 'mouseout') { - setOldStyle({ ...popupStyle }); - } - }; - /// RENDER /// - // conditional flags based on inputValue - const mod = inputValue !== oldValue; + // conditional flags based on templateValue =value || defValue; + const mod = templateValue !== inputValue; const bgColor = mod ? modColor : 'white'; const pad = mod ? '1rem' : '0'; - // assert_is_modified(); + const InputField = hasLock ? ( + <input + type="text" + name={`${name}`} + style={{ + ...inputStyle, + color: labelColor, + backgroundColor: bgColor, + paddingRight: pad + }} + value={inputValue} + onKeyDown={handleEnterKey} + onBlur={submitToSettings} + onChange={handleTyping} + disabled={!hasLock} + /> + ) : ( + <p>{inputValue}</p> + ); return ( <div style={itemGrid}> @@ -126,27 +132,8 @@ function TextInput(props) { > {label || name} </label> - <input - type="text" - name="${name}" - style={{ - ...inputStyle, - color: labelColor, - backgroundColor: bgColor, - paddingRight: pad - }} - defaultValue={inputValue} - onKeyDown={handleEnterKey} - onBlur={submitToSettings} - onInput={handleTyping} - onMouseOver={showOldValue} - onMouseOut={showOldValue} - /> + {InputField} {tooltip && <div style={tooltipStyle}>{tooltip}</div>} - <div style={oldStyle}> - <span style={{ opacity: 0.5 }}>old value: </span> - {oldValue} - </div> </div> ); } diff --git a/app/view/netcreate/components/NCAdvancedPanel.jsx b/app/view/netcreate/components/NCAdvancedPanel.jsx index 7b278e1c4..169121dd9 100644 --- a/app/view/netcreate/components/NCAdvancedPanel.jsx +++ b/app/view/netcreate/components/NCAdvancedPanel.jsx @@ -64,8 +64,13 @@ const VIEWS = { /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// export a class object for consumption by brunch/require function NCAdvancedPanel() { + // HACK MAKE SURE TO CHANGE BACK BEFORE PR SUBMISSION - + // this completely bypasses the adminPassword checks // const [isOpen, setIsOpen] = useState(false); const [openTab, setOpenTab] = useState('importexport'); + // const [isOpen, setIsOpen] = useState(true); + // const [openTab, setOpenTab] = useState('settings'); + // HACK MAKE SURE TO CHANGE BACK BEFORE PR SUBMISSION - const [password, setPassword] = useState(''); const [hasAdminPermissions, setHasAdminPermissions] = useState(undefined); @@ -100,7 +105,16 @@ function NCAdvancedPanel() { ); const isAdmin = TEMPLATE && TEMPLATE.adminPassword && TEMPLATE.adminPassword === password; - setHasAdminPermissions(isAdmin); + if (!DBG) setHasAdminPermissions(isAdmin); + // HACK: disable admin password for prop-settings-2 + else { + console.log( + '%c*** DBG Mode: AdminPassword Bypassed ***', + 'color: red; font-weight: bold;' + ); + setHasAdminPermissions(true); + } + // HACK END const PERMISSIONS = UDATA.AppState('PERMISSIONS'); UDATA.SetAppState('PERMISSIONS', { ...PERMISSIONS, isAdmin }); @@ -154,9 +168,7 @@ function NCAdvancedPanel() { let adminStatus; if (hasAdminPermissions === undefined) { adminStatus = <span>Admin Mode Disabled</span>; - console.error( - '"adminPassword" has not been defined in template! You will not be able to access admin features. Add a "adminPassword" property to the template to enable admin features.' - ); + console.log(`NOTE: "adminPassword" is not set (premature mount?)`); } else if (hasAdminPermissions === false) adminStatus = ( <label> diff --git a/app/view/netcreate/components/NCTemplate.jsx b/app/view/netcreate/components/NCTemplate.jsx index 18ae16a70..2a7c2391a 100644 --- a/app/view/netcreate/components/NCTemplate.jsx +++ b/app/view/netcreate/components/NCTemplate.jsx @@ -24,7 +24,7 @@ ## BACKGROUND - Template data is loaded by `server-database` DB.InitializeDatabase call. + Template data is loaded by `server-database` DB.InitializeDataset call. \*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * //////////////////////////////////////*/ @@ -267,82 +267,52 @@ class NCTemplate extends UNISYS.Component { // OK to Edit, show edit buttons editorjsx = ( <div hidden={isBeingEdited}> - <p> - <b>PROCEED WITH CAUTION!</b>: Editing templates will modify the data in - your dataset and may leave your dataset in an unusable state. Only{' '} - <b>expert users</b> who know how the data is set up should do this. - </p> - <div - style={{ - display: 'grid', - gridTemplateColumns: 'repeat(2, 1fr)', - columnGap: '10px', - rowGap: '5px' - }} - > - <i className="small text-muted">Edit Current Template Options</i> - <br /> - <button size="sm" onClick={this.onEditNodeTypes} disabled> - Edit Node Types - </button> - <button size="sm" onClick={this.onEditEdgeTypes} disabled> - Edit Edge Types - </button> - </div> <div> <div style={{ color: 'red' }}> [Edit Node Types] and [Edit Edge Types] are currently disabled because JSON Editor has been deprecated. Stay tuned for return of that functionality. </div> - <p></p> - <p></p> - <hr /> <hr /> <p>ADVANCED USERS ONLY</p> <p></p> - <div> - <i className="small text-muted"> - Import TOML template (replace existing template) - </i> + <i className="small text-muted"> + Import TOML template (replace existing template) + </i> + <br /> + <label> + <input + type="file" + accept="text/toml" + id="tomlfileInput" + onChange={this.onTOMLfileSelect} + /> +  <i>{tomlfileStatus}</i> <br /> - <label> - <input - type="file" - accept="text/toml" - id="tomlfileInput" - onChange={this.onTOMLfileSelect} - /> -  <i>{tomlfileStatus}</i> - <br /> - {tomlfileErrors && ( - <span style={{ color: 'red' }}>{tomlfileErrors}</span> - )} - </label> - </div> + {tomlfileErrors && ( + <span style={{ color: 'red' }}>{tomlfileErrors}</span> + )} + </label> <p></p> - <i className="small text-muted">Current Template</i> + <i className="small text-muted">Download Current Template</i> <br /> <button size="sm" onClick={this.onDownloadTemplate}> Download Current Template </button> - <p></p> - <i className="small text-muted">Create New Template</i> - <br /> - <button size="sm" onClick={this.onNewTemplate} disabled> - New Template - </button> <br /> + <hr /> <div style={{ color: 'red' }}> - [New Template] is disabled because JSON Editor has been deprecated. Stay - tuned for return of that functionality. + [Create New Template] is disabled because JSON Editor has been + deprecated. Stay tuned for return of that functionality. </div> <p></p> </div> - <hr /> </div> ); } + + /// RENDER /// + return ( <div style={{ @@ -354,6 +324,7 @@ class NCTemplate extends UNISYS.Component { <p> <label>Current Template File Name:</label> <code>{tomlfilename}</code> </p> + <hr /> {editorjsx} <div hidden={!isBeingEdited}> <button onClick={this.onCancelEdit} size="sm"> diff --git a/app/view/netcreate/components/react-settings-bridge.js b/app/view/netcreate/components/react-settings-bridge.js index 38ee92989..c5d1cb6e2 100644 --- a/app/view/netcreate/components/react-settings-bridge.js +++ b/app/view/netcreate/components/react-settings-bridge.js @@ -1,112 +1,215 @@ /*///////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ React Settings Bridge - bridges the difference legacy netcreate modules and new settings manager + bridges the difference legacy netcreate modules and typescript modules + in the MUR subsystem (part of our long-term migration strategy) + + TEMPLATE API + + In NetCreate, AppState('TEMPLATE') is a settings object that is persisted + to disk. It is more than just a template, despite its name. It also contains + various definitions for UI and data construction. + + STYLING OBJECTS + + Provides css-in-js styling objects for use in the MUR components that have + been converted to (ugh) React \*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * /////////////////////////////////////*/ const React = require('react'); const { Settings, ConsoleStyler } = require('ursys-min'); const UNISYS = require('unisys/client'); +const DATASTORE = require('system/datastore'); +const LOCKMGR = require('../lock-mgr'); /// RUNTIME UNISYS HOOKS ////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const LOG = console.log.bind(console); -const PR = ConsoleStyler('SettingClient', 'TagBlue'); +const PR = ConsoleStyler('SetBridge', 'TagBlue'); const DBG = true; /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/// UNISYS data system const MOD = UNISYS.NewModule(module.id); +const UDATA = UNISYS.NewDataLink(MOD); -/// SETTINGS CHANGE SUBSCRIPTION ////////////////////////////////////////////// +/// HELPER METHODS //////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: Subscribe to changes in the settings object - * @param string event - 'group', 'group.prop', or '*' for all changes - * @param function changeHandler - (propDef, eventObj) => {} */ -function Subscribe(event, changeHandler) { - Settings.Subscribe(event, changeHandler); +/** quote a string or return as-is number */ +function $(strOrNum) { + return typeof strOrNum === 'string' ? `'${strOrNum}'` : strOrNum; } + +/// DISPATCHER API //////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: Subscribe to changes in the settings object - * @param string event - 'group', 'group.prop', or '*' for all changes - * @param function changeHandler - (propDef, eventObj) => {} */ -function Unsubscribe(event, changeHandler) { - Settings.Unsubscribe(event, changeHandler); +/// REACT: This is how React components can access the value of +/// <SettingsContext.Provider value={value}> through useContext(SettingsContext) +const SettingsContext = React.createContext({ origin: 'react-settings-bridge' }); +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: used by MURSettingsEditor useReducer, which returns [state, dispatch] + * during construction. See nc-settings-client.ts for more info. Returns + * a new state object as required by React's useReducer. */ +function Dispatch(state, action) { + return Settings.Dispatch(state, action); } - -/// REACT SETTINGS API //////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: PropertyDefs define the type and default value of a property, but not - * the value itself. */ -function GetPropertyDefs() { - return Settings.Get('PropertyDefs'); +/** API: Get the current template from the UDATA AppState */ +function GetTemplate() { + const template = UDATA.AppState('TEMPLATE'); + return template; } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: MetaDefs define metadata for a property's UI representation */ -function GetMetaDefs() { - return Settings.Get('MetaDefs'); +/** API: invokes SRV_TEMPLATE_SAVE to save template to the server. The server + * will send NET_TEMPLATE_UPDATE to all clients with the updated template */ +function PersistTemplate(templateObj) { + return DATASTORE.SaveTemplateFile(templateObj); } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: Update a property in the settings object. - * @param string dotProp - 'group.prop' - * @param any value - new value for the property */ -async function UpdateProperty(dotProp, value) { - const opResult = await Settings.UpdateProperty(dotProp, value); - if (opResult.status === 'ok') return opResult; - throw Error(`Failed to update ${dotProp} with value ${value}`); +/** API HELPER: splits a dotProp string into groupName and propName */ +function DecodeDotProp(dotProp) { + return Settings.DecodeDotProp(dotProp); } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API: Update a group in the settings object. - * @param string groupName - 'group' - * @param object propObj - { prop: value, prop2: value2 } */ -async function UpdateGroup(groupName, propObj) { - const opResult = await Settings.UpdateGroup(groupName, propObj); - if (opResult.status === 'ok') return opResult; - throw Error(`Failed to update group ${groupName} with properties ${propObj}`); +/** API HELPER: create a dotProp string from groupName and propName */ +function EncodeDotProp(groupName, propName) { + return Settings.EncodeDotProp(groupName, propName); +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API HELPER: Given a settings object and dotProp, return all UI-relevant + * data. The settings object could be TEMPLATE or from React Context value. + * Since this is a legacy codebase, we don't have access to ?. operators */ +function DecodeUIData(setObj, dotProp) { + const fn = 'DecodeUIData:'; + if (typeof setObj !== 'object') throw Error(`${fn} arg1 must be a settings object`); + if (typeof dotProp !== 'string') throw Error(`${fn} arg2 must be a dotProp string`); + const [groupName, propName] = DecodeDotProp(dotProp); // throws error if not valid + // determine value stored in the settings object + const setUI = setObj._ui; + let value; + let uiData; + if (groupName === undefined) { + // case 1: no groupName, just propName + value = setObj[propName]; + if (value === undefined) return { value, error: `no value for ${dotProp}` }; + if (!setUI || !setUI[propName]) + return { groupName, propName, value, error: `no UI data for ${dotProp}` }; + uiData = setUI[propName]; + return { value, ...uiData }; + } else { + // case 2: groupName and propName + if ( + setObj[groupName] === undefined || + setObj[groupName][propName] === undefined + ) { + return { value: undefined, error: `no value for ${dotProp}` }; + } + value = setObj[groupName][propName]; + if (!setUI || !setUI[groupName] || !setUI[groupName][propName]) { + return { groupName, propName, value, error: `no UI data for ${dotProp}` }; + } + uiData = setUI[groupName][propName]; + return { groupName, propName, value, ...uiData }; + } +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API HELPER: determine if passed object is a ui object which has a type */ +function IsUIObj(uobj) { + // either a property or property in a group + if (uobj === undefined || typeof uobj !== 'object') + throw Error('uobj must be an object'); + return typeof uobj.type === 'string'; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API HELPER: determine if passed object is a ui group which has properties */ +function IsUIGroup(uobj) { + // a group is an object with properties, not a property itself + if (uobj === undefined || typeof uobj !== 'object') + throw Error('uobj must be an object'); + if (Object.keys(uobj).length === 0) return false; // empty group + if (uobj.type !== undefined) return false; // not a group, it's a property + // got this far so it's probably a valid group + return Object.keys(uobj).some(key => IsUIObj(uobj[key])); } -/// DECODERS ////////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** UTILITY: Return the name of the single key in an object, undefined - * otherwise */ -function GetSingularKey(obj) { - const groupList = Object.keys(obj).filter(key => !key.startsWith('_')); - if (groupList.length !== 1) return; - return groupList[0]; -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** UTILITY: Dereference groupObj, returning groupName and properties list */ -function DerefGroupDef(groupObj) { - const groupName = GetSingularKey(groupObj); - if (groupName === undefined) return { error: 'groupObj must have a single key' }; - const properties = groupObj[groupName]; - const deref = { groupName, properties }; - // - return deref; // { groupname, properties:{[propName]:{ definition props }} } -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** UTILITY: Dereference metaObj, returning just the properites for the */ -function DerefSingularMetaDef(metaObj) { - const groupName = GetSingularKey(metaObj); - if (groupName === undefined) return { error: 'metaObj must have a single key' }; - const deref = metaObj[groupName]; - // - return deref; // { metadata props } -} -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** UTILITY: promote a named key as the direct value of a property, - * converting { group:{prop:{value:1}} } to { group: {prop:1} } for using - * in a settings values structure */ -function FlattenPropertyDefs(propDefs, key = 'value') { - const flat = {}; - Object.keys(propDefs).forEach(groupName => { - flat[groupName] = {}; - const group = propDefs[groupName]; - Object.keys(group).forEach(propName => { - const propDef = group[propName]; - flat[groupName][propName] = propDef[key]; - }); +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API HELPER: Given a uiData object, return a list of global settings and + * a list of groups found without further decoding the group properties */ +function GetUISettingsList(uiData) { + if (uiData === undefined || typeof uiData !== 'object') + return { error: 'uiData is not anobject' }; + if (Object.keys(uiData).length === 0) + return { globalsList: [], groupList: [], error: 'uiData is empty' }; + const globalsList = []; + const groupList = []; + Object.keys(uiData).forEach(g => { + const entry = uiData[g]; + if (IsUIObj(entry)) globalsList.push(g); + else if (IsUIGroup(entry)) groupList.push(g); }); - return flat; + return { globalsList, groupList }; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Check if there are any pending changes in the settings object, + * (the TEMPLATE AppState) which is maintained by an immer draft. + * This flag is is true while the dispatched state has a non-null + * pending property (this is a copy of TEMPLATE). */ +function HasPendingChanges() { + return Settings.HasPendingChanges(); +} + +/// LOCKING /////////////////////////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +let m_client_has_lock = false; // true if we have a lock on the template +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Get the current lock state of the settings object, which covers + * more than just the template. See IsTemplateLocked() for specifics */ +function GetLockState() { + return UDATA.AppState('LOCKSTATE') || { error: 'AppState LOCKSTATE undefined' }; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Check if the template should be considered "locked" based on the + * the flags that are set by various components in NetCreate.*/ +function IsTemplateLocked(lockState = GetLockState()) { + const { templateBeingEdited } = lockState; + const { importActive, nodeOrEdgeBeingEdited } = lockState; + return templateBeingEdited || importActive || nodeOrEdgeBeingEdited; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Call when opening MURSettingsEditor.LockManager sets AppState + * for LOCKSTATE. Return true if successful lock */ +async function LockTemplate() { + const lockState = await LOCKMGR.RequestTemplateLock(); + const { success, error, lockedBy } = lockState; + if (error) return false; + if (success) return true; + throw Error('LockTemplate: unexpected lock state'); +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Call when closing MURSettingsEditor. Naively assume it worked, because + * the entire locking architecture is a mess and we don't have a way to + * reliably detect lock authority. */ +async function ReleaseTemplate() { + const lockState = await LOCKMGR.RequestTemplateUnlock(); + const { success, error } = lockState; + if (error) return false; + if (success) return true; + throw Error('UnlockTemplate: unexpected lock state'); +} + +/// SETTINGS CHANGE SUBSCRIPTION ////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Subscribe to changes in the settings object + * @param string event - 'group', 'group.prop', or '*' for all changes + * @param function changeHandler - (propDef, eventObj) => {} */ +function Subscribe(event, changeHandler) { + Settings.Subscribe(event, changeHandler); +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Subscribe to changes in the settings object + * @param string event - 'group', 'group.prop', or '*' for all changes + * @param function changeHandler - (propDef, eventObj) => {} */ +function Unsubscribe(event, changeHandler) { + Settings.Unsubscribe(event, changeHandler); } /// SHARED STYLING OBJECTS //////////////////////////////////////////////////// @@ -131,7 +234,7 @@ const popupStyle = { backgroundColor: 'gray', color: 'white', padding, - zIndex: 1000, + zIndex: 10000, maxWidth: '20rem', display: 'none' }; @@ -150,76 +253,42 @@ function GetStyles() { /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function EventTargetOffsetStyle(event) { const rect = event.target.getBoundingClientRect(); + const advPanel = document.querySelector('#popover'); + const advRect = advPanel + ? advPanel.getBoundingClientRect() + : { left: '0px', top: '0px' }; return { - left: `${rect.left + window.scrollX}px`, - top: `${rect.top + window.scrollY + rect.height + 2}px` - }; -} - -/// CUSTOM HOOK FOR SETTINGS CONTEXT ////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** React Hook to manage settings context. The original reference - * implementation is in mur-settings-context */ -function useSettings(initialSettings = {}) { - // - const [lastSettingsUpdate, _updateSettings] = React.useState({}); - - /** universal get settings */ - const get = dotProp => Settings.Get(dotProp); - - /** update property via settings manager, then trigger rerender */ - const updateProperty = async (dotProp, value) => { - const opResult = await Settings.UpdateProperty(dotProp, value); - const { error, changed } = opResult; - if (error) { - console.error(`updateProperty: ${error}`); - return false; // indicate failure - } - _updateSettings(opResult); // trigger a rerender - return true; - }; - - /** update group of properties via settings manager, then trigger rerender */ - const updateGroup = async (groupName, propObj) => { - const opResult = await Settings.UpdateGroup(groupName, propObj); - const { error, changed } = opResult; - if (error) { - console.error(`updateGroup: ${error}`); - return false; - } - _updateSettings(opResult); // trigger a rerender - return true; - }; - - return { - // to trigger rerender - lastSettingsUpdate, - // api - get, - updateProperty, - updateGroup + left: `${rect.left - advRect.left}px`, + top: `${rect.top - advRect.top + rect.height + 4}px` }; } /// EXPORTS /////////////////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - module.exports = { - GetPropertyDefs, - GetMetaDefs, - // - DerefGroupDef, - DerefSingularMetaDef, - FlattenPropertyDefs, - // - UpdateProperty, - UpdateGroup, - // - Subscribe, - Unsubscribe, - // + // React Context + SettingsContext, // used by MURSettingsEditor to provide Provider + // Template Settings API + Dispatch, // state, action + GetTemplate, // use UDATA.AppState('TEMPLATE') to return the template + PersistTemplate, // dataObj => { template: dataObj } + DecodeUIData, // setObj, dotProp => { value, ...uiData } + GetUISettingsList, // uiData => { globalsList, groupSettings } + HasPendingChanges, // return true if there are pending changes + // Locking API + GetLockState, // ()=>AppState('LOCKSTATE') + IsTemplateLocked, // return true if template considered "locked" + LockTemplate, // ()=> { templateBeingEdited, importActive, nodeOrEdgeBeingEdited } + ReleaseTemplate, // ()=> { templateBeingEdited, importActive, nodeOrEdgeBeingEdited } + // PropDef and MetaDef helpers + DecodeDotProp, // 'group.prop' => { groupName, propName } + EncodeDotProp, // { groupName, propName } => 'group.prop' + IsUIObj, // uobj => true if it has a type + IsUIGroup, // uobj => true if it has properties + // Styling API GetStyles, EventTargetOffsetStyle, - // - GetSettingsContext: Settings.GetSettingsContext, - useSettings // locally-defined to match react version/instance + // Use these with React useEffect mount/unmount + Subscribe, + Unsubscribe }; diff --git a/app/view/netcreate/lock-mgr.js b/app/view/netcreate/lock-mgr.js index ca0f388ee..43d0c8f78 100644 --- a/app/view/netcreate/lock-mgr.js +++ b/app/view/netcreate/lock-mgr.js @@ -20,8 +20,8 @@ - lock-mgr makes to request to the server - server passes the call to server-database.GetEditStatus - server-database returns the new value - - server sends EDIT_PERMISSIONS_UPDATE to all clients - - EDIT_PERMISSIONS_UPDATE tells lock-mgr to update the LOCKMGR state + - server sends CLI_UPDATE_LOCKSTATE to all clients + - CLI_UPDATE_LOCKSTATE tells lock-mgr to update the LOCKMGR state Used by: - NCNode @@ -37,6 +37,7 @@ const { EDITORTYPE } = require('system/util/enum'); /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const DBG = false; const PR = 'lock-mgr: '; +const LOG = console.log.bind(console); /// MODULE INITIALIZATION ///////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -51,7 +52,7 @@ const UDATA = UNISYS.NewDataLink(MOD); /*/ MOD.Hook('INITIALIZE', () => { m_Init(); - UDATA.HandleMessage('EDIT_PERMISSIONS_UPDATE', m_UpdateLockState); + UDATA.HandleMessage('CLI_UPDATE_LOCKSTATE', m_UpdateLockState); UDATA.HandleMessage('COMMENT_UPDATE_PERMISSIONS', m_UpdateLockState); }); // end UNISYS_INIT @@ -111,26 +112,77 @@ function RequestUnlockEdge(edgeId, cb) { if (typeof cb === 'function') cb(data.locked); }); } + +/// NEW TEMPLATE LOCKING SYSTEM /////////////////////////////////////////////// +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Request a lock on the template being edited if it's available, + * using new lock manager system added in 2025. */ +async function RequestTemplateLock() { + const lockState = await UDATA.Call('SRV_REQ_TEMPLATE_LOCK'); + const { success, uaddr, error, lockedBy } = lockState; + if (error) { + LOG(PR, 'LockTemplate failed:', lockState); + m_UpdateLockState({ templateBeingEdited: false }); + } else if (success) { + LOG(PR, 'LockTemplate succeeded:', lockState); + m_UpdateLockState({ templateBeingEdited: true }); + } else { + LOG(PR, 'LockTemplate returned unexpected state:', lockState); + } + return lockState; +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** API: Release the lock on the template being edited using new lock manager + * system added in 2025. */ +async function RequestTemplateUnlock() { + const lockState = await UDATA.Call('SRV_REQ_TEMPLATE_UNLOCK'); + const { success, error } = lockState; + LOG(PR, 'RequestTemplateUnlock returned:', lockState); + if (error) { + LOG(PR, `error: ${error}`); + return lockState; + } + if (success) { + LOG(PR, 'UnlockTemplate succeeded:', lockState); + m_UpdateLockState({ templateBeingEdited: false }); + return lockState; + } + LOG(PR, 'UnlockTemplate returned unexpected state:', lockState); + return lockState; +} + +/// OLD TERRIBLE CALLS //////////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function RequestEditLock(editorType, cb) { - if (cb) - UDATA.NetCall('SRV_REQ_EDIT_LOCK', { editor: editorType }).then(data => { - if (typeof cb === 'function') cb(data); - }); - else UDATA.NetSignal('SRV_REQ_EDIT_LOCK', { editor: editorType }); +/** Generic Lock Request: editor types is defined in system/util/enum.js. + * For this call, 'template' or 'importer' are expected. */ +async function RequestEditLock(editor) { + if (editor !== EDITORTYPE.TEMPLATE && editor != EDITORTYPE.IMPORTER) { + return { + error: `Skipped invalid editor ${editor} for edit lock request` + }; + } + const status = await UDATA.Call('SRV_REQ_EDIT_LOCK', { editor }); + + return status; } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -function RequestEditUnlock(editorType, cb) { - if (cb) - UDATA.NetCall('SRV_RELEASE_EDIT_LOCK', { editor: editorType }).then(data => { - if (typeof cb === 'function') cb(data.locked); - }); - else UDATA.NetSignal('SRV_RELEASE_EDIT_LOCK', { editor: editorType }); +/** Generic Unlock Request: editorType is defined in system/util/enum.js. + * For this call, 'template' or 'importer' are expected. */ +async function RequestEditUnlock(editor) { + if (editor !== EDITORTYPE.TEMPLATE && editor != EDITORTYPE.IMPORTER) { + return { + error: `Skipped invalid editor ${editor} for edit lock release` + }; + } + const status = await UDATA.NetCall('SRV_RELEASE_EDIT_LOCK', { editor }); + return status; } /// EXPORT REACT COMPONENT //////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - module.exports = { + RequestTemplateLock, + RequestTemplateUnlock, RequestLockNode, RequestUnlockNode, RequestLockEdge, diff --git a/app/view/netcreate/nc-logic.js b/app/view/netcreate/nc-logic.js index c0e8a1007..17d18a74e 100644 --- a/app/view/netcreate/nc-logic.js +++ b/app/view/netcreate/nc-logic.js @@ -185,8 +185,7 @@ var TEMPLATE = null; // template definition for prompts /** Used by LOADASSETS and RELOAD_DB to reload NCDATA from the database. */ function m_PromiseLoadDB() { - return DATASTORE.PromiseD3Data().then(data => { - if (DBG) console.log(PR, 'DATASTORE returned data', data); + return DATASTORE.PromiseDataset().then(data => { m_MigrateData(data.d3data); UTILS.RecalculateAllEdgeSizes(data.d3data); UTILS.RecalculateAllNodeDegrees(data.d3data); @@ -201,14 +200,17 @@ function m_PromiseLoadDB() { /// UNISYS LIFECYCLE HOOKS //////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** LOADASSETS fires before react components are loaded - see client-lifecycle.js for description +/** LOADASSETS fires before react components are loaded. + * This hook will return one of three promises: + * 1. loading cached data from local storage (default not used ever) + * 2. loading data from the saved static files + * 3. loading data from the server (very bottom) */ MOD.Hook('LOADASSETS', () => { if (UNISYS.IsStandaloneMode()) { - // STANDALONE MODE - // Load read-only database from exported db file. - + // + // STANDALONE OPTION 1 - use browser cache + // not generally used, see hardcoded USE_CACHE flag below const USE_CACHE = false; if (USE_CACHE) { console.warn(PR, "STANDALONE MODE: 'LOADASSETS' using browser cache"); @@ -227,15 +229,16 @@ MOD.Hook('LOADASSETS', () => { resolve(); }); } - // don't use cache, but instead try loading standalone files - console.warn( - PR, - "STANDALONE MODE: 'LOADASSETS' is using files (USE_CACHE=false)" - ); + // + // STANDALONE OPTION 2 - load from static files on web server // added by Joshua to check for alternative datasets in the folder + console.warn(PR, "STANDALONE MODE: 'LOADASSETS' loading file from webserver"); let urlParams = new URLSearchParams(window.location.search); let dataset = urlParams.get('dataset'); + // brunch-config 'package' writes standalone-db.json as fallback + // as well as the [dataset]-db.json file if (dataset === null) dataset = 'standalone'; + // retrieve return new Promise(resolve => { (async () => { let p1 = await DATASTORE.PromiseJSONFile('data/' + dataset + '-db.json').then( @@ -261,8 +264,11 @@ MOD.Hook('LOADASSETS', () => { })(); }); } + // + // NETWORK OPTION - if got this far, then we're NOT in standalone mode + // and do the normal load from the database return Promise.all([m_PromiseLoadDB()]); -}); // loadassets +}); // end LOADASSETS HOOK /// UNISYS LIFECYCLE HOOKS //////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -851,7 +857,7 @@ MOD.Hook('APP_READY', function (info) { 'COMMENT_UPDATE', 'COMMENTS_UPDATE', 'READBY_UPDATE', - 'EDIT_PERMISSIONS_UPDATE', + 'CLI_UPDATE_LOCKSTATE', 'NET_TEMPLATE_UPDATE' ]).then(d => { clearTimeout(timeout); diff --git a/app/view/netcreate/nc-ui.js b/app/view/netcreate/nc-ui.js index 81c79517b..e8f71cb53 100644 --- a/app/view/netcreate/nc-ui.js +++ b/app/view/netcreate/nc-ui.js @@ -48,7 +48,6 @@ MD.use(MDEMOJI); const MDPARSE = require('html-react-parser').default; const NCDialogInsertImageURL = require('./components/NCDialogInsertImageURL'); import URDateField from './components/URDateField'; -import TEMPLATE_MGR from './template-mgr'; /// CONSTANTS & DECLARATIONS ////////////////////////////////////////////////// /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -218,10 +217,28 @@ function RenderTabSelectors(TABS, state, onclick) { ); } /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** given Node or Edge definition, return array of key names that are + * (1) has isProvenance set (2) doesn't include a field in the passed filter + * array and (3) isn't hidden */ +function m_FilterProvenanceDefKeys(defs, filter_out) { + return Object.keys(defs).filter( + k => defs[k].isProvenance && !filter_out.includes(k) && !defs[k].hidden + ); +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/** given Node or Edge definition, return array of key names that are + * (1) has isProvenance NOT set (2) doesn't include a field in the passed filter + * array and (3) isn't hidden */ +function m_FilteAttributeDefKeys(defs, BUILTIN_FIELDS) { + return Object.keys(defs).filter( + k => !BUILTIN_FIELDS.includes(k) && !defs[k].isProvenance && !defs[k].hidden + ); +} +/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function RenderAttributesTabView(state, defs, BUILTIN_FIELDS) { const { attributes, degrees, weight, size } = state; const items = []; - const attributeDefKeys = TEMPLATE_MGR.GetAttributeDefKeys(defs, BUILTIN_FIELDS); + const attributeDefKeys = m_FilteAttributeDefKeys(defs, BUILTIN_FIELDS); attributeDefKeys.forEach(k => { const def = defs[k]; items.push(RenderLabel(k, def.displayLabel, def.help)); @@ -264,7 +281,7 @@ function RenderAttributesTabView(state, defs, BUILTIN_FIELDS) { function RenderAttributesTabEdit(state, defs, onchange, BUILTIN_FIELDS) { const { attributes, degrees, weight } = state; const items = []; - const attributeDefKeys = TEMPLATE_MGR.GetAttributeDefKeys(defs, BUILTIN_FIELDS); + const attributeDefKeys = m_FilteAttributeDefKeys(defs, BUILTIN_FIELDS); attributeDefKeys.forEach(k => { const def = defs[k]; items.push(RenderLabel(k, def.displayLabel)); @@ -323,7 +340,7 @@ function RenderAttributesTabEdit(state, defs, onchange, BUILTIN_FIELDS) { function RenderProvenanceItemsView(state, defs, BUILTIN_FIELDS) { const { provenance } = state; const items = []; - const provenanceDefKeys = TEMPLATE_MGR.GetProvenanceDefKeys(defs, BUILTIN_FIELDS); + const provenanceDefKeys = m_FilterProvenanceDefKeys(defs, BUILTIN_FIELDS); provenanceDefKeys.forEach(k => { const def = defs[k]; items.push(RenderLabel(k, def.displayLabel, def.help)); @@ -353,7 +370,7 @@ function RenderProvenanceItemsView(state, defs, BUILTIN_FIELDS) { function RenderProvenanceItemsEdit(state, defs, onchange, BUILTIN_FIELDS) { const { provenance, degrees } = state; const items = []; - const provenanceDefKeys = TEMPLATE_MGR.GetProvenanceDefKeys(defs, BUILTIN_FIELDS); + const provenanceDefKeys = m_FilterProvenanceDefKeys(defs, BUILTIN_FIELDS); provenanceDefKeys.forEach(k => { const def = defs[k]; items.push(RenderLabel(k, def.displayLabel)); diff --git a/app/view/netcreate/template-editor-mgr.js b/app/view/netcreate/template-editor-mgr.js index a453393af..c8106405a 100644 --- a/app/view/netcreate/template-editor-mgr.js +++ b/app/view/netcreate/template-editor-mgr.js @@ -2,33 +2,18 @@ Template Editor Manager - Client-side - - This handles the UI logic for the "Edit Template" subpanel on the "More..." - tab. - - The actual template loading is handled by `server-database.js`. - - The internal template representation is JSON. - The template definition itself is stored as a TOML file, which is then - converted to JSON when loaded. - - The default json-editor schema is defined in `template-schema.js` + This implements operations related to saving and loading template files + under control of a UI such as NCTemplate or MURSettingsEditor. + Historical Note: This was used for NCTemplate and the old json-editor, + which used template-schema and other now-deprecated files. ## BACKGROUND - Template data is loaded by `server-database` DB.InitializeDatabase call. - - With Version 1.4 of NetCreate, we introduce a new TOML template format that - is easier to work with directly. - * If you open a project that does not have a TOML template, the app will - try to load the old JSON version and convert it. See - server-database.m_LoadJSONTemplate() and m_MigrateJSONtoTOML(). - * If you try to load a TOML template that is missing some key fields - (e.g. error message definitions), then the app will fall back on - fields defined in the schema. See server-database.m_LoadTOMLTemplate()). - + Template data is loaded by `server-database` DB.InitializeDataset call. + The UDATA interface provides AppState('TEMPLATE') and NetSend() messages. + Weirdly, nc-logic manages the reception of template changes from the server + by handling 'NET_TEMPLATE_UPDATE' messages. \*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * //////////////////////////////////////*/ diff --git a/app/view/netcreate/template-mgr.js b/app/view/netcreate/template-mgr.js deleted file mode 100644 index 3b8800f1c..000000000 --- a/app/view/netcreate/template-mgr.js +++ /dev/null @@ -1,72 +0,0 @@ -/*//////////////////////////////// ABOUT \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\ - - Template Manager - - Client-side - - This is a work in progress module that will handle all template management. - Eventually `template-editor-mgr` will probably be folded into this module. - - - ## NOTES - - * Node/Edge Data is retained - The template definitions can be used essentially to show/hide particular fields. - This allows users to switch from one template to another without losing data. - - - ## BACKGROUND - - Template data is loaded by `server-database` DB.InitializeDatabase call. - - With Version 1.4 of Net.Create, we introduce a new TOML template format that - is easier to work with directly. - * If you open a project that does not have a TOML template, the app will - try to load the old JSON version and convert it. See - server-database.m_LoadJSONTemplate() and m_MigrateJSONtoTOML(). - * If you try to load a TOML template that is missing some key fields - (e.g. error message definitions), then the app will fall back on - fields defined in the schema. See server-database.m_LoadTOMLTemplate()). - - With Version 2.0 of Net.Create, we want to centralize all of the template - management logic in this module. - - Used by: - * nc-ui - -\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ * //////////////////////////////////////*/ - -/// API METHODS /////////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/** API METHOD - * Returns an array of attribute keys defined in the template definitions - * Attributes are: - * - Not built-in fields - * - Not provenance fields - * - Not hidden fields - * ...in other words, every other field that has been defined in the template. - */ -function GetAttributeDefKeys(defs, BUILTIN_FIELDS) { - return Object.keys(defs).filter( - k => !BUILTIN_FIELDS.includes(k) && !defs[k].isProvenance && !defs[k].hidden - ); -} -/** API METHOD - * Returns an array of provenance keys defined in the template definitions - * Provenance fields are: - * - Designated as `isProvenance` field - * - Not built-in fields - * - Not hidden fields - */ -function GetProvenanceDefKeys(defs, BUILTIN_FIELDS) { - return Object.keys(defs).filter( - k => defs[k].isProvenance && !BUILTIN_FIELDS.includes(k) && !defs[k].hidden - ); -} - -/// MODULE EXPORTS /////////////////////////////////////////////////////////// -/// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -module.exports = { - GetAttributeDefKeys, - GetProvenanceDefKeys -}; diff --git a/package-lock.json b/package-lock.json index 364534f07..e9915ddb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -86,860 +86,412 @@ "name": "ursys-min", "version": "0.0.1", "dependencies": { - "@melloware/coloris": "^0.24.0", + "immer": "^10.1.1", "yaml": "^2.7.0" }, "devDependencies": { - "esbuild": "^v0.25.0", + "esbuild": "^0.25.5", "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-umd-wrapper": "^3.0.0", "tsx": "^4.19.3" } }, - "_mur/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "_mur/node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", "cpu": [ - "ppc64" + "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "aix" + "darwin" ], "engines": { "node": ">=18" } }, - "_mur/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], + "_mur/node_modules/esbuild": { + "version": "0.25.5", "dev": true, - "optional": true, - "os": [ - "android" - ], + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, - "_mur/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], + "node_modules/@ampproject/remapping": { + "version": "2.2.1", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { - "node": ">=18" + "node": ">=6.0.0" } }, - "_mur/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/code-frame": { + "version": "7.27.1", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "_mur/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/code-frame/node_modules/js-tokens": { + "version": "4.0.0", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "_mur/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/compat-data": { + "version": "7.22.5", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "_mur/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/core": { + "version": "7.22.5", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "_mur/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=18" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "_mur/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=18" + "node": ">=6" } }, - "_mur/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "_mur/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "_mur/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], + "node_modules/@babel/generator": { + "version": "7.23.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "_mur/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], + "node_modules/@babel/generator/node_modules/jsesc": { + "version": "2.5.2", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=18" + "node": ">=4" } }, - "_mur/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.5", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "_mur/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], + "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { + "version": "4.21.9", "dev": true, - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=18" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "_mur/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "_mur/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "_mur/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "_mur/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "_mur/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-compilation-targets/node_modules/update-browserslist-db": { + "version": "1.0.11", "dev": true, - "optional": true, - "os": [ - "sunos" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], - "engines": { - "node": ">=18" + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "_mur/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "_mur/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "_mur/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "_mur/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "node": ">=6.9.0" } }, - "_mur/node_modules/esbuild-plugin-umd-wrapper": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/esbuild-plugin-umd-wrapper/-/esbuild-plugin-umd-wrapper-3.0.0.tgz", - "integrity": "sha512-Ht3jrO7r8oF8FgPIhMnfNQvYLHhz2QA1ggPqfBhoVq0VfYNczqJ6nwQ4PhO5UvrUymn+Q0Nc50xpiDbxI+KR2Q==", - "dev": true - }, - "_ur": { - "name": "@ursys/core", - "version": "0.1", - "extraneous": true, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.5", + "dev": true, + "license": "MIT", "dependencies": { - "fs-extra": "^11.1.1", - "keyv": "^4.5.4", - "keyv-file": "^0.2.0", - "lokijs": "^1.5.12", - "node-dir": "^0.1.17", - "ws": "^8.14.2" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, - "devDependencies": { - "esbuild": "^0.21.4", - "esbuild-plugin-copy": "^2.1.1", - "esbuild-plugin-umd-wrapper": "^2.0.0", - "ts-node": "^10.9.1", - "vitest": "^1.6.0" + "engines": { + "node": ">=6.9.0" } }, - "_ur_addons": { - "name": "@ursys/addons", - "version": "0.1", - "extraneous": true, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "dev": true, + "license": "MIT", "dependencies": { - "@ursys/core": "file:../_ur", - "chokidar": "^3.5.3", - "express": "^4.18.2", - "graphology": "^0.25.4", - "lokijs": "^1.5.12", - "peggy": "^3.0.2", - "serve-index": "^1.9.1", - "sqlite3": "^5.1.7", - "tone": "^14.7.77", - "ws": "^8.14.2" + "@babel/types": "^7.22.5" }, - "devDependencies": { - "esbuild": "^0.19.2", - "esbuild-plugin-copy": "^2.1.1", - "esbuild-plugin-umd-wrapper": "^1.0.7", - "fs-extra": "^11.1.1", - "node-dir": "^0.1.17" + "engines": { + "node": ">=6.9.0" } }, - "_ur_mods": { - "name": "@ursys/nc-modules", - "version": "0.1", - "extraneous": true, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "dev": true, + "license": "MIT", "dependencies": { - "@ursys/netcreate": "file:../_ur", - "graphology": "^0.25.4", - "peggy": "^3.0.2" + "@babel/types": "^7.22.5" }, - "devDependencies": { - "esbuild": "^0.19.2", - "esbuild-plugin-copy": "^2.1.1", - "esbuild-plugin-umd-wrapper": "^1.0.7", - "fs-extra": "^11.1.1", - "node-dir": "^0.1.17" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/@babel/compat-data": { + "node_modules/@babel/helper-validator-option": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", + "node_modules/@babel/helpers": { + "version": "7.27.3", "dev": true, + "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@babel/parser": { + "version": "7.27.3", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.3.tgz", - "integrity": "sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", - "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -950,9 +502,8 @@ }, "node_modules/@babel/template": { "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", @@ -964,9 +515,8 @@ }, "node_modules/@babel/traverse": { "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/generator": "^7.23.0", @@ -985,449 +535,55 @@ }, "node_modules/@babel/traverse/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", - "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, + }, "engines": { - "node": ">=12" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "peer": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } + "license": "MIT" }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/types": { + "version": "7.27.3", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/win32-x64": { + "node_modules/@esbuild/darwin-x64": { "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], "peer": true, "engines": { @@ -1436,9 +592,8 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -1451,18 +606,16 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1483,9 +636,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1500,9 +652,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1515,30 +666,26 @@ }, "node_modules/@eslint/eslintrc/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@eslint/js": { "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@gar/promisify": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "license": "MIT", "optional": true }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -1550,9 +697,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1567,15 +713,13 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1586,20 +730,17 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@iarna/toml": { "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + "license": "ISC" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1611,27 +752,24 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -1640,30 +778,22 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@melloware/coloris": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@melloware/coloris/-/coloris-0.24.0.tgz", - "integrity": "sha512-9RGKHqZJsUSsxb/0xaBCK5OKywobiK/xRtV8f4KQDmviqmVfkMLR3kK4DRuTTLSFdSOqkV0OQ/Niitu+rlXXYw==" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1674,18 +804,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1696,8 +824,7 @@ }, "node_modules/@npmcli/fs": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "license": "ISC", "optional": true, "dependencies": { "@gar/promisify": "^1.0.1", @@ -1706,8 +833,7 @@ }, "node_modules/@npmcli/fs/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "optional": true, "dependencies": { "yallist": "^4.0.0" @@ -1718,8 +844,7 @@ }, "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", "optional": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1733,15 +858,12 @@ }, "node_modules/@npmcli/fs/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", "optional": true }, "node_modules/@npmcli/move-file": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "license": "MIT", "optional": true, "dependencies": { "mkdirp": "^1.0.4", @@ -1753,8 +875,7 @@ }, "node_modules/@npmcli/move-file/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "optional": true, "bin": { "mkdirp": "bin/cmd.js" @@ -1765,8 +886,7 @@ }, "node_modules/@npmcli/move-file/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "license": "ISC", "optional": true, "dependencies": { "glob": "^7.1.3" @@ -1780,8 +900,7 @@ }, "node_modules/@tootallnate/once": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", "optional": true, "engines": { "node": ">= 6" @@ -1789,9 +908,8 @@ }, "node_modules/@types/eslint": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/estree": "*", @@ -1800,9 +918,8 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/eslint": "*", @@ -1811,16 +928,14 @@ }, "node_modules/@types/estree": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@types/fs-extra": { "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz", - "integrity": "sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/jsonfile": "*", "@types/node": "*" @@ -1828,57 +943,49 @@ }, "node_modules/@types/json-schema": { "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/jsonfile": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.2.tgz", - "integrity": "sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/lokijs": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/@types/lokijs/-/lokijs-1.5.10.tgz", - "integrity": "sha512-Q/F6OUCZPHWY4hzEowhCswi9Tafc/E7DCUyyWIOH3+hM3K96Mkj2U3byfzs7Yd542I8gT/8oUALnoddqdA20xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "20.6.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", - "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node-dir": { "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/node-dir/-/node-dir-0.0.34.tgz", - "integrity": "sha512-FwNgAbQyXvMP/kTsi/lH7Cpz+2xny+/ZhpDMophHcZerMxYvM+eqa8an1isNbykSQ9VCZutdbmMx2FLp5ufeMw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/semver": { "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", - "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "6.7.0", @@ -1911,9 +1018,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1928,9 +1034,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1940,15 +1045,13 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1961,15 +1064,13 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@typescript-eslint/parser": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", - "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "6.7.0", "@typescript-eslint/types": "6.7.0", @@ -1995,9 +1096,8 @@ }, "node_modules/@typescript-eslint/parser/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2012,15 +1112,13 @@ }, "node_modules/@typescript-eslint/parser/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/scope-manager": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", - "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.7.0", "@typescript-eslint/visitor-keys": "6.7.0" @@ -2035,9 +1133,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", - "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "6.7.0", "@typescript-eslint/utils": "6.7.0", @@ -2062,9 +1159,8 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2079,15 +1175,13 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/types": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", - "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -2098,9 +1192,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", - "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.7.0", "@typescript-eslint/visitor-keys": "6.7.0", @@ -2125,9 +1218,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2142,18 +1234,16 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2163,9 +1253,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2175,15 +1264,13 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2196,15 +1283,13 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@typescript-eslint/utils": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", - "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -2227,9 +1312,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2239,9 +1323,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2254,15 +1337,13 @@ }, "node_modules/@typescript-eslint/utils/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", - "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.7.0", "eslint-visitor-keys": "^3.4.1" @@ -2277,9 +1358,8 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", @@ -2288,30 +1368,26 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", @@ -2321,16 +1397,14 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -2341,9 +1415,8 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" @@ -2351,9 +1424,8 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" @@ -2361,16 +1433,14 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -2385,9 +1455,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -2399,9 +1468,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -2412,9 +1480,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -2427,9 +1494,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", @@ -2438,28 +1504,24 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, + "license": "Apache-2.0", "peer": true }, "node_modules/abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC", "optional": true }, "node_modules/accepts": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2470,9 +1532,8 @@ }, "node_modules/acorn": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", - "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2482,8 +1543,7 @@ }, "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "optional": true, "dependencies": { "debug": "4" @@ -2494,8 +1554,7 @@ }, "node_modules/agent-base/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "optional": true, "dependencies": { "ms": "2.1.2" @@ -2511,14 +1570,12 @@ }, "node_modules/agent-base/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", "optional": true }, "node_modules/agentkeepalive": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "license": "MIT", "optional": true, "dependencies": { "debug": "^4.1.0", @@ -2531,8 +1588,7 @@ }, "node_modules/agentkeepalive/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "optional": true, "dependencies": { "ms": "2.1.2" @@ -2548,14 +1604,12 @@ }, "node_modules/agentkeepalive/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", "optional": true }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", "optional": true, "dependencies": { "clean-stack": "^2.0.0", @@ -2567,9 +1621,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2583,9 +1636,8 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ajv": "^8.0.0" @@ -2601,9 +1653,8 @@ }, "node_modules/ajv-formats/node_modules/ajv": { "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -2618,43 +1669,38 @@ }, "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/anymatch": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, + "license": "ISC", "dependencies": { "micromatch": "^2.1.5", "normalize-path": "^2.0.0" @@ -2662,29 +1708,25 @@ }, "node_modules/anysort": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/anysort/-/anysort-1.0.1.tgz", - "integrity": "sha1-NBvV1boUhfZOVa6GXx1FmUtQf8Q=", "dev": true, + "license": "ISC", "dependencies": { "anymatch": "~1.3.0" } }, "node_modules/aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "license": "ISC", "optional": true }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "license": "Python-2.0" }, "node_modules/arr-diff": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, + "license": "MIT", "dependencies": { "arr-flatten": "^1.0.1" }, @@ -2694,27 +1736,24 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -2725,14 +1764,12 @@ }, "node_modules/array-flatten": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -2749,27 +1786,24 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array-unique": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -2786,9 +1820,8 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -2804,9 +1837,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -2822,9 +1854,8 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -2835,9 +1866,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -2856,18 +1886,16 @@ }, "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/asn1.js": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -2877,60 +1905,52 @@ }, "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/assert": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", - "integrity": "sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk=", "dev": true, + "license": "MIT", "dependencies": { "util": "0.10.3" } }, "node_modules/assert/node_modules/inherits": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/assert/node_modules/util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, + "license": "MIT", "dependencies": { "inherits": "2.0.1" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/async": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "(MIT OR Apache-2.0)", "bin": { "atob": "bin/atob.js" }, @@ -2940,9 +1960,6 @@ }, "node_modules/auto-reload-brunch": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/auto-reload-brunch/-/auto-reload-brunch-2.7.1.tgz", - "integrity": "sha512-PUYlt5U9eand+cg57BOEN0pRxcvGrP63ebq1AT4SfL3GKHwGes9JB21g6Js3sEznlY3o1ZVgZQJG0nwgOlqbMw==", - "deprecated": "Deprecated", "dev": true, "dependencies": { "anymatch": "1.3.0", @@ -2951,9 +1968,8 @@ }, "node_modules/auto-reload-brunch/node_modules/anymatch": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha512-GbRpOH/EMz/3Zq70whK2Q2tkbxbaM5IAU+EZL4zxnEqGtzJWFCJ3leKc6P/w3UmDFIB/GkwfeZJ7ChL7bZMXJw==", "dev": true, + "license": "ISC", "dependencies": { "arrify": "^1.0.0", "micromatch": "^2.1.5" @@ -2961,9 +1977,8 @@ }, "node_modules/available-typed-arrays": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2973,9 +1988,8 @@ }, "node_modules/babel-brunch": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-brunch/-/babel-brunch-6.1.1.tgz", - "integrity": "sha512-1eMlCYZ7rXQvpcWvMgzpxNMCA+uCiNcla+54vpMncBOPg3t/+TlW+olHRvprk9+4Z5FkU48wjbAZpEoBC1VB5A==", "dev": true, + "license": "ISC", "dependencies": { "anymatch": "^1.0.0", "babel-core": "^6.0.0", @@ -2985,9 +1999,8 @@ }, "node_modules/babel-code-frame": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -2996,9 +2009,8 @@ }, "node_modules/babel-core": { "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, + "license": "MIT", "dependencies": { "babel-code-frame": "^6.26.0", "babel-generator": "^6.26.0", @@ -3023,18 +2035,16 @@ }, "node_modules/babel-core/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, + "license": "MIT", "dependencies": { "babel-messages": "^6.23.0", "babel-runtime": "^6.26.0", @@ -3048,18 +2058,16 @@ }, "node_modules/babel-generator/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-explode-assignable-expression": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3068,9 +2076,8 @@ }, "node_modules/babel-helper-builder-react-jsx": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", - "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", @@ -3079,9 +2086,8 @@ }, "node_modules/babel-helper-call-delegate": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3091,9 +2097,8 @@ }, "node_modules/babel-helper-define-map": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.26.0", @@ -3103,9 +2108,8 @@ }, "node_modules/babel-helper-explode-assignable-expression": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-traverse": "^6.24.1", @@ -3114,9 +2118,8 @@ }, "node_modules/babel-helper-function-name": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3127,9 +2130,8 @@ }, "node_modules/babel-helper-get-function-arity": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3137,9 +2139,8 @@ }, "node_modules/babel-helper-hoist-variables": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3147,9 +2148,8 @@ }, "node_modules/babel-helper-optimise-call-expression": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3157,9 +2157,8 @@ }, "node_modules/babel-helper-regex": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", @@ -3168,9 +2167,8 @@ }, "node_modules/babel-helper-remap-async-to-generator": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3181,9 +2179,8 @@ }, "node_modules/babel-helper-replace-supers": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-optimise-call-expression": "^6.24.1", "babel-messages": "^6.23.0", @@ -3195,9 +2192,8 @@ }, "node_modules/babel-helpers": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -3205,9 +2201,8 @@ }, "node_modules/babel-loader": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^2.1.0", "loader-utils": "^1.4.0", @@ -3225,9 +2220,8 @@ }, "node_modules/babel-loader/node_modules/schema-utils": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", @@ -3243,63 +2237,54 @@ }, "node_modules/babel-messages": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-check-es2015-constants": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-syntax-async-functions": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-syntax-flow": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-syntax-jsx": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-plugin-transform-async-to-generator": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-remap-async-to-generator": "^6.24.1", "babel-plugin-syntax-async-functions": "^6.8.0", @@ -3308,27 +2293,24 @@ }, "node_modules/babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", @@ -3339,9 +2321,8 @@ }, "node_modules/babel-plugin-transform-es2015-classes": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-define-map": "^6.24.1", "babel-helper-function-name": "^6.24.1", @@ -3356,9 +2337,8 @@ }, "node_modules/babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -3366,18 +2346,16 @@ }, "node_modules/babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3385,18 +2363,16 @@ }, "node_modules/babel-plugin-transform-es2015-for-of": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-function-name": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3405,18 +2381,16 @@ }, "node_modules/babel-plugin-transform-es2015-literals": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3425,9 +2399,8 @@ }, "node_modules/babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", @@ -3437,9 +2410,8 @@ }, "node_modules/babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3448,9 +2420,8 @@ }, "node_modules/babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3459,9 +2430,8 @@ }, "node_modules/babel-plugin-transform-es2015-object-super": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-replace-supers": "^6.24.1", "babel-runtime": "^6.22.0" @@ -3469,9 +2439,8 @@ }, "node_modules/babel-plugin-transform-es2015-parameters": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-call-delegate": "^6.24.1", "babel-helper-get-function-arity": "^6.24.1", @@ -3483,9 +2452,8 @@ }, "node_modules/babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3493,18 +2461,16 @@ }, "node_modules/babel-plugin-transform-es2015-spread": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3513,27 +2479,24 @@ }, "node_modules/babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -3542,9 +2505,8 @@ }, "node_modules/babel-plugin-transform-exponentiation-operator": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", "babel-plugin-syntax-exponentiation-operator": "^6.8.0", @@ -3553,9 +2515,8 @@ }, "node_modules/babel-plugin-transform-flow-strip-types": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-syntax-flow": "^6.18.0", "babel-runtime": "^6.22.0" @@ -3563,9 +2524,8 @@ }, "node_modules/babel-plugin-transform-object-rest-spread": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-syntax-object-rest-spread": "^6.8.0", "babel-runtime": "^6.26.0" @@ -3573,18 +2533,16 @@ }, "node_modules/babel-plugin-transform-react-display-name": { "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", - "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0" } }, "node_modules/babel-plugin-transform-react-jsx": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", - "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, + "license": "MIT", "dependencies": { "babel-helper-builder-react-jsx": "^6.24.1", "babel-plugin-syntax-jsx": "^6.8.0", @@ -3593,9 +2551,8 @@ }, "node_modules/babel-plugin-transform-react-jsx-self": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", - "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" @@ -3603,9 +2560,8 @@ }, "node_modules/babel-plugin-transform-react-jsx-source": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", - "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-syntax-jsx": "^6.8.0", "babel-runtime": "^6.22.0" @@ -3613,18 +2569,16 @@ }, "node_modules/babel-plugin-transform-regenerator": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, + "license": "MIT", "dependencies": { "regenerator-transform": "^0.10.0" } }, "node_modules/babel-plugin-transform-strict-mode": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -3632,8 +2586,7 @@ }, "node_modules/babel-polyfill": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", "core-js": "^2.5.0", @@ -3642,20 +2595,16 @@ }, "node_modules/babel-polyfill/node_modules/core-js": { "version": "2.5.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz", - "integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." + "license": "MIT" }, "node_modules/babel-polyfill/node_modules/regenerator-runtime": { "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + "license": "MIT" }, "node_modules/babel-preset-env": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-check-es2015-constants": "^6.22.0", "babel-plugin-syntax-trailing-function-commas": "^6.22.0", @@ -3691,10 +2640,8 @@ }, "node_modules/babel-preset-es2015": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ==", - "deprecated": "🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-check-es2015-constants": "^6.22.0", "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", @@ -3724,20 +2671,16 @@ }, "node_modules/babel-preset-es2016": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz", - "integrity": "sha512-h3X19N+xHD3S0LqB1VIWAU3UbsbH7r5T5uHJMlkpWyJZ/gUuKQ1c9SiMYRBLZ9h7whxy5nqglx2U1o/wiz9ScQ==", - "deprecated": "🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-transform-exponentiation-operator": "^6.24.1" } }, "node_modules/babel-preset-es2017": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", - "integrity": "sha512-3iPqwP/tBkRATDg9qKkuycGEi1FZCF9pYoa2orhBynoQEPIelORSbk5VqbBI6+UzAt0CGG2gOfj46fmUmuz32g==", - "deprecated": "🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-syntax-trailing-function-commas": "^6.22.0", "babel-plugin-transform-async-to-generator": "^6.24.1" @@ -3745,19 +2688,16 @@ }, "node_modules/babel-preset-flow": { "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", - "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-transform-flow-strip-types": "^6.22.0" } }, "node_modules/babel-preset-latest": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz", - "integrity": "sha512-CzHIEOMZOzHxihiriEbODrhDgE38LBx3hqOXwqZvIM5JxY7rb6fbJak/jcYm3DMSmO+qPbzi5CBRiwDRKW25dw==", - "deprecated": "We're super 😸 excited that you're trying to use ES2017+ syntax, but instead of making more yearly presets 😭 , Babel now has a better preset that we recommend you use instead: npm install babel-preset-env --save-dev. preset-env without options will compile ES2015+ down to ES5 just like using all the presets together and thus is more future proof. It also allows you to target specific browsers so that Babel can do less work and you can ship native ES2015+ to user 😎 ! We are also in the process of releasing v7, so please give http://babeljs.io/blog/2017/09/12/planning-for-7.0 a read and help test it out in beta! Thanks so much for using Babel 🙏, please give us a follow on Twitter @babeljs for news on Babel, join slack.babeljs.io for discussion/development and help support the project at opencollective.com/babel", "dev": true, + "license": "MIT", "dependencies": { "babel-preset-es2015": "^6.24.1", "babel-preset-es2016": "^6.24.1", @@ -3766,9 +2706,8 @@ }, "node_modules/babel-preset-react": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", - "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-syntax-jsx": "^6.3.13", "babel-plugin-transform-react-display-name": "^6.23.0", @@ -3780,9 +2719,8 @@ }, "node_modules/babel-register": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", "dev": true, + "license": "MIT", "dependencies": { "babel-core": "^6.26.0", "babel-runtime": "^6.26.0", @@ -3795,16 +2733,13 @@ }, "node_modules/babel-register/node_modules/core-js": { "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "dev": true, - "hasInstallScript": true + "hasInstallScript": true, + "license": "MIT" }, "node_modules/babel-runtime": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "license": "MIT", "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -3812,15 +2747,12 @@ }, "node_modules/babel-runtime/node_modules/core-js": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." + "license": "MIT" }, "node_modules/babel-template": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", "babel-traverse": "^6.26.0", @@ -3831,9 +2763,8 @@ }, "node_modules/babel-traverse": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", "dev": true, + "license": "MIT", "dependencies": { "babel-code-frame": "^6.26.0", "babel-messages": "^6.23.0", @@ -3848,9 +2779,8 @@ }, "node_modules/babel-types": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, + "license": "MIT", "dependencies": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -3860,23 +2790,20 @@ }, "node_modules/babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true, + "license": "MIT", "bin": { "babylon": "bin/babylon.js" } }, "node_modules/balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "license": "MIT" }, "node_modules/base": { "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, + "license": "MIT", "dependencies": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -3892,9 +2819,8 @@ }, "node_modules/base/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -3904,9 +2830,8 @@ }, "node_modules/base/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -3916,9 +2841,8 @@ }, "node_modules/base/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -3928,9 +2852,8 @@ }, "node_modules/base/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3942,57 +2865,50 @@ }, "node_modules/base/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/base/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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==" + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/bindings": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", "dependencies": { "file-uri-to-path": "1.0.0" } }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4001,8 +2917,6 @@ }, "node_modules/bl/node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -4017,6 +2931,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4024,13 +2939,11 @@ }, "node_modules/bl/node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/bl/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4042,14 +2955,12 @@ }, "node_modules/bn.js": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/body-parser": { "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -4071,9 +2982,8 @@ }, "node_modules/bower-config": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-1.4.3.tgz", - "integrity": "sha512-MVyyUk3d1S7d2cl6YISViwJBc2VXCkxF5AUFykvN0PQj5FsUiMNSgAYTso18oRFfyZ6XEtjrgg9MAaufHbOwNw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.3", "minimist": "^0.2.1", @@ -4088,17 +2998,15 @@ }, "node_modules/bower-config/node_modules/minimist": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.4.tgz", - "integrity": "sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4106,9 +3014,8 @@ }, "node_modules/braces": { "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", "dev": true, + "license": "MIT", "dependencies": { "expand-range": "^1.8.1", "preserve": "^0.2.0", @@ -4120,24 +3027,21 @@ }, "node_modules/brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browser-resolve": { "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "1.1.7" } }, "node_modules/browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -4149,9 +3053,8 @@ }, "node_modules/browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -4160,9 +3063,8 @@ }, "node_modules/browserify-des": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -4172,9 +3074,8 @@ }, "node_modules/browserify-rsa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -4182,9 +3083,8 @@ }, "node_modules/browserify-sign": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, + "license": "ISC", "dependencies": { "bn.js": "^5.2.1", "browserify-rsa": "^4.1.0", @@ -4202,15 +3102,13 @@ }, "node_modules/browserify-sign/node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserify-sign/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4222,8 +3120,6 @@ }, "node_modules/browserify-sign/node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -4238,13 +3134,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/browserslist": { "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30000844", "electron-to-chromium": "^1.3.47" @@ -4255,9 +3151,8 @@ }, "node_modules/brunch": { "version": "2.10.17", - "resolved": "https://registry.npmjs.org/brunch/-/brunch-2.10.17.tgz", - "integrity": "sha512-q3vkWORHYXwPd9gG1VMq23An6C0+Gywdvho/9PfbrsrpnmBaTNk50R/ES/Pz+6gUqTzFAssbLoJv1DOiPbblhQ==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "^2.0", "anysort": "~1.0", @@ -4293,15 +3188,13 @@ }, "node_modules/brunch-skeletons": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/brunch-skeletons/-/brunch-skeletons-0.1.6.tgz", - "integrity": "sha512-x5ASPnG5yKyJFxJsCOydNPezP/YEyk4fB8GH9pdQA8sK2tFIO+RR0zzQ34Fs0y6AGcQJvx1FZvNjqW4f3Q5M3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brunch/node_modules/anymatch": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "license": "ISC", "dependencies": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -4309,36 +3202,32 @@ }, "node_modules/brunch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/binary-extensions": { "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/braces": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -4357,9 +3246,8 @@ }, "node_modules/brunch/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -4369,10 +3257,8 @@ }, "node_modules/brunch/node_modules/chokidar": { "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -4392,33 +3278,29 @@ }, "node_modules/brunch/node_modules/chokidar/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/brunch/node_modules/debug/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brunch/node_modules/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, + "license": "MIT", "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -4434,18 +3316,16 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/brunch/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -4455,9 +3335,8 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -4467,9 +3346,8 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -4479,9 +3357,8 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -4491,9 +3368,8 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -4503,9 +3379,8 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -4515,9 +3390,8 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -4529,18 +3403,16 @@ }, "node_modules/brunch/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, + "license": "MIT", "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -4557,9 +3429,8 @@ }, "node_modules/brunch/node_modules/extglob/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -4569,9 +3440,8 @@ }, "node_modules/brunch/node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -4581,9 +3451,8 @@ }, "node_modules/brunch/node_modules/fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -4596,9 +3465,8 @@ }, "node_modules/brunch/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -4608,11 +3476,9 @@ }, "node_modules/brunch/node_modules/fsevents": { "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4627,9 +3493,8 @@ }, "node_modules/brunch/node_modules/glob-parent": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -4637,9 +3502,8 @@ }, "node_modules/brunch/node_modules/glob-parent/node_modules/is-glob": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.0" }, @@ -4649,9 +3513,8 @@ }, "node_modules/brunch/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -4661,9 +3524,8 @@ }, "node_modules/brunch/node_modules/is-binary-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^1.0.0" }, @@ -4673,9 +3535,8 @@ }, "node_modules/brunch/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -4685,9 +3546,8 @@ }, "node_modules/brunch/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -4699,18 +3559,16 @@ }, "node_modules/brunch/node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4720,9 +3578,8 @@ }, "node_modules/brunch/node_modules/is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -4732,9 +3589,8 @@ }, "node_modules/brunch/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -4744,27 +3600,24 @@ }, "node_modules/brunch/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/brunch/node_modules/micromatch": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -4786,9 +3639,8 @@ }, "node_modules/brunch/node_modules/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, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -4800,19 +3652,16 @@ }, "node_modules/brunch/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/buffer": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.3.1.tgz", - "integrity": "sha1-DmX9Acw+kVTRUvazyTS1uKG2czw=", - "deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer", "dev": true, + "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -4821,34 +3670,29 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/buffer-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz", - "integrity": "sha1-byIAO6rPADzNKHr+aHIVH93FhXk=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "license": "ISC", "optional": true, "dependencies": { "@npmcli/fs": "^1.0.0", @@ -4876,8 +3720,7 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "optional": true, "dependencies": { "yallist": "^4.0.0" @@ -4888,8 +3731,7 @@ }, "node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "optional": true, "bin": { "mkdirp": "bin/cmd.js" @@ -4900,8 +3742,7 @@ }, "node_modules/cacache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "license": "ISC", "optional": true, "dependencies": { "glob": "^7.1.3" @@ -4915,15 +3756,13 @@ }, "node_modules/cacache/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", "optional": true }, "node_modules/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, + "license": "MIT", "dependencies": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -4941,18 +3780,16 @@ }, "node_modules/cache-base/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/call-bind": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -4963,8 +3800,7 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -4975,8 +3811,7 @@ }, "node_modules/call-bound": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -4990,8 +3825,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001702", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", - "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", "dev": true, "funding": [ { @@ -5006,13 +3839,13 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -5026,9 +3859,8 @@ }, "node_modules/check-dependencies": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/check-dependencies/-/check-dependencies-1.0.1.tgz", - "integrity": "sha512-F2dgrWioQILTiGGwGN57gPgzX7AMY/wLxLqEHMmanzcD6k2Jw7K17tO76vyMb85FbayfMxA3E1w0AS2z8pPD2g==", "dev": true, + "license": "MIT", "dependencies": { "bower-config": "^1.4.0", "chalk": "^1.1.3", @@ -5046,8 +3878,6 @@ }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -5055,6 +3885,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5073,9 +3904,8 @@ }, "node_modules/chokidar/node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5086,9 +3916,8 @@ }, "node_modules/chokidar/node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -5098,9 +3927,8 @@ }, "node_modules/chokidar/node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5110,9 +3938,8 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5122,18 +3949,16 @@ }, "node_modules/chokidar/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/chokidar/node_modules/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, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5143,27 +3968,24 @@ }, "node_modules/chokidar/node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/chokidar/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/chokidar/node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -5173,17 +3995,15 @@ }, "node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "tslib": "^1.9.0" @@ -5194,8 +4014,7 @@ }, "node_modules/chrono-node": { "version": "2.7.5", - "resolved": "https://registry.npmjs.org/chrono-node/-/chrono-node-2.7.5.tgz", - "integrity": "sha512-VJWqFN5rWmXVvXAxOD4i0jX8Tb4cLswaslyaAFhxM45zNXPsZleygPbgiaYBD7ORb9fj07zBgJb0Q6eKL+0iJg==", + "license": "MIT", "dependencies": { "dayjs": "^1.10.0" }, @@ -5205,9 +4024,8 @@ }, "node_modules/cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -5215,9 +4033,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -5230,9 +4047,8 @@ }, "node_modules/class-utils/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -5242,23 +4058,20 @@ }, "node_modules/class-utils/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/classnames": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "license": "MIT" }, "node_modules/clean-css": { "version": "4.0.13", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.0.13.tgz", - "integrity": "sha512-QaBjQEHrnq6nHpW1T7zXBrBBnPOcYLdXXVqLzbzt4X+ktcYCPdeQ35g3X8mFdKA8mln/EX2p0jMKB6LPmKQ6mg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "0.5.x" }, @@ -5268,27 +4081,23 @@ }, "node_modules/clean-css-brunch": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/clean-css-brunch/-/clean-css-brunch-2.10.0.tgz", - "integrity": "sha512-d7UnLHd5oshA0HUZTamXaVNkcTpQjI/NLHOWFLFwwYRPPzKZyjviI8pRSB6cr8xdk0BIEOT7ExPScrMiVana9A==", - "deprecated": "Deprecated", "dev": true, + "license": "MIT", "dependencies": { "clean-css": "~4.0" } }, "node_modules/clean-css/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -5296,8 +4105,7 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -5309,16 +4117,14 @@ }, "node_modules/cliui/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5328,17 +4134,15 @@ }, "node_modules/clsx": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/coffeescript": { "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", - "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", "dev": true, + "license": "MIT", "bin": { "cake": "bin/cake", "coffee": "bin/coffee" @@ -5349,9 +4153,8 @@ }, "node_modules/collection-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, + "license": "MIT", "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -5362,8 +4165,7 @@ }, "node_modules/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==", + "license": "ISC", "optional": true, "bin": { "color-support": "bin.js" @@ -5371,23 +4173,20 @@ }, "node_modules/colorette": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz", - "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colors": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/commander": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "license": "MIT", "dependencies": { "graceful-readlink": ">= 1.0.0" }, @@ -5397,26 +4196,22 @@ }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commonjs-require-definition": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/commonjs-require-definition/-/commonjs-require-definition-0.6.3.tgz", - "integrity": "sha512-zBIo1YrBat66dXiTeXPNAsh8YfbTxwpOVP71bmjDhQciJoq8hv9eA9fG0fLDD/f9EZbsJkNq6V42Y+fdhaal4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/compressible": { "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5426,8 +4221,7 @@ }, "node_modules/compression": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5443,36 +4237,31 @@ }, "node_modules/compression/node_modules/bytes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "license": "MIT" }, "node_modules/connect-slashes": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/connect-slashes/-/connect-slashes-1.4.0.tgz", - "integrity": "sha512-BJRbgSczzlsRwyF64DxGNIizBTxUf7f/tAsDzq2Nq8eLrm2160vVfm/4vQcjrT4qVFu6qDCqPK+vDaEWJsnSzA==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC", "optional": true }, "node_modules/content-disposition": { "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -5482,8 +4271,6 @@ }, "node_modules/content-disposition/node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -5497,34 +4284,31 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/content-type": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-parser": { "version": "1.4.7", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", - "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "license": "MIT", "dependencies": { "cookie": "0.7.2", "cookie-signature": "1.0.6" @@ -5535,23 +4319,20 @@ }, "node_modules/cookie-signature": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "license": "MIT" }, "node_modules/copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/copycat-brunch": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/copycat-brunch/-/copycat-brunch-1.1.1.tgz", - "integrity": "sha512-Tv004qJoleJjIAk8/UJ3FGeacWW9QCVsZ1Nn7ttwEJZjXkPUz0vLjKZo5upXhA/lDmj1+nvzxF/f2jxf/vHtRg==", "dev": true, + "license": "MIT", "dependencies": { "loggy": "^1.0.4", "mkdirp": "^0.5.1", @@ -5560,15 +4341,13 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/create-ecdh": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" @@ -5576,15 +4355,13 @@ }, "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -5595,9 +4372,8 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -5609,8 +4385,7 @@ }, "node_modules/create-react-class": { "version": "15.7.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", - "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", + "license": "MIT", "dependencies": { "loose-envify": "^1.3.1", "object-assign": "^4.1.1" @@ -5618,9 +4393,8 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5632,9 +4406,8 @@ }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5647,9 +4420,8 @@ }, "node_modules/crypto-browserify": { "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", "dev": true, + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -5668,8 +4440,7 @@ }, "node_modules/d3": { "version": "4.13.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz", - "integrity": "sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1.2.1", "d3-axis": "1.0.8", @@ -5705,18 +4476,15 @@ }, "node_modules/d3-array": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" + "license": "BSD-3-Clause" }, "node_modules/d3-axis": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", - "integrity": "sha512-K0djTb26iQ6AsuD2d6Ka08wBHf4V30awIxV4XFuB/iLzYtTqqJlE/nIN0DBJJCX7lbOqbt2/oeX3r+sU5k2veg==" + "license": "BSD-3-Clause" }, "node_modules/d3-brush": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", - "integrity": "sha512-nUFueDzOlvwFvuOBynGSyJM7Wt1H9fKgJeoWFSg3ScS4c7FJBch92FKUJKum4xtgPYHdgH2C3bRg3GzSVltCJQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-drag": "1", @@ -5727,8 +4495,7 @@ }, "node_modules/d3-chord": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", - "integrity": "sha512-o0ExexkK1N0KikUakKrQwttP5Flu8AYD6iBUh3AdPJqnTh6xlvcX5wFRuuo29sLOAr9+T4yZPUH1S3CCQJ1SlQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1", "d3-path": "1" @@ -5736,23 +4503,19 @@ }, "node_modules/d3-collection": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", - "integrity": "sha512-+TPxaBFzbzfpLF3Hjz8JPeuStNmJnyWAufu8VUfpDCDn5RieIgY+OQDjhKMDorf2naLgAjjZXLUQN7XFp/kgog==" + "license": "BSD-3-Clause" }, "node_modules/d3-color": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", - "integrity": "sha512-t+rSOrshj6m2AUOe8kHvTwfUQ5TFoInEkBfmsHHAHPof58dmbRXNpicB7XAyPbMQbcC7i09p2BxeCEdgBd8xmw==" + "license": "BSD-3-Clause" }, "node_modules/d3-dispatch": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", - "integrity": "sha512-Qh2DR3neW3lq/ug4oymXHYoIsA91nYt47ERb+fPKjRg6zLij06aP7KqHHl2NyziK9ASxrR3GLkHCtZvXe/jMVg==" + "license": "BSD-3-Clause" }, "node_modules/d3-drag": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", - "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-selection": "1" @@ -5760,8 +4523,7 @@ }, "node_modules/d3-dsv": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz", - "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==", + "license": "BSD-3-Clause", "dependencies": { "commander": "2", "iconv-lite": "0.4", @@ -5781,13 +4543,11 @@ }, "node_modules/d3-ease": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", - "integrity": "sha512-io3QwOJwVPAxRF2UXpKpCdz2wm/7VLFCQQ1yy+GzX6YCtt3vi2BGnimI8agSF5jyUrHsADyF303d2S+ps7zU8w==" + "license": "BSD-3-Clause" }, "node_modules/d3-force": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", - "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", + "license": "BSD-3-Clause", "dependencies": { "d3-collection": "1", "d3-dispatch": "1", @@ -5797,59 +4557,49 @@ }, "node_modules/d3-format": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.2.tgz", - "integrity": "sha512-zH9CfF/3C8zUI47nsiKfD0+AGDEuM8LwBIP7pBVpyR4l/sKkZqITmMtxRp04rwBrlshIZ17XeFAaovN3++wzkw==" + "license": "BSD-3-Clause" }, "node_modules/d3-geo": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz", - "integrity": "sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1" } }, "node_modules/d3-hierarchy": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", - "integrity": "sha512-PcsLIhThc60mWnxlojIOH7Sc0tQ2DgLWfEwEAyzCtej5f3H9wSsRmrg5pEhKZLrwiJnI2zyw/pznJxL9a/Eugw==" + "license": "BSD-3-Clause" }, "node_modules/d3-interpolate": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", - "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1" } }, "node_modules/d3-path": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", - "integrity": "sha512-eD76prgnTKYkLzHlY2UMyOEZXTpC+WOanCr1BLxo38w4fPPPq/LgCFqRQvqFU3AJngfZmmKR7rgKPZ4EGJ9Atw==" + "license": "BSD-3-Clause" }, "node_modules/d3-polygon": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", - "integrity": "sha512-2zP7GOvf4XOWTeQouK7fCO534yQxyhYYTw6GTqcXifIalHgA6qV/es+4GRQii9m6XxEPFcht4loobD/o2iEo1A==" + "license": "BSD-3-Clause" }, "node_modules/d3-quadtree": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", - "integrity": "sha512-U2Jc3jF3JOBGXIOnvWY9C4ekRwRX9hEVpMMmeduJyaxAwPmoe7t84iZFTLn1RwYOyrXxJF55H/Hrg186TFQQdw==" + "license": "BSD-3-Clause" }, "node_modules/d3-queue": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", - "integrity": "sha512-2rs+6pNFKkrJhqe1rg5znw7dKJ7KZr62j9aLZfhondkrnz6U7VRmJj1UGcbD8MRc46c7H8m4SWhab8EalBQrkw==" + "license": "BSD-3-Clause" }, "node_modules/d3-random": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", - "integrity": "sha512-XuMbjx3Jq4EWfJP4g6nR7zns/bZfaVbWHWfR8auDkEiWCzVbWifmasfszV1ZRN3xXK3nY4RUFL2nTIhceGZSFQ==" + "license": "BSD-3-Clause" }, "node_modules/d3-request": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", - "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", + "license": "BSD-3-Clause", "dependencies": { "d3-collection": "1", "d3-dispatch": "1", @@ -5859,8 +4609,7 @@ }, "node_modules/d3-scale": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz", - "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^1.2.0", "d3-collection": "1", @@ -5873,39 +4622,33 @@ }, "node_modules/d3-selection": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", - "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==" + "license": "BSD-3-Clause" }, "node_modules/d3-shape": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", - "integrity": "sha512-LP48zJ9ykPKjCdd0vSu5k2l4s8v1vI6vvdDeJtmgtTa+L6Ery0lzvOaV7pMunFuLv11hwSRZQnSnlhFl801aiw==", + "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } }, "node_modules/d3-time": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz", - "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==" + "license": "BSD-3-Clause" }, "node_modules/d3-time-format": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz", - "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==", + "license": "BSD-3-Clause", "dependencies": { "d3-time": "1" } }, "node_modules/d3-timer": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", - "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" + "license": "BSD-3-Clause" }, "node_modules/d3-transition": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz", - "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1", "d3-dispatch": "1", @@ -5917,13 +4660,11 @@ }, "node_modules/d3-voronoi": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==" + "license": "BSD-3-Clause" }, "node_modules/d3-zoom": { "version": "1.7.1", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz", - "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-drag": "1", @@ -5934,39 +4675,34 @@ }, "node_modules/dateformat": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", - "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/dayjs": { "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "license": "MIT" }, "node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/decode-uri-component": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/decompress-response": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -5979,9 +4715,8 @@ }, "node_modules/deep-assign": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", - "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^1.0.0" }, @@ -5991,28 +4726,24 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-object-diff": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", - "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==" + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -6024,9 +4755,8 @@ }, "node_modules/define-properties": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, + "license": "MIT", "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -6040,9 +4770,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -6053,9 +4782,8 @@ }, "node_modules/define-property/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -6065,9 +4793,8 @@ }, "node_modules/define-property/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -6077,9 +4804,8 @@ }, "node_modules/define-property/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -6091,47 +4817,41 @@ }, "node_modules/define-property/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/defined": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT", "optional": true }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/deppack": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/deppack/-/deppack-0.8.0.tgz", - "integrity": "sha512-qRlZZqgttzJTOJ1rnZibQbA07djSBtv5aLge2vA6XbytSw3BkChfUwRrdQ6XBvOY4d5wxbaTJ/oDNWHMDN4H8g==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.0", @@ -6147,9 +4867,8 @@ }, "node_modules/deppack/node_modules/anymatch": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "license": "ISC", "dependencies": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -6157,27 +4876,24 @@ }, "node_modules/deppack/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deppack/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deppack/node_modules/braces": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "dependencies": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -6196,9 +4912,8 @@ }, "node_modules/deppack/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6208,9 +4923,8 @@ }, "node_modules/deppack/node_modules/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, + "license": "MIT", "dependencies": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -6226,9 +4940,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -6238,9 +4951,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6250,9 +4962,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -6262,9 +4973,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -6274,9 +4984,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -6286,9 +4995,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -6298,9 +5006,8 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -6312,18 +5019,16 @@ }, "node_modules/deppack/node_modules/expand-brackets/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deppack/node_modules/extglob": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, + "license": "MIT", "dependencies": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -6340,9 +5045,8 @@ }, "node_modules/deppack/node_modules/extglob/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -6352,9 +5056,8 @@ }, "node_modules/deppack/node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6364,9 +5067,8 @@ }, "node_modules/deppack/node_modules/fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -6379,9 +5081,8 @@ }, "node_modules/deppack/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -6391,9 +5092,8 @@ }, "node_modules/deppack/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -6403,9 +5103,8 @@ }, "node_modules/deppack/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -6415,9 +5114,8 @@ }, "node_modules/deppack/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -6429,9 +5127,8 @@ }, "node_modules/deppack/node_modules/is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -6441,9 +5138,8 @@ }, "node_modules/deppack/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -6453,27 +5149,24 @@ }, "node_modules/deppack/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deppack/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deppack/node_modules/micromatch": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -6495,9 +5188,8 @@ }, "node_modules/deps-install": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/deps-install/-/deps-install-0.1.1.tgz", - "integrity": "sha512-jWfJiF0TZ4DgMcx6TIshx/slF6MexjHxik6iGlAx89z5cxHHtF/zt9c9UOC41PJX5kkJhlpXdU9msTq4K1v4Qg==", "dev": true, + "license": "MIT", "dependencies": { "loggy": "^1", "micro-promisify": "~0.1.0" @@ -6505,9 +5197,8 @@ }, "node_modules/des.js": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -6515,8 +5206,7 @@ }, "node_modules/destroy": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -6524,9 +5214,8 @@ }, "node_modules/detect-file": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, + "license": "MIT", "dependencies": { "fs-exists-sync": "^0.1.0" }, @@ -6536,9 +5225,8 @@ }, "node_modules/detect-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, + "license": "MIT", "dependencies": { "repeating": "^2.0.0" }, @@ -6548,17 +5236,15 @@ }, "node_modules/detect-libc": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "license": "Apache-2.0", "engines": { "node": ">=8" } }, "node_modules/detective": { "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^5.2.1", "defined": "^1.0.0" @@ -6566,9 +5252,8 @@ }, "node_modules/diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -6577,15 +5262,13 @@ }, "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6595,9 +5278,8 @@ }, "node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6607,8 +5289,7 @@ }, "node_modules/dom-serializer": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -6620,8 +5301,7 @@ }, "node_modules/dom-serializer/node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -6631,9 +5311,8 @@ }, "node_modules/domain-browser": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4", "npm": ">=1.2" @@ -6641,19 +5320,17 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -6666,8 +5343,7 @@ }, "node_modules/domutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -6679,8 +5355,7 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -6692,14 +5367,12 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -6712,15 +5385,13 @@ }, "node_modules/electron-to-chromium": { "version": "1.5.112", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.112.tgz", - "integrity": "sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/elliptic": { "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -6733,42 +5404,36 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/elliptic/node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/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==" + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "~0.4.13" @@ -6776,17 +5441,15 @@ }, "node_modules/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==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6797,8 +5460,7 @@ }, "node_modules/entities": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -6808,8 +5470,7 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -6817,23 +5478,20 @@ }, "node_modules/err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT", "optional": true }, "node_modules/error-stack-parser": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", @@ -6884,31 +5542,27 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", - "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/es-object-atoms": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -6918,9 +5572,8 @@ }, "node_modules/es-set-tostringtag": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3", "has": "^1.0.3", @@ -6932,18 +5585,16 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" } }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -6958,10 +5609,9 @@ }, "node_modules/esbuild": { "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "peer": true, "bin": { "esbuild": "bin/esbuild" @@ -6997,9 +5647,8 @@ }, "node_modules/esbuild-plugin-copy": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz", - "integrity": "sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -7012,9 +5661,8 @@ }, "node_modules/esbuild-plugin-copy/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7027,9 +5675,8 @@ }, "node_modules/esbuild-plugin-copy/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7043,9 +5690,8 @@ }, "node_modules/esbuild-plugin-copy/node_modules/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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7055,15 +5701,13 @@ }, "node_modules/esbuild-plugin-copy/node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/esbuild-plugin-copy/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7075,18 +5719,16 @@ }, "node_modules/esbuild-plugin-copy/node_modules/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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/esbuild-plugin-copy/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7096,57 +5738,40 @@ }, "node_modules/esbuild-plugin-copy/node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], + "node_modules/esbuild-plugin-umd-wrapper": { + "version": "3.0.0", "dev": true, - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=12" - } + "license": "MIT" }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "license": "MIT" }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", @@ -7200,9 +5825,8 @@ }, "node_modules/eslint-config-prettier": { "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -7212,9 +5836,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -7223,24 +5846,21 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-import-resolver-node/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-import-resolver-node/node_modules/resolve": { "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7255,9 +5875,8 @@ }, "node_modules/eslint-import-resolver-typescript": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", - "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", "dev": true, + "license": "ISC", "dependencies": { "debug": "^4.3.4", "enhanced-resolve": "^5.12.0", @@ -7280,9 +5899,8 @@ }, "node_modules/eslint-import-resolver-typescript/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -7297,18 +5915,16 @@ }, "node_modules/eslint-import-resolver-typescript/node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/eslint-import-resolver-typescript/node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7318,15 +5934,13 @@ }, "node_modules/eslint-import-resolver-typescript/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-module-utils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -7341,24 +5955,21 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-plugin-import": { "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.findlastindex": "^1.2.2", @@ -7387,27 +5998,24 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/eslint-plugin-import/node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7417,24 +6025,21 @@ }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-react": { "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", @@ -7461,18 +6066,16 @@ }, "node_modules/eslint-plugin-react/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -7487,18 +6090,16 @@ }, "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7512,18 +6113,16 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7533,18 +6132,16 @@ }, "node_modules/eslint/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7557,9 +6154,8 @@ }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7573,9 +6169,8 @@ }, "node_modules/eslint/node_modules/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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7585,15 +6180,13 @@ }, "node_modules/eslint/node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -7608,9 +6201,8 @@ }, "node_modules/eslint/node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7620,9 +6212,8 @@ }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7632,15 +6223,13 @@ }, "node_modules/eslint/node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -7650,9 +6239,8 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -7665,27 +6253,24 @@ }, "node_modules/eslint/node_modules/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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/eslint/node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7695,9 +6280,8 @@ }, "node_modules/eslint/node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7708,15 +6292,13 @@ }, "node_modules/eslint/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/optionator": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -7731,18 +6313,16 @@ }, "node_modules/eslint/node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/eslint/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7752,9 +6332,8 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7764,9 +6343,8 @@ }, "node_modules/eslint/node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -7776,9 +6354,8 @@ }, "node_modules/espree": { "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", @@ -7793,9 +6370,8 @@ }, "node_modules/espree/node_modules/acorn": { "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -7805,18 +6381,16 @@ }, "node_modules/espree/node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -7826,18 +6400,16 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -7847,18 +6419,16 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" @@ -7866,8 +6436,6 @@ }, "node_modules/esutils": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true, "engines": { "node": ">=0.10.0" @@ -7875,26 +6443,23 @@ }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/events": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.x" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -7902,9 +6467,8 @@ }, "node_modules/expand-brackets": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, + "license": "MIT", "dependencies": { "is-posix-bracket": "^0.1.0" }, @@ -7914,9 +6478,8 @@ }, "node_modules/expand-range": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^2.1.0" }, @@ -7926,17 +6489,15 @@ }, "node_modules/expand-template": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" } }, "node_modules/expand-tilde": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, + "license": "MIT", "dependencies": { "os-homedir": "^1.0.1" }, @@ -7946,8 +6507,7 @@ }, "node_modules/express": { "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -7991,16 +6551,13 @@ }, "node_modules/express/node_modules/cookie": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -8014,13 +6571,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, + "license": "MIT", "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -8031,9 +6588,8 @@ }, "node_modules/extend-shallow/node_modules/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, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -8043,9 +6599,8 @@ }, "node_modules/extglob": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -8055,15 +6610,13 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -8077,9 +6630,8 @@ }, "node_modules/fast-glob/node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -8089,9 +6641,8 @@ }, "node_modules/fast-glob/node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8101,9 +6652,8 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -8113,18 +6663,16 @@ }, "node_modules/fast-glob/node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/fast-glob/node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -8134,18 +6682,16 @@ }, "node_modules/fast-glob/node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/fast-glob/node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -8156,9 +6702,8 @@ }, "node_modules/fast-glob/node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8168,20 +6713,16 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, "funding": [ { @@ -8193,28 +6734,26 @@ "url": "https://opencollective.com/fastify" } ], + "license": "BSD-3-Clause", "peer": true }, "node_modules/fastq": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fcache": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/fcache/-/fcache-0.3.0.tgz", - "integrity": "sha1-1F8vkIZCuRt5jogZXsR4gaUcPUQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -8224,32 +6763,28 @@ }, "node_modules/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==" + "license": "MIT" }, "node_modules/filelist": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8259,18 +6794,16 @@ }, "node_modules/filename-regex": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/fill-range": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^2.1.0", "isobject": "^2.0.0", @@ -8284,8 +6817,7 @@ }, "node_modules/finalhandler": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -8301,9 +6833,8 @@ }, "node_modules/find-cache-dir": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -8315,9 +6846,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8331,9 +6861,8 @@ }, "node_modules/find-up/node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -8346,9 +6875,8 @@ }, "node_modules/find-up/node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8361,9 +6889,8 @@ }, "node_modules/find-up/node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -8376,18 +6903,16 @@ }, "node_modules/find-up/node_modules/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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/findup-sync": { "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha512-Q9vjzZTaI0/aeNnY7QM6En6QwnEP77V8/WHcMaBagz9Jdh+nKMsnGew1CXrgYd1pfyKhLX+PNvDZjYAfGw15Ag==", "dev": true, + "license": "MIT", "dependencies": { "detect-file": "^0.1.0", "is-glob": "^2.0.1", @@ -8400,9 +6925,8 @@ }, "node_modules/flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -8413,9 +6937,8 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -8428,33 +6951,29 @@ }, "node_modules/flatted": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/for-own": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, + "license": "MIT", "dependencies": { "for-in": "^1.0.1" }, @@ -8464,17 +6983,15 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/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, + "license": "MIT", "dependencies": { "map-cache": "^0.2.2" }, @@ -8484,31 +7001,27 @@ }, "node_modules/fresh": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/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==" + "license": "MIT" }, "node_modules/fs-exists-sync": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -8520,17 +7033,15 @@ }, "node_modules/fs-extra/node_modules/jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8540,15 +7051,12 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -8559,17 +7067,15 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8585,34 +7091,30 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/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==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -8634,8 +7136,7 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -8646,9 +7147,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -8662,9 +7162,8 @@ }, "node_modules/get-tsconfig": { "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -8674,22 +7173,19 @@ }, "node_modules/get-value": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/github-from-package": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + "license": "MIT" }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8707,9 +7203,8 @@ }, "node_modules/glob-base": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", "dev": true, + "license": "MIT", "dependencies": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" @@ -8720,25 +7215,22 @@ }, "node_modules/glob-parent": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^2.0.0" } }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, + "license": "BSD-2-Clause", "peer": true }, "node_modules/global-modules": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^0.1.4", "is-windows": "^0.2.0" @@ -8749,18 +7241,16 @@ }, "node_modules/global-modules/node_modules/is-windows": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/global-prefix": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.0", "ini": "^1.3.4", @@ -8773,27 +7263,24 @@ }, "node_modules/global-prefix/node_modules/is-windows": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/globals": { "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -8806,9 +7293,8 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8826,17 +7312,15 @@ }, "node_modules/globby/node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8846,26 +7330,22 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "devOptional": true + "devOptional": true, + "license": "ISC" }, "node_modules/graceful-readlink": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + "license": "MIT" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -8875,9 +7355,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -8887,18 +7366,16 @@ }, "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -8908,9 +7385,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8920,8 +7396,7 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8931,9 +7406,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -8946,15 +7420,13 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC", "optional": true }, "node_modules/has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, + "license": "MIT", "dependencies": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -8966,18 +7438,16 @@ }, "node_modules/has-value/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -8988,9 +7458,8 @@ }, "node_modules/has-values/node_modules/is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -9000,9 +7469,8 @@ }, "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -9012,9 +7480,8 @@ }, "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -9024,9 +7491,8 @@ }, "node_modules/hash-base": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -9038,15 +7504,13 @@ }, "node_modules/hash-base/node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hash-base/node_modules/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, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9058,8 +7522,6 @@ }, "node_modules/hash-base/node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -9074,13 +7536,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -9088,13 +7550,11 @@ }, "node_modules/hashids": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hashids/-/hashids-2.3.0.tgz", - "integrity": "sha512-ljM73TE/avEhNnazxaj0Dw3BbEUuLC5yYCQ9RSkSUcT4ZSU6ZebdKCIBJ+xT/DnSYW36E9k82GH1Q6MydSIosQ==" + "license": "MIT" }, "node_modules/hasown": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -9104,17 +7564,15 @@ }, "node_modules/highland": { "version": "2.13.5", - "resolved": "https://registry.npmjs.org/highland/-/highland-2.13.5.tgz", - "integrity": "sha512-dn2flPapIIAa4BtkB2ahjshg8iSJtrJtdhEb9/oiOrS5HMQTR/GuhFpqJ+11YBdtnl3AwWKvbZd1Uxr8uAmA7A==", + "license": "Apache-2.0", "dependencies": { "util-deprecate": "^1.0.2" } }, "node_modules/hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -9123,17 +7581,15 @@ }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/home-or-tmp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, + "license": "MIT", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" @@ -9144,9 +7600,8 @@ }, "node_modules/homedir-polyfill": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -9156,14 +7611,12 @@ }, "node_modules/hosted-git-info": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", - "integrity": "sha512-5sLwVGWIA8493A2PzG/py8s+uBrYqrwmLp6C6U5+Gpw5Ll49OOigsuD4LKbUTExbgedTNPvPb/0GV5ohHYYNBg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/html-dom-parser": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.0.4.tgz", - "integrity": "sha512-azy8THLKd4Ar0OVJpEgX+MSjYvKdNDWlGiRBIlovMqEQYMAnLLXBhhiSwjylDD3RDdcCYT8Utg6uoRDeLHUyHg==", + "license": "MIT", "dependencies": { "domhandler": "5.0.3", "htmlparser2": "9.0.0" @@ -9171,8 +7624,7 @@ }, "node_modules/html-react-parser": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.0.6.tgz", - "integrity": "sha512-aPSzFhO2bK/L/mYQbMwFz+1QG8nhxozbwENt/52HTApasrBvDX87MFD5uSQIjq7Io0bnKzH4uh7PM42zZ4ag9A==", + "license": "MIT", "dependencies": { "domhandler": "5.0.3", "html-dom-parser": "5.0.4", @@ -9185,8 +7637,6 @@ }, "node_modules/htmlparser2": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.0.0.tgz", - "integrity": "sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -9194,6 +7644,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -9203,8 +7654,7 @@ }, "node_modules/htmlparser2/node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -9214,14 +7664,12 @@ }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause", "optional": true }, "node_modules/http-errors": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -9235,13 +7683,11 @@ }, "node_modules/http-errors/node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/http-proxy-agent": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", "optional": true, "dependencies": { "@tootallnate/once": "1", @@ -9254,8 +7700,7 @@ }, "node_modules/http-proxy-agent/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "optional": true, "dependencies": { "ms": "2.1.2" @@ -9271,20 +7716,17 @@ }, "node_modules/http-proxy-agent/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", "optional": true }, "node_modules/https-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", "optional": true, "dependencies": { "agent-base": "6", @@ -9296,8 +7738,7 @@ }, "node_modules/https-proxy-agent/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "optional": true, "dependencies": { "ms": "2.1.2" @@ -9313,14 +7754,12 @@ }, "node_modules/https-proxy-agent/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", "optional": true }, "node_modules/humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", "optional": true, "dependencies": { "ms": "^2.0.0" @@ -9328,8 +7767,7 @@ }, "node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -9339,23 +7777,28 @@ }, "node_modules/ieee754": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.1.1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9366,26 +7809,23 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "devOptional": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "optional": true, "engines": { "node": ">=8" @@ -9393,20 +7833,16 @@ }, "node_modules/indexof": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, "node_modules/infer-owner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC", "optional": true }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9414,20 +7850,16 @@ }, "node_modules/inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "license": "ISC" }, "node_modules/init-skeleton": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/init-skeleton/-/init-skeleton-1.0.1.tgz", - "integrity": "sha512-ktzKQ9IoTpZIrY/8fzP3fQuWDBnpUGel8KEkuXRaM07N023xWhsDT7MnQxllbmN676Li2973KH61PwBkCRRQnQ==", - "deprecated": "Deprecated", "dev": true, + "license": "MIT", "dependencies": { "brunch-skeletons": "~0.1.4", "deps-install": "~0.1.0", @@ -9440,14 +7872,12 @@ }, "node_modules/inline-style-parser": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz", - "integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==" + "license": "MIT" }, "node_modules/internal-slot": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -9459,30 +7889,26 @@ }, "node_modules/interpret": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/invariant": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/ip": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==" + "license": "MIT" }, "node_modules/ip-address": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", "optional": true, "dependencies": { "jsbn": "1.1.0", @@ -9494,23 +7920,20 @@ }, "node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause", "optional": true }, "node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -9520,9 +7943,8 @@ }, "node_modules/is-array-buffer": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -9534,9 +7956,8 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -9546,9 +7967,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9558,9 +7978,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9574,15 +7993,13 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9592,9 +8009,8 @@ }, "node_modules/is-core-module": { "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -9604,9 +8020,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -9616,18 +8031,16 @@ }, "node_modules/is-date-object": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -9639,27 +8052,24 @@ }, "node_modules/is-descriptor/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-dotfile": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-equal-shallow": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, + "license": "MIT", "dependencies": { "is-primitive": "^2.0.0" }, @@ -9669,27 +8079,24 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" }, @@ -9699,17 +8106,15 @@ }, "node_modules/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==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^1.0.0" }, @@ -9719,15 +8124,13 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT", "optional": true }, "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9737,9 +8140,8 @@ }, "node_modules/is-number": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, @@ -9749,9 +8151,8 @@ }, "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9764,27 +8165,24 @@ }, "node_modules/is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/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, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -9794,36 +8192,32 @@ }, "node_modules/is-plain-object/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-posix-bracket": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-primitive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9837,9 +8231,8 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9849,9 +8242,8 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9864,9 +8256,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -9879,9 +8270,8 @@ }, "node_modules/is-typed-array": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.11" }, @@ -9894,9 +8284,8 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9906,30 +8295,26 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "devOptional": true + "devOptional": true, + "license": "ISC" }, "node_modules/isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "license": "MIT", "dependencies": { "isarray": "1.0.0" }, @@ -9939,9 +8324,8 @@ }, "node_modules/jake": { "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -9957,9 +8341,8 @@ }, "node_modules/jake/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9972,9 +8355,8 @@ }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9988,9 +8370,8 @@ }, "node_modules/jake/node_modules/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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10000,24 +8381,21 @@ }, "node_modules/jake/node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/jake/node_modules/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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10027,9 +8405,8 @@ }, "node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -10042,9 +8419,8 @@ }, "node_modules/jest-worker/node_modules/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, + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -10052,9 +8428,8 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -10068,19 +8443,16 @@ }, "node_modules/jquery": { "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + "license": "MIT" }, "node_modules/js-tokens": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -10090,51 +8462,44 @@ }, "node_modules/jsbn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT", "optional": true }, "node_modules/jsesc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" } }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" } }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -10144,17 +8509,15 @@ }, "node_modules/jsonfile/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/jsx-ast-utils": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.5", "object.assign": "^4.1.3" @@ -10165,9 +8528,8 @@ }, "node_modules/kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "license": "MIT", "dependencies": { "is-buffer": "^1.1.5" }, @@ -10177,17 +8539,15 @@ }, "node_modules/linkify-it": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "license": "MIT", "dependencies": { "uc.micro": "^1.0.1" } }, "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" @@ -10195,9 +8555,8 @@ }, "node_modules/loader-utils": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -10209,9 +8568,8 @@ }, "node_modules/loader-utils/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -10221,9 +8579,8 @@ }, "node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -10234,26 +8591,22 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/loggy": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/loggy/-/loggy-1.0.8.tgz", - "integrity": "sha512-3gXR0rOS4fnxVXGeiQID95/IML//jSbKx5T1GatifpzpOwDoOsTtlt25gosiBq27Mn4YnbzWB/DsKncnaLWKSg==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "~1.1", "native-notifier": "~0.1.6" @@ -10261,13 +8614,11 @@ }, "node_modules/lokijs": { "version": "1.5.12", - "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.12.tgz", - "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==" + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10277,18 +8628,16 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/make-dir": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -10299,8 +8648,7 @@ }, "node_modules/make-fetch-happen": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "license": "ISC", "optional": true, "dependencies": { "agentkeepalive": "^4.1.3", @@ -10326,8 +8674,7 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "optional": true, "dependencies": { "yallist": "^4.0.0" @@ -10338,24 +8685,21 @@ }, "node_modules/make-fetch-happen/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", "optional": true }, "node_modules/map-cache": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "dependencies": { "object-visit": "^1.0.0" }, @@ -10365,8 +8709,7 @@ }, "node_modules/markdown-it": { "version": "13.0.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", - "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "~3.0.1", @@ -10380,13 +8723,11 @@ }, "node_modules/markdown-it-emoji": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz", - "integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==" + "license": "MIT" }, "node_modules/markdown-react-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-react-js/-/markdown-react-js-1.0.2.tgz", - "integrity": "sha512-I3zAgIDsg9t4huj0yjyM8jAJtRg3EDoqRSeqE0Wg+WODLfmcxOkToQ0qcxkPCYlHqOX2CIQF78lZ5vcp4r3Qsw==", + "license": "MIT", "dependencies": { "lodash": "^4.17.10", "markdown-it": "^8.4.2", @@ -10398,29 +8739,25 @@ }, "node_modules/markdown-react-js/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/markdown-react-js/node_modules/entities": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "license": "BSD-2-Clause" }, "node_modules/markdown-react-js/node_modules/linkify-it": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "license": "MIT", "dependencies": { "uc.micro": "^1.0.1" } }, "node_modules/markdown-react-js/node_modules/markdown-it": { "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "entities": "~1.1.1", @@ -10434,23 +8771,20 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/math-random": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -10459,66 +8793,57 @@ }, "node_modules/mdurl": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + "license": "MIT" }, "node_modules/media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/merge-descriptors": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micro-es7-shim": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/micro-es7-shim/-/micro-es7-shim-0.1.0.tgz", - "integrity": "sha1-qpmJovkwN6k+ezDiySQz2wtMoig=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/micro-promisify": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/micro-promisify/-/micro-promisify-0.1.1.tgz", - "integrity": "sha1-Bx2lkLSVZWDe30qucERynBookC0=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/micromatch": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^2.0.0", "array-unique": "^0.2.1", @@ -10540,9 +8865,8 @@ }, "node_modules/miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -10553,14 +8877,12 @@ }, "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mime": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -10570,16 +8892,14 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -10589,8 +8909,7 @@ }, "node_modules/mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -10600,20 +8919,17 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10623,16 +8939,14 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10642,8 +8956,7 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -10654,8 +8967,7 @@ }, "node_modules/minipass-fetch": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "license": "MIT", "optional": true, "dependencies": { "minipass": "^3.1.0", @@ -10671,8 +8983,7 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -10683,8 +8994,7 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -10695,8 +9005,7 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.0.0" @@ -10707,13 +9016,11 @@ }, "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -10724,14 +9031,12 @@ }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/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, + "license": "MIT", "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -10742,9 +9047,8 @@ }, "node_modules/mixin-deep/node_modules/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, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -10754,9 +9058,8 @@ }, "node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -10766,32 +9069,27 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "license": "MIT" }, "node_modules/mout": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.2.4.tgz", - "integrity": "sha512-mZb9uOruMWgn/fw28DG4/yE3Kehfk1zKCLhuDU2O3vlKdnBBr4XaOCqVTflJ5aODavGUPqFHZgrFX3NJVuxGhQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "license": "MIT" }, "node_modules/nan": { "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/nanomatch": { "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, + "license": "MIT", "dependencies": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -10811,79 +9109,69 @@ }, "node_modules/nanomatch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nanomatch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nanomatch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/napi-build-utils": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + "license": "MIT" }, "node_modules/native-notifier": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/native-notifier/-/native-notifier-0.1.6.tgz", - "integrity": "sha512-BwRtjqhNsS2HpeVrNmERzQqZTFxR+MoJr/RdfCwZ0ODKyc/0EcHQhwnPwZr99gT1uHgRqbDk3C5fOo70TVYlcQ==", "dev": true, + "license": "MIT", "dependencies": { "tag-shell": "~0.1.0" } }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ncp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true, + "license": "MIT", "bin": { "ncp": "bin/ncp" } }, "node_modules/negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/node-abi": { "version": "3.56.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", - "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -10893,8 +9181,7 @@ }, "node_modules/node-abi/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10904,8 +9191,7 @@ }, "node_modules/node-abi/node_modules/semver": { "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10918,22 +9204,19 @@ }, "node_modules/node-abi/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/node-addon-api": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", - "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "license": "MIT", "engines": { "node": "^16 || ^18 || >= 20" } }, "node_modules/node-browser-modules": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/node-browser-modules/-/node-browser-modules-0.1.0.tgz", - "integrity": "sha1-QZPLtw9UJ1ml5ObWsBzLY46Zoaw=", "dev": true, + "license": "MIT", "dependencies": { "assert": "~1.3.0", "buffer": "~4.3.0", @@ -10962,15 +9245,13 @@ }, "node_modules/node-browser-modules/node_modules/process-nextick-args": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-browser-modules/node_modules/readable-stream": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -10982,15 +9263,13 @@ }, "node_modules/node-browser-modules/node_modules/string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-dir": { "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.2" }, @@ -11000,8 +9279,7 @@ }, "node_modules/node-gyp": { "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "license": "MIT", "optional": true, "dependencies": { "env-paths": "^2.2.0", @@ -11024,8 +9302,7 @@ }, "node_modules/node-gyp/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "optional": true, "engines": { "node": ">=8" @@ -11033,8 +9310,7 @@ }, "node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "license": "ISC", "optional": true, "dependencies": { "delegates": "^1.0.0", @@ -11046,8 +9322,7 @@ }, "node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "license": "ISC", "optional": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -11065,8 +9340,7 @@ }, "node_modules/node-gyp/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "optional": true, "dependencies": { "yallist": "^4.0.0" @@ -11077,8 +9351,7 @@ }, "node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "license": "ISC", "optional": true, "dependencies": { "are-we-there-yet": "^3.0.0", @@ -11092,8 +9365,7 @@ }, "node_modules/node-gyp/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "optional": true, "dependencies": { "inherits": "^2.0.3", @@ -11106,8 +9378,7 @@ }, "node_modules/node-gyp/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "license": "ISC", "optional": true, "dependencies": { "glob": "^7.1.3" @@ -11121,8 +9392,7 @@ }, "node_modules/node-gyp/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", "optional": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11136,8 +9406,7 @@ }, "node_modules/node-gyp/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "optional": true, "dependencies": { "ansi-regex": "^5.0.1" @@ -11148,8 +9417,7 @@ }, "node_modules/node-gyp/node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "optional": true, "dependencies": { "isexe": "^2.0.0" @@ -11163,20 +9431,17 @@ }, "node_modules/node-gyp/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", "optional": true }, "node_modules/node-releases": { "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nopt": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", "optional": true, "dependencies": { "abbrev": "1" @@ -11190,15 +9455,13 @@ }, "node_modules/normalize-git-url": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-git-url/-/normalize-git-url-3.0.2.tgz", - "integrity": "sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/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, + "license": "MIT", "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -11208,17 +9471,15 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-copy": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, + "license": "MIT", "dependencies": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -11230,9 +9491,8 @@ }, "node_modules/object-copy/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -11242,8 +9502,7 @@ }, "node_modules/object-inspect": { "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11253,18 +9512,16 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/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, + "license": "MIT", "dependencies": { "isobject": "^3.0.0" }, @@ -11274,18 +9531,16 @@ }, "node_modules/object-visit/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object.assign": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11301,9 +9556,8 @@ }, "node_modules/object.entries": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11315,9 +9569,8 @@ }, "node_modules/object.fromentries": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11332,9 +9585,8 @@ }, "node_modules/object.groupby": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -11344,9 +9596,8 @@ }, "node_modules/object.hasown": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.4", "es-abstract": "^1.20.4" @@ -11357,9 +9608,8 @@ }, "node_modules/object.omit": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, + "license": "MIT", "dependencies": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" @@ -11370,9 +9620,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -11382,18 +9631,16 @@ }, "node_modules/object.pick/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object.values": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11408,8 +9655,7 @@ }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -11419,57 +9665,49 @@ }, "node_modules/on-headers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/options": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", "engines": { "node": ">=0.4.0" } }, "node_modules/os-browserify": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, + "license": "ISC", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -11477,9 +9715,8 @@ }, "node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -11492,9 +9729,8 @@ }, "node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -11504,8 +9740,7 @@ }, "node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", "optional": true, "dependencies": { "aggregate-error": "^3.0.0" @@ -11519,18 +9754,16 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -11540,18 +9773,16 @@ }, "node_modules/parent-module/node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/parse-asn1": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, + "license": "ISC", "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -11562,9 +9793,8 @@ }, "node_modules/parse-glob": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", "dev": true, + "license": "MIT", "dependencies": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -11577,35 +9807,31 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/pascalcase": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path": { "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", "dev": true, + "license": "MIT", "dependencies": { "process": "^0.11.1", "util": "^0.10.3" @@ -11613,67 +9839,58 @@ }, "node_modules/path-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-dirname": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/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=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pbkdf2": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, + "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -11687,15 +9904,13 @@ }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -11705,18 +9920,16 @@ }, "node_modules/pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pkg-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -11726,9 +9939,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -11738,9 +9950,7 @@ }, "node_modules/popper.js": { "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -11748,17 +9958,15 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/prebuild-install": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -11782,18 +9990,16 @@ }, "node_modules/preserve": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/prettier": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -11806,38 +10012,33 @@ }, "node_modules/private": { "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/process": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "license": "ISC", "optional": true }, "node_modules/promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", "optional": true, "dependencies": { "err-code": "^2.0.2", @@ -11849,9 +10050,8 @@ }, "node_modules/promise.prototype.finally": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-2.0.1.tgz", - "integrity": "sha1-tw1EzrOCX6iABLXR+9kGs7fZt1g=", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.2", "es-abstract": "^1.6.1", @@ -11863,8 +10063,7 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -11873,8 +10072,7 @@ }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -11885,9 +10083,8 @@ }, "node_modules/public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -11899,14 +10096,12 @@ }, "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -11914,15 +10109,13 @@ }, "node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pushserve": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pushserve/-/pushserve-1.0.2.tgz", - "integrity": "sha1-/fuAOTnKM3UtOPLRqpdawBqTJT8=", "dev": true, + "license": "MIT", "dependencies": { "commander": "^2.0.0", "connect-slashes": "^1.3.1", @@ -11935,8 +10128,7 @@ }, "node_modules/qs": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -11949,17 +10141,13 @@ }, "node_modules/query-selector": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/query-selector/-/query-selector-1.0.9.tgz", - "integrity": "sha1-kX/TG3N5tT/UQeU2r2R1UuAefp4=", + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/querystring": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, "engines": { "node": ">=0.4.x" @@ -11967,8 +10155,6 @@ }, "node_modules/querystring-es3": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true, "engines": { "node": ">=0.4.x" @@ -11976,8 +10162,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -11992,22 +10176,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quickly-copy-file": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/quickly-copy-file/-/quickly-copy-file-1.0.0.tgz", - "integrity": "sha512-Coy5ADj9Z3iKZ/7Y0Qtf04mBET550LPemwp9rLPE2rROidvuqB42nP7w5SwM6Wl6jPNcrxSSgzco01h1Hu8iIg==", "dev": true, + "license": "MIT", "dependencies": { "mkdirp": "~0.5.0" } }, "node_modules/randomatic": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -12019,43 +10202,38 @@ }, "node_modules/randomatic/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/randomatic/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -12068,8 +10246,7 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -12082,16 +10259,14 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react": { "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -12103,8 +10278,7 @@ }, "node_modules/react-colorful": { "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" @@ -12112,8 +10286,7 @@ }, "node_modules/react-dom": { "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -12126,8 +10299,7 @@ }, "node_modules/react-draggable": { "version": "4.4.6", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.6.tgz", - "integrity": "sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==", + "license": "MIT", "dependencies": { "clsx": "^1.1.1", "prop-types": "^15.8.1" @@ -12139,8 +10311,7 @@ }, "node_modules/react-faux-dom": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/react-faux-dom/-/react-faux-dom-4.5.0.tgz", - "integrity": "sha512-T03fyZw/He4EYPqQpK5KJ9BQXNNMMgUo5DiwWkFG5wlpMDuiiYc4Q8WfeODjl3g2S2OBqy3+0VUr44sZkqz2Sw==", + "license": "Unlicense", "dependencies": { "create-react-class": "^15.6.3", "hoist-non-react-statics": "^3.3.0", @@ -12153,28 +10324,24 @@ }, "node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "license": "MIT" }, "node_modules/react-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.2.tgz", - "integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==" + "license": "MIT" }, "node_modules/read-components": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/read-components/-/read-components-0.7.0.tgz", - "integrity": "sha1-d9znrctypRQkDEemdbm896NQndk=", "dev": true, + "license": "BSD", "dependencies": { "async-each": "~1.0.0" } }, "node_modules/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, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -12187,9 +10354,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -12199,8 +10365,6 @@ }, "node_modules/rechoir": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dependencies": { "resolve": "^1.1.6" }, @@ -12210,20 +10374,17 @@ }, "node_modules/regenerate": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerator-runtime": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, + "license": "BSD", "dependencies": { "babel-runtime": "^6.18.0", "babel-types": "^6.19.0", @@ -12232,9 +10393,8 @@ }, "node_modules/regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, + "license": "MIT", "dependencies": { "is-equal-shallow": "^0.1.3" }, @@ -12244,9 +10404,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -12257,9 +10416,8 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -12274,9 +10432,8 @@ }, "node_modules/regexpu-core": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", @@ -12285,15 +10442,13 @@ }, "node_modules/regjsgen": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regjsparser": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, + "license": "BSD", "dependencies": { "jsesc": "~0.5.0" }, @@ -12303,8 +10458,6 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -12312,33 +10465,29 @@ }, "node_modules/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 + "dev": true, + "license": "ISC" }, "node_modules/repeat-element": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/repeating": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, + "license": "MIT", "dependencies": { "is-finite": "^1.0.0" }, @@ -12348,17 +10497,15 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -12366,14 +10513,12 @@ }, "node_modules/resolve": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + "license": "MIT" }, "node_modules/resolve-dir": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^1.2.2", "global-modules": "^0.2.3" @@ -12384,33 +10529,28 @@ }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/resolve-url": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.12" } }, "node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", "optional": true, "engines": { "node": ">= 4" @@ -12418,9 +10558,8 @@ }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -12428,14 +10567,12 @@ }, "node_modules/rfdc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "license": "MIT" }, "node_modules/ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -12443,8 +10580,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -12460,20 +10595,19 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rw": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "license": "BSD-3-Clause" }, "node_modules/safe-array-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -12489,29 +10623,25 @@ }, "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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==" + "license": "MIT" }, "node_modules/safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, + "license": "MIT", "dependencies": { "ret": "~0.1.10" } }, "node_modules/safe-regex-test": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -12523,13 +10653,11 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "license": "MIT" }, "node_modules/scheduler": { "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -12537,9 +10665,8 @@ }, "node_modules/schema-utils": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -12557,9 +10684,8 @@ }, "node_modules/schema-utils/node_modules/ajv": { "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -12574,9 +10700,8 @@ }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" @@ -12587,24 +10712,21 @@ }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/send": { "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -12626,22 +10748,19 @@ }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "license": "MIT" }, "node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -12649,9 +10768,8 @@ }, "node_modules/serve-brunch": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/serve-brunch/-/serve-brunch-0.2.1.tgz", - "integrity": "sha512-6KNNdVC2oDvGueSIixbp8vFKg6EJZZfX3Tc9qaI88Bn6m0tg5olxf5yN/0wfILHnDXtiADKmgUheYLzKyqbLhw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.1", "loggy": "^1", @@ -12660,23 +10778,20 @@ }, "node_modules/serve-brunch/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/serve-brunch/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-static": { "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -12689,15 +10804,13 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC", "optional": true }, "node_modules/set-function-name": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -12709,9 +10822,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -12724,9 +10836,8 @@ }, "node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -12736,14 +10847,12 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "license": "ISC" }, "node_modules/sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -12754,9 +10863,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -12766,17 +10874,15 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shelljs": { "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -12791,8 +10897,7 @@ }, "node_modules/side-channel": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -12809,8 +10914,7 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -12824,8 +10928,7 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -12841,8 +10944,7 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -12859,14 +10961,11 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC", "optional": true }, "node_modules/simple-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -12880,12 +10979,11 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-get": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -12900,6 +10998,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -12908,44 +11007,39 @@ }, "node_modules/since-app-start": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/since-app-start/-/since-app-start-0.3.3.tgz", - "integrity": "sha512-CvVjdZvSgaUP4mMOLn8NZtYKFF2RYboEaTBKdj5F+Jm6SpCQ/kZgnMVMNHhOUgBzHusBe8aio0Gri8ci2utOXw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~3.1.0" } }, "node_modules/since-app-start/node_modules/debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/skemata": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/skemata/-/skemata-0.1.2.tgz", - "integrity": "sha1-88UhAptnvm4IJfDfhn7peRbeRTA=", "dev": true, + "license": "MIT", "dependencies": { "fast-levenshtein": "^1.1.3" } }, "node_modules/slash": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "optional": true, "engines": { "node": ">= 6.0.0", @@ -12954,9 +11048,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "base": "^0.11.1", "debug": "^2.2.0", @@ -12973,9 +11066,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -12987,9 +11079,8 @@ }, "node_modules/snapdragon-node/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -12999,9 +11090,8 @@ }, "node_modules/snapdragon-node/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -13011,9 +11101,8 @@ }, "node_modules/snapdragon-node/node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^6.0.0" }, @@ -13023,9 +11112,8 @@ }, "node_modules/snapdragon-node/node_modules/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, + "license": "MIT", "dependencies": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -13037,27 +11125,24 @@ }, "node_modules/snapdragon-node/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "dependencies": { "kind-of": "^3.2.0" }, @@ -13067,9 +11152,8 @@ }, "node_modules/snapdragon/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -13079,9 +11163,8 @@ }, "node_modules/snapdragon/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -13091,17 +11174,15 @@ }, "node_modules/snapdragon/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/socks": { "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "license": "MIT", "optional": true, "dependencies": { "ip-address": "^9.0.5", @@ -13114,8 +11195,7 @@ }, "node_modules/socks-proxy-agent": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "license": "MIT", "optional": true, "dependencies": { "agent-base": "^6.0.2", @@ -13128,8 +11208,7 @@ }, "node_modules/socks-proxy-agent/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "optional": true, "dependencies": { "ms": "2.1.2" @@ -13145,25 +11224,21 @@ }, "node_modules/socks-proxy-agent/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", "optional": true }, "node_modules/source-map": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/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==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, + "license": "MIT", "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -13174,34 +11249,29 @@ }, "node_modules/source-map-support": { "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "^0.5.6" } }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/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=", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "dependencies": { "extend-shallow": "^3.0.0" }, @@ -13211,14 +11281,12 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "license": "BSD-3-Clause" }, "node_modules/sqlite3": { "version": "5.1.7", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", - "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "bindings": "^1.5.0", "node-addon-api": "^7.0.0", @@ -13239,8 +11307,7 @@ }, "node_modules/ssri": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", "optional": true, "dependencies": { "minipass": "^3.1.1" @@ -13251,21 +11318,18 @@ }, "node_modules/stack-generator": { "version": "2.0.10", - "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", - "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/stackframe": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "license": "MIT" }, "node_modules/stacktrace-gps": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", - "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", + "license": "MIT", "dependencies": { "source-map": "0.5.6", "stackframe": "^1.3.4" @@ -13273,16 +11337,14 @@ }, "node_modules/stacktrace-gps/node_modules/source-map": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/stacktrace-js": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", - "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "license": "MIT", "dependencies": { "error-stack-parser": "^2.0.6", "stack-generator": "^2.0.5", @@ -13291,9 +11353,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -13304,9 +11365,8 @@ }, "node_modules/static-extend/node_modules/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, + "license": "MIT", "dependencies": { "is-descriptor": "^0.1.0" }, @@ -13316,17 +11376,15 @@ }, "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/stream-browserify": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" @@ -13334,9 +11392,8 @@ }, "node_modules/stream-http": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.1.1.tgz", - "integrity": "sha1-O4gDA7q+A21va0MSfU3Nb4iT4ds=", "dev": true, + "license": "MIT", "dependencies": { "builtin-status-codes": "^2.0.0", "inherits": "^2.0.1", @@ -13346,16 +11403,14 @@ }, "node_modules/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==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13367,16 +11422,14 @@ }, "node_modules/string-width/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string-width/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13386,9 +11439,8 @@ }, "node_modules/string.prototype.matchall": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -13405,9 +11457,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13422,9 +11473,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13436,9 +11486,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13450,9 +11499,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -13462,18 +11510,16 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -13483,47 +11529,41 @@ }, "node_modules/style-attr": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/style-attr/-/style-attr-1.3.0.tgz", - "integrity": "sha512-srFr54gzEZoy73WgYfnbxCAtNCzF0Hn5RGzK7gi/0G6ttZd9v3WZFGY4ed5ABr43dbGjPNr4T46geUxxUP9i6w==" + "license": "MIT" }, "node_modules/style-to-js": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.9.tgz", - "integrity": "sha512-6bkwhOlPOx+wKiHVlPTHjUqM4zDKv9pyccehB8zetZL0hhQ7MVp7UEWUsohjiMdxwhSsEdjMrEve+8qzUVmY4w==", + "license": "MIT", "dependencies": { "style-to-object": "1.0.4" } }, "node_modules/style-to-object": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.4.tgz", - "integrity": "sha512-KyNO6mfijxSnypdvEjeXlhvbGPSh0l1zBJp80n+ncBQvrEbSwBHwZCpo0xz6Q4AKSPfXowWwypCBAUAdfz3rFQ==", + "license": "MIT", "dependencies": { "inline-style-parser": "0.2.2" } }, "node_modules/superstruct": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13533,23 +11573,20 @@ }, "node_modules/tag-shell": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tag-shell/-/tag-shell-0.1.0.tgz", - "integrity": "sha512-DW3u9CylGZ44V8toOpsskS6lOojt6UOWbXM9HG8sBoKvy8q7V7Yc+JWHM6Du78rljnm/IeWOtWEBdhwWoo8gEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -13564,8 +11601,7 @@ }, "node_modules/tar-fs": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", - "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -13575,13 +11611,11 @@ }, "node_modules/tar-fs/node_modules/chownr": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "license": "ISC" }, "node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -13595,8 +11629,7 @@ }, "node_modules/tar-stream/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -13608,16 +11641,14 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -13627,27 +11658,23 @@ }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/temporal-polyfill": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.2.5.tgz", - "integrity": "sha512-ye47xp8Cb0nDguAhrrDS1JT1SzwEV9e26sSsrWzVu+yPZ7LzceEcH0i2gci9jWfOfSCCgM3Qv5nOYShVUUFUXA==", + "license": "MIT", "dependencies": { "temporal-spec": "^0.2.4" } }, "node_modules/temporal-spec": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.2.4.tgz", - "integrity": "sha512-lDMFv4nKQrSjlkHKAlHVqKrBG4DyFfa9F74cmBZ3Iy3ed8yvWnlWSIdi4IKfSqwmazAohBNwiN64qGx4y5Q3IQ==" + "license": "ISC" }, "node_modules/terser": { "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -13662,9 +11689,8 @@ }, "node_modules/terser-brunch": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terser-brunch/-/terser-brunch-4.0.0.tgz", - "integrity": "sha512-bmT9+/7HHwmgCbfZ0IaX26em9d2SpyoxSiiO+xSHJU4EG0FLsk52M7bRcTF/xMaSPl9LXTVkqjgSEllFmcoUFg==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "^3", "terser": "^4.4" @@ -13675,9 +11701,8 @@ }, "node_modules/terser-brunch/node_modules/anymatch": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -13688,18 +11713,16 @@ }, "node_modules/terser-brunch/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/terser-webpack-plugin": { "version": "5.3.12", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.12.tgz", - "integrity": "sha512-jDLYqo7oF8tJIttjXO6jBY5Hk8p3A8W4ttih7cCEq64fQFWmgJ4VqAQjKr7WwIDlmXKEc6QeoRb5ecjZ+2afcg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -13732,9 +11755,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/acorn": { "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "peer": true, "bin": { "acorn": "bin/acorn" @@ -13745,16 +11767,14 @@ }, "node_modules/terser-webpack-plugin/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/terser-webpack-plugin/node_modules/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, + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -13762,9 +11782,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -13773,9 +11792,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/terser": { "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -13792,24 +11810,21 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/terser/node_modules/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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13817,14 +11832,11 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/timers-browserify": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", "dev": true, "dependencies": { "process": "~0.11.0" @@ -13835,558 +11847,188 @@ }, "node_modules/tinytim": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", - "integrity": "sha1-yWih5VWa2VUyJO92J7qzTjyu+Kg=", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.2.0" } }, "node_modules/to-arraybuffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-fast-properties": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^3.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tracer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tracer/-/tracer-1.1.6.tgz", - "integrity": "sha512-VKEIQRNgzSgti18whs+8l7e2y/gWcklw+C/xZtFH/AGvaN6GDlvhkQTFEsy448Gxb5MtbNbzJiG0L1TJEQnqcA==", - "dev": true, - "dependencies": { - "colors": "1.4.0", - "dateformat": "4.5.1", - "mkdirp": "^1.0.4", - "tinytim": "0.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/tracer/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "glob": "^7.1.2" - } - }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true, - "peer": true - }, - "node_modules/tsx": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", - "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", - "dev": true, - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], + "node_modules/to-regex": { + "version": "3.0.2", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], + "node_modules/to-regex-range": { + "version": "2.1.1", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], + "node_modules/to-regex-range/node_modules/is-number": { + "version": "3.0.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=0.6" } }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], + "node_modules/tracer": { + "version": "1.1.6", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "colors": "1.4.0", + "dateformat": "4.5.1", + "mkdirp": "^1.0.4", + "tinytim": "0.1.1" + }, "engines": { - "node": ">=18" + "node": ">= 0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], + "node_modules/tracer/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=18" + "node": ">=10" } }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], + "node_modules/trim-right": { + "version": "1.0.1", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], + "node_modules/true-case-path": { + "version": "1.0.3", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "license": "Apache-2.0", + "dependencies": { + "glob": "^7.1.2" } }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], + "node_modules/ts-api-utils": { + "version": "1.0.3", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], + "node_modules/tsconfig-paths": { + "version": "3.14.2", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], + "node_modules/tslib": { + "version": "1.13.0", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } + "license": "0BSD", + "peer": true }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], + "node_modules/tsx": { + "version": "4.19.3", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" } }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { "node": ">=18" @@ -14394,10 +12036,9 @@ }, "node_modules/tsx/node_modules/esbuild": { "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -14434,14 +12075,12 @@ }, "node_modules/tty-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -14451,17 +12090,15 @@ }, "node_modules/type-detect": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -14471,8 +12108,7 @@ }, "node_modules/type-is": { "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -14483,9 +12119,8 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -14497,9 +12132,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -14515,9 +12149,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -14534,9 +12167,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -14548,9 +12180,8 @@ }, "node_modules/typescript": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, + "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", @@ -14562,19 +12193,16 @@ }, "node_modules/uc.micro": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "license": "MIT" }, "node_modules/ultron": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==" + "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -14587,9 +12215,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -14602,8 +12229,7 @@ }, "node_modules/unique-filename": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "license": "ISC", "optional": true, "dependencies": { "unique-slug": "^2.0.0" @@ -14611,8 +12237,7 @@ }, "node_modules/unique-slug": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "license": "ISC", "optional": true, "dependencies": { "imurmurhash": "^0.1.4" @@ -14620,32 +12245,28 @@ }, "node_modules/universal-path": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/universal-path/-/universal-path-0.1.0.tgz", - "integrity": "sha1-D8okyTbqPSKCAT0UNxDAZoftBnc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/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, + "license": "MIT", "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -14656,9 +12277,8 @@ }, "node_modules/unset-value/node_modules/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, + "license": "MIT", "dependencies": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -14670,9 +12290,8 @@ }, "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "license": "MIT", "dependencies": { "isarray": "1.0.0" }, @@ -14682,27 +12301,24 @@ }, "node_modules/unset-value/node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/untildify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", "dev": true, + "license": "MIT", "dependencies": { "os-homedir": "^1.0.0" }, @@ -14712,9 +12328,8 @@ }, "node_modules/upath": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4", "yarn": "*" @@ -14722,34 +12337,29 @@ }, "node_modules/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, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/uri-js/node_modules/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, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/urix": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/url": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, + "license": "MIT", "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -14757,9 +12367,8 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ursys-min": { "resolved": "_mur", @@ -14767,57 +12376,50 @@ }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/util": { "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "2.0.3" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vm-browserify": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", "dev": true, + "license": "MIT", "dependencies": { "indexof": "0.0.1" } }, "node_modules/watchpack": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -14829,9 +12431,8 @@ }, "node_modules/webpack": { "version": "5.98.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", - "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -14876,9 +12477,8 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10.13.0" @@ -14886,9 +12486,8 @@ }, "node_modules/webpack/node_modules/acorn": { "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "peer": true, "bin": { "acorn": "bin/acorn" @@ -14899,8 +12498,6 @@ }, "node_modules/webpack/node_modules/browserslist": { "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -14916,6 +12513,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", @@ -14932,9 +12530,8 @@ }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -14946,9 +12543,8 @@ }, "node_modules/webpack/node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=0.8.x" @@ -14956,8 +12552,6 @@ }, "node_modules/webpack/node_modules/update-browserslist-db": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -14973,6 +12567,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "peer": true, "dependencies": { "escalade": "^3.2.0", @@ -14987,9 +12582,8 @@ }, "node_modules/which": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14999,9 +12593,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -15015,9 +12608,8 @@ }, "node_modules/which-typed-array": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -15034,8 +12626,7 @@ }, "node_modules/wide-align": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", "optional": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" @@ -15043,26 +12634,23 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -15077,16 +12665,14 @@ }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15099,8 +12685,7 @@ }, "node_modules/wrap-ansi/node_modules/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==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -15110,13 +12695,11 @@ }, "node_modules/wrap-ansi/node_modules/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==" + "license": "MIT" }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -15126,13 +12709,11 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "license": "ISC" }, "node_modules/ws": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "license": "MIT", "dependencies": { "options": ">=0.0.5", "ultron": "1.0.x" @@ -15140,39 +12721,34 @@ }, "node_modules/xmlhttprequest": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -15182,8 +12758,7 @@ }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -15199,17 +12774,15 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" },