--- /dev/null
+// Karma configuration
+const karmaCommon = require('./karma.conf.common.cjs')
+
+let chromeBin = 'ChromeHeadless'
+if (process.platform === 'linux') {
+ // We need to choose either Chrome or Chromium.
+ // Canary is not available on linux.
+ // If we do not find Chromium then we can deduce that
+ // either Chrome is installed or there is no Chrome variant at all,
+ // in which case karma-chrome-launcher will output an error.
+ // If `which` finds nothing it will throw an error.
+ const { execSync } = require('child_process')
+
+ try {
+ if (execSync('which chromium-browser')) chromeBin = 'ChromiumHeadless'
+ } catch (e) {}
+}
+
+module.exports = function (config) {
+ config.set(
+ Object.assign(karmaCommon(config), {
+ files: [
+ 'spec/RAFPlugin.js',
+ {
+ pattern: 'spec/fixtures/fixture.css',
+ included: false,
+ served: true
+ },
+ {
+ pattern: 'spec/fixtures/pixel.png',
+ included: false,
+ served: true
+ },
+ {
+ pattern: 'src/**/*.js',
+ included: false,
+ served: true,
+ type: 'modules'
+ },
+ {
+ pattern: 'spec/helpers.js',
+ included: false,
+ served: true,
+ type: 'module'
+ },
+ {
+ pattern: 'spec/setupBrowser.js',
+ included: true,
+ type: 'module'
+ },
+ {
+ pattern: 'spec/spec/*/**/*.js',
+ included: true,
+ type: 'module'
+ }
+ ],
+
+ // preprocess matching files before serving them to the browser
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+ preprocessors: {
+ 'src/**/*.js': ['coverage']
+ },
+
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['progress', 'coverage'],
+ coverageReporter: {
+ // Specify a reporter type.
+ type: 'lcov',
+ dir: 'coverage/',
+ subdir: function (browser) {
+ // normalization process to keep a consistent browser name accross different OS
+ return browser.toLowerCase().split(/[ /-]/)[0] // output the results into: './coverage/firefox/'
+ },
+ instrumenterOptions: {
+ istanbul: {
+ esModules: true
+ }
+ }
+ },
+
+ // start these browsers
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+ browsers: [chromeBin, 'FirefoxHeadless']
+ })
+ )
+}
--- /dev/null
+// Karma shared configuration
+
+const os = require('os')
+const cpuCount = os.cpus().length
+
+module.exports = function (config) {
+ return {
+ // base path that will be used to resolve all patterns (eg. files, exclude)
+ basePath: '../',
+
+ // frameworks to use
+ // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+ frameworks: ['jasmine'],
+
+ // list of files / patterns to load in the browser
+ files: [
+ '.config/pretest.js',
+ 'spec/RAFPlugin.js',
+ {
+ pattern: 'spec/fixtures/fixture.css',
+ included: false,
+ served: true
+ },
+ {
+ pattern: 'spec/fixtures/fixture.svg',
+ included: false,
+ served: true
+ },
+ {
+ pattern: 'spec/fixtures/pixel.png',
+ included: false,
+ served: true
+ },
+ 'dist/svg.js',
+ 'spec/spec/*.js'
+ ],
+
+ proxies: {
+ '/fixtures/': '/base/spec/fixtures/',
+ '/spec/': '/base/spec/'
+ },
+
+ // web server port
+ port: 9876,
+
+ // enable / disable colors in the output (reporters and logs)
+ colors: true,
+
+ // level of logging
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+ logLevel: config.LOG_INFO,
+
+ // enable / disable watching file and executing tests whenever any file changes
+ autoWatch: false,
+
+ // Continuous Integration mode
+ // if true, Karma captures browsers, runs the tests and exits
+ singleRun: true,
+
+ // Concurrency level
+ // how many browser should be started simultaneous
+ concurrency: cpuCount || Infinity,
+
+ // list of files to exclude
+ exclude: []
+ }
+}
+++ /dev/null
-// Karma shared configuration
-
-const os = require('os')
-const cpuCount = os.cpus().length
-
-module.exports = function (config) {
- return {
- // base path that will be used to resolve all patterns (eg. files, exclude)
- basePath: '../',
-
- // frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['jasmine'],
-
- // list of files / patterns to load in the browser
- files: [
- '.config/pretest.js',
- 'spec/RAFPlugin.js',
- {
- pattern: 'spec/fixtures/fixture.css',
- included: false,
- served: true
- },
- {
- pattern: 'spec/fixtures/fixture.svg',
- included: false,
- served: true
- },
- {
- pattern: 'spec/fixtures/pixel.png',
- included: false,
- served: true
- },
- 'dist/svg.js',
- 'spec/spec/*.js'
- ],
-
- proxies: {
- '/fixtures/': '/base/spec/fixtures/',
- '/spec/': '/base/spec/'
- },
-
- // web server port
- port: 9876,
-
- // enable / disable colors in the output (reporters and logs)
- colors: true,
-
- // level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,
-
- // enable / disable watching file and executing tests whenever any file changes
- autoWatch: false,
-
- // Continuous Integration mode
- // if true, Karma captures browsers, runs the tests and exits
- singleRun: true,
-
- // Concurrency level
- // how many browser should be started simultaneous
- concurrency: cpuCount || Infinity,
-
- // list of files to exclude
- exclude: []
- }
-}
+++ /dev/null
-// Karma configuration
-const karmaCommon = require('./karma.conf.common.js')
-
-let chromeBin = 'ChromeHeadless'
-if (process.platform === 'linux') {
- // We need to choose either Chrome or Chromium.
- // Canary is not available on linux.
- // If we do not find Chromium then we can deduce that
- // either Chrome is installed or there is no Chrome variant at all,
- // in which case karma-chrome-launcher will output an error.
- // If `which` finds nothing it will throw an error.
- const { execSync } = require('child_process')
-
- try {
- if (execSync('which chromium-browser')) chromeBin = 'ChromiumHeadless'
- } catch (e) {}
-}
-
-module.exports = function (config) {
- config.set(
- Object.assign(karmaCommon(config), {
- files: [
- 'spec/RAFPlugin.js',
- {
- pattern: 'spec/fixtures/fixture.css',
- included: false,
- served: true
- },
- {
- pattern: 'spec/fixtures/pixel.png',
- included: false,
- served: true
- },
- {
- pattern: 'src/**/*.js',
- included: false,
- served: true,
- type: 'modules'
- },
- {
- pattern: 'spec/helpers.js',
- included: false,
- served: true,
- type: 'module'
- },
- {
- pattern: 'spec/setupBrowser.js',
- included: true,
- type: 'module'
- },
- {
- pattern: 'spec/spec/*/**/*.js',
- included: true,
- type: 'module'
- }
- ],
-
- // preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: {
- 'src/**/*.js': ['coverage']
- },
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['progress', 'coverage'],
- coverageReporter: {
- // Specify a reporter type.
- type: 'lcov',
- dir: 'coverage/',
- subdir: function (browser) {
- // normalization process to keep a consistent browser name accross different OS
- return browser.toLowerCase().split(/[ /-]/)[0] // output the results into: './coverage/firefox/'
- },
- instrumenterOptions: {
- istanbul: {
- esModules: true
- }
- }
- },
-
- // start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: [chromeBin, 'FirefoxHeadless']
- })
- )
-}
--- /dev/null
+// Karma configuration
+// https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
+
+// TODO: remove dotenv after local test
+// require('dotenv').config()
+
+const karmaCommon = require('./karma.conf.common.cjs')
+
+const SauceLabsLaunchers = {
+ /** Real mobile devices are not available
+ * Your account does not have access to Android devices.
+ * Please contact sales@saucelabs.com to add this feature to your account. */
+ /* sl_android_chrome: {
+ base: 'SauceLabs',
+ appiumVersion: '1.5.3',
+ deviceName: 'Samsung Galaxy S7 Device',
+ deviceOrientation: 'portrait',
+ browserName: 'Chrome',
+ platformVersion: '6.0',
+ platformName: 'Android'
+ }, */
+ /* sl_android: {
+ base: 'SauceLabs',
+ browserName: 'Android',
+ deviceName: 'Android Emulator',
+ deviceOrientation: 'portrait'
+ }, */
+ SL_firefox_latest: {
+ base: 'SauceLabs',
+ browserName: 'firefox',
+ version: 'latest'
+ },
+ SL_chrome_latest: {
+ base: 'SauceLabs',
+ browserName: 'chrome',
+ version: 'latest'
+ },
+ SL_InternetExplorer: {
+ base: 'SauceLabs',
+ browserName: 'internet explorer',
+ version: '11.0'
+ } /*
+ sl_windows_edge: {
+ base: 'SauceLabs',
+ browserName: 'MicrosoftEdge',
+ version: 'latest',
+ platform: 'Windows 10'
+ },
+ sl_macos_safari: {
+ base: 'SauceLabs',
+ browserName: 'safari',
+ platform: 'macOS 10.13',
+ version: '12.0',
+ recordVideo: true,
+ recordScreenshots: true,
+ screenResolution: '1024x768'
+ } */ /*,
+ sl_macos_iphone: {
+ base: 'SauceLabs',
+ browserName: 'Safari',
+ deviceName: 'iPhone SE Simulator',
+ deviceOrientation: 'portrait',
+ platformVersion: '10.2',
+ platformName: 'iOS'
+ }
+ 'SL_Chrome': {
+ base: 'SauceLabs',
+ browserName: 'chrome',
+ version: '48.0',
+ platform: 'Linux'
+ },
+ 'SL_Firefox': {
+ base: 'SauceLabs',
+ browserName: 'firefox',
+ version: '50.0',
+ platform: 'Windows 10'
+ },
+ 'SL_Safari': {
+ base: 'SauceLabs',
+ browserName: 'safari',
+ platform: 'OS X 10.11',
+ version: '10.0'
+ } */
+}
+
+module.exports = function (config) {
+ if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) {
+ console.error(
+ 'SAUCE_USERNAME and SAUCE_ACCESS_KEY must be provided as environment variables.'
+ )
+ console.warn('Aborting Sauce Labs test')
+ process.exit(1)
+ }
+ const settings = Object.assign(karmaCommon(config), {
+ // Concurrency level
+ // how many browser should be started simultaneous
+ // Saucelabs allow up to 5 concurrent sessions on the free open source tier.
+ concurrency: 5,
+
+ // this specifies which plugins karma should load
+ // by default all karma plugins, starting with `karma-` will load
+ // so if you are really puzzled why something isn't working, then comment
+ // out plugins: [] - it's here to make karma load faster
+ // get possible karma plugins by `ls node_modules | grep 'karma-*'`
+ plugins: ['karma-jasmine', 'karma-sauce-launcher'],
+
+ // logLevel: config.LOG_DEBUG,
+
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['dots', 'saucelabs'],
+
+ customLaunchers: SauceLabsLaunchers,
+
+ // start these browsers
+ browsers: Object.keys(SauceLabsLaunchers),
+ sauceLabs: {
+ testName: 'SVG.js Unit Tests'
+ // connectOptions: {
+ // noSslBumpDomains: "all"
+ // },
+ // connectOptions: {
+ // port: 5757,
+ // logfile: 'sauce_connect.log'
+ // },
+ }
+
+ // The number of disconnections tolerated.
+ // browserDisconnectTolerance: 0, // well, sometimes it helps to just restart
+ // // How long does Karma wait for a browser to reconnect (in ms).
+ // browserDisconnectTimeout: 10 * 60 * 1000,
+ // // How long will Karma wait for a message from a browser before disconnecting from it (in ms). ~ macOS 10.12 needs more than 7 minutes
+ // browserNoActivityTimeout: 20 * 60 * 1000,
+ // // Timeout for capturing a browser (in ms). On newer versions of iOS simulator (10.0+), the start up time could be between 3 - 6 minutes.
+ // captureTimeout: 12 * 60 * 1000, // this is useful if saucelabs takes a long time to boot a vm
+
+ // // Required to make Safari on Sauce Labs play nice.
+ // // hostname: 'karmalocal.dev'
+ })
+
+ console.log(settings)
+ config.set(settings)
+}
+++ /dev/null
-// Karma configuration
-// https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
-
-// TODO: remove dotenv after local test
-require('dotenv').config()
-
-const karmaCommon = require('./karma.conf.common.js')
-
-const SauceLabsLaunchers = {
- /** Real mobile devices are not available
- * Your account does not have access to Android devices.
- * Please contact sales@saucelabs.com to add this feature to your account. */
- /* sl_android_chrome: {
- base: 'SauceLabs',
- appiumVersion: '1.5.3',
- deviceName: 'Samsung Galaxy S7 Device',
- deviceOrientation: 'portrait',
- browserName: 'Chrome',
- platformVersion: '6.0',
- platformName: 'Android'
- }, */
- /* sl_android: {
- base: 'SauceLabs',
- browserName: 'Android',
- deviceName: 'Android Emulator',
- deviceOrientation: 'portrait'
- }, */
- SL_firefox_latest: {
- base: 'SauceLabs',
- browserName: 'firefox',
- version: 'latest'
- },
- SL_chrome_latest: {
- base: 'SauceLabs',
- browserName: 'chrome',
- version: 'latest'
- },
- SL_InternetExplorer: {
- base: 'SauceLabs',
- browserName: 'internet explorer',
- version: '11.0'
- }/*
- sl_windows_edge: {
- base: 'SauceLabs',
- browserName: 'MicrosoftEdge',
- version: 'latest',
- platform: 'Windows 10'
- },
- sl_macos_safari: {
- base: 'SauceLabs',
- browserName: 'safari',
- platform: 'macOS 10.13',
- version: '12.0',
- recordVideo: true,
- recordScreenshots: true,
- screenResolution: '1024x768'
- } *//*,
- sl_macos_iphone: {
- base: 'SauceLabs',
- browserName: 'Safari',
- deviceName: 'iPhone SE Simulator',
- deviceOrientation: 'portrait',
- platformVersion: '10.2',
- platformName: 'iOS'
- }
- 'SL_Chrome': {
- base: 'SauceLabs',
- browserName: 'chrome',
- version: '48.0',
- platform: 'Linux'
- },
- 'SL_Firefox': {
- base: 'SauceLabs',
- browserName: 'firefox',
- version: '50.0',
- platform: 'Windows 10'
- },
- 'SL_Safari': {
- base: 'SauceLabs',
- browserName: 'safari',
- platform: 'OS X 10.11',
- version: '10.0'
- } */
-}
-
-module.exports = function (config) {
- if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) {
- console.error('SAUCE_USERNAME and SAUCE_ACCESS_KEY must be provided as environment variables.')
- console.warn('Aborting Sauce Labs test')
- process.exit(1)
- }
- const settings = Object.assign(karmaCommon(config), {
- // Concurrency level
- // how many browser should be started simultaneous
- // Saucelabs allow up to 5 concurrent sessions on the free open source tier.
- concurrency: 5,
-
- // this specifies which plugins karma should load
- // by default all karma plugins, starting with `karma-` will load
- // so if you are really puzzled why something isn't working, then comment
- // out plugins: [] - it's here to make karma load faster
- // get possible karma plugins by `ls node_modules | grep 'karma-*'`
- plugins: [
- 'karma-jasmine',
- 'karma-sauce-launcher'
- ],
-
- // logLevel: config.LOG_DEBUG,
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['dots', 'saucelabs'],
-
- customLaunchers: SauceLabsLaunchers,
-
- // start these browsers
- browsers: Object.keys(SauceLabsLaunchers),
- sauceLabs: {
- testName: 'SVG.js Unit Tests'
- // connectOptions: {
- // noSslBumpDomains: "all"
- // },
- // connectOptions: {
- // port: 5757,
- // logfile: 'sauce_connect.log'
- // },
- }
-
- // The number of disconnections tolerated.
- // browserDisconnectTolerance: 0, // well, sometimes it helps to just restart
- // // How long does Karma wait for a browser to reconnect (in ms).
- // browserDisconnectTimeout: 10 * 60 * 1000,
- // // How long will Karma wait for a message from a browser before disconnecting from it (in ms). ~ macOS 10.12 needs more than 7 minutes
- // browserNoActivityTimeout: 20 * 60 * 1000,
- // // Timeout for capturing a browser (in ms). On newer versions of iOS simulator (10.0+), the start up time could be between 3 - 6 minutes.
- // captureTimeout: 12 * 60 * 1000, // this is useful if saucelabs takes a long time to boot a vm
-
- // // Required to make Safari on Sauce Labs play nice.
- // // hostname: 'karmalocal.dev'
- })
-
- console.log(settings)
- config.set(settings)
-}
try {
if (!SVGElement.prototype.children) {
Object.defineProperty(SVGElement.prototype, 'children', {
- get: function () { return children(this) }
+ get: function () {
+ return children(this)
+ }
})
}
} catch (e) {}
/* global XMLHttpRequest */
'use strict'
-function get (uri) {
+function get(uri) {
var xhr = new XMLHttpRequest()
xhr.open('GET', uri, false)
xhr.send()
- if (xhr.status !== 200) { console.error('SVG.js fixture could not be loaded. Tests will fail.') }
+ if (xhr.status !== 200) {
+ console.error('SVG.js fixture could not be loaded. Tests will fail.')
+ }
return xhr.responseText
}
-function main () {
+function main() {
var style = document.createElement('style')
document.head.appendChild(style)
style.sheet.insertRule(get('/fixtures/fixture.css'), 0)
-import * as pkg from '../package.json'
+import pkg from '../package.json' assert { type: 'json' }
import babel from '@rollup/plugin-babel'
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import filesize from 'rollup-plugin-filesize'
-import { terser } from 'rollup-plugin-terser'
+import terser from '@rollup/plugin-terser'
const buildDate = Date()
const headerShort = `/*! ${pkg.name} v${pkg.version} ${pkg.license}*/;`
const getBabelConfig = (node = false) => {
-
let targets = pkg.browserslist
const plugins = [
- ['@babel/transform-runtime', {
- version: "^7.14.5",
- regenerator: false,
- useESModules: true
- }],
- ["polyfill-corejs3", {
- "method": "usage-pure"
- }]
+ [
+ '@babel/transform-runtime',
+ {
+ version: '^7.14.5',
+ regenerator: false,
+ useESModules: true
+ }
+ ],
+ [
+ 'polyfill-corejs3',
+ {
+ method: 'usage-pure'
+ }
+ ]
]
if (node) {
babelHelpers: 'runtime',
babelrc: false,
targets: targets,
- presets: [['@babel/preset-env', {
- modules: false,
- // useBuildins and plugin-transform-runtime are mutually exclusive
- // https://github.com/babel/babel/issues/10271#issuecomment-528379505
- // use babel-polyfills when released
- useBuiltIns: false,
- bugfixes: true,
- loose: true
- }]],
+ presets: [
+ [
+ '@babel/preset-env',
+ {
+ modules: false,
+ // useBuildins and plugin-transform-runtime are mutually exclusive
+ // https://github.com/babel/babel/issues/10271#issuecomment-528379505
+ // use babel-polyfills when released
+ useBuiltIns: false,
+ bugfixes: true,
+ loose: true
+ }
+ ]
+ ],
plugins
})
}
]
const config = (node, min, esm = false) => ({
- input: (node || esm) ? './src/main.js' : './src/svg.js',
+ input: node || esm ? './src/main.js' : './src/svg.js',
output: {
- file: esm ? './dist/svg.esm.js'
- : node ? './dist/svg.node.js'
- : min ? './dist/svg.min.js'
+ file: esm
+ ? './dist/svg.esm.js'
+ : node
+ ? './dist/svg.node.js'
+ : min
+ ? './dist/svg.min.js'
: './dist/svg.js',
format: esm ? 'esm' : node ? 'cjs' : 'iife',
name: 'SVG',
commonjs(),
getBabelConfig(node),
filesize(),
- !min ? {} : terser({
- mangle: {
- reserved: classes
- },
- output: {
- preamble: headerShort
- }
- })
+ !min
+ ? {}
+ : terser({
+ mangle: {
+ reserved: classes
+ },
+ output: {
+ preamble: headerShort
+ }
+ })
]
})
// [node, minified, esm]
const modes = [[false], [false, true], [true], [false, false, true]]
-export default modes.map(m => config(...m))
+export default modes.map((m) => config(...m))
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
-const getBabelConfig = (targets) => babel({
- include: ['src/**', 'spec/**/*'],
- babelHelpers: 'runtime',
- babelrc: false,
- presets: [['@babel/preset-env', {
- modules: false,
- targets: targets || pkg.browserslist,
- // useBuildins and plugin-transform-runtime are mutually exclusive
- // https://github.com/babel/babel/issues/10271#issuecomment-528379505
- // use babel-polyfills when released
- useBuiltIns: false,
- // corejs: 3,
- bugfixes: true
- }]],
- plugins: [
- ['@babel/plugin-transform-runtime', {
- corejs: 3,
- helpers: true,
- useESModules: true,
- version: "^7.9.6",
- regenerator: false
- }]
- ]
-})
+const getBabelConfig = (targets) =>
+ babel({
+ include: ['src/**', 'spec/**/*'],
+ babelHelpers: 'runtime',
+ babelrc: false,
+ presets: [
+ [
+ '@babel/preset-env',
+ {
+ modules: false,
+ targets: targets || pkg.browserslist,
+ // useBuildins and plugin-transform-runtime are mutually exclusive
+ // https://github.com/babel/babel/issues/10271#issuecomment-528379505
+ // use babel-polyfills when released
+ useBuiltIns: false,
+ // corejs: 3,
+ bugfixes: true
+ }
+ ]
+ ],
+ plugins: [
+ [
+ '@babel/plugin-transform-runtime',
+ {
+ corejs: 3,
+ helpers: true,
+ useESModules: true,
+ version: '^7.9.6',
+ regenerator: false
+ }
+ ]
+ ]
+ })
export default {
- input: [
- 'spec/setupBrowser.js',
- 'spec/spec/*/*.js'
- ],
+ input: ['spec/setupBrowser.js', 'spec/spec/*/*.js'],
output: {
file: 'spec/es5TestBundle.js',
name: 'SVGTests',
- format: 'iife',
+ format: 'iife'
},
plugins: [
resolve({ browser: true }),
{
- "extends": "standard",
- "plugins": [ "sort-class-members" ],
- "rules": {
- "operator-linebreak": [ "error", "before" ],
- "object-curly-spacing": [ "error", "always" ],
- "array-bracket-spacing": [ "error", "always" ],
- "indent": [ "error", 2, { "flatTernaryExpressions": true } ],
- "padded-blocks": "off",
- "sort-class-members/sort-class-members": [ 2, {
- "order": [
- "[static-properties]",
- "[properties]",
- "[conventional-private-properties]",
- "constructor",
- "[static-methods]",
- "[methods]",
- "[conventional-private-methods]",
- "[accessor-pairs]",
- "[getters]",
- "[setters]",
- "[everything-else]"
- ],
- "groups": {
- "constructor": [{
- "name": "constructor",
- "type": "method",
- "sort": "alphabetical"
- }],
- "properties": [{
- "type": "property",
- "sort": "alphabetical"
- }],
- "getters": [{
- "kind": "get",
- "sort": "alphabetical"
- }],
- "setters": [{
- "kind": "set",
- "sort": "alphabetical"
- }],
- "accessor-pairs": [{
- "accessorPair": true,
- "sort": "alphabetical"
- }],
- "static-properties": [{
- "type": "property",
- "static": true,
- "sort": "alphabetical"
- }],
- "conventional-private-properties": [{
- "type": "property",
- "name": "/_.+/",
- "sort": "alphabetical"
- }],
- "arrow-function-properties": [{
- "propertyType": "ArrowFunctionExpression",
- "sort": "alphabetical"
- }],
- "methods": [{
- "type": "method",
- "sort": "alphabetical"
- }],
- "static-methods": [{
- "type": "method",
- "static": true,
- "sort": "alphabetical"
- }],
- "async-methods": [{
- "type": "method",
- "async": true,
- "sort": "alphabetical"
- }],
- "conventional-private-methods": [{
- "type": "method",
- "name": "/_.+/",
- "sort": "alphabetical"
- }],
- "everything-else": [{
- "sort": "alphabetical"
- }]
+ "parserOptions": {
+ "ecmaVersion": "latest",
+ "sourceType": "module"
+ },
+ "env": {
+ "browser": true,
+ "es6": true
+ },
+ "extends": ["eslint:recommended", "prettier"],
+ "rules": {
+ "padded-blocks": "off",
+ "no-unused-vars": [
+ "error",
+ {
+ "vars": "all",
+ "args": "after-used",
+ "ignoreRestSiblings": true,
+ "varsIgnorePattern": "^_"
}
- }]
- }
-}
\ No newline at end of file
+ ]
+ }
+}
-
# Contributing
When contributing to this repository, please first discuss the change you wish to make on gitter, or with an issue to increase your chances of getting your pull request merged into the main code base.
-
## Pull Request Process
When you want to make contributions to the project, the process is pretty simple:
2. Fork the repository to make your own local copy
3. Make a branch in the format of <issue-number>-<friendly-name>. So for example if I made an issue to change the default color, and it was issue 385 (random) on the repo, the branch would be called `385-change-default-color`
4. Make the changes to the src and perhaps make a playground by duplicating the playgrounds we already have.
- - Build the code during the development process with `npm run build:dev` so that we don't throw a huge number of pointless errors
- - When you're done making changes, run `npm run build` to build the code and run the linter
-5. If applicable - please write new tests, we like to keep our code well tested 🎉. Run the tests by either opening the SpecRunner.html file or just run `npm test`, either is fine.
+ - When you're done making changes, run `npm run build` to build the code and run the linter
+5. If applicable - please write new tests, we like to keep our code well tesvted 🎉. Run the tests by running `npm test`
6. Push the code and make a pull request on the main svg.js repo
7. Enjoy our endless love and gratitude ❤️
Seriously, we love pull requests! So go wild!
-
## Code of Conduct
We only have a few simple rules, because we know you wouldn't want to read a whole code of conduct guide now would you? 🤡
---
name: Bug Report
about: 🐞 Report a bug that you found
-
---
# Bug report
---
name: Feature Request
about: 🎂 Ask nicely for something you reaaaaaaaally want
-
---
-
# Feature request
> **For support questions, please use [stackoverflow](https://stackoverflow.com/questions/tagged/svg.js) with the tag svg.js or head to our chat over at [gitter](https://gitter.im/svgdotjs/svg.js)**.
If you want to make a feature request, here are some guidelines to make a good one:
+
- Add example code and usage for feature requests to see how a user would use it
- Tell us the benefits (everything is allowed)
- Make a simple use case like the one below. Obviously your feature request shouldn't be so silly. But make it clear to the maintainers what you want added and how you plan to use it 😃
It would be cool if SVG.js could be used to easily draw smiley the meme, it would make my life so much easier when I want to have memes in my svg.
### Benefits
+
- Drawing memes would be quick and easy
- Memes are funny
I think the syntax to achieve this should be:
```js
-let meme = draw.meme({radius: 300, cx: 50, cy: 80, lookAt: [30, 50]})
+let meme = draw.meme({ radius: 300, cx: 50, cy: 80, lookAt: [30, 50] })
```
Then the user could easily change where the smiley is looking with:
---
name: Other Issue
about: 🍺 Something else...
-
---
> **For support questions, please use [stackoverflow](https://stackoverflow.com/questions/tagged/svg.js) with the tag svg.js or head to our chat over at [gitter](https://gitter.im/svgdotjs/svg.js), if you have a bug report or feature request, use those templates**.
--- /dev/null
+.DS_Store
+.idea
+.importjs.js
+test/
+node_modules/
+.vscode/
+coverage/
+spec/es5TestBundle.js
+.env
+dist
+package-lock.json
--- /dev/null
+{
+ "trailingComma": "none",
+ "tabWidth": 2,
+ "semi": false,
+ "singleQuote": true
+}
language: node_js
node_js:
- - "stable"
+ - 'stable'
services:
- xvfb
addons:
- firefox: latest
- chrome: stable
+ firefox: latest
+ chrome: stable
install:
- npm install
- npm run build
script:
- npm test
- - cat coverage/firefox/lcov.info | node_modules/.bin/coveralls
\ No newline at end of file
+ - cat coverage/firefox/lcov.info | node_modules/.bin/coveralls
[![Join the chat at https://gitter.im/svgdotjs/svg.js](https://badges.gitter.im/svgdotjs/svg.js.svg)](https://gitter.im/svgdotjs/svg.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Twitter](https://img.shields.io/badge/Twitter-@svg__js-green.svg)](https://twitter.com/svg_js)
-
-
-__A lightweight library for manipulating and animating SVG, without any dependencies.__
+**A lightweight library for manipulating and animating SVG, without any dependencies.**
SVG.js is licensed under the terms of the MIT License.
[https://unpkg.com/@svgdotjs/svg.js](https://unpkg.com/@svgdotjs/svg.js)
## Documentation
+
Check [svgjs.dev](https://svgjs.dev/docs/3.0/) to learn more.
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ulima.ums%40googlemail.com&lc=US&item_name=SVG.JS¤cy_code=EUR&bn=PP-DonationsBF%3Abtn_donate_74x21.png%3ANonHostedGuest) or [![Sponsor](https://img.shields.io/badge/Sponsor-svg.js-green.svg)](https://github.com/sponsors/Fuzzyma)
<!DOCTYPE html>
<html>
-<head>
- <title>SVG.js benchmarker</title>
- <style>
- @import url('https://fonts.googleapis.com/css?family=Inconsolata');
- body {
- font-family: 'Inconsolata', 'Menlo', monospace;
- font-weight: 300;
- color: #999;
- font-size: 14px;
- }
- svg {
- width: 2px;
- height: 2px;
- overflow: hidden;
- position: fixed;
- right: 0;
- }
- span.name {
- color: #B7CD3E;
- }
- span.ms {
- color: #FF0066;
- }
- h1 {
- font-size: 1.2em;
- }
- .test {
- text-indent: 1em;
- }
- .skipped {
- color: #FBCB72;
- }
- </style>
-</head>
-<body>
- <div id="draw"></div>
- <svg id="native" width="100" height="100" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs"></svg>
- <script src="../dist/svg.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
- <script src="svg.bench.js"></script>
- <!--<script src="tests/10000-each.js"></script> -->
- <script src="tests/10000-rects.js"></script>
- <!-- <script src="tests/10000-circles.js"></script>
+ <head>
+ <title>SVG.js benchmarker</title>
+ <style>
+ @import url('https://fonts.googleapis.com/css?family=Inconsolata');
+ body {
+ font-family: 'Inconsolata', 'Menlo', monospace;
+ font-weight: 300;
+ color: #999;
+ font-size: 14px;
+ }
+ svg {
+ width: 2px;
+ height: 2px;
+ overflow: hidden;
+ position: fixed;
+ right: 0;
+ }
+ span.name {
+ color: #b7cd3e;
+ }
+ span.ms {
+ color: #ff0066;
+ }
+ h1 {
+ font-size: 1.2em;
+ }
+ .test {
+ text-indent: 1em;
+ }
+ .skipped {
+ color: #fbcb72;
+ }
+ </style>
+ </head>
+ <body>
+ <div id="draw"></div>
+ <svg
+ id="native"
+ width="100"
+ height="100"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svgjs="http://svgjs.dev/svgjs"
+ ></svg>
+ <script src="../dist/svg.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
+ <script src="svg.bench.js"></script>
+ <!--<script src="tests/10000-each.js"></script> -->
+ <script src="tests/10000-rects.js"></script>
+ <!-- <script src="tests/10000-circles.js"></script>
<script src="tests/10000-paths.js"></script>
<script src="tests/10000-boxes.js"></script>
<script src="tests/10000-pointArray-bbox.js"></script>
<script src="tests/10000-accesses.js"></script>
<script src="tests/10000-transform.js"></script> -->
- <script>
- SVG.bench.run()
- </script>
-</body>
+ <script>
+ SVG.bench.run()
+ </script>
+ </body>
</html>
// Add test
test: function (name, run) {
// run test
- var start = (new Date()).getTime()
+ var start = new Date().getTime()
run()
- this.write(name, (new Date()).getTime() - start)
+ this.write(name, new Date().getTime() - start)
// clear everything
this.clear()
if (typeof ms === 'number') {
test.className = 'test'
- test.innerHTML = '<span class="name">' + name + '</span> completed in <span class="ms">' + ms + 'ms</span>'
+ test.innerHTML =
+ '<span class="name">' +
+ name +
+ '</span> completed in <span class="ms">' +
+ ms +
+ 'ms</span>'
} else {
test.className = 'test skipped'
test.innerHTML = name + ' (skipped)'
+SVG.bench.describe(
+ 'Access a dom attributes vs dom properties vs object properties',
+ function (bench) {
+ bench.test('using an object', function () {
+ var sum = 0
+ var obj = { x: '30' }
+ for (var i = 0; i < 1000000; i++) {
+ sum += obj.x * i
+ }
+ console.log(sum)
+ })
-SVG.bench.describe('Access a dom attributes vs dom properties vs object properties', function(bench) {
- bench.test('using an object', function() {
- var sum = 0
- var obj = {x: "30"}
- for (var i = 0; i < 1000000; i++) {
- sum += obj.x * i
- }
- console.log(sum)
- })
+ bench.test('figure out what the overhead is', function () {
+ var obj = bench.draw.rect(100, 100).move(0, 0)
+ })
- bench.test('figure out what the overhead is', function () {
- var obj = bench.draw.rect(100, 100).move(0, 0)
- })
+ bench.test('using dom attributes', function () {
+ var sum = 0
+ var obj = bench.draw.rect(100, 100).move(0, 0)
+ var node = obj.node
+ for (var i = 0; i < 1000000; i++) {
+ sum += node.getAttribute('x') * i
+ }
+ console.log(sum, node.getAttribute('x'))
+ })
- bench.test('using dom attributes', function () {
- var sum = 0
- var obj = bench.draw.rect(100, 100).move(0, 0)
- var node = obj.node
- for (var i = 0; i < 1000000; i++) {
- sum += node.getAttribute('x') * i
- }
- console.log(sum, node.getAttribute('x'))
- })
-
- bench.test('using dom properties', function () {
- var sum = 0
- var obj = bench.draw.rect(100, 100).move(0, 0)
- var node = obj.node
- for (var i = 0; i < 1000000; i++) {
- sum += node.x.baseVal * i
- }
- console.log(sum, node.x)
- })
-})
+ bench.test('using dom properties', function () {
+ var sum = 0
+ var obj = bench.draw.rect(100, 100).move(0, 0)
+ var node = obj.node
+ for (var i = 0; i < 1000000; i++) {
+ sum += node.x.baseVal * i
+ }
+ console.log(sum, node.x)
+ })
+ }
+)
-SVG.bench.describe('Generate 100000 bbox', function(bench) {
- var rect = bench.draw.rect(100,100)
-
- bench.test('using SVG.js v3.0.0', function() {
- for (var i = 0; i < 100000; i++)
- rect.bbox()
+SVG.bench.describe('Generate 100000 bbox', function (bench) {
+ var rect = bench.draw.rect(100, 100)
+
+ bench.test('using SVG.js v3.0.0', function () {
+ for (var i = 0; i < 100000; i++) rect.bbox()
})
//bench.test('using vanilla js', function() {
// var node = rect.node
//})
})
-SVG.bench.describe('Generate 100000 rbox', function(bench) {
- var rect = bench.draw.rect(100,100)
-
- bench.test('using SVG.js v3.0.0', function() {
- for (var i = 0; i < 100000; i++)
- rect.bbox()
+SVG.bench.describe('Generate 100000 rbox', function (bench) {
+ var rect = bench.draw.rect(100, 100)
+
+ bench.test('using SVG.js v3.0.0', function () {
+ for (var i = 0; i < 100000; i++) rect.bbox()
})
//bench.test('using vanilla js', function() {
// var node = rect.node
// bench.snap.rect(50, 50, 100, 100)
//})
})
-SVG.bench.describe('Generate 100000 viewbox', function(bench) {
+SVG.bench.describe('Generate 100000 viewbox', function (bench) {
var nested = bench.draw.nested().viewbox(10, 10, 100, 100)
-
- bench.test('using SVG.js v3.0.0', function() {
- for (var i = 0; i < 100000; i++)
- nested.viewbox()
+
+ bench.test('using SVG.js v3.0.0', function () {
+ for (var i = 0; i < 100000; i++) nested.viewbox()
})
//bench.test('using vanilla js', function() {
// var node = rect.node
-SVG.bench.describe('Generate 10000 circles', function(bench) {
- bench.test('using SVG.js v2.5.3', function() {
- for (var i = 0; i < 10000; i++)
- bench.draw.circle(100,100)
+SVG.bench.describe('Generate 10000 circles', function (bench) {
+ bench.test('using SVG.js v2.5.3', function () {
+ for (var i = 0; i < 10000; i++) bench.draw.circle(100, 100)
})
- bench.test('using vanilla js', function() {
+ bench.test('using vanilla js', function () {
for (var i = 0; i < 10000; i++) {
var circle = document.createElementNS(SVG.ns, 'circle')
circle.setAttributeNS(null, 'rx', 50)
bench.raw.appendChild(circle)
}
})
- bench.test('using Snap.svg v0.5.1', function() {
- for (var i = 0; i < 10000; i++)
- bench.snap.circle(50, 50, 100, 100)
+ bench.test('using Snap.svg v0.5.1', function () {
+ for (var i = 0; i < 10000; i++) bench.snap.circle(50, 50, 100, 100)
})
})
-SVG.bench.describe('Generate 10000 circles with fill', function(bench) {
- bench.test('using SVG.js v2.5.3', function() {
- for (var i = 0; i < 10000; i++)
- bench.draw.circle(100,100).fill('#f06')
+SVG.bench.describe('Generate 10000 circles with fill', function (bench) {
+ bench.test('using SVG.js v2.5.3', function () {
+ for (var i = 0; i < 10000; i++) bench.draw.circle(100, 100).fill('#f06')
})
- bench.test('using vanilla js', function() {
+ bench.test('using vanilla js', function () {
for (var i = 0; i < 10000; i++) {
var circle = document.createElementNS(SVG.ns, 'circle')
circle.setAttributeNS(null, 'rx', 50)
bench.raw.appendChild(circle)
}
})
- bench.test('using Snap.svg v0.5.1', function() {
+ bench.test('using Snap.svg v0.5.1', function () {
for (var i = 0; i < 10000; i++)
bench.snap.circle(50, 50, 100, 100).attr('fill', '#f06')
})
-})
\ No newline at end of file
+})
-SVG.bench.describe('each() vs forEach()', function(bench) {
+SVG.bench.describe('each() vs forEach()', function (bench) {
// preparation
var list = []
- for (var i = 99; i >= 0; i--)
- list.push(bench.draw.rect(100, 50))
+ for (var i = 99; i >= 0; i--) list.push(bench.draw.rect(100, 50))
var set = new SVG.Set(list)
-
- bench.test('10000 x each()', function() {
+ bench.test('10000 x each()', function () {
for (var i = 0; i < 10000; i++) {
- set.each(function() {
+ set.each(function () {
this.fill('#f06')
})
}
})
- bench.test('10000 x forEach()', function() {
+ bench.test('10000 x forEach()', function () {
for (var i = 0; i < 10000; i++) {
- list.forEach(function(e) {
+ list.forEach(function (e) {
e.fill('#f06')
})
}
})
-
-})
\ No newline at end of file
+})
-SVG.bench.describe('Generate 10000 pathArrays bbox', function(bench) {
- var data = 'M97.499,75.211l5.652,-4.874c-1.235,-3.156 -2.115,-6.44 -2.623,-9.791l-8.313,-1.582c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.313,-1.582c0.508,-3.351 1.388,-6.635 2.623,-9.791l-6.408,-5.526c1.452,-3.204 3.215,-6.258 5.263,-9.117l7.99,2.787c2.116,-2.648 4.52,-5.052 7.168,-7.168l-2.787,-7.99c2.86,-2.049 5.913,-3.812 9.117,-5.263l5.526,6.408c3.156,-1.236 6.44,-2.115 9.791,-2.624l1.582,-8.312c3.501,-0.345 7.027,-0.345 10.527,0l1.582,8.312c3.351,0.509 6.635,1.388 9.791,2.624l5.526,-6.408c3.204,1.451 6.258,3.214 9.117,5.263l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.168l7.99,-2.787c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.236,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.582c-0.509,3.351 -1.388,6.635 -2.624,9.791l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.117l-7.99,-2.787c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.99c-2.859,2.048 -5.913,3.811 -9.117,5.263l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.624l-1.444,7.589l0.16,0.015l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.624l5.526,-6.409c3.204,1.452 6.258,3.215 9.117,5.264l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.167l7.99,-2.786c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.792l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.116l-7.99,-2.786c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.989c-2.859,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.5,0.345 -7.026,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.989c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.786c-2.048,-2.859 -3.811,-5.912 -5.263,-9.116l6.408,-5.526c-1.235,-3.157 -2.115,-6.441 -2.624,-9.792l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.312,-1.582c0.509,-3.351 1.389,-6.635 2.624,-9.791l-6.408,-5.526c0.034,-0.076 0.068,-0.151 0.103,-0.226l-7.783,-2.714c-2.116,2.648 -4.52,5.052 -7.168,7.167l2.787,7.99c-2.86,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.501,0.345 -7.027,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.99c-2.648,-2.115 -5.052,-4.519 -7.168,-7.167l-7.99,2.786c-2.049,-2.859 -3.812,-5.913 -5.263,-9.116l6.408,-5.527c-1.236,-3.156 -2.115,-6.44 -2.624,-9.791l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.528l8.312,-1.581c0.509,-3.351 1.388,-6.635 2.624,-9.791l-6.408,-5.527c1.451,-3.204 3.214,-6.257 5.263,-9.116l7.99,2.786c2.116,-2.648 4.52,-5.052 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.408c3.156,-1.235 6.44,-2.115 9.791,-2.623l1.582,-8.313c3.5,-0.345 7.026,-0.345 10.527,0l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.623l5.526,-6.408c3.204,1.452 6.257,3.215 9.117,5.264l-2.787,7.99c2.648,2.115 5.052,4.519 7.168,7.167l7.99,-2.786c0.049,0.069 0.099,0.139 0.148,0.209Zm48.456,73.925c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.741,-4.812 -10.741,-10.74c0,-5.927 4.813,-10.74 10.741,-10.74Zm-5.402,-41.978l-0.16,-0.016l-1.582,-8.312c-3.351,-0.509 -6.635,-1.389 -9.791,-2.624l-5.526,6.408c-3.204,-1.452 -6.257,-3.215 -9.117,-5.263l2.787,-7.99c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.787c-0.049,-0.07 -0.099,-0.139 -0.148,-0.209l-5.652,4.874c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.581c0.345,3.501 0.345,7.027 0,10.528l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.791l6.408,5.527c-0.034,0.075 -0.068,0.15 -0.103,0.225l7.783,2.714c2.116,-2.647 4.52,-5.051 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.409c3.156,-1.236 6.44,-2.116 9.791,-2.624l1.444,-7.589Zm-86.853,-11.617c5.928,0 10.74,4.812 10.74,10.74c0,5.928 -4.812,10.74 -10.74,10.74c-5.927,0 -10.74,-4.812 -10.74,-10.74c0,-5.928 4.813,-10.74 10.74,-10.74Zm91.957,-52.581c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.74,-4.812 -10.74,-10.74c0,-5.927 4.812,-10.74 10.74,-10.74Z'
+SVG.bench.describe('Generate 10000 pathArrays bbox', function (bench) {
+ var data =
+ 'M97.499,75.211l5.652,-4.874c-1.235,-3.156 -2.115,-6.44 -2.623,-9.791l-8.313,-1.582c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.313,-1.582c0.508,-3.351 1.388,-6.635 2.623,-9.791l-6.408,-5.526c1.452,-3.204 3.215,-6.258 5.263,-9.117l7.99,2.787c2.116,-2.648 4.52,-5.052 7.168,-7.168l-2.787,-7.99c2.86,-2.049 5.913,-3.812 9.117,-5.263l5.526,6.408c3.156,-1.236 6.44,-2.115 9.791,-2.624l1.582,-8.312c3.501,-0.345 7.027,-0.345 10.527,0l1.582,8.312c3.351,0.509 6.635,1.388 9.791,2.624l5.526,-6.408c3.204,1.451 6.258,3.214 9.117,5.263l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.168l7.99,-2.787c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.236,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.582c-0.509,3.351 -1.388,6.635 -2.624,9.791l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.117l-7.99,-2.787c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.99c-2.859,2.048 -5.913,3.811 -9.117,5.263l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.624l-1.444,7.589l0.16,0.015l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.624l5.526,-6.409c3.204,1.452 6.258,3.215 9.117,5.264l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.167l7.99,-2.786c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.792l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.116l-7.99,-2.786c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.989c-2.859,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.5,0.345 -7.026,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.989c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.786c-2.048,-2.859 -3.811,-5.912 -5.263,-9.116l6.408,-5.526c-1.235,-3.157 -2.115,-6.441 -2.624,-9.792l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.312,-1.582c0.509,-3.351 1.389,-6.635 2.624,-9.791l-6.408,-5.526c0.034,-0.076 0.068,-0.151 0.103,-0.226l-7.783,-2.714c-2.116,2.648 -4.52,5.052 -7.168,7.167l2.787,7.99c-2.86,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.501,0.345 -7.027,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.99c-2.648,-2.115 -5.052,-4.519 -7.168,-7.167l-7.99,2.786c-2.049,-2.859 -3.812,-5.913 -5.263,-9.116l6.408,-5.527c-1.236,-3.156 -2.115,-6.44 -2.624,-9.791l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.528l8.312,-1.581c0.509,-3.351 1.388,-6.635 2.624,-9.791l-6.408,-5.527c1.451,-3.204 3.214,-6.257 5.263,-9.116l7.99,2.786c2.116,-2.648 4.52,-5.052 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.408c3.156,-1.235 6.44,-2.115 9.791,-2.623l1.582,-8.313c3.5,-0.345 7.026,-0.345 10.527,0l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.623l5.526,-6.408c3.204,1.452 6.257,3.215 9.117,5.264l-2.787,7.99c2.648,2.115 5.052,4.519 7.168,7.167l7.99,-2.786c0.049,0.069 0.099,0.139 0.148,0.209Zm48.456,73.925c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.741,-4.812 -10.741,-10.74c0,-5.927 4.813,-10.74 10.741,-10.74Zm-5.402,-41.978l-0.16,-0.016l-1.582,-8.312c-3.351,-0.509 -6.635,-1.389 -9.791,-2.624l-5.526,6.408c-3.204,-1.452 -6.257,-3.215 -9.117,-5.263l2.787,-7.99c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.787c-0.049,-0.07 -0.099,-0.139 -0.148,-0.209l-5.652,4.874c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.581c0.345,3.501 0.345,7.027 0,10.528l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.791l6.408,5.527c-0.034,0.075 -0.068,0.15 -0.103,0.225l7.783,2.714c2.116,-2.647 4.52,-5.051 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.409c3.156,-1.236 6.44,-2.116 9.791,-2.624l1.444,-7.589Zm-86.853,-11.617c5.928,0 10.74,4.812 10.74,10.74c0,5.928 -4.812,10.74 -10.74,10.74c-5.927,0 -10.74,-4.812 -10.74,-10.74c0,-5.928 4.813,-10.74 10.74,-10.74Zm91.957,-52.581c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.74,-4.812 -10.74,-10.74c0,-5.927 4.812,-10.74 10.74,-10.74Z'
- var data2 = 'M0.48858732019046247.35239897640279355L0.5168962223329727.32957811442929225C0.5107105368860513.31480120831760355.5063029229643583.2994249853547438.5037585276550173.2837350574775992L0.46212160205156927.2763278757701558C0.46039361704817827.25993562345804494.46039361704817827.2434263170734397.46212160205156927.22703874692422862L0.5037585276550173.2196315652167852C0.5063029229643582.20394163733964055.5107105368860513.1885654143767808.5168962223329727.17378850826509218L0.4848007791395535.14791487608093778C0.492073342110347.13291322615006.5009035959102843.11861390065414837.5111613155825881.1052275969236928L0.5511804465306873.11827678492536459C0.5617787545514856.10587841756676146.5738195544012016.09462249795570335.5870824653837506.0847150412597803L0.5731233517476615.047304559690581297C0.5874480969931638.037710807908943156.6027395121101284.02945615471664055.6187872337068381.022662336349067613L0.6464650456741969.052665636210823215C0.6622723519660869.046878482866701814.678720765737496.04276286167779995.6955047592052157.040379640761814675L0.7034284469598956.0014615027388882582C0.7209637382551767 -0.0001538434615339766.7386242458550512 -0.0001538434615339766.7561545284981485.0014615027388882582L0.7640782162528285.040379640761814675C0.7808622097205482.04276286167779995.7973106234919571.046878482866701814.8131179297838472.052665636210823215L0.8407957417512061.022662336349067617C0.8568434633479157.02945615471664055.872139887117064.037710807908943156.8864596237103826.04730455969058131L0.8725005100742934.0847150412597803C0.8857634210568424.09462249795570335.8978042209065583.10587841756676146.9084025289273567.11827678492536459L0.948421659875456.1052275969236928C0.9586843881999436.11861390065414837.9675146419998809.13291322615006.9747821963184906.14791487608093778L0.9426867531250714.17378850826509218C0.9488774472241766.1885654143767808.953280052493686.20394163733964055.9558294564552107.2196315652167852L0.9974613734064749.22703874692422862C0.9991893584098659.2434263170734397.9991893584098659.25993562345804494.9974613734064749.2763278757701558L0.9558294564552107.2837350574775992C0.953280052493686.2994249853547438.9488774472241766.31480120831760366.9426867531250714.32957811442929225L0.9747821963184906.3554517466134466C0.9675146419998809.37045339654432435.9586843881999436.38474803987733625.948421659875456.3981390257706916L0.9084025289273567.3850898377690198C0.8978042209065583.3974882051276229.8857634210568424.40874412473868105.8725005100742934.41865158143460407L0.8864596237103826.4560620630038031C0.8721398871170639.46565113262254143.8568434633479156.4739057858148441.8407957417512061.4807042863453168L0.8131179297838472.45070098648356116C0.7973106234919571.4564834576647828.7808622097205482.4606037610165844.7640782162528285.4629869819325697L0.756845722499505.4985199161789591L0.7576471068489037.4985901486224557L0.7655707946035836.5375129688082819C0.7823547880713033.5398915075613674.7988032018427124.5440118109131691.8146105081346023.5497989642572905L0.8422883201019612.519790982232635C0.8583360416986708.5265894827631077.8736324654678193.5348441359554104.8879522020611378.5444378877370485L0.8739930884250485.5818483693062474C0.8872559994075976.5917558260021705.8992967992573135.6030117456132287.9098951072781118.615405430808932L0.9499142382262111.6023609249701599C0.9601769665506987.6157472287006156.969007220350636.6300465541965272.9762747746692458.6450482041274048L0.9441793314758266.6709218363115593C0.9503650169227481.685698742423248.9547726308444411.7010749653861077.9573220348059658.7167648932632523L0.9989539517572301.7241720749706957C1.000681936760621.7405596451199068 1.000681936760621.757068951504512.9989539517572301.7734612038166229L0.9573220348059658.7808637033611664C0.9547726308444411.796553631238311.950365016922748.8119298542011708.9441793314758266.8267114424757592L0.9762747746692458.8525850746599137C0.969007220350636.8675867245907916.9601769665506987.8818813679238033.9499142382262111.8952676716542589L0.9098951072781118.8822231658154869C0.8992967992573135.89462153317409.8872559994075976.9058774527851481.8739930884250485.9157849094810713L0.8879522020611378.9531907088873705C0.8736324654678191.9627844606690087.8583360416986707.9710391138613113.8422883201019612.977837614391784L0.8146105081346023.9478343145300284C0.7988032018427124.9536167857112502.7823547880713033.9577370890630518.7655707946035836.9601156278161371L0.7576471068489037.9990384480019633C0.7401168242058064 1.0006537942023856.7224563166059317 1.0006537942023856.7049210253106508.9990384480019633L0.6969973375559708.9601156278161371C0.6802133440882511.9577370890630517.6637649303168421.95361678571125.647957624024952.9478343145300284L0.6202798120575933.977837614391784C0.6042320904608837.9710391138613113.5889356666917354.9627844606690087.5746159300984167.9531907088873705L0.5885750437345059.9157849094810713C0.5753121327519569.9058774527851481.563271332902241.89462153317409.5526730248814425.8822231658154869L0.5126538939333434.8952676716542589C0.5023961742610396.8818813679238033.49356592046110226.8675867245907916.4862933574903087.8525850746599138L0.518388800683728.8267114424757593C0.5122031152368065.8119298542011709.5077955013151135.7965536312383112.5052460973535888.7808637033611665L0.46361418040232455.773461203816623C0.46188619539893355.757068951504512.46188619539893355.7405596451199069.46361418040232455.7241720749706959L0.5052460973535888.7167648932632524C0.5077955013151135.7010749653861078.5122031152368065.6856987424232481.518388800683728.6709218363115594L0.4862933574903087.645048204127405C0.48646365166455596.6446923597470222.48663394583880315.644341197529539.4868092486652341.6439900353120559L0.4478269087191694.6312826452020677C0.43722860069837116.6436810125606708.4251878008486552.6549369321717289.4119248898661061.6648397067047522L0.42588400350219535.7022501882739512C0.411559258256693.7118439400555895.3962678431397284.720098593247892.3802201215430187.7268970937783648L0.35254230957565996.6968937939166092C0.3367350032837699.702676265097831.32028658951236094.7067965684496326.3035025960446412.7091751072027179L0.2955789082899612.7480979273885441C0.27804361699468016.7497132735889663.2603831093948056.7497132735889663.24285282675170825.7480979273885441L0.23492913899702825.7091751072027179C0.21814514552930853.7067965684496325.2016967317578995.7026762650978308.1858894254660095.6968937939166092L0.15821161349865073.7268970937783648C0.14216389190194106.720098593247892.12686746813279273.7118439400555895.1125477315394741.7022501882739512L0.1265068451755633.6648397067047522C0.11324393419301426.6549369321717289.10120313434329828.6436810125606708.09060482632250003.6312826452020677L0.05058569537440074.6443271510408397C0.04032296704991321.6309408473103841.03149271324997591.6166415218144725.024225158931366137.6016445540464946L0.056320602124785436.5757662396994404C0.050129908025680216.5609893335877518.04572730275617092.545613110624892.0431778987946462.5299231827477474L0.001545981843381972.5225206832032038C-0.00018200316000904808.5061284308910928 -0.00018200316000904808.48961912450648765.001545981843381972.4732268721943768L0.0431778987946462.4658243726498331C0.04572730275617092.4501344447726885.050129908025680216.4347582218098287.056320602124785436.4199813156981401L0.02422515893136614.39410300135108595C0.03149271324997591.3791013514202082.04032296704991321.3648067080871963.05058569537440075.3514204043567407L0.09060482632250003.36446491019551275C0.10120313434329828.35206654283690964.11324393419301426.34081062322585154.1265068451755633.33090784869282824L0.1125477315394741.2934973671236292C0.12686746813279273.2839036153419911.14216389190194106.2756489621496885.15821161349865073.2688504616192157L0.1858894254660095.29885376148097137C0.2016967317578995.2930712902997497.21814514552930853.2889509869479481.23492913899702825.2865724481948626L0.24285282675170825.2476496280090364C0.2603831093948056.24603428180861417.27804361699468016.24603428180861417.2955789082899612.2476496280090364L0.3035025960446412.2865724481948626C0.32028658951236094.28895098694794813.33673500328377.2930712902997497.35254230957565996.29885376148097137L0.3802201215430187.2688504616192157C0.39626784313972835.2756489621496884.411559258256693.2839036153419911.42588400350219535.2934973671236292L0.4119248898661061.33090784869282824C0.42518780084865515.3408106232258515.43722860069837116.35206654283690964.4478269087191694.36446491019551275L0.4878460396672687.3514204043567407C0.4880914636242721.3517434735968252.4883418962334592.35207122499980936.48858732019046247.3523989764027936ZM0.731286570405869.6985278687686304C0.7609728518989083.6985278687686304.7850794948592591.7210631188052454.7850794948592591.7488142983122096C0.7850794948592591.7765701599820733.7609728518989085.7991007278557888.731286570405869.7991007278557888C0.701595280260646.7991007278557888.6774886373002953.7765701599820733.6774886373002953.7488142983122096C0.6774886373002953.7210631188052455.701595280260646.6985278687686304.731286570405869.6985278687686304ZM0.7042298313092943.5019800345618924L0.7034284469598956.501905119955496L0.6955047592052157.46298698193256965C0.678720765737496.46060376101658435.6622723519660869.45648345766478277.6464650456741969.4507009864835611L0.6187872337068382.4807042863453167C0.6027395121101286.473905785814844.5874480969931639.4656511326225414.5731233517476615.45606206300380303L0.5870824653837508.418651581434604C0.5738195544012017.408744124738681.5617787545514857.3974882051276229.5511804465306874.3850898377690197L0.5111613155825881.39813902577069155C0.5109158916255848.39781127436770736.5106654590163977.3974882051276229.5104200350593944.39716045372463865L0.48211113291688407.41998131569813996C0.48829681836380556.4347582218098286.4927044322854986.4501344447726883.4952538362470233.465824372649833L0.5368857531982875.47322687219437665C0.5386137382016786.48961912450648754.5386137382016786.5061284308910927.5368857531982875.5225206832032036L0.4952538362470233.5299231827477473C0.4927044322854986.5456131106248919.48829681836380556.5609893335877517.48211113291688407.5757662396994403L0.5142065761103034.6016445540464944C0.5140362819360561.6019957162639775.5138659877618089.6023468784814607.513690684935378.6026980406989437L0.5526730248814427.615405430808932C0.563271332902241.6030117456132287.5753121327519569.5917558260021705.588575043734506.5818483693062474L0.5746159300984167.5444378877370485C0.5889356666917354.5348441359554102.6042320904608837.5265894827631077.6202798120575934.519790982232635L0.6479576240249522.5497989642572905C0.6637649303168422.544011810913169.6802133440882512.5398915075613674.6969973375559709.5375129688082819L0.7042298313092945.5019800345618926ZM0.2692133631947428.447587348155211C0.2989046533399659.447587348155211.32300628764813283.47011791602892633.32300628764813283.4978737776987901C0.32300628764813283.5256296393686539.2989046533399659.5481602072423692.2692133631947428.5481602072423692C0.23952708170170345.5481602072423692.21542043874135278.5256296393686539.21542043874135278.4978737776987901C0.21542043874135278.47011791602892633.23952708170170345.447587348155211.2692133631947428.447587348155211ZM0.7297939920551139.20139454072216306C0.7594802735481532.20139454072216306.783586916508504.2239297907587782.783586916508504.2516809702657422C0.783586916508504.279436831935606.7594802735481533.30196739980932136.7297939920551139.30196739980932136C0.7001027019098908.30196739980932136.6760010676017238.27943683193560603.6760010676017238.2516809702657422C0.6760010676017238.2239297907587782.7001027019098908.20139454072216306.7297939920551139.20139454072216306Z '
+ var data2 =
+ 'M0.48858732019046247.35239897640279355L0.5168962223329727.32957811442929225C0.5107105368860513.31480120831760355.5063029229643583.2994249853547438.5037585276550173.2837350574775992L0.46212160205156927.2763278757701558C0.46039361704817827.25993562345804494.46039361704817827.2434263170734397.46212160205156927.22703874692422862L0.5037585276550173.2196315652167852C0.5063029229643582.20394163733964055.5107105368860513.1885654143767808.5168962223329727.17378850826509218L0.4848007791395535.14791487608093778C0.492073342110347.13291322615006.5009035959102843.11861390065414837.5111613155825881.1052275969236928L0.5511804465306873.11827678492536459C0.5617787545514856.10587841756676146.5738195544012016.09462249795570335.5870824653837506.0847150412597803L0.5731233517476615.047304559690581297C0.5874480969931638.037710807908943156.6027395121101284.02945615471664055.6187872337068381.022662336349067613L0.6464650456741969.052665636210823215C0.6622723519660869.046878482866701814.678720765737496.04276286167779995.6955047592052157.040379640761814675L0.7034284469598956.0014615027388882582C0.7209637382551767 -0.0001538434615339766.7386242458550512 -0.0001538434615339766.7561545284981485.0014615027388882582L0.7640782162528285.040379640761814675C0.7808622097205482.04276286167779995.7973106234919571.046878482866701814.8131179297838472.052665636210823215L0.8407957417512061.022662336349067617C0.8568434633479157.02945615471664055.872139887117064.037710807908943156.8864596237103826.04730455969058131L0.8725005100742934.0847150412597803C0.8857634210568424.09462249795570335.8978042209065583.10587841756676146.9084025289273567.11827678492536459L0.948421659875456.1052275969236928C0.9586843881999436.11861390065414837.9675146419998809.13291322615006.9747821963184906.14791487608093778L0.9426867531250714.17378850826509218C0.9488774472241766.1885654143767808.953280052493686.20394163733964055.9558294564552107.2196315652167852L0.9974613734064749.22703874692422862C0.9991893584098659.2434263170734397.9991893584098659.25993562345804494.9974613734064749.2763278757701558L0.9558294564552107.2837350574775992C0.953280052493686.2994249853547438.9488774472241766.31480120831760366.9426867531250714.32957811442929225L0.9747821963184906.3554517466134466C0.9675146419998809.37045339654432435.9586843881999436.38474803987733625.948421659875456.3981390257706916L0.9084025289273567.3850898377690198C0.8978042209065583.3974882051276229.8857634210568424.40874412473868105.8725005100742934.41865158143460407L0.8864596237103826.4560620630038031C0.8721398871170639.46565113262254143.8568434633479156.4739057858148441.8407957417512061.4807042863453168L0.8131179297838472.45070098648356116C0.7973106234919571.4564834576647828.7808622097205482.4606037610165844.7640782162528285.4629869819325697L0.756845722499505.4985199161789591L0.7576471068489037.4985901486224557L0.7655707946035836.5375129688082819C0.7823547880713033.5398915075613674.7988032018427124.5440118109131691.8146105081346023.5497989642572905L0.8422883201019612.519790982232635C0.8583360416986708.5265894827631077.8736324654678193.5348441359554104.8879522020611378.5444378877370485L0.8739930884250485.5818483693062474C0.8872559994075976.5917558260021705.8992967992573135.6030117456132287.9098951072781118.615405430808932L0.9499142382262111.6023609249701599C0.9601769665506987.6157472287006156.969007220350636.6300465541965272.9762747746692458.6450482041274048L0.9441793314758266.6709218363115593C0.9503650169227481.685698742423248.9547726308444411.7010749653861077.9573220348059658.7167648932632523L0.9989539517572301.7241720749706957C1.000681936760621.7405596451199068 1.000681936760621.757068951504512.9989539517572301.7734612038166229L0.9573220348059658.7808637033611664C0.9547726308444411.796553631238311.950365016922748.8119298542011708.9441793314758266.8267114424757592L0.9762747746692458.8525850746599137C0.969007220350636.8675867245907916.9601769665506987.8818813679238033.9499142382262111.8952676716542589L0.9098951072781118.8822231658154869C0.8992967992573135.89462153317409.8872559994075976.9058774527851481.8739930884250485.9157849094810713L0.8879522020611378.9531907088873705C0.8736324654678191.9627844606690087.8583360416986707.9710391138613113.8422883201019612.977837614391784L0.8146105081346023.9478343145300284C0.7988032018427124.9536167857112502.7823547880713033.9577370890630518.7655707946035836.9601156278161371L0.7576471068489037.9990384480019633C0.7401168242058064 1.0006537942023856.7224563166059317 1.0006537942023856.7049210253106508.9990384480019633L0.6969973375559708.9601156278161371C0.6802133440882511.9577370890630517.6637649303168421.95361678571125.647957624024952.9478343145300284L0.6202798120575933.977837614391784C0.6042320904608837.9710391138613113.5889356666917354.9627844606690087.5746159300984167.9531907088873705L0.5885750437345059.9157849094810713C0.5753121327519569.9058774527851481.563271332902241.89462153317409.5526730248814425.8822231658154869L0.5126538939333434.8952676716542589C0.5023961742610396.8818813679238033.49356592046110226.8675867245907916.4862933574903087.8525850746599138L0.518388800683728.8267114424757593C0.5122031152368065.8119298542011709.5077955013151135.7965536312383112.5052460973535888.7808637033611665L0.46361418040232455.773461203816623C0.46188619539893355.757068951504512.46188619539893355.7405596451199069.46361418040232455.7241720749706959L0.5052460973535888.7167648932632524C0.5077955013151135.7010749653861078.5122031152368065.6856987424232481.518388800683728.6709218363115594L0.4862933574903087.645048204127405C0.48646365166455596.6446923597470222.48663394583880315.644341197529539.4868092486652341.6439900353120559L0.4478269087191694.6312826452020677C0.43722860069837116.6436810125606708.4251878008486552.6549369321717289.4119248898661061.6648397067047522L0.42588400350219535.7022501882739512C0.411559258256693.7118439400555895.3962678431397284.720098593247892.3802201215430187.7268970937783648L0.35254230957565996.6968937939166092C0.3367350032837699.702676265097831.32028658951236094.7067965684496326.3035025960446412.7091751072027179L0.2955789082899612.7480979273885441C0.27804361699468016.7497132735889663.2603831093948056.7497132735889663.24285282675170825.7480979273885441L0.23492913899702825.7091751072027179C0.21814514552930853.7067965684496325.2016967317578995.7026762650978308.1858894254660095.6968937939166092L0.15821161349865073.7268970937783648C0.14216389190194106.720098593247892.12686746813279273.7118439400555895.1125477315394741.7022501882739512L0.1265068451755633.6648397067047522C0.11324393419301426.6549369321717289.10120313434329828.6436810125606708.09060482632250003.6312826452020677L0.05058569537440074.6443271510408397C0.04032296704991321.6309408473103841.03149271324997591.6166415218144725.024225158931366137.6016445540464946L0.056320602124785436.5757662396994404C0.050129908025680216.5609893335877518.04572730275617092.545613110624892.0431778987946462.5299231827477474L0.001545981843381972.5225206832032038C-0.00018200316000904808.5061284308910928 -0.00018200316000904808.48961912450648765.001545981843381972.4732268721943768L0.0431778987946462.4658243726498331C0.04572730275617092.4501344447726885.050129908025680216.4347582218098287.056320602124785436.4199813156981401L0.02422515893136614.39410300135108595C0.03149271324997591.3791013514202082.04032296704991321.3648067080871963.05058569537440075.3514204043567407L0.09060482632250003.36446491019551275C0.10120313434329828.35206654283690964.11324393419301426.34081062322585154.1265068451755633.33090784869282824L0.1125477315394741.2934973671236292C0.12686746813279273.2839036153419911.14216389190194106.2756489621496885.15821161349865073.2688504616192157L0.1858894254660095.29885376148097137C0.2016967317578995.2930712902997497.21814514552930853.2889509869479481.23492913899702825.2865724481948626L0.24285282675170825.2476496280090364C0.2603831093948056.24603428180861417.27804361699468016.24603428180861417.2955789082899612.2476496280090364L0.3035025960446412.2865724481948626C0.32028658951236094.28895098694794813.33673500328377.2930712902997497.35254230957565996.29885376148097137L0.3802201215430187.2688504616192157C0.39626784313972835.2756489621496884.411559258256693.2839036153419911.42588400350219535.2934973671236292L0.4119248898661061.33090784869282824C0.42518780084865515.3408106232258515.43722860069837116.35206654283690964.4478269087191694.36446491019551275L0.4878460396672687.3514204043567407C0.4880914636242721.3517434735968252.4883418962334592.35207122499980936.48858732019046247.3523989764027936ZM0.731286570405869.6985278687686304C0.7609728518989083.6985278687686304.7850794948592591.7210631188052454.7850794948592591.7488142983122096C0.7850794948592591.7765701599820733.7609728518989085.7991007278557888.731286570405869.7991007278557888C0.701595280260646.7991007278557888.6774886373002953.7765701599820733.6774886373002953.7488142983122096C0.6774886373002953.7210631188052455.701595280260646.6985278687686304.731286570405869.6985278687686304ZM0.7042298313092943.5019800345618924L0.7034284469598956.501905119955496L0.6955047592052157.46298698193256965C0.678720765737496.46060376101658435.6622723519660869.45648345766478277.6464650456741969.4507009864835611L0.6187872337068382.4807042863453167C0.6027395121101286.473905785814844.5874480969931639.4656511326225414.5731233517476615.45606206300380303L0.5870824653837508.418651581434604C0.5738195544012017.408744124738681.5617787545514857.3974882051276229.5511804465306874.3850898377690197L0.5111613155825881.39813902577069155C0.5109158916255848.39781127436770736.5106654590163977.3974882051276229.5104200350593944.39716045372463865L0.48211113291688407.41998131569813996C0.48829681836380556.4347582218098286.4927044322854986.4501344447726883.4952538362470233.465824372649833L0.5368857531982875.47322687219437665C0.5386137382016786.48961912450648754.5386137382016786.5061284308910927.5368857531982875.5225206832032036L0.4952538362470233.5299231827477473C0.4927044322854986.5456131106248919.48829681836380556.5609893335877517.48211113291688407.5757662396994403L0.5142065761103034.6016445540464944C0.5140362819360561.6019957162639775.5138659877618089.6023468784814607.513690684935378.6026980406989437L0.5526730248814427.615405430808932C0.563271332902241.6030117456132287.5753121327519569.5917558260021705.588575043734506.5818483693062474L0.5746159300984167.5444378877370485C0.5889356666917354.5348441359554102.6042320904608837.5265894827631077.6202798120575934.519790982232635L0.6479576240249522.5497989642572905C0.6637649303168422.544011810913169.6802133440882512.5398915075613674.6969973375559709.5375129688082819L0.7042298313092945.5019800345618926ZM0.2692133631947428.447587348155211C0.2989046533399659.447587348155211.32300628764813283.47011791602892633.32300628764813283.4978737776987901C0.32300628764813283.5256296393686539.2989046533399659.5481602072423692.2692133631947428.5481602072423692C0.23952708170170345.5481602072423692.21542043874135278.5256296393686539.21542043874135278.4978737776987901C0.21542043874135278.47011791602892633.23952708170170345.447587348155211.2692133631947428.447587348155211ZM0.7297939920551139.20139454072216306C0.7594802735481532.20139454072216306.783586916508504.2239297907587782.783586916508504.2516809702657422C0.783586916508504.279436831935606.7594802735481533.30196739980932136.7297939920551139.30196739980932136C0.7001027019098908.30196739980932136.6760010676017238.27943683193560603.6760010676017238.2516809702657422C0.6760010676017238.2239297907587782.7001027019098908.20139454072216306.7297939920551139.20139454072216306Z '
var data3 = 'M10 10-45-30.5.5 .89L2e-2.5.5.5-.5C.5.5.5.5.5.5L-3-4z'
var path = SVG.create('path')
path.style.visibility = 'hidden'
- bench.test('using SVG.js v3.0.0', function() {
+ bench.test('using SVG.js v3.0.0', function () {
for (var i = 0; i < 10000; i++) {
SVG.parser.path.setAttribute('d', data)
SVG.parser.path.getBBox()
}
})
- bench.test('using SVG.js v3.0.0 more data', function() {
+ bench.test('using SVG.js v3.0.0 more data', function () {
for (var i = 0; i < 10000; i++) {
SVG.parser.path.setAttribute('d', data2)
SVG.parser.path.getBBox()
}
})
- bench.test('using SVG.js v3.0.0 complicated data', function() {
+ bench.test('using SVG.js v3.0.0 complicated data', function () {
for (var i = 0; i < 10000; i++) {
SVG.parser.path.setAttribute('d', data3)
SVG.parser.path.getBBox()
}
})
- bench.test('using SVG.js v3.0.0 without parser', function() {
+ bench.test('using SVG.js v3.0.0 without parser', function () {
for (var i = 0; i < 10000; i++) {
path.setAttribute('d', data)
draw.node.appendChild(path)
path.getBBox()
}
- //new SVG.Path().attr('d', data).addTo(draw).bbox()
+ //new SVG.Path().attr('d', data).addTo(draw).bbox()
})
- bench.test('using SVG.js v3.0.0 more data without parser', function() {
+ bench.test('using SVG.js v3.0.0 more data without parser', function () {
for (var i = 0; i < 10000; i++) {
path.setAttribute('d', data2)
draw.node.appendChild(path)
path.getBBox()
}
- //new SVG.Path().attr('d', data2).addTo(draw).bbox()
+ //new SVG.Path().attr('d', data2).addTo(draw).bbox()
})
- bench.test('using SVG.js v3.0.0 complicated data without parser', function() {
- for (var i = 0; i < 10000; i++) {
- path.setAttribute('d', data3)
- draw.node.appendChild(path)
- path.getBBox()
- }
+ bench.test(
+ 'using SVG.js v3.0.0 complicated data without parser',
+ function () {
+ for (var i = 0; i < 10000; i++) {
+ path.setAttribute('d', data3)
+ draw.node.appendChild(path)
+ path.getBBox()
+ }
//new SVG.Path().attr('d', data3).addTo(draw).bbox()
- })
-})
\ No newline at end of file
+ }
+ )
+})
-SVG.bench.describe('Generate 10000 pathArrays', function(bench) {
- var data = 'M97.499,75.211l5.652,-4.874c-1.235,-3.156 -2.115,-6.44 -2.623,-9.791l-8.313,-1.582c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.313,-1.582c0.508,-3.351 1.388,-6.635 2.623,-9.791l-6.408,-5.526c1.452,-3.204 3.215,-6.258 5.263,-9.117l7.99,2.787c2.116,-2.648 4.52,-5.052 7.168,-7.168l-2.787,-7.99c2.86,-2.049 5.913,-3.812 9.117,-5.263l5.526,6.408c3.156,-1.236 6.44,-2.115 9.791,-2.624l1.582,-8.312c3.501,-0.345 7.027,-0.345 10.527,0l1.582,8.312c3.351,0.509 6.635,1.388 9.791,2.624l5.526,-6.408c3.204,1.451 6.258,3.214 9.117,5.263l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.168l7.99,-2.787c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.236,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.582c-0.509,3.351 -1.388,6.635 -2.624,9.791l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.117l-7.99,-2.787c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.99c-2.859,2.048 -5.913,3.811 -9.117,5.263l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.624l-1.444,7.589l0.16,0.015l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.624l5.526,-6.409c3.204,1.452 6.258,3.215 9.117,5.264l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.167l7.99,-2.786c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.792l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.116l-7.99,-2.786c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.989c-2.859,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.5,0.345 -7.026,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.989c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.786c-2.048,-2.859 -3.811,-5.912 -5.263,-9.116l6.408,-5.526c-1.235,-3.157 -2.115,-6.441 -2.624,-9.792l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.312,-1.582c0.509,-3.351 1.389,-6.635 2.624,-9.791l-6.408,-5.526c0.034,-0.076 0.068,-0.151 0.103,-0.226l-7.783,-2.714c-2.116,2.648 -4.52,5.052 -7.168,7.167l2.787,7.99c-2.86,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.501,0.345 -7.027,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.99c-2.648,-2.115 -5.052,-4.519 -7.168,-7.167l-7.99,2.786c-2.049,-2.859 -3.812,-5.913 -5.263,-9.116l6.408,-5.527c-1.236,-3.156 -2.115,-6.44 -2.624,-9.791l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.528l8.312,-1.581c0.509,-3.351 1.388,-6.635 2.624,-9.791l-6.408,-5.527c1.451,-3.204 3.214,-6.257 5.263,-9.116l7.99,2.786c2.116,-2.648 4.52,-5.052 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.408c3.156,-1.235 6.44,-2.115 9.791,-2.623l1.582,-8.313c3.5,-0.345 7.026,-0.345 10.527,0l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.623l5.526,-6.408c3.204,1.452 6.257,3.215 9.117,5.264l-2.787,7.99c2.648,2.115 5.052,4.519 7.168,7.167l7.99,-2.786c0.049,0.069 0.099,0.139 0.148,0.209Zm48.456,73.925c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.741,-4.812 -10.741,-10.74c0,-5.927 4.813,-10.74 10.741,-10.74Zm-5.402,-41.978l-0.16,-0.016l-1.582,-8.312c-3.351,-0.509 -6.635,-1.389 -9.791,-2.624l-5.526,6.408c-3.204,-1.452 -6.257,-3.215 -9.117,-5.263l2.787,-7.99c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.787c-0.049,-0.07 -0.099,-0.139 -0.148,-0.209l-5.652,4.874c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.581c0.345,3.501 0.345,7.027 0,10.528l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.791l6.408,5.527c-0.034,0.075 -0.068,0.15 -0.103,0.225l7.783,2.714c2.116,-2.647 4.52,-5.051 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.409c3.156,-1.236 6.44,-2.116 9.791,-2.624l1.444,-7.589Zm-86.853,-11.617c5.928,0 10.74,4.812 10.74,10.74c0,5.928 -4.812,10.74 -10.74,10.74c-5.927,0 -10.74,-4.812 -10.74,-10.74c0,-5.928 4.813,-10.74 10.74,-10.74Zm91.957,-52.581c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.74,-4.812 -10.74,-10.74c0,-5.927 4.812,-10.74 10.74,-10.74Z'
-
- var data2 = 'M0.48858732019046247.35239897640279355L0.5168962223329727.32957811442929225C0.5107105368860513.31480120831760355.5063029229643583.2994249853547438.5037585276550173.2837350574775992L0.46212160205156927.2763278757701558C0.46039361704817827.25993562345804494.46039361704817827.2434263170734397.46212160205156927.22703874692422862L0.5037585276550173.2196315652167852C0.5063029229643582.20394163733964055.5107105368860513.1885654143767808.5168962223329727.17378850826509218L0.4848007791395535.14791487608093778C0.492073342110347.13291322615006.5009035959102843.11861390065414837.5111613155825881.1052275969236928L0.5511804465306873.11827678492536459C0.5617787545514856.10587841756676146.5738195544012016.09462249795570335.5870824653837506.0847150412597803L0.5731233517476615.047304559690581297C0.5874480969931638.037710807908943156.6027395121101284.02945615471664055.6187872337068381.022662336349067613L0.6464650456741969.052665636210823215C0.6622723519660869.046878482866701814.678720765737496.04276286167779995.6955047592052157.040379640761814675L0.7034284469598956.0014615027388882582C0.7209637382551767 -0.0001538434615339766.7386242458550512 -0.0001538434615339766.7561545284981485.0014615027388882582L0.7640782162528285.040379640761814675C0.7808622097205482.04276286167779995.7973106234919571.046878482866701814.8131179297838472.052665636210823215L0.8407957417512061.022662336349067617C0.8568434633479157.02945615471664055.872139887117064.037710807908943156.8864596237103826.04730455969058131L0.8725005100742934.0847150412597803C0.8857634210568424.09462249795570335.8978042209065583.10587841756676146.9084025289273567.11827678492536459L0.948421659875456.1052275969236928C0.9586843881999436.11861390065414837.9675146419998809.13291322615006.9747821963184906.14791487608093778L0.9426867531250714.17378850826509218C0.9488774472241766.1885654143767808.953280052493686.20394163733964055.9558294564552107.2196315652167852L0.9974613734064749.22703874692422862C0.9991893584098659.2434263170734397.9991893584098659.25993562345804494.9974613734064749.2763278757701558L0.9558294564552107.2837350574775992C0.953280052493686.2994249853547438.9488774472241766.31480120831760366.9426867531250714.32957811442929225L0.9747821963184906.3554517466134466C0.9675146419998809.37045339654432435.9586843881999436.38474803987733625.948421659875456.3981390257706916L0.9084025289273567.3850898377690198C0.8978042209065583.3974882051276229.8857634210568424.40874412473868105.8725005100742934.41865158143460407L0.8864596237103826.4560620630038031C0.8721398871170639.46565113262254143.8568434633479156.4739057858148441.8407957417512061.4807042863453168L0.8131179297838472.45070098648356116C0.7973106234919571.4564834576647828.7808622097205482.4606037610165844.7640782162528285.4629869819325697L0.756845722499505.4985199161789591L0.7576471068489037.4985901486224557L0.7655707946035836.5375129688082819C0.7823547880713033.5398915075613674.7988032018427124.5440118109131691.8146105081346023.5497989642572905L0.8422883201019612.519790982232635C0.8583360416986708.5265894827631077.8736324654678193.5348441359554104.8879522020611378.5444378877370485L0.8739930884250485.5818483693062474C0.8872559994075976.5917558260021705.8992967992573135.6030117456132287.9098951072781118.615405430808932L0.9499142382262111.6023609249701599C0.9601769665506987.6157472287006156.969007220350636.6300465541965272.9762747746692458.6450482041274048L0.9441793314758266.6709218363115593C0.9503650169227481.685698742423248.9547726308444411.7010749653861077.9573220348059658.7167648932632523L0.9989539517572301.7241720749706957C1.000681936760621.7405596451199068 1.000681936760621.757068951504512.9989539517572301.7734612038166229L0.9573220348059658.7808637033611664C0.9547726308444411.796553631238311.950365016922748.8119298542011708.9441793314758266.8267114424757592L0.9762747746692458.8525850746599137C0.969007220350636.8675867245907916.9601769665506987.8818813679238033.9499142382262111.8952676716542589L0.9098951072781118.8822231658154869C0.8992967992573135.89462153317409.8872559994075976.9058774527851481.8739930884250485.9157849094810713L0.8879522020611378.9531907088873705C0.8736324654678191.9627844606690087.8583360416986707.9710391138613113.8422883201019612.977837614391784L0.8146105081346023.9478343145300284C0.7988032018427124.9536167857112502.7823547880713033.9577370890630518.7655707946035836.9601156278161371L0.7576471068489037.9990384480019633C0.7401168242058064 1.0006537942023856.7224563166059317 1.0006537942023856.7049210253106508.9990384480019633L0.6969973375559708.9601156278161371C0.6802133440882511.9577370890630517.6637649303168421.95361678571125.647957624024952.9478343145300284L0.6202798120575933.977837614391784C0.6042320904608837.9710391138613113.5889356666917354.9627844606690087.5746159300984167.9531907088873705L0.5885750437345059.9157849094810713C0.5753121327519569.9058774527851481.563271332902241.89462153317409.5526730248814425.8822231658154869L0.5126538939333434.8952676716542589C0.5023961742610396.8818813679238033.49356592046110226.8675867245907916.4862933574903087.8525850746599138L0.518388800683728.8267114424757593C0.5122031152368065.8119298542011709.5077955013151135.7965536312383112.5052460973535888.7808637033611665L0.46361418040232455.773461203816623C0.46188619539893355.757068951504512.46188619539893355.7405596451199069.46361418040232455.7241720749706959L0.5052460973535888.7167648932632524C0.5077955013151135.7010749653861078.5122031152368065.6856987424232481.518388800683728.6709218363115594L0.4862933574903087.645048204127405C0.48646365166455596.6446923597470222.48663394583880315.644341197529539.4868092486652341.6439900353120559L0.4478269087191694.6312826452020677C0.43722860069837116.6436810125606708.4251878008486552.6549369321717289.4119248898661061.6648397067047522L0.42588400350219535.7022501882739512C0.411559258256693.7118439400555895.3962678431397284.720098593247892.3802201215430187.7268970937783648L0.35254230957565996.6968937939166092C0.3367350032837699.702676265097831.32028658951236094.7067965684496326.3035025960446412.7091751072027179L0.2955789082899612.7480979273885441C0.27804361699468016.7497132735889663.2603831093948056.7497132735889663.24285282675170825.7480979273885441L0.23492913899702825.7091751072027179C0.21814514552930853.7067965684496325.2016967317578995.7026762650978308.1858894254660095.6968937939166092L0.15821161349865073.7268970937783648C0.14216389190194106.720098593247892.12686746813279273.7118439400555895.1125477315394741.7022501882739512L0.1265068451755633.6648397067047522C0.11324393419301426.6549369321717289.10120313434329828.6436810125606708.09060482632250003.6312826452020677L0.05058569537440074.6443271510408397C0.04032296704991321.6309408473103841.03149271324997591.6166415218144725.024225158931366137.6016445540464946L0.056320602124785436.5757662396994404C0.050129908025680216.5609893335877518.04572730275617092.545613110624892.0431778987946462.5299231827477474L0.001545981843381972.5225206832032038C-0.00018200316000904808.5061284308910928 -0.00018200316000904808.48961912450648765.001545981843381972.4732268721943768L0.0431778987946462.4658243726498331C0.04572730275617092.4501344447726885.050129908025680216.4347582218098287.056320602124785436.4199813156981401L0.02422515893136614.39410300135108595C0.03149271324997591.3791013514202082.04032296704991321.3648067080871963.05058569537440075.3514204043567407L0.09060482632250003.36446491019551275C0.10120313434329828.35206654283690964.11324393419301426.34081062322585154.1265068451755633.33090784869282824L0.1125477315394741.2934973671236292C0.12686746813279273.2839036153419911.14216389190194106.2756489621496885.15821161349865073.2688504616192157L0.1858894254660095.29885376148097137C0.2016967317578995.2930712902997497.21814514552930853.2889509869479481.23492913899702825.2865724481948626L0.24285282675170825.2476496280090364C0.2603831093948056.24603428180861417.27804361699468016.24603428180861417.2955789082899612.2476496280090364L0.3035025960446412.2865724481948626C0.32028658951236094.28895098694794813.33673500328377.2930712902997497.35254230957565996.29885376148097137L0.3802201215430187.2688504616192157C0.39626784313972835.2756489621496884.411559258256693.2839036153419911.42588400350219535.2934973671236292L0.4119248898661061.33090784869282824C0.42518780084865515.3408106232258515.43722860069837116.35206654283690964.4478269087191694.36446491019551275L0.4878460396672687.3514204043567407C0.4880914636242721.3517434735968252.4883418962334592.35207122499980936.48858732019046247.3523989764027936ZM0.731286570405869.6985278687686304C0.7609728518989083.6985278687686304.7850794948592591.7210631188052454.7850794948592591.7488142983122096C0.7850794948592591.7765701599820733.7609728518989085.7991007278557888.731286570405869.7991007278557888C0.701595280260646.7991007278557888.6774886373002953.7765701599820733.6774886373002953.7488142983122096C0.6774886373002953.7210631188052455.701595280260646.6985278687686304.731286570405869.6985278687686304ZM0.7042298313092943.5019800345618924L0.7034284469598956.501905119955496L0.6955047592052157.46298698193256965C0.678720765737496.46060376101658435.6622723519660869.45648345766478277.6464650456741969.4507009864835611L0.6187872337068382.4807042863453167C0.6027395121101286.473905785814844.5874480969931639.4656511326225414.5731233517476615.45606206300380303L0.5870824653837508.418651581434604C0.5738195544012017.408744124738681.5617787545514857.3974882051276229.5511804465306874.3850898377690197L0.5111613155825881.39813902577069155C0.5109158916255848.39781127436770736.5106654590163977.3974882051276229.5104200350593944.39716045372463865L0.48211113291688407.41998131569813996C0.48829681836380556.4347582218098286.4927044322854986.4501344447726883.4952538362470233.465824372649833L0.5368857531982875.47322687219437665C0.5386137382016786.48961912450648754.5386137382016786.5061284308910927.5368857531982875.5225206832032036L0.4952538362470233.5299231827477473C0.4927044322854986.5456131106248919.48829681836380556.5609893335877517.48211113291688407.5757662396994403L0.5142065761103034.6016445540464944C0.5140362819360561.6019957162639775.5138659877618089.6023468784814607.513690684935378.6026980406989437L0.5526730248814427.615405430808932C0.563271332902241.6030117456132287.5753121327519569.5917558260021705.588575043734506.5818483693062474L0.5746159300984167.5444378877370485C0.5889356666917354.5348441359554102.6042320904608837.5265894827631077.6202798120575934.519790982232635L0.6479576240249522.5497989642572905C0.6637649303168422.544011810913169.6802133440882512.5398915075613674.6969973375559709.5375129688082819L0.7042298313092945.5019800345618926ZM0.2692133631947428.447587348155211C0.2989046533399659.447587348155211.32300628764813283.47011791602892633.32300628764813283.4978737776987901C0.32300628764813283.5256296393686539.2989046533399659.5481602072423692.2692133631947428.5481602072423692C0.23952708170170345.5481602072423692.21542043874135278.5256296393686539.21542043874135278.4978737776987901C0.21542043874135278.47011791602892633.23952708170170345.447587348155211.2692133631947428.447587348155211ZM0.7297939920551139.20139454072216306C0.7594802735481532.20139454072216306.783586916508504.2239297907587782.783586916508504.2516809702657422C0.783586916508504.279436831935606.7594802735481533.30196739980932136.7297939920551139.30196739980932136C0.7001027019098908.30196739980932136.6760010676017238.27943683193560603.6760010676017238.2516809702657422C0.6760010676017238.2239297907587782.7001027019098908.20139454072216306.7297939920551139.20139454072216306Z '
+SVG.bench.describe('Generate 10000 pathArrays', function (bench) {
+ var data =
+ 'M97.499,75.211l5.652,-4.874c-1.235,-3.156 -2.115,-6.44 -2.623,-9.791l-8.313,-1.582c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.313,-1.582c0.508,-3.351 1.388,-6.635 2.623,-9.791l-6.408,-5.526c1.452,-3.204 3.215,-6.258 5.263,-9.117l7.99,2.787c2.116,-2.648 4.52,-5.052 7.168,-7.168l-2.787,-7.99c2.86,-2.049 5.913,-3.812 9.117,-5.263l5.526,6.408c3.156,-1.236 6.44,-2.115 9.791,-2.624l1.582,-8.312c3.501,-0.345 7.027,-0.345 10.527,0l1.582,8.312c3.351,0.509 6.635,1.388 9.791,2.624l5.526,-6.408c3.204,1.451 6.258,3.214 9.117,5.263l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.168l7.99,-2.787c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.236,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.582c-0.509,3.351 -1.388,6.635 -2.624,9.791l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.117l-7.99,-2.787c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.99c-2.859,2.048 -5.913,3.811 -9.117,5.263l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.624l-1.444,7.589l0.16,0.015l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.624l5.526,-6.409c3.204,1.452 6.258,3.215 9.117,5.264l-2.787,7.99c2.648,2.116 5.052,4.52 7.168,7.167l7.99,-2.786c2.049,2.859 3.812,5.913 5.263,9.117l-6.408,5.526c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.582c0.345,3.5 0.345,7.026 0,10.527l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.792l6.408,5.526c-1.451,3.204 -3.214,6.257 -5.263,9.116l-7.99,-2.786c-2.116,2.648 -4.52,5.052 -7.168,7.168l2.787,7.989c-2.859,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.5,0.345 -7.026,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.989c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.786c-2.048,-2.859 -3.811,-5.912 -5.263,-9.116l6.408,-5.526c-1.235,-3.157 -2.115,-6.441 -2.624,-9.792l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.527l8.312,-1.582c0.509,-3.351 1.389,-6.635 2.624,-9.791l-6.408,-5.526c0.034,-0.076 0.068,-0.151 0.103,-0.226l-7.783,-2.714c-2.116,2.648 -4.52,5.052 -7.168,7.167l2.787,7.99c-2.86,2.049 -5.913,3.812 -9.117,5.264l-5.526,-6.408c-3.156,1.235 -6.44,2.115 -9.791,2.623l-1.582,8.313c-3.501,0.345 -7.027,0.345 -10.527,0l-1.582,-8.313c-3.351,-0.508 -6.635,-1.388 -9.791,-2.623l-5.526,6.408c-3.204,-1.452 -6.258,-3.215 -9.117,-5.264l2.787,-7.99c-2.648,-2.115 -5.052,-4.519 -7.168,-7.167l-7.99,2.786c-2.049,-2.859 -3.812,-5.913 -5.263,-9.116l6.408,-5.527c-1.236,-3.156 -2.115,-6.44 -2.624,-9.791l-8.312,-1.581c-0.345,-3.501 -0.345,-7.027 0,-10.528l8.312,-1.581c0.509,-3.351 1.388,-6.635 2.624,-9.791l-6.408,-5.527c1.451,-3.204 3.214,-6.257 5.263,-9.116l7.99,2.786c2.116,-2.648 4.52,-5.052 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.408c3.156,-1.235 6.44,-2.115 9.791,-2.623l1.582,-8.313c3.5,-0.345 7.026,-0.345 10.527,0l1.582,8.313c3.351,0.508 6.635,1.388 9.791,2.623l5.526,-6.408c3.204,1.452 6.257,3.215 9.117,5.264l-2.787,7.99c2.648,2.115 5.052,4.519 7.168,7.167l7.99,-2.786c0.049,0.069 0.099,0.139 0.148,0.209Zm48.456,73.925c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.741,-4.812 -10.741,-10.74c0,-5.927 4.813,-10.74 10.741,-10.74Zm-5.402,-41.978l-0.16,-0.016l-1.582,-8.312c-3.351,-0.509 -6.635,-1.389 -9.791,-2.624l-5.526,6.408c-3.204,-1.452 -6.257,-3.215 -9.117,-5.263l2.787,-7.99c-2.648,-2.116 -5.052,-4.52 -7.168,-7.168l-7.99,2.787c-0.049,-0.07 -0.099,-0.139 -0.148,-0.209l-5.652,4.874c1.235,3.156 2.115,6.44 2.624,9.791l8.312,1.581c0.345,3.501 0.345,7.027 0,10.528l-8.312,1.581c-0.509,3.351 -1.389,6.635 -2.624,9.791l6.408,5.527c-0.034,0.075 -0.068,0.15 -0.103,0.225l7.783,2.714c2.116,-2.647 4.52,-5.051 7.168,-7.167l-2.787,-7.99c2.859,-2.049 5.913,-3.812 9.117,-5.264l5.526,6.409c3.156,-1.236 6.44,-2.116 9.791,-2.624l1.444,-7.589Zm-86.853,-11.617c5.928,0 10.74,4.812 10.74,10.74c0,5.928 -4.812,10.74 -10.74,10.74c-5.927,0 -10.74,-4.812 -10.74,-10.74c0,-5.928 4.813,-10.74 10.74,-10.74Zm91.957,-52.581c5.927,0 10.74,4.813 10.74,10.74c0,5.928 -4.813,10.74 -10.74,10.74c-5.928,0 -10.74,-4.812 -10.74,-10.74c0,-5.927 4.812,-10.74 10.74,-10.74Z'
+
+ var data2 =
+ 'M0.48858732019046247.35239897640279355L0.5168962223329727.32957811442929225C0.5107105368860513.31480120831760355.5063029229643583.2994249853547438.5037585276550173.2837350574775992L0.46212160205156927.2763278757701558C0.46039361704817827.25993562345804494.46039361704817827.2434263170734397.46212160205156927.22703874692422862L0.5037585276550173.2196315652167852C0.5063029229643582.20394163733964055.5107105368860513.1885654143767808.5168962223329727.17378850826509218L0.4848007791395535.14791487608093778C0.492073342110347.13291322615006.5009035959102843.11861390065414837.5111613155825881.1052275969236928L0.5511804465306873.11827678492536459C0.5617787545514856.10587841756676146.5738195544012016.09462249795570335.5870824653837506.0847150412597803L0.5731233517476615.047304559690581297C0.5874480969931638.037710807908943156.6027395121101284.02945615471664055.6187872337068381.022662336349067613L0.6464650456741969.052665636210823215C0.6622723519660869.046878482866701814.678720765737496.04276286167779995.6955047592052157.040379640761814675L0.7034284469598956.0014615027388882582C0.7209637382551767 -0.0001538434615339766.7386242458550512 -0.0001538434615339766.7561545284981485.0014615027388882582L0.7640782162528285.040379640761814675C0.7808622097205482.04276286167779995.7973106234919571.046878482866701814.8131179297838472.052665636210823215L0.8407957417512061.022662336349067617C0.8568434633479157.02945615471664055.872139887117064.037710807908943156.8864596237103826.04730455969058131L0.8725005100742934.0847150412597803C0.8857634210568424.09462249795570335.8978042209065583.10587841756676146.9084025289273567.11827678492536459L0.948421659875456.1052275969236928C0.9586843881999436.11861390065414837.9675146419998809.13291322615006.9747821963184906.14791487608093778L0.9426867531250714.17378850826509218C0.9488774472241766.1885654143767808.953280052493686.20394163733964055.9558294564552107.2196315652167852L0.9974613734064749.22703874692422862C0.9991893584098659.2434263170734397.9991893584098659.25993562345804494.9974613734064749.2763278757701558L0.9558294564552107.2837350574775992C0.953280052493686.2994249853547438.9488774472241766.31480120831760366.9426867531250714.32957811442929225L0.9747821963184906.3554517466134466C0.9675146419998809.37045339654432435.9586843881999436.38474803987733625.948421659875456.3981390257706916L0.9084025289273567.3850898377690198C0.8978042209065583.3974882051276229.8857634210568424.40874412473868105.8725005100742934.41865158143460407L0.8864596237103826.4560620630038031C0.8721398871170639.46565113262254143.8568434633479156.4739057858148441.8407957417512061.4807042863453168L0.8131179297838472.45070098648356116C0.7973106234919571.4564834576647828.7808622097205482.4606037610165844.7640782162528285.4629869819325697L0.756845722499505.4985199161789591L0.7576471068489037.4985901486224557L0.7655707946035836.5375129688082819C0.7823547880713033.5398915075613674.7988032018427124.5440118109131691.8146105081346023.5497989642572905L0.8422883201019612.519790982232635C0.8583360416986708.5265894827631077.8736324654678193.5348441359554104.8879522020611378.5444378877370485L0.8739930884250485.5818483693062474C0.8872559994075976.5917558260021705.8992967992573135.6030117456132287.9098951072781118.615405430808932L0.9499142382262111.6023609249701599C0.9601769665506987.6157472287006156.969007220350636.6300465541965272.9762747746692458.6450482041274048L0.9441793314758266.6709218363115593C0.9503650169227481.685698742423248.9547726308444411.7010749653861077.9573220348059658.7167648932632523L0.9989539517572301.7241720749706957C1.000681936760621.7405596451199068 1.000681936760621.757068951504512.9989539517572301.7734612038166229L0.9573220348059658.7808637033611664C0.9547726308444411.796553631238311.950365016922748.8119298542011708.9441793314758266.8267114424757592L0.9762747746692458.8525850746599137C0.969007220350636.8675867245907916.9601769665506987.8818813679238033.9499142382262111.8952676716542589L0.9098951072781118.8822231658154869C0.8992967992573135.89462153317409.8872559994075976.9058774527851481.8739930884250485.9157849094810713L0.8879522020611378.9531907088873705C0.8736324654678191.9627844606690087.8583360416986707.9710391138613113.8422883201019612.977837614391784L0.8146105081346023.9478343145300284C0.7988032018427124.9536167857112502.7823547880713033.9577370890630518.7655707946035836.9601156278161371L0.7576471068489037.9990384480019633C0.7401168242058064 1.0006537942023856.7224563166059317 1.0006537942023856.7049210253106508.9990384480019633L0.6969973375559708.9601156278161371C0.6802133440882511.9577370890630517.6637649303168421.95361678571125.647957624024952.9478343145300284L0.6202798120575933.977837614391784C0.6042320904608837.9710391138613113.5889356666917354.9627844606690087.5746159300984167.9531907088873705L0.5885750437345059.9157849094810713C0.5753121327519569.9058774527851481.563271332902241.89462153317409.5526730248814425.8822231658154869L0.5126538939333434.8952676716542589C0.5023961742610396.8818813679238033.49356592046110226.8675867245907916.4862933574903087.8525850746599138L0.518388800683728.8267114424757593C0.5122031152368065.8119298542011709.5077955013151135.7965536312383112.5052460973535888.7808637033611665L0.46361418040232455.773461203816623C0.46188619539893355.757068951504512.46188619539893355.7405596451199069.46361418040232455.7241720749706959L0.5052460973535888.7167648932632524C0.5077955013151135.7010749653861078.5122031152368065.6856987424232481.518388800683728.6709218363115594L0.4862933574903087.645048204127405C0.48646365166455596.6446923597470222.48663394583880315.644341197529539.4868092486652341.6439900353120559L0.4478269087191694.6312826452020677C0.43722860069837116.6436810125606708.4251878008486552.6549369321717289.4119248898661061.6648397067047522L0.42588400350219535.7022501882739512C0.411559258256693.7118439400555895.3962678431397284.720098593247892.3802201215430187.7268970937783648L0.35254230957565996.6968937939166092C0.3367350032837699.702676265097831.32028658951236094.7067965684496326.3035025960446412.7091751072027179L0.2955789082899612.7480979273885441C0.27804361699468016.7497132735889663.2603831093948056.7497132735889663.24285282675170825.7480979273885441L0.23492913899702825.7091751072027179C0.21814514552930853.7067965684496325.2016967317578995.7026762650978308.1858894254660095.6968937939166092L0.15821161349865073.7268970937783648C0.14216389190194106.720098593247892.12686746813279273.7118439400555895.1125477315394741.7022501882739512L0.1265068451755633.6648397067047522C0.11324393419301426.6549369321717289.10120313434329828.6436810125606708.09060482632250003.6312826452020677L0.05058569537440074.6443271510408397C0.04032296704991321.6309408473103841.03149271324997591.6166415218144725.024225158931366137.6016445540464946L0.056320602124785436.5757662396994404C0.050129908025680216.5609893335877518.04572730275617092.545613110624892.0431778987946462.5299231827477474L0.001545981843381972.5225206832032038C-0.00018200316000904808.5061284308910928 -0.00018200316000904808.48961912450648765.001545981843381972.4732268721943768L0.0431778987946462.4658243726498331C0.04572730275617092.4501344447726885.050129908025680216.4347582218098287.056320602124785436.4199813156981401L0.02422515893136614.39410300135108595C0.03149271324997591.3791013514202082.04032296704991321.3648067080871963.05058569537440075.3514204043567407L0.09060482632250003.36446491019551275C0.10120313434329828.35206654283690964.11324393419301426.34081062322585154.1265068451755633.33090784869282824L0.1125477315394741.2934973671236292C0.12686746813279273.2839036153419911.14216389190194106.2756489621496885.15821161349865073.2688504616192157L0.1858894254660095.29885376148097137C0.2016967317578995.2930712902997497.21814514552930853.2889509869479481.23492913899702825.2865724481948626L0.24285282675170825.2476496280090364C0.2603831093948056.24603428180861417.27804361699468016.24603428180861417.2955789082899612.2476496280090364L0.3035025960446412.2865724481948626C0.32028658951236094.28895098694794813.33673500328377.2930712902997497.35254230957565996.29885376148097137L0.3802201215430187.2688504616192157C0.39626784313972835.2756489621496884.411559258256693.2839036153419911.42588400350219535.2934973671236292L0.4119248898661061.33090784869282824C0.42518780084865515.3408106232258515.43722860069837116.35206654283690964.4478269087191694.36446491019551275L0.4878460396672687.3514204043567407C0.4880914636242721.3517434735968252.4883418962334592.35207122499980936.48858732019046247.3523989764027936ZM0.731286570405869.6985278687686304C0.7609728518989083.6985278687686304.7850794948592591.7210631188052454.7850794948592591.7488142983122096C0.7850794948592591.7765701599820733.7609728518989085.7991007278557888.731286570405869.7991007278557888C0.701595280260646.7991007278557888.6774886373002953.7765701599820733.6774886373002953.7488142983122096C0.6774886373002953.7210631188052455.701595280260646.6985278687686304.731286570405869.6985278687686304ZM0.7042298313092943.5019800345618924L0.7034284469598956.501905119955496L0.6955047592052157.46298698193256965C0.678720765737496.46060376101658435.6622723519660869.45648345766478277.6464650456741969.4507009864835611L0.6187872337068382.4807042863453167C0.6027395121101286.473905785814844.5874480969931639.4656511326225414.5731233517476615.45606206300380303L0.5870824653837508.418651581434604C0.5738195544012017.408744124738681.5617787545514857.3974882051276229.5511804465306874.3850898377690197L0.5111613155825881.39813902577069155C0.5109158916255848.39781127436770736.5106654590163977.3974882051276229.5104200350593944.39716045372463865L0.48211113291688407.41998131569813996C0.48829681836380556.4347582218098286.4927044322854986.4501344447726883.4952538362470233.465824372649833L0.5368857531982875.47322687219437665C0.5386137382016786.48961912450648754.5386137382016786.5061284308910927.5368857531982875.5225206832032036L0.4952538362470233.5299231827477473C0.4927044322854986.5456131106248919.48829681836380556.5609893335877517.48211113291688407.5757662396994403L0.5142065761103034.6016445540464944C0.5140362819360561.6019957162639775.5138659877618089.6023468784814607.513690684935378.6026980406989437L0.5526730248814427.615405430808932C0.563271332902241.6030117456132287.5753121327519569.5917558260021705.588575043734506.5818483693062474L0.5746159300984167.5444378877370485C0.5889356666917354.5348441359554102.6042320904608837.5265894827631077.6202798120575934.519790982232635L0.6479576240249522.5497989642572905C0.6637649303168422.544011810913169.6802133440882512.5398915075613674.6969973375559709.5375129688082819L0.7042298313092945.5019800345618926ZM0.2692133631947428.447587348155211C0.2989046533399659.447587348155211.32300628764813283.47011791602892633.32300628764813283.4978737776987901C0.32300628764813283.5256296393686539.2989046533399659.5481602072423692.2692133631947428.5481602072423692C0.23952708170170345.5481602072423692.21542043874135278.5256296393686539.21542043874135278.4978737776987901C0.21542043874135278.47011791602892633.23952708170170345.447587348155211.2692133631947428.447587348155211ZM0.7297939920551139.20139454072216306C0.7594802735481532.20139454072216306.783586916508504.2239297907587782.783586916508504.2516809702657422C0.783586916508504.279436831935606.7594802735481533.30196739980932136.7297939920551139.30196739980932136C0.7001027019098908.30196739980932136.6760010676017238.27943683193560603.6760010676017238.2516809702657422C0.6760010676017238.2239297907587782.7001027019098908.20139454072216306.7297939920551139.20139454072216306Z '
var data3 = 'M10 10-45-30.5.5 .89L2e-2.5.5.5-.5C.5.5.5.5.5.5L-3-4z'
-
- bench.test('using SVG.js v2.5.3', function() {
- for (var i = 0; i < 10000; i++)
- new SVG.PathArray(data)
+
+ bench.test('using SVG.js v2.5.3', function () {
+ for (var i = 0; i < 10000; i++) new SVG.PathArray(data)
})
-
- bench.test('using SVG.js v2.5.3 more data', function() {
- for (var i = 0; i < 10000; i++)
- new SVG.PathArray(data2)
+
+ bench.test('using SVG.js v2.5.3 more data', function () {
+ for (var i = 0; i < 10000; i++) new SVG.PathArray(data2)
})
-
- bench.test('using SVG.js v2.5.3 complicated data', function() {
- for (var i = 0; i < 10000; i++)
- new SVG.PathArray(data3)
+
+ bench.test('using SVG.js v2.5.3 complicated data', function () {
+ for (var i = 0; i < 10000; i++) new SVG.PathArray(data3)
})
-})
\ No newline at end of file
+})
-SVG.bench.describe('Generate 10000 paths', function(bench) {
- var data = 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
+SVG.bench.describe('Generate 10000 paths', function (bench) {
+ var data =
+ 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
- bench.test('using SVG.js v2.5.3', function() {
- for (var i = 0; i < 10000; i++)
- bench.draw.path(data)
+ bench.test('using SVG.js v2.5.3', function () {
+ for (var i = 0; i < 10000; i++) bench.draw.path(data)
})
- bench.test('using vanilla js', function() {
+ bench.test('using vanilla js', function () {
for (var i = 0; i < 10000; i++) {
var path = document.createElementNS(SVG.ns, 'path')
path.setAttributeNS(null, 'd', data)
bench.raw.appendChild(path)
}
})
- bench.test('using Snap.svg v0.5.1', function() {
- for (var i = 0; i < 10000; i++)
- bench.snap.path(data)
+ bench.test('using Snap.svg v0.5.1', function () {
+ for (var i = 0; i < 10000; i++) bench.snap.path(data)
})
-})
\ No newline at end of file
+})
-SVG.bench.describe('Generate 10000 pathArrays bbox', function(bench) {
- var data = '209,153 389,107 547,188 482,289 374,287 91,254 407,243 391,185 166,226 71,177 65,52 234,50 107,136 163,199 158,131 323,45 218,145 305,190 374,143 174,216 296,241'
+SVG.bench.describe('Generate 10000 pathArrays bbox', function (bench) {
+ var data =
+ '209,153 389,107 547,188 482,289 374,287 91,254 407,243 391,185 166,226 71,177 65,52 234,50 107,136 163,199 158,131 323,45 218,145 305,190 374,143 174,216 296,241'
- var dataArr = [[209,153],[389,107],[547,188],[482,289],[374,287],[91,254],[407,243],[391,185],[166,226],[71,177],[65,52],[234,50],[107,136],[163,199],[158,131],[323,45],[218,145],[305,190],[374,143],[174,216],[296,241]]
+ var dataArr = [
+ [209, 153],
+ [389, 107],
+ [547, 188],
+ [482, 289],
+ [374, 287],
+ [91, 254],
+ [407, 243],
+ [391, 185],
+ [166, 226],
+ [71, 177],
+ [65, 52],
+ [234, 50],
+ [107, 136],
+ [163, 199],
+ [158, 131],
+ [323, 45],
+ [218, 145],
+ [305, 190],
+ [374, 143],
+ [174, 216],
+ [296, 241]
+ ]
-
- bench.test('using SVG.js v3.0.0', function() {
+ bench.test('using SVG.js v3.0.0', function () {
for (var i = 0; i < 10000; i++) {
SVG.parser.poly.setAttribute('points', data)
SVG.parser.poly.getBBox()
}
})
-
- bench.test('using SVG.js v3.0.0 without parser', function() {
+ bench.test('using SVG.js v3.0.0 without parser', function () {
for (var i = 0; i < 10000; i++) {
- var maxX = -Infinity, maxY = -Infinity, minX = Infinity, minY = Infinity
- dataArr.forEach(function(el) {
+ var maxX = -Infinity,
+ maxY = -Infinity,
+ minX = Infinity,
+ minY = Infinity
+ dataArr.forEach(function (el) {
maxX = Math.max(el[0], maxX)
maxY = Math.max(el[1], maxY)
minX = Math.min(el[0], minX)
minY = Math.min(el[1], minY)
})
- var a = {x: minX, y: minY, width: maxX-minX, height: maxY-minY}
+ var a = { x: minX, y: minY, width: maxX - minX, height: maxY - minY }
}
- //new SVG.Path().attr('d', data).addTo(draw).bbox()
+ //new SVG.Path().attr('d', data).addTo(draw).bbox()
})
-
-})
\ No newline at end of file
+})
-SVG.bench.describe('Generate 10000 rects', function(bench) {
- bench.test('using SVG.js v3.0.6', function() {
- for (var i = 0; i < 10000; i++)
- bench.draw.rect(100,100)
- })
- bench.test('using vanilla js', function() {
- for (var i = 0; i < 10000; i++) {
- var rect = document.createElementNS(SVG.ns, 'rect')
- rect.setAttributeNS(null, 'height', 100)
- rect.setAttributeNS(null, 'width', 100)
- bench.raw.appendChild(rect)
- }
- })
- bench.test('using Snap.svg v0.5.1', function() {
- for (var i = 0; i < 10000; i++)
- bench.snap.rect(50, 50, 100, 100)
+SVG.bench.describe('Generate 10000 rects', function (bench) {
+ bench.test('using SVG.js v3.0.6', function () {
+ for (var i = 0; i < 10000; i++) bench.draw.rect(100, 100)
})
-})
-
-
-SVG.bench.describe('Generate 10000 rects with fill', function(bench) {
- bench.test('using SVG.js v3.0.6', function() {
- for (var i = 0; i < 10000; i++)
- bench.draw.rect(100,100).fill('#f06')
- })
- bench.test('using vanilla js', function() {
+ bench.test('using vanilla js', function () {
for (var i = 0; i < 10000; i++) {
var rect = document.createElementNS(SVG.ns, 'rect')
rect.setAttributeNS(null, 'height', 100)
rect.setAttributeNS(null, 'width', 100)
- rect.setAttributeNS(null, 'fill', '#f06')
bench.raw.appendChild(rect)
}
})
- bench.test('using Snap.svg v0.5.1', function() {
- for (var i = 0; i < 10000; i++)
- bench.snap.rect(50, 50, 100, 100).attr('fill', '#f06')
+ bench.test('using Snap.svg v0.5.1', function () {
+ for (var i = 0; i < 10000; i++) bench.snap.rect(50, 50, 100, 100)
})
})
-
-SVG.bench.describe('Generate 10000 rects with position and fill', function(bench) {
- bench.test('using SVG.js v3.0.6', function() {
- for (var i = 0; i < 10000; i++)
- bench.draw.rect(100,100).move(50,50).fill('#f06')
+SVG.bench.describe('Generate 10000 rects with fill', function (bench) {
+ bench.test('using SVG.js v3.0.6', function () {
+ for (var i = 0; i < 10000; i++) bench.draw.rect(100, 100).fill('#f06')
})
- bench.test('using vanilla js', function() {
+ bench.test('using vanilla js', function () {
for (var i = 0; i < 10000; i++) {
var rect = document.createElementNS(SVG.ns, 'rect')
rect.setAttributeNS(null, 'height', 100)
rect.setAttributeNS(null, 'width', 100)
rect.setAttributeNS(null, 'fill', '#f06')
- rect.setAttributeNS(null, 'x', 50)
- rect.setAttributeNS(null, 'y', 50)
bench.raw.appendChild(rect)
}
})
- bench.test('using Snap.svg v0.5.1', function() {
+ bench.test('using Snap.svg v0.5.1', function () {
for (var i = 0; i < 10000; i++)
bench.snap.rect(50, 50, 100, 100).attr('fill', '#f06')
})
})
+SVG.bench.describe(
+ 'Generate 10000 rects with position and fill',
+ function (bench) {
+ bench.test('using SVG.js v3.0.6', function () {
+ for (var i = 0; i < 10000; i++)
+ bench.draw.rect(100, 100).move(50, 50).fill('#f06')
+ })
+ bench.test('using vanilla js', function () {
+ for (var i = 0; i < 10000; i++) {
+ var rect = document.createElementNS(SVG.ns, 'rect')
+ rect.setAttributeNS(null, 'height', 100)
+ rect.setAttributeNS(null, 'width', 100)
+ rect.setAttributeNS(null, 'fill', '#f06')
+ rect.setAttributeNS(null, 'x', 50)
+ rect.setAttributeNS(null, 'y', 50)
+ bench.raw.appendChild(rect)
+ }
+ })
+ bench.test('using Snap.svg v0.5.1', function () {
+ for (var i = 0; i < 10000; i++)
+ bench.snap.rect(50, 50, 100, 100).attr('fill', '#f06')
+ })
+ }
+)
-SVG.bench.describe('Generate 10000 rects with gradient fill', function(bench) {
- bench.test('using SVG.js v3.0.6', function() {
+SVG.bench.describe('Generate 10000 rects with gradient fill', function (bench) {
+ bench.test('using SVG.js v3.0.6', function () {
for (var i = 0; i < 10000; i++) {
- var g = bench.draw.gradient('linear', function(add) {
+ var g = bench.draw.gradient('linear', function (add) {
add.stop(0, '#000')
add.stop(0.25, '#f00')
add.stop(1, '#fff')
})
- bench.draw.rect(100,100).fill(g)
+ bench.draw.rect(100, 100).fill(g)
}
})
- bench.test('using vanilla js', function() {
+ bench.test('using vanilla js', function () {
for (var i = 0; i < 10000; i++) {
var g = document.createElementNS(SVG.ns, 'linearGradient')
var stop = document.createElementNS(SVG.ns, 'stop')
bench.raw.appendChild(rect)
}
})
- bench.test('using Snap.svg v0.5.1', function() {
+ bench.test('using Snap.svg v0.5.1', function () {
for (var i = 0; i < 10000; i++) {
- var g = bench.snap.gradient("L(0, 0, 100, 100)#000-#f00:25%-#fff")
+ var g = bench.snap.gradient('L(0, 0, 100, 100)#000-#f00:25%-#fff')
bench.snap.rect(50, 50, 100, 100).attr({
fill: g
-SVG.bench.describe('Change textContent 10000 times', function(bench) {
- var data = 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
+SVG.bench.describe('Change textContent 10000 times', function (bench) {
+ var data =
+ 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
var node = bench.draw.plain('').node
-
- bench.test('using appendChild', function() {
+ bench.test('using appendChild', function () {
for (var i = 0; i < 1000000; i++) {
while (node.hasChildNodes()) {
node.removeChild(node.lastChild)
}
- node.appendChild(document.createTextNode('test'+i))
+ node.appendChild(document.createTextNode('test' + i))
}
})
- bench.test('using textContent', function() {
+ bench.test('using textContent', function () {
for (var i = 0; i < 1000000; i++) {
- node.textContent = 'test'+i
+ node.textContent = 'test' + i
}
})
})
-SVG.bench.describe('Transform 1000000 rects', function(bench) {
+SVG.bench.describe('Transform 1000000 rects', function (bench) {
let parameters = {
translate: [20, 30],
origin: [100, 100],
skew: [10, 30],
scale: 0.5
}
-
- let matrixLike = {a:2, b:3, c:1, d:2, e:49, f:100}
+
+ let matrixLike = { a: 2, b: 3, c: 1, d: 2, e: 49, f: 100 }
let matrix = new SVG.Matrix(matrixLike)
-
+
let worker = new SVG.Matrix()
- bench.test('with parameters', function() {
- for (var i = 0; i < 1000000; i++)
- worker.transform(parameters)
+ bench.test('with parameters', function () {
+ for (var i = 0; i < 1000000; i++) worker.transform(parameters)
})
-
+
worker = new SVG.Matrix()
- bench.test('with matrix like', function() {
+ bench.test('with matrix like', function () {
for (var i = 0; i < 1000000; i++) {
worker.transform(matrixLike)
}
})
-
+
worker = new SVG.Matrix()
- bench.test('with SVG.Matrix', function() {
- for (var i = 0; i < 1000000; i++)
- worker.transform(matrix)
+ bench.test('with SVG.Matrix', function () {
+ for (var i = 0; i < 1000000; i++) worker.transform(matrix)
})
})
-
"version": "3.2.0",
"license": "MIT",
"devDependencies": {
- "@babel/core": "^7.16.12",
- "@babel/plugin-transform-runtime": "^7.16.10",
- "@babel/preset-env": "^7.16.11",
- "@rollup/plugin-babel": "^5.3.0",
- "@rollup/plugin-commonjs": "^21.0.1",
- "@rollup/plugin-multi-entry": "^4.1.0",
- "@rollup/plugin-node-resolve": "^13.1.3",
+ "@babel/core": "^7.22.5",
+ "@babel/eslint-parser": "^7.22.5",
+ "@babel/plugin-transform-runtime": "^7.22.5",
+ "@babel/preset-env": "^7.22.5",
+ "@rollup/plugin-babel": "^6.0.3",
+ "@rollup/plugin-commonjs": "^25.0.1",
+ "@rollup/plugin-node-resolve": "^15.1.0",
+ "@rollup/plugin-terser": "^0.4.3",
"@target/custom-event-polyfill": "github:Adobe-Marketing-Cloud/custom-event-polyfill",
- "babel-eslint": "^10.1.0",
- "babel-plugin-polyfill-corejs3": "^0.5.1",
- "core-js": "^3.20.3",
+ "@types/jasmine": "^4.3.2",
+ "babel-plugin-polyfill-corejs3": "^0.8.1",
+ "core-js": "^3.31.0",
"coveralls": "^3.1.1",
- "eslint": "^8.7.0",
- "eslint-config-standard": "^16.0.3",
- "eslint-plugin-import": "^2.25.4",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^6.0.0",
- "eslint-plugin-sort-class-members": "^1.14.1",
- "eslint-plugin-standard": "^5.0.0",
- "esm": "^3.2.25",
- "http-server": "^14.1.0",
- "jasmine": "^4.0.2",
- "jasmine-core": "^4.0.0",
- "karma": "^6.3.12",
- "karma-chrome-launcher": "^3.1.0",
- "karma-coverage": "^2.1.0",
+ "eslint": "^8.42.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-config-standard": "^17.1.0",
+ "http-server": "^14.1.1",
+ "jasmine": "^5.0.1",
+ "jasmine-core": "^5.0.1",
+ "karma": "^6.4.2",
+ "karma-chrome-launcher": "^3.2.0",
+ "karma-coverage": "^2.2.0",
"karma-firefox-launcher": "^2.1.2",
- "karma-jasmine": "^4.0.1",
+ "karma-jasmine": "^5.1.0",
"karma-sauce-launcher": "^4.3.6",
- "rollup": "^2.66.1",
- "rollup-plugin-filesize": "^9.1.2",
- "rollup-plugin-terser": "^7.0.2",
- "svgdom": "^0.1.10",
- "typescript": "^4.5.5",
- "yargs": "^17.3.1"
+ "prettier": "^2.8.8",
+ "rollup": "^3.25.1",
+ "rollup-plugin-filesize": "^10.0.0",
+ "svgdom": "^0.1.14",
+ "typescript": "^5.1.3",
+ "yargs": "^17.7.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Fuzzyma"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.16.7"
+ "@babel/highlight": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz",
- "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==",
+ "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,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.16.12",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz",
- "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.8",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helpers": "^7.16.7",
- "@babel/parser": "^7.16.12",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.10",
- "@babel/types": "^7.16.8",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
+ "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+ "dev": true,
+ "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.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
+ "json5": "^2.2.2",
+ "semver": "^6.3.0"
},
"engines": {
"node": ">=6.9.0"
"url": "https://opencollective.com/babel"
}
},
+ "node_modules/@babel/eslint-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.5.tgz",
+ "integrity": "sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==",
+ "dev": true,
+ "dependencies": {
+ "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
+ "eslint-visitor-keys": "^2.1.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": ">=7.11.0",
+ "eslint": "^7.5.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@babel/generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz",
- "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz",
+ "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.8",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.22.5",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
- "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
- "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
+ "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
"dev": true,
"dependencies": {
- "@babel/helper-explode-assignable-expression": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz",
- "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==",
+ "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.16.4",
- "@babel/helper-validator-option": "^7.16.7",
- "browserslist": "^4.17.5",
+ "@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": {
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz",
- "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==",
+ "node_modules/@babel/helper-compilation-targets/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,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-member-expression-to-functions": "^7.16.7",
- "@babel/helper-optimise-call-expression": "^7.16.7",
- "@babel/helper-replace-supers": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7"
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz",
+ "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.5",
+ "semver": "^6.3.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz",
- "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz",
+ "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "regexpu-core": "^4.7.1"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
- "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz",
+ "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.13.0",
- "@babel/helper-module-imports": "^7.12.13",
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/traverse": "^7.13.0",
+ "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/helper-plugin-utils": "^7.16.7",
"debug": "^4.1.1",
"lodash.debounce": "^4.0.8",
"resolve": "^1.14.2",
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
- "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-explode-assignable-expression": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
- "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
+ "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
"dev": true,
- "dependencies": {
- "@babel/types": "^7.16.7"
- },
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
- "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-get-function-arity": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/types": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
- "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
+ "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/template": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
- "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "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.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz",
- "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
+ "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
- "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+ "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.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz",
- "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==",
+ "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.16.7",
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-simple-access": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/helper-validator-identifier": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@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-optimise-call-expression": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
- "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
- "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
- "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz",
+ "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-wrap-function": "^7.16.8",
- "@babel/types": "^7.16.8"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-wrap-function": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
- "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz",
+ "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-member-expression-to-functions": "^7.16.7",
- "@babel/helper-optimise-call-expression": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^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.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz",
- "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==",
+ "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.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
- "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.0"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
- "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
+ "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+ "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
- "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "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/helper-wrap-function": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
- "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz",
+ "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==",
"dev": true,
"dependencies": {
- "@babel/helper-function-name": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.8",
- "@babel/types": "^7.16.8"
+ "@babel/helper-function-name": "^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/helpers": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz",
- "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz",
+ "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
+ "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.22.5",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
},
}
},
"node_modules/@babel/parser": {
- "version": "7.16.12",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz",
- "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
+ "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz",
- "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
+ "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz",
- "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
+ "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
- "@babel/plugin-proposal-optional-chaining": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.13.0"
}
},
- "node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
- "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==",
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
"dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-remap-async-to-generator": "^7.16.8",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
"engines": {
"node": ">=6.9.0"
},
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-class-properties": {
+ "node_modules/@babel/plugin-proposal-unicode-property-regex": {
"version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz",
- "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
+ "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.16.7",
+ "@babel/helper-create-regexp-features-plugin": "^7.16.7",
"@babel/helper-plugin-utils": "^7.16.7"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-class-static-block": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz",
- "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==",
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
- "@babel/core": "^7.12.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-dynamic-import": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
- "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.12.13"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-export-namespace-from": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz",
- "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==",
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-json-strings": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz",
- "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==",
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz",
- "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==",
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.8.3"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz",
- "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==",
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
+ "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-numeric-separator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
- "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
+ "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-object-rest-spread": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz",
- "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==",
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.16.4",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
- "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-optional-chaining": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz",
- "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==",
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-private-methods": {
- "version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz",
- "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==",
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.16.10",
- "@babel/helper-plugin-utils": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz",
- "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==",
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-create-class-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@babel/helper-plugin-utils": "^7.10.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz",
- "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==",
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
- },
- "engines": {
- "node": ">=4"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-class-static-block": {
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.14.5"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
+ "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz",
+ "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.5",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
+ "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
+ "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
+ "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
+ "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
+ "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.12.0"
}
},
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz",
- "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz",
+ "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.5",
+ "globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
- "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==",
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
+ "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-remap-async-to-generator": "^7.16.8"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/template": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
- "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
+ "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz",
- "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==",
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
+ "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz",
- "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==",
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
+ "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
"dev": true,
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.16.7",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-optimise-call-expression": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-replace-supers": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "globals": "^11.1.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz",
- "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==",
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
+ "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz",
- "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==",
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
+ "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
- "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
+ "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz",
- "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==",
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
+ "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
- "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
+ "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
"dev": true,
"dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz",
- "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==",
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
+ "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
- "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
+ "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz",
- "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==",
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
+ "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
- "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
+ "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz",
- "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
+ "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "babel-plugin-dynamic-import-node": "^2.3.3"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz",
- "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
+ "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-simple-access": "^7.16.7",
- "babel-plugin-dynamic-import-node": "^2.3.3"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz",
- "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
+ "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
"dev": true,
"dependencies": {
- "@babel/helper-hoist-variables": "^7.16.7",
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-validator-identifier": "^7.16.7",
- "babel-plugin-dynamic-import-node": "^2.3.3"
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz",
- "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
+ "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz",
- "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7"
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz",
- "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
+ "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
- "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
+ "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-replace-supers": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz",
- "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==",
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
+ "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
- "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
+ "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/compat-data": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz",
- "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==",
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
+ "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
"dev": true,
"dependencies": {
- "regenerator-transform": "^0.14.2"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz",
- "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==",
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
+ "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-runtime": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz",
- "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==",
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz",
+ "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "babel-plugin-polyfill-corejs2": "^0.3.0",
- "babel-plugin-polyfill-corejs3": "^0.5.0",
- "babel-plugin-polyfill-regenerator": "^0.3.0",
- "semver": "^6.3.0"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
- "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
+ "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz",
- "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==",
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
+ "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
- "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
+ "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz",
- "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==",
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
+ "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz",
- "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==",
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
+ "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "regenerator-transform": "^0.15.1"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
- "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
+ "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
- "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz",
+ "integrity": "sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7"
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.3",
+ "babel-plugin-polyfill-corejs3": "^0.8.1",
+ "babel-plugin-polyfill-regenerator": "^0.5.0",
+ "semver": "^6.3.0"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/preset-env": {
- "version": "7.16.11",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
- "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
+ "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.16.8",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "@babel/helper-validator-option": "^7.16.7",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
- "@babel/plugin-proposal-async-generator-functions": "^7.16.8",
- "@babel/plugin-proposal-class-properties": "^7.16.7",
- "@babel/plugin-proposal-class-static-block": "^7.16.7",
- "@babel/plugin-proposal-dynamic-import": "^7.16.7",
- "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
- "@babel/plugin-proposal-json-strings": "^7.16.7",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
- "@babel/plugin-proposal-numeric-separator": "^7.16.7",
- "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
- "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
- "@babel/plugin-proposal-optional-chaining": "^7.16.7",
- "@babel/plugin-proposal-private-methods": "^7.16.11",
- "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
- "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-transform-arrow-functions": "^7.16.7",
- "@babel/plugin-transform-async-to-generator": "^7.16.8",
- "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
- "@babel/plugin-transform-block-scoping": "^7.16.7",
- "@babel/plugin-transform-classes": "^7.16.7",
- "@babel/plugin-transform-computed-properties": "^7.16.7",
- "@babel/plugin-transform-destructuring": "^7.16.7",
- "@babel/plugin-transform-dotall-regex": "^7.16.7",
- "@babel/plugin-transform-duplicate-keys": "^7.16.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
- "@babel/plugin-transform-for-of": "^7.16.7",
- "@babel/plugin-transform-function-name": "^7.16.7",
- "@babel/plugin-transform-literals": "^7.16.7",
- "@babel/plugin-transform-member-expression-literals": "^7.16.7",
- "@babel/plugin-transform-modules-amd": "^7.16.7",
- "@babel/plugin-transform-modules-commonjs": "^7.16.8",
- "@babel/plugin-transform-modules-systemjs": "^7.16.7",
- "@babel/plugin-transform-modules-umd": "^7.16.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8",
- "@babel/plugin-transform-new-target": "^7.16.7",
- "@babel/plugin-transform-object-super": "^7.16.7",
- "@babel/plugin-transform-parameters": "^7.16.7",
- "@babel/plugin-transform-property-literals": "^7.16.7",
- "@babel/plugin-transform-regenerator": "^7.16.7",
- "@babel/plugin-transform-reserved-words": "^7.16.7",
- "@babel/plugin-transform-shorthand-properties": "^7.16.7",
- "@babel/plugin-transform-spread": "^7.16.7",
- "@babel/plugin-transform-sticky-regex": "^7.16.7",
- "@babel/plugin-transform-template-literals": "^7.16.7",
- "@babel/plugin-transform-typeof-symbol": "^7.16.7",
- "@babel/plugin-transform-unicode-escapes": "^7.16.7",
- "@babel/plugin-transform-unicode-regex": "^7.16.7",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.16.8",
- "babel-plugin-polyfill-corejs2": "^0.3.0",
- "babel-plugin-polyfill-corejs3": "^0.5.0",
- "babel-plugin-polyfill-regenerator": "^0.3.0",
- "core-js-compat": "^3.20.2",
- "semver": "^6.3.0"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/preset-modules": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
- "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
+ "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/runtime": {
- "version": "7.15.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
- "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
+ "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "^0.13.4"
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
+ "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
+ "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
+ "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
+ "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
+ "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
+ "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz",
+ "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.22.5",
+ "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.22.5",
+ "@babel/plugin-transform-async-generator-functions": "^7.22.5",
+ "@babel/plugin-transform-async-to-generator": "^7.22.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
+ "@babel/plugin-transform-block-scoping": "^7.22.5",
+ "@babel/plugin-transform-class-properties": "^7.22.5",
+ "@babel/plugin-transform-class-static-block": "^7.22.5",
+ "@babel/plugin-transform-classes": "^7.22.5",
+ "@babel/plugin-transform-computed-properties": "^7.22.5",
+ "@babel/plugin-transform-destructuring": "^7.22.5",
+ "@babel/plugin-transform-dotall-regex": "^7.22.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.22.5",
+ "@babel/plugin-transform-dynamic-import": "^7.22.5",
+ "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.5",
+ "@babel/plugin-transform-for-of": "^7.22.5",
+ "@babel/plugin-transform-function-name": "^7.22.5",
+ "@babel/plugin-transform-json-strings": "^7.22.5",
+ "@babel/plugin-transform-literals": "^7.22.5",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
+ "@babel/plugin-transform-member-expression-literals": "^7.22.5",
+ "@babel/plugin-transform-modules-amd": "^7.22.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.22.5",
+ "@babel/plugin-transform-modules-systemjs": "^7.22.5",
+ "@babel/plugin-transform-modules-umd": "^7.22.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.22.5",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
+ "@babel/plugin-transform-numeric-separator": "^7.22.5",
+ "@babel/plugin-transform-object-rest-spread": "^7.22.5",
+ "@babel/plugin-transform-object-super": "^7.22.5",
+ "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.5",
+ "@babel/plugin-transform-parameters": "^7.22.5",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.5",
+ "@babel/plugin-transform-property-literals": "^7.22.5",
+ "@babel/plugin-transform-regenerator": "^7.22.5",
+ "@babel/plugin-transform-reserved-words": "^7.22.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.22.5",
+ "@babel/plugin-transform-spread": "^7.22.5",
+ "@babel/plugin-transform-sticky-regex": "^7.22.5",
+ "@babel/plugin-transform-template-literals": "^7.22.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.22.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.22.5",
+ "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
+ "@babel/preset-modules": "^0.1.5",
+ "@babel/types": "^7.22.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.3",
+ "babel-plugin-polyfill-corejs3": "^0.8.1",
+ "babel-plugin-polyfill-regenerator": "^0.5.0",
+ "core-js-compat": "^3.30.2",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.15.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
+ "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
- "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
+ "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.16.7",
- "@babel/parser": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/code-frame": "^7.22.5",
+ "@babel/parser": "^7.22.5",
+ "@babel/types": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz",
- "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.8",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-hoist-variables": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.16.10",
- "@babel/types": "^7.16.8",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
+ "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.5",
+ "@babel/generator": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.5",
+ "@babel/parser": "^7.22.5",
+ "@babel/types": "^7.22.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
}
},
"node_modules/@babel/types": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz",
- "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
+ "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5",
"to-fast-properties": "^2.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "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,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/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,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
- "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
+ "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.2.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
+ "espree": "^9.5.2",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.2",
"strip-json-comments": "^3.1.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"dev": true
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
- "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/@eslint/js": {
+ "version": "8.42.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz",
+ "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
"node_modules/@gar/promisify": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz",
- "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
"dev": true
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
- "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+ "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
- "minimatch": "^3.0.4"
+ "minimatch": "^3.0.5"
},
"engines": {
"node": ">=10.10.0"
}
},
+ "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,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
"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
},
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
"node": ">=8"
}
},
+ "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,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "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,
+ "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,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+ "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+ "version": "5.1.1-v1",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
+ "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
+ "dev": true,
+ "dependencies": {
+ "eslint-scope": "5.1.1"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/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,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "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/@npmcli/fs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz",
- "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz",
+ "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==",
"dev": true,
"dependencies": {
- "@gar/promisify": "^1.0.1",
"semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
}
},
"node_modules/@npmcli/git": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
- "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz",
+ "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==",
"dev": true,
"dependencies": {
- "@npmcli/promise-spawn": "^1.3.2",
- "lru-cache": "^6.0.0",
- "mkdirp": "^1.0.4",
- "npm-pick-manifest": "^6.1.1",
+ "@npmcli/promise-spawn": "^6.0.0",
+ "lru-cache": "^7.4.4",
+ "npm-pick-manifest": "^8.0.0",
+ "proc-log": "^3.0.0",
"promise-inflight": "^1.0.1",
"promise-retry": "^2.0.1",
"semver": "^7.3.5",
- "which": "^2.0.2"
+ "which": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/@npmcli/git/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "node_modules/@npmcli/git/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/@npmcli/git/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
"node": ">=10"
}
},
+ "node_modules/@npmcli/git/node_modules/semver/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,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/git/node_modules/which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
+ "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/@npmcli/installed-package-contents": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz",
- "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz",
+ "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==",
"dev": true,
"dependencies": {
- "npm-bundled": "^1.1.1",
- "npm-normalize-package-bin": "^1.0.1"
+ "npm-bundled": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
},
"bin": {
- "installed-package-contents": "index.js"
+ "installed-package-contents": "lib/index.js"
},
"engines": {
- "node": ">= 10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"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==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
+ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
"deprecated": "This functionality has been moved to @npmcli/fs",
"dev": true,
"dependencies": {
"rimraf": "^3.0.2"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/@npmcli/move-file/node_modules/mkdirp": {
}
},
"node_modules/@npmcli/node-gyp": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz",
- "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==",
- "dev": true
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz",
+ "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/@npmcli/promise-spawn": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz",
- "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz",
+ "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==",
"dev": true,
"dependencies": {
- "infer-owner": "^1.0.4"
+ "which": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@npmcli/promise-spawn/node_modules/which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
+ "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@npmcli/run-script": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz",
+ "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==",
+ "dev": true,
+ "dependencies": {
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/promise-spawn": "^6.0.0",
+ "node-gyp": "^9.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "which": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@npmcli/run-script/node_modules/which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
+ "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@puppeteer/browsers": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.1.tgz",
+ "integrity": "sha512-H43VosMzywHCcYcgv0GXXopvwnV21Ud9g2aXbPlQUJj1Xcz9V0wBwHeFz6saFhx/3VKisZfI1GEKEOhQCau7Vw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4.3.4",
+ "extract-zip": "2.0.1",
+ "progress": "2.0.3",
+ "proxy-agent": "6.2.1",
+ "tar-fs": "2.1.1",
+ "unbzip2-stream": "1.4.3",
+ "yargs": "17.7.1"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
+ "engines": {
+ "node": ">=16.3.0"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.7.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@puppeteer/browsers/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==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@puppeteer/browsers/node_modules/yargs": {
+ "version": "17.7.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+ "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@puppeteer/browsers/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@rollup/plugin-babel": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz",
+ "integrity": "sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.18.6",
+ "@rollup/pluginutils": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "@types/babel__core": "^7.1.9",
+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/babel__core": {
+ "optional": true
+ },
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs": {
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.1.tgz",
+ "integrity": "sha512-2DJ4kv4b1xfTJopWhu61ANdNRHvzQZ2fpaIrlgaP2jOfUv1wDJ0Ucqy8AZlbFmn/iUjiwKoqki9j55Y6L8kyNQ==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.2",
+ "glob": "^8.0.3",
+ "is-reference": "1.2.1",
+ "magic-string": "^0.27.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.68.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@npmcli/run-script": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz",
- "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==",
+ "node_modules/@rollup/plugin-commonjs/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,
"dependencies": {
- "@npmcli/node-gyp": "^1.0.2",
- "@npmcli/promise-spawn": "^1.3.2",
- "node-gyp": "^7.1.0",
- "read-package-json-fast": "^2.0.1"
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@rollup/plugin-babel": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz",
- "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==",
+ "node_modules/@rollup/plugin-node-resolve": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz",
+ "integrity": "sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.10.4",
- "@rollup/pluginutils": "^3.1.0"
+ "@rollup/pluginutils": "^5.0.1",
+ "@types/resolve": "1.20.2",
+ "deepmerge": "^4.2.2",
+ "is-builtin-module": "^3.2.1",
+ "is-module": "^1.0.0",
+ "resolve": "^1.22.1"
},
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0",
- "@types/babel__core": "^7.1.9",
- "rollup": "^1.20.0||^2.0.0"
+ "rollup": "^2.78.0||^3.0.0"
},
"peerDependenciesMeta": {
- "@types/babel__core": {
+ "rollup": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-commonjs": {
- "version": "21.0.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz",
- "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==",
+ "node_modules/@rollup/plugin-terser": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz",
+ "integrity": "sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==",
"dev": true,
"dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
+ "serialize-javascript": "^6.0.1",
+ "smob": "^1.0.0",
+ "terser": "^5.17.4"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "rollup": "^2.38.3"
+ "rollup": "^2.x || ^3.x"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
}
},
- "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
- },
- "node_modules/@rollup/plugin-multi-entry": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-multi-entry/-/plugin-multi-entry-4.1.0.tgz",
- "integrity": "sha512-nellK5pr50W0JA2+bDJbG8F79GBP802J40YRoC0wyfpTAeAn5mJ4eaFiB/MN+YoX9hgb/6RJoZl9leDjZnUFKw==",
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
"dev": true,
"dependencies": {
- "@rollup/plugin-virtual": "^2.0.3",
- "matched": "^5.0.0"
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "rollup": "^1.20.0 || ^2.0.0"
+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
}
},
- "node_modules/@rollup/plugin-node-resolve": {
- "version": "13.1.3",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz",
- "integrity": "sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==",
+ "node_modules/@sigstore/protobuf-specs": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz",
+ "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/tuf": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.0.tgz",
+ "integrity": "sha512-bLzi9GeZgMCvjJeLUIfs8LJYCxrPRA8IXQkzUtaFKKVPTz0mucRyqFcV2U20yg9K+kYAD0YSitzGfRZCFLjdHQ==",
"dev": true,
"dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "@types/resolve": "1.17.1",
- "builtin-modules": "^3.1.0",
- "deepmerge": "^4.2.2",
- "is-module": "^1.0.0",
- "resolve": "^1.19.0"
+ "@sigstore/protobuf-specs": "^0.1.0",
+ "make-fetch-happen": "^11.0.1",
+ "tuf-js": "^1.1.3"
},
"engines": {
- "node": ">= 10.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.42.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/@rollup/plugin-virtual": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz",
- "integrity": "sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw==",
+ "node_modules/@sigstore/tuf/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "node_modules/@sigstore/tuf/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
"dev": true,
"dependencies": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@sigstore/tuf/node_modules/minipass-fetch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz",
+ "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^5.0.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
},
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
}
},
"node_modules/@sindresorhus/is": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
- "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
+ "dev": true
+ },
"node_modules/@szmarczak/http-timer": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
"license": "ISC"
},
"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==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"dev": true,
"engines": {
- "node": ">= 6"
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tufjs/canonical-json": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz",
+ "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@tufjs/models": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz",
+ "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==",
+ "dev": true,
+ "dependencies": {
+ "@tufjs/canonical-json": "1.0.0",
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@tufjs/models/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@tufjs/models/node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@types/cacheable-request": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz",
- "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
"dev": true,
"dependencies": {
"@types/http-cache-semantics": "*",
- "@types/keyv": "*",
+ "@types/keyv": "^3.1.4",
"@types/node": "*",
- "@types/responselike": "*"
+ "@types/responselike": "^1.0.0"
}
},
- "node_modules/@types/component-emitter": {
- "version": "1.2.11",
- "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
- "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==",
- "dev": true
- },
"node_modules/@types/cookie": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
"dev": true
},
"node_modules/@types/cors": {
- "version": "2.8.12",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
- "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
- "dev": true
+ "version": "2.8.13",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
+ "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
},
"node_modules/@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
+ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
"dev": true
},
"node_modules/@types/http-cache-semantics": {
"integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
"dev": true
},
+ "node_modules/@types/jasmine": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.2.tgz",
+ "integrity": "sha512-lKkWBcbxEZX/7nxPqEtv/OjPLaBa2j0o+hmv5Yn83b/+11C1kfBAkgvmrb13WDkmizUJ3B+jYrWh4M0YRtrzEQ==",
+ "dev": true
+ },
"node_modules/@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
- "dev": true
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true,
+ "peer": true
},
"node_modules/@types/keyv": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
- "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
"dev": true,
"dependencies": {
"@types/node": "*"
"dev": true
},
"node_modules/@types/puppeteer": {
- "version": "5.4.4",
- "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.4.tgz",
- "integrity": "sha512-3Nau+qi69CN55VwZb0ATtdUAlYlqOOQ3OfQfq0Hqgc4JMFXiQT/XInlwQ9g6LbicDslE6loIFsXFklGh5XmI6Q==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-7.0.4.tgz",
+ "integrity": "sha512-ja78vquZc8y+GM2al07GZqWDKQskQXygCDiu0e3uO0DMRKqE0MjrFBFmTulfPYzLB6WnL7Kl2tFPy0WXSpPomg==",
+ "deprecated": "This is a stub types definition. puppeteer provides its own type definitions, so you do not need this installed.",
"dev": true,
"dependencies": {
- "@types/node": "*"
+ "puppeteer": "*"
}
},
"node_modules/@types/puppeteer-core": {
}
},
"node_modules/@types/resolve": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
- "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
+ "dev": true
},
"node_modules/@types/responselike": {
"version": "1.0.0",
"dev": true
},
"node_modules/@types/yauzl": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
- "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
"dev": true,
"optional": true,
"dependencies": {
"dev": true
},
"node_modules/accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "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==",
"dev": true,
"dependencies": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/agent-base": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
- "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/agentkeepalive": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz",
- "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz",
+ "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==",
"dev": true,
"dependencies": {
"debug": "^4.1.0",
- "depd": "^1.1.2",
+ "depd": "^2.0.0",
"humanize-ms": "^1.2.1"
},
"engines": {
}
},
"node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
"dev": true
},
"node_modules/arch": {
"node_modules/archive-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
- "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+ "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==",
"dev": true,
"dependencies": {
"file-type": "^4.2.0"
"node_modules/archive-type/node_modules/file-type": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
- "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
+ "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/archiver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz",
- "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz",
+ "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==",
"dev": true,
"dependencies": {
"archiver-utils": "^2.1.0",
- "async": "^3.2.0",
+ "async": "^3.2.3",
"buffer-crc32": "^0.2.1",
"readable-stream": "^3.6.0",
"readdir-glob": "^1.0.0",
}
},
"node_modules/archiver/node_modules/async": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
- "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"dev": true
},
"node_modules/archiver/node_modules/bl": {
}
},
"node_modules/archiver/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==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
}
},
"node_modules/are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
+ "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==",
"dev": true,
"dependencies": {
"delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/are-we-there-yet/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,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/argparse": {
"sprintf-js": "~1.0.2"
}
},
+ "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,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/array-from": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
"dev": true
},
"node_modules/array-includes": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
- "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
+ "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,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1",
- "get-intrinsic": "^1.1.1",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
"is-string": "^1.0.7"
},
"engines": {
}
},
"node_modules/array.prototype.flat": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
- "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
+ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
"dev": true,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
"dev": true,
"dependencies": {
"lodash": "^4.17.14"
"node": ">= 4.5.0"
}
},
+ "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,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
"dev": true
},
- "node_modules/babel-eslint": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
- "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
- "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.0",
- "@babel/traverse": "^7.7.0",
- "@babel/types": "^7.7.0",
- "eslint-visitor-keys": "^1.0.0",
- "resolve": "^1.12.0"
- },
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "eslint": ">= 4.12.1"
- }
- },
- "node_modules/babel-plugin-dynamic-import-node": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
- "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
- "dev": true,
- "dependencies": {
- "object.assign": "^4.1.0"
- }
- },
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
- "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz",
+ "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.13.11",
- "@babel/helper-define-polyfill-provider": "^0.3.1",
+ "@babel/compat-data": "^7.17.7",
+ "@babel/helper-define-polyfill-provider": "^0.4.0",
"semver": "^6.1.1"
},
"peerDependencies": {
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz",
- "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==",
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz",
+ "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.1",
- "core-js-compat": "^3.20.0"
+ "@babel/helper-define-polyfill-provider": "^0.4.0",
+ "core-js-compat": "^3.30.1"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
- "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz",
+ "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.1"
+ "@babel/helper-define-polyfill-provider": "^0.4.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "node_modules/base64-arraybuffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz",
- "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA==",
- "dev": true,
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"node": ">= 0.8"
}
},
+ "node_modules/basic-ftp": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz",
+ "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"node_modules/bin-version/node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"dev": true,
"engines": {
"node": ">=4"
"node_modules/bin-version/node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dev": true,
"dependencies": {
"shebang-regex": "^1.0.0"
"node_modules/bin-version/node_modules/shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dev": true,
"dependencies": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/body-parser/node_modules/debug": {
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
+ "node_modules/body-parser/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==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/body-parser/node_modules/qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
"engines": {
"node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/boolean": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.4.tgz",
- "integrity": "sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
"dev": true
},
"node_modules/boxen": {
}
},
"node_modules/browserslist": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
- "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
+ "version": "4.21.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz",
+ "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==",
"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.30001286",
- "electron-to-chromium": "^1.4.17",
- "escalade": "^3.1.1",
- "node-releases": "^2.0.1",
- "picocolors": "^1.0.0"
+ "caniuse-lite": "^1.0.30001489",
+ "electron-to-chromium": "^1.4.411",
+ "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"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
}
},
"node_modules/buffer": {
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"dev": true,
"engines": {
"node": "*"
"node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
"dev": true
},
"node_modules/buffer-from": {
"dev": true
},
"node_modules/builtin-modules": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
- "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/builtins": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
- "dev": true
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+ "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
+ "node_modules/builtins/node_modules/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true,
"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==",
+ "version": "17.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz",
+ "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==",
"dev": true,
"dependencies": {
- "@npmcli/fs": "^1.0.0",
- "@npmcli/move-file": "^1.0.1",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "glob": "^7.1.4",
- "infer-owner": "^1.0.4",
- "lru-cache": "^6.0.0",
- "minipass": "^3.1.1",
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
"minipass-collect": "^1.0.2",
"minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.2",
- "mkdirp": "^1.0.3",
+ "minipass-pipeline": "^1.2.4",
"p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^8.0.1",
- "tar": "^6.0.2",
- "unique-filename": "^1.1.1"
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/cacache/node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "node_modules/cacache/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,
- "engines": {
- "node": ">=10"
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
- "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==",
+ "node_modules/cacache/node_modules/glob": {
+ "version": "10.2.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz",
+ "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
"dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
"bin": {
- "mkdirp": "bin/cmd.js"
+ "glob": "dist/cjs/src/bin.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/cacheable-lookup": {
}
},
"node_modules/cacheable-request": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
- "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
"dev": true,
"dependencies": {
- "clone-response": "1.0.2",
- "get-stream": "3.0.0",
- "http-cache-semantics": "3.8.1",
- "keyv": "3.0.0",
- "lowercase-keys": "1.0.0",
- "normalize-url": "2.0.1",
- "responselike": "1.0.2"
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/cacheable-request/node_modules/lowercase-keys": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
- "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/call-bind": {
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001302",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001302.tgz",
- "integrity": "sha512-YYTMO+tfwvgUN+1ZnRViE53Ma1S/oETg+J2lISsqi/ZTNThj3ZYBOKP2rHwJc37oCsPqAzJ3w2puZHn0xlLPPw==",
+ "version": "1.0.30001502",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001502.tgz",
+ "integrity": "sha512-AZ+9tFXw1sS0o0jcpJQIXvFTOB/xGiQ4OQ2t98QX3NDn2EZTSRBC801gxrsGgViuq2ak/NLkNgSNEPtCr5lfKg==",
"dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
},
"node_modules/capital-case": {
"version": "1.0.4",
"rimraf": "^3.0.2"
}
},
+ "node_modules/chromium-bidi": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.11.tgz",
+ "integrity": "sha512-p03ajLhlQ5gebw3cmbDBFmBc2wnJM5dnXS8Phu6mblGn/KQd76yOVL5VwE0VAisa7oazNfKGTaXlIZ8Q5Bb9OA==",
+ "dev": true,
+ "dependencies": {
+ "mitt": "3.0.0"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
}
},
"node_modules/clone-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
"dev": true,
"dependencies": {
"mimic-response": "^1.0.0"
- }
- },
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/color-convert": {
"node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
+ "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==",
+ "dev": true,
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
"node_modules/colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "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==",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true
},
"node_modules/compress-commons": {
}
},
"node_modules/compress-commons/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==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
"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": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
"dev": true
},
"node_modules/constant-case": {
}
},
"node_modules/content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"dev": true,
"dependencies": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.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==",
+ "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/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/core-js": {
- "version": "3.20.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz",
- "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==",
- "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.",
+ "version": "3.31.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz",
+ "integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==",
"dev": true,
"hasInstallScript": true,
"funding": {
}
},
"node_modules/core-js-compat": {
- "version": "3.20.3",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz",
- "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==",
+ "version": "3.31.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz",
+ "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==",
"dev": true,
"dependencies": {
- "browserslist": "^4.19.1",
- "semver": "7.0.0"
+ "browserslist": "^4.21.5"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
- "node_modules/core-js-compat/node_modules/semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"node": ">= 0.4.0"
}
},
+ "node_modules/cosmiconfig": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
+ "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ }
+ },
+ "node_modules/cosmiconfig/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==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig/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,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
"node_modules/coveralls": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz",
}
},
"node_modules/crc-32": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
- "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
"dev": true,
- "dependencies": {
- "exit-on-epipe": "~1.0.1",
- "printj": "~1.1.0"
- },
"bin": {
"crc32": "bin/crc32.njs"
},
}
},
"node_modules/crc32-stream/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==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
"node": ">= 6"
}
},
+ "node_modules/cross-fetch": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz",
+ "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==",
+ "dev": true,
+ "dependencies": {
+ "node-fetch": "^2.6.11"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"node_modules/css-value": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz",
- "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=",
+ "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==",
"dev": true
},
"node_modules/custom-event": {
"node": ">=0.10"
}
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz",
+ "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/date-format": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
- "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==",
- "deprecated": "3.x is no longer supported. Please upgrade to 4.x or higher.",
+ "version": "4.0.14",
+ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
+ "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
"dev": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
}
},
"node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "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,
"engines": {
"node": ">=0.10"
}
},
"node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"dev": true,
"dependencies": {
- "mimic-response": "^1.0.0"
+ "mimic-response": "^3.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/decompress-tar": {
"node_modules/decompress-tar/node_modules/file-type": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+ "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
"dev": true,
"engines": {
"node": ">=4"
"node_modules/decompress-targz/node_modules/file-type": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+ "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
"dev": true,
"engines": {
"node": ">=4"
"node_modules/decompress-unzip": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
- "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+ "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
"dev": true,
"dependencies": {
"file-type": "^3.8.0",
"node_modules/decompress-unzip/node_modules/file-type": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+ "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"node_modules/decompress-unzip/node_modules/get-stream": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
+ "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
"dev": true,
"dependencies": {
"object-assign": "^4.0.1",
"node_modules/decompress-unzip/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"node_modules/decompress/node_modules/make-dir/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"engines": {
"node": ">=4"
"node_modules/decompress/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"dev": true
},
"node_modules/deepmerge": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
- "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=10"
+ }
+ },
+ "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,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/degenerator": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-4.0.2.tgz",
+ "integrity": "sha512-HKwIFvZROUMfH3qI3gBpD61BYh7q3c3GXD5UGZzoVNJwVSYgZKvYl1fRMXc9ozoTxl/VZxKJ5v/bA+19tywFiw==",
+ "dev": true,
+ "dependencies": {
+ "ast-types": "^0.13.2",
+ "escodegen": "^1.8.1",
+ "esprima": "^4.0.0",
+ "vm2": "^3.9.17"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "node_modules/degenerator/node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
"dev": true,
"dependencies": {
- "object-keys": "^1.0.12"
+ "tslib": "^2.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=4"
}
},
"node_modules/delayed-stream": {
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
"dev": true
},
"node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/detect-node": {
"node": ">=6"
}
},
+ "node_modules/download/node_modules/@sindresorhus/is": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
+ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/download/node_modules/cacheable-request": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
+ "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
+ "dev": true,
+ "dependencies": {
+ "clone-response": "1.0.2",
+ "get-stream": "3.0.0",
+ "http-cache-semantics": "3.8.1",
+ "keyv": "3.0.0",
+ "lowercase-keys": "1.0.0",
+ "normalize-url": "2.0.1",
+ "responselike": "1.0.2"
+ }
+ },
+ "node_modules/download/node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/download/node_modules/clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "node_modules/download/node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/download/node_modules/got": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
"node": ">=4"
}
},
+ "node_modules/download/node_modules/http-cache-semantics": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
+ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
+ "dev": true
+ },
+ "node_modules/download/node_modules/json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
+ "dev": true
+ },
+ "node_modules/download/node_modules/keyv": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
+ "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "node_modules/download/node_modules/lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/download/node_modules/make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
"node": ">=4"
}
},
+ "node_modules/download/node_modules/normalize-url": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+ "dev": true,
+ "dependencies": {
+ "prepend-http": "^2.0.0",
+ "query-string": "^5.0.1",
+ "sort-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/download/node_modules/p-cancelable": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
+ "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/download/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/download/node_modules/responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "node_modules/download/node_modules/sort-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+ "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
"dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
"engines": {
"node": ">=4"
}
}
},
"node_modules/duplexer3": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
+ "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
+ "dev": true
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
"node_modules/ecc-jsbn": {
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.53",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.53.tgz",
- "integrity": "sha512-rFveSKQczlcav+H3zkKqykU6ANseFwXwkl855jOIap5/0gnEcuIhv2ecz6aoTrXavF6I/CEBeRnBnkB51k06ew==",
+ "version": "1.4.427",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.427.tgz",
+ "integrity": "sha512-HK3r9l+Jm8dYAm1ctXEWIC+hV60zfcjS9UA5BDlYvnI5S7PU/yytjpvSrTNrSSRRkuu3tDyZhdkwIczh+0DWaw==",
"dev": true
},
"node_modules/emoji-regex": {
}
},
"node_modules/engine.io": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.0.0.tgz",
- "integrity": "sha512-Ui7yl3JajEIaACg8MOUwWvuuwU7jepZqX3BKs1ho7NQRuP4LhN4XIykXhp8bEy+x/DhA0LBZZXYSCkZDqrwMMg==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
+ "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
"dev": true,
"dependencies": {
"@types/cookie": "^0.4.1",
"cookie": "~0.4.1",
"cors": "~2.8.5",
"debug": "~4.3.1",
- "engine.io-parser": "~5.0.0",
- "ws": "~8.2.3"
+ "engine.io-parser": "~5.0.3",
+ "ws": "~8.11.0"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/engine.io-parser": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.1.tgz",
- "integrity": "sha512-j4p3WwJrG2k92VISM0op7wiq60vO92MlF3CRGxhKHy9ywG1/Dkc72g0dXeDQ+//hrcDn8gqQzoEkdO9FN0d9AA==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
+ "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
"dev": true,
- "dependencies": {
- "base64-arraybuffer": "~1.0.1"
- },
"engines": {
"node": ">=10.0.0"
}
"integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
"dev": true
},
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
"node_modules/es-abstract": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
- "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
+ "version": "1.21.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
+ "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
"dev": true,
+ "peer": true,
"dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
"es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.2.0",
"get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
"has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.4",
- "is-negative-zero": "^2.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.1",
+ "is-shared-array-buffer": "^1.0.2",
"is-string": "^1.0.7",
- "is-weakref": "^1.0.1",
- "object-inspect": "^1.11.0",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.7",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
},
"engines": {
"node": ">= 0.4"
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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,
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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,
+ "peer": true,
+ "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,
+ "peer": true,
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
}
},
"node_modules/eslint": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz",
- "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==",
- "dev": true,
- "dependencies": {
- "@eslint/eslintrc": "^1.0.5",
- "@humanwhocodes/config-array": "^0.9.2",
+ "version": "8.42.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz",
+ "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.4.0",
+ "@eslint/eslintrc": "^2.0.3",
+ "@eslint/js": "8.42.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.0",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.2.0",
- "espree": "^9.3.0",
- "esquery": "^1.4.0",
+ "eslint-scope": "^7.2.0",
+ "eslint-visitor-keys": "^3.4.1",
+ "espree": "^9.5.2",
+ "esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.6.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
- "regexpp": "^3.2.0",
"strip-ansi": "^6.0.1",
"strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
+ "text-table": "^0.2.0"
},
"bin": {
"eslint": "bin/eslint.js"
"url": "https://opencollective.com/eslint"
}
},
+ "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,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
"node_modules/eslint-config-standard": {
- "version": "16.0.3",
- "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz",
- "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==",
+ "version": "17.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
+ "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==",
"dev": true,
"funding": [
{
"url": "https://feross.org/support"
}
],
+ "engines": {
+ "node": ">=12.0.0"
+ },
"peerDependencies": {
- "eslint": "^7.12.1",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^4.2.1 || ^5.0.0"
+ "eslint": "^8.0.1",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
+ "eslint-plugin-promise": "^6.0.0"
}
},
"node_modules/eslint-import-resolver-node": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
- "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+ "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
"dev": true,
+ "peer": true,
"dependencies": {
"debug": "^3.2.7",
- "resolve": "^1.20.0"
+ "is-core-module": "^2.11.0",
+ "resolve": "^1.22.1"
}
},
"node_modules/eslint-import-resolver-node/node_modules/debug": {
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/eslint-module-utils": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz",
- "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==",
+ "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,
+ "peer": true,
"dependencies": {
- "debug": "^3.2.7",
- "find-up": "^2.1.0"
+ "debug": "^3.2.7"
},
"engines": {
"node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
"node_modules/eslint-module-utils/node_modules/debug": {
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
},
- "node_modules/eslint-plugin-es": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
- "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
+ "node_modules/eslint-plugin-es-x": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz",
+ "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==",
"dev": true,
+ "peer": true,
"dependencies": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
+ "@eslint-community/eslint-utils": "^4.1.2",
+ "@eslint-community/regexpp": "^4.5.0"
},
"engines": {
- "node": ">=8.10.0"
+ "node": "^14.18.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "url": "https://github.com/sponsors/ota-meshi"
},
"peerDependencies": {
- "eslint": ">=4.19.1"
+ "eslint": ">=8"
}
},
"node_modules/eslint-plugin-import": {
- "version": "2.25.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz",
- "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==",
+ "version": "2.27.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
+ "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
"dev": true,
+ "peer": true,
"dependencies": {
- "array-includes": "^3.1.4",
- "array.prototype.flat": "^1.2.5",
- "debug": "^2.6.9",
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
"doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.6",
- "eslint-module-utils": "^2.7.2",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.7.4",
"has": "^1.0.3",
- "is-core-module": "^2.8.0",
+ "is-core-module": "^2.11.0",
"is-glob": "^4.0.3",
- "minimatch": "^3.0.4",
- "object.values": "^1.1.5",
- "resolve": "^1.20.0",
- "tsconfig-paths": "^3.12.0"
+ "minimatch": "^3.1.2",
+ "object.values": "^1.1.6",
+ "resolve": "^1.22.1",
+ "semver": "^6.3.0",
+ "tsconfig-paths": "^3.14.1"
},
"engines": {
"node": ">=4"
}
},
"node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
+ "peer": true,
"dependencies": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"node_modules/eslint-plugin-import/node_modules/doctrine": {
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
+ "peer": true,
"dependencies": {
"esutils": "^2.0.2"
},
"node": ">=0.10.0"
}
},
- "node_modules/eslint-plugin-import/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "node_modules/eslint-plugin-node": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
- "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
+ "node_modules/eslint-plugin-n": {
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz",
+ "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==",
"dev": true,
+ "peer": true,
"dependencies": {
- "eslint-plugin-es": "^3.0.0",
- "eslint-utils": "^2.0.0",
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "builtins": "^5.0.1",
+ "eslint-plugin-es-x": "^6.1.0",
"ignore": "^5.1.1",
- "minimatch": "^3.0.4",
- "resolve": "^1.10.1",
- "semver": "^6.1.0"
+ "is-core-module": "^2.12.0",
+ "minimatch": "^3.1.2",
+ "resolve": "^1.22.2",
+ "semver": "^7.5.0"
},
"engines": {
- "node": ">=8.10.0"
+ "node": ">=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
},
"peerDependencies": {
- "eslint": ">=5.16.0"
+ "eslint": ">=7.0.0"
}
},
- "node_modules/eslint-plugin-promise": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz",
- "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==",
+ "node_modules/eslint-plugin-n/node_modules/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "peer": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
},
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/eslint-plugin-sort-class-members": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-sort-class-members/-/eslint-plugin-sort-class-members-1.14.1.tgz",
- "integrity": "sha512-/Q/cm3h4N9DBNYvJMQMhluucSmr3Yydr9U0BgGcXUQe/rgWdXKSymZ5Ewcf4vmAG0bbTmAYmekuMnYYrqlu9Rg==",
+ "node_modules/eslint-plugin-promise": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
+ "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
"dev": true,
+ "peer": true,
"engines": {
- "node": ">=4.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"peerDependencies": {
- "eslint": ">=0.8.0"
- }
- },
- "node_modules/eslint-plugin-standard": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz",
- "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==",
- "deprecated": "standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with 'npm rm eslint-plugin-standard'. More info here: https://github.com/standard/standard/issues/1316",
- "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"
- }
- ],
- "peerDependencies": {
- "eslint": ">=5.0.0"
+ "eslint": "^7.0.0 || ^8.0.0"
}
},
"node_modules/eslint-scope": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
- "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
+ "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "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,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "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,
"engines": {
- "node": ">=4"
+ "node": ">=4.0"
}
},
"node_modules/eslint/node_modules/ansi-styles": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
- "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
+ "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,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/glob-parent": {
}
},
"node_modules/eslint/node_modules/globals": {
- "version": "13.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
- "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
"node": ">=8"
}
},
- "node_modules/esm": {
- "version": "3.2.25",
- "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
- "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/espree": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
- "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
+ "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
"dev": true,
"dependencies": {
- "acorn": "^8.7.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.1.0"
+ "acorn": "^8.8.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/espree/node_modules/acorn": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
- "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
}
},
"node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
- "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
+ "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,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
}
},
"node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
"estraverse": "^5.1.0"
"dev": true
},
"node_modules/estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true
},
"node_modules/esutils": {
"node_modules/execa": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
"dev": true,
"dependencies": {
"cross-spawn": "^5.0.1",
"node_modules/execa/node_modules/cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
"dev": true,
"dependencies": {
"lru-cache": "^4.0.1",
"node_modules/execa/node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dev": true,
"dependencies": {
"shebang-regex": "^1.0.0"
"node_modules/execa/node_modules/shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"node_modules/execa/node_modules/yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
"dev": true
},
"node_modules/executable": {
"node_modules/executable/node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/exit-on-epipe": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
- "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/ext": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": 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,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
"dev": true,
"dependencies": {
"pend": "~1.2.0"
"node_modules/filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
+ "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
"dev": true,
"engines": {
"node": ">=4"
"dev": true
},
"node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "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,
"dependencies": {
- "locate-path": "^2.0.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/find-versions": {
}
},
"node_modules/flatted": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
- "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==",
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
"dev": true
},
"node_modules/follow-redirects": {
- "version": "1.14.4",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
- "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"dev": true,
"funding": [
{
"unicode-trie": "^0.3.0"
}
},
+ "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,
+ "peer": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"node_modules/from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
"dev": true,
"dependencies": {
"inherits": "^2.0.1",
}
},
"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==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz",
+ "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==",
"dev": true,
"dependencies": {
- "minipass": "^3.0.0"
+ "minipass": "^5.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/fs.realpath": {
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
- },
- "node_modules/gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "dependencies": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "node_modules/gauge/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,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gauge/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
"dev": true,
+ "peer": true,
"dependencies": {
- "number-is-nan": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/gauge/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "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,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/gauge/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=",
+ "node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
"dev": true,
"dependencies": {
- "ansi-regex": "^2.0.0"
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/gensync": {
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
"node_modules/get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
"dev": true,
"engines": {
"node": ">=4"
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"dev": true,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.1"
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-uri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz",
+ "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==",
+ "dev": true,
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^5.0.1",
+ "debug": "^4.3.4",
+ "fs-extra": "^8.1.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"semver": "^7.3.2",
"serialize-error": "^7.0.1"
},
- "engines": {
- "node": ">=10.0"
- }
- },
- "node_modules/global-agent/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "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/globalthis": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz",
- "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/got": {
- "version": "11.8.2",
- "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz",
- "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==",
- "dev": true,
- "dependencies": {
- "@sindresorhus/is": "^4.0.0",
- "@szmarczak/http-timer": "^4.0.5",
- "@types/cacheable-request": "^6.0.1",
- "@types/responselike": "^1.0.0",
- "cacheable-lookup": "^5.0.3",
- "cacheable-request": "^7.0.1",
- "decompress-response": "^6.0.0",
- "http2-wrapper": "^1.0.0-beta.5.2",
- "lowercase-keys": "^2.0.0",
- "p-cancelable": "^2.0.0",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/got/node_modules/@sindresorhus/is": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
- "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/is?sponsor=1"
- }
- },
- "node_modules/got/node_modules/cacheable-request": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
- "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
- "dev": true,
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^4.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^6.0.1",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/got/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==",
- "dev": true,
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/got/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=10.0"
}
},
- "node_modules/got/node_modules/http-cache-semantics": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
- "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
- "dev": true
- },
- "node_modules/got/node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/got/node_modules/keyv": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
- "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
+ "node_modules/global-agent/node_modules/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
- "json-buffer": "3.0.1"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/got/node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "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": ">=8"
+ "node": ">=4"
}
},
- "node_modules/got/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==",
+ "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,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/got/node_modules/normalize-url": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dev": true,
- "engines": {
- "node": ">=10"
+ "peer": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/got/node_modules/p-cancelable": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
- "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/got/node_modules/responselike": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
- "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
"dev": true,
"dependencies": {
- "lowercase-keys": "^2.0.0"
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
}
},
"node_modules/graceful-fs": {
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
"node_modules/gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
}
},
"node_modules/has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+ "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,
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
+ "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,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-symbol-support-x": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
}
},
"node_modules/has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"dev": true,
"engines": {
"node": ">= 0.4"
"node_modules/has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
"dev": true
},
"node_modules/hash.js": {
}
},
"node_modules/hosted-git-info": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
- "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz",
+ "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
+ "lru-cache": "^7.5.1"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/html-encoding-sniffer": {
"dev": true
},
"node_modules/http-cache-semantics": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
- "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
+ "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==",
"dev": true
},
"node_modules/http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true,
"dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/http-errors/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
+ "node_modules/http-errors/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/http-proxy": {
"version": "1.18.1",
}
},
"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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dev": true,
"dependencies": {
- "@tootallnate/once": "1",
+ "@tootallnate/once": "2",
"agent-base": "6",
"debug": "4"
},
"node": ">= 6"
}
},
- "node_modules/http-proxy-agent/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==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
"node_modules/http-server": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.0.tgz",
- "integrity": "sha512-5lYsIcZtf6pdR8tCtzAHTWrAveo4liUlJdWc7YafwK/maPgYHs+VNP6KpCClmUnSorJrARVMXqtT055zBv11Yg==",
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz",
+ "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==",
"dev": true,
"dependencies": {
"basic-auth": "^2.0.1",
"html-encoding-sniffer": "^3.0.0",
"http-proxy": "^1.18.1",
"mime": "^1.6.0",
- "minimist": "^1.2.5",
+ "minimist": "^1.2.6",
"opener": "^1.5.1",
"portfinder": "^1.0.28",
"secure-compare": "3.0.1",
}
},
"node_modules/https-proxy-agent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
- "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
+ "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==",
"dev": true,
"dependencies": {
- "agent-base": "5",
+ "agent-base": "6",
"debug": "4"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 6"
}
},
"node_modules/humanize-ms": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
"dev": true,
"dependencies": {
"ms": "^2.0.0"
}
},
"node_modules/ignore-walk": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
- "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz",
+ "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==",
"dev": true,
"dependencies": {
- "minimatch": "^3.0.4"
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/ignore-walk/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/ignore-walk/node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/image-size": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz",
- "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz",
+ "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
"dev": true,
"dependencies": {
"queue": "6.0.2"
"image-size": "bin/image-size.js"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/import-fresh": {
"dev": true
},
"node_modules/internal-slot": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
- "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
"dev": true,
+ "peer": true,
"dependencies": {
- "get-intrinsic": "^1.1.0",
+ "get-intrinsic": "^1.2.0",
"has": "^1.0.3",
"side-channel": "^1.0.4"
},
"node_modules/into-stream": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
- "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
+ "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==",
"dev": true,
"dependencies": {
"from2": "^2.1.1",
}
},
"node_modules/ip": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
- "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
"dev": true
},
"node_modules/is-arguments": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
"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,
+ "peer": true,
"dependencies": {
"has-bigints": "^1.0.1"
},
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-builtin-module": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "dev": true,
+ "dependencies": {
+ "builtin-modules": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-callable": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
- "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "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,
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
}
},
"node_modules/is-core-module": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
- "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
+ "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
"node_modules/is-lambda": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
- "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
"dev": true
},
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
"dev": true
},
"node_modules/is-natural-number": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
- "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=",
+ "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==",
"dev": true
},
"node_modules/is-negative-zero": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
"dev": true,
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
}
},
"node_modules/is-number-object": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-plain-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
- "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+ "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,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
"node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
+ "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
+ "peer": true,
"dependencies": {
"has-symbols": "^1.0.2"
},
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"dev": true
},
"node_modules/is-weakref": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
- "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
+ "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,
+ "peer": true,
"dependencies": {
- "call-bind": "^1.0.0"
+ "call-bind": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.7.5",
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
"@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-coverage": "^3.2.0",
"semver": "^6.3.0"
},
"engines": {
"node": ">= 4"
}
},
+ "node_modules/jackspeak": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz",
+ "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/jasmine": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-4.0.2.tgz",
- "integrity": "sha512-YsrgxJQEggxzByYe4j68eQLOiQeSrPDYGv4sHhGBp3c6HHdq+uPXeAQ73kOAQpdLZ3/0zN7x/TZTloqeE1/qIA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.0.1.tgz",
+ "integrity": "sha512-cLAGOzZyTaDF/T4J8AvBg3Jthp/CAFZNuzxMNBdc0IrNXMhbxxMIY7eLn+1hFjo+QJ0Pvj3ifahBCQDE6i08Ug==",
"dev": true,
"dependencies": {
- "glob": "^7.1.6",
- "jasmine-core": "^4.0.0"
+ "glob": "^10.2.2",
+ "jasmine-core": "~5.0.1"
},
"bin": {
"jasmine": "bin/jasmine.js"
}
},
"node_modules/jasmine-core": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.0.0.tgz",
- "integrity": "sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.1.tgz",
+ "integrity": "sha512-D4bRej8CplwNtNGyTPD++cafJlZUphzZNV+MSAnbD3er4D0NjL4x9V+mu/SI+5129utnCBen23JwEuBZA9vlpQ==",
"dev": true
},
- "node_modules/jest-worker": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
- "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "node_modules/jasmine/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,
"dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
+ "balanced-match": "^1.0.0"
}
},
- "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==",
+ "node_modules/jasmine/node_modules/glob": {
+ "version": "10.2.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz",
+ "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
"dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/jest-worker/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==",
+ "node_modules/jasmine/node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/js-tokens": {
}
},
"node_modules/json-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
- "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true
},
"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
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz",
+ "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
"dev": true
},
"node_modules/json-schema-traverse": {
"dev": true
},
"node_modules/json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
"bin": {
"json5": "lib/cli.js"
},
"node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
"optionalDependencies": {
"graceful-fs": "^4.1.6"
"node_modules/jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
"dev": true,
"engines": [
"node >= 0.2.0"
]
},
"node_modules/jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"dev": true,
- "engines": [
- "node >=0.6.0"
- ],
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
- "json-schema": "0.2.3",
+ "json-schema": "0.4.0",
"verror": "1.10.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
}
},
"node_modules/karma": {
- "version": "6.3.12",
- "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.12.tgz",
- "integrity": "sha512-qwIG+oB2YmHx4hjvYSRMNzL3YWAJ9baHaLAxiP7biFNkfpwYTUTtPck0joFpucalNLzMr+7z/FX1uY/kl8DV9A==",
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz",
+ "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==",
"dev": true,
"dependencies": {
+ "@colors/colors": "1.5.0",
"body-parser": "^1.19.0",
"braces": "^3.0.2",
"chokidar": "^3.5.1",
- "colors": "1.4.0",
"connect": "^3.7.0",
"di": "^0.0.1",
"dom-serialize": "^2.2.1",
"http-proxy": "^1.18.1",
"isbinaryfile": "^4.0.8",
"lodash": "^4.17.21",
- "log4js": "^6.3.0",
+ "log4js": "^6.4.1",
"mime": "^2.5.2",
"minimatch": "^3.0.4",
+ "mkdirp": "^0.5.5",
"qjobs": "^1.2.0",
"range-parser": "^1.2.1",
"rimraf": "^3.0.2",
- "socket.io": "^4.2.0",
+ "socket.io": "^4.4.1",
"source-map": "^0.6.1",
"tmp": "^0.2.1",
"ua-parser-js": "^0.7.30",
}
},
"node_modules/karma-chrome-launcher": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz",
- "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz",
+ "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==",
"dev": true,
"dependencies": {
"which": "^1.2.1"
}
},
"node_modules/karma-coverage": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.1.0.tgz",
- "integrity": "sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz",
+ "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==",
"dev": true,
"dependencies": {
"istanbul-lib-coverage": "^3.2.0",
- "istanbul-lib-instrument": "^4.0.3",
+ "istanbul-lib-instrument": "^5.1.0",
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.1",
"istanbul-reports": "^3.0.5",
}
},
"node_modules/karma-jasmine": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz",
- "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz",
+ "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==",
"dev": true,
"dependencies": {
- "jasmine-core": "^3.6.0"
+ "jasmine-core": "^4.1.0"
},
"engines": {
- "node": ">= 10"
+ "node": ">=12"
},
"peerDependencies": {
- "karma": "*"
+ "karma": "^6.0.0"
}
},
"node_modules/karma-jasmine/node_modules/jasmine-core": {
- "version": "3.99.0",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.0.tgz",
- "integrity": "sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz",
+ "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==",
"dev": true
},
"node_modules/karma-sauce-launcher": {
}
},
"node_modules/keyv": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
- "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
+ "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==",
"dev": true,
"dependencies": {
- "json-buffer": "3.0.0"
+ "json-buffer": "3.0.1"
}
},
"node_modules/lazystream": {
}
},
"node_modules/lighthouse-logger": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz",
- "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
+ "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
"dev": true,
"dependencies": {
"debug": "^2.6.9",
"node_modules/lighthouse-logger/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
"node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "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,
"dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
"dev": true
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"dev": true
},
"node_modules/lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
- "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
"dev": true
},
"node_modules/lodash.difference": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
- "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
+ "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
"dev": true
},
"node_modules/lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
"dev": true
},
"node_modules/lodash.isobject": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
- "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
+ "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==",
"dev": true
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
"dev": true
},
"node_modules/lodash.merge": {
"node_modules/lodash.union": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
- "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
+ "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
"dev": true
},
"node_modules/lodash.zip": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
- "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=",
+ "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==",
"dev": true
},
"node_modules/log-driver": {
}
},
"node_modules/log4js": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz",
- "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==",
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz",
+ "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
"dev": true,
"dependencies": {
- "date-format": "^3.0.0",
- "debug": "^4.1.1",
- "flatted": "^2.0.1",
- "rfdc": "^1.1.4",
- "streamroller": "^2.2.4"
+ "date-format": "^4.0.14",
+ "debug": "^4.3.4",
+ "flatted": "^3.2.7",
+ "rfdc": "^1.3.0",
+ "streamroller": "^3.1.5"
},
"engines": {
"node": ">=8.0"
}
},
- "node_modules/log4js/node_modules/flatted": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
- "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
- "dev": true
- },
"node_modules/loglevel": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
- "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz",
+ "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==",
"dev": true,
"engines": {
"node": ">= 0.6.0"
}
},
"node_modules/lowercase-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/lru-cache": {
}
},
"node_modules/magic-string": {
- "version": "0.25.7",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
- "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"dependencies": {
- "sourcemap-codec": "^1.4.4"
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/make-dir": {
}
},
"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==",
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+ "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
"dev": true,
"dependencies": {
- "agentkeepalive": "^4.1.3",
- "cacache": "^15.2.0",
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
"http-cache-semantics": "^4.1.0",
- "http-proxy-agent": "^4.0.1",
+ "http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0",
"is-lambda": "^1.0.1",
- "lru-cache": "^6.0.0",
- "minipass": "^3.1.3",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
"minipass-collect": "^1.0.2",
- "minipass-fetch": "^1.3.2",
+ "minipass-fetch": "^2.0.3",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.2",
+ "negotiator": "^0.6.3",
"promise-retry": "^2.0.1",
- "socks-proxy-agent": "^6.0.0",
- "ssri": "^8.0.0"
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/make-fetch-happen/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==",
+ "node_modules/make-fetch-happen/node_modules/@npmcli/fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+ "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
"dev": true,
"dependencies": {
- "debug": "4"
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/make-fetch-happen/node_modules/http-cache-semantics": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
- "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
- "dev": true
+ "node_modules/make-fetch-happen/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
},
- "node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "node_modules/make-fetch-happen/node_modules/cacache": {
+ "version": "16.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+ "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
"dev": true,
"dependencies": {
- "agent-base": "6",
- "debug": "4"
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
},
"engines": {
- "node": ">= 6"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/marky": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz",
- "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==",
- "dev": true
+ "node_modules/make-fetch-happen/node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
},
- "node_modules/matched": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/matched/-/matched-5.0.1.tgz",
- "integrity": "sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw==",
+ "node_modules/make-fetch-happen/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==",
"dev": true,
"dependencies": {
- "glob": "^7.1.6",
- "picomatch": "^2.2.1"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">= 8"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/make-fetch-happen/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,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/make-fetch-happen/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/make-fetch-happen/node_modules/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/semver/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,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/ssri": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+ "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/unique-filename": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+ "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
+ "dev": true,
+ "dependencies": {
+ "unique-slug": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/unique-slug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+ "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/marky": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
+ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==",
+ "dev": true
+ },
"node_modules/matcher": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
"source-map": "^0.5.6"
}
},
- "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
- },
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
}
},
"node_modules/mime-db": {
- "version": "1.50.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
- "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
- "version": "2.1.33",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
- "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"dependencies": {
- "mime-db": "1.50.0"
+ "mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
"dev": true
},
"node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/minipass": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz",
- "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
"engines": {
"node": ">=8"
}
"integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
"dev": true,
"dependencies": {
- "minipass": "^3.0.0"
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+ "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
},
"engines": {
- "node": ">= 8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
}
},
- "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==",
+ "node_modules/minipass-fetch/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
"dependencies": {
- "minipass": "^3.1.0",
- "minipass-sized": "^1.0.3",
- "minizlib": "^2.0.0"
+ "yallist": "^4.0.0"
},
"engines": {
"node": ">=8"
- },
- "optionalDependencies": {
- "encoding": "^0.1.12"
}
},
"node_modules/minipass-flush": {
"node": ">= 8"
}
},
+ "node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/minipass-json-stream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
"minipass": "^3.0.0"
}
},
+ "node_modules/minipass-json-stream/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/minipass-pipeline": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
"node": ">=8"
}
},
+ "node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/minipass-sized": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
"node": ">=8"
}
},
+ "node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"node": ">= 8"
}
},
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mitt": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz",
+ "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==",
+ "dev": true
+ },
"node_modules/mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"dev": true
},
"node_modules/negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
}
},
"node_modules/node-fetch": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz",
- "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==",
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
+ "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
"dev": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
}
},
"node_modules/node-gyp": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
- "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz",
+ "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==",
"dev": true,
"dependencies": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
- "graceful-fs": "^4.2.3",
- "nopt": "^5.0.0",
- "npmlog": "^4.1.2",
- "request": "^2.88.2",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^10.0.3",
+ "nopt": "^6.0.0",
+ "npmlog": "^6.0.0",
"rimraf": "^3.0.2",
- "semver": "^7.3.2",
- "tar": "^6.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
"which": "^2.0.2"
},
"bin": {
"node-gyp": "bin/node-gyp.js"
},
"engines": {
- "node": ">= 10.12.0"
+ "node": "^12.13 || ^14.13 || >=16"
}
},
"node_modules/node-gyp/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
}
},
"node_modules/node-releases": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
- "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
"dev": true
},
"node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
+ "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
"dev": true,
"dependencies": {
- "abbrev": "1"
+ "abbrev": "^1.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=6"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz",
+ "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^6.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/normalize-path": {
}
},
"node_modules/normalize-url": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
- "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
"dev": true,
- "dependencies": {
- "prepend-http": "^2.0.0",
- "query-string": "^5.0.1",
- "sort-keys": "^2.0.0"
- },
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/normalize-url/node_modules/sort-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
- "dev": true,
- "dependencies": {
- "is-plain-obj": "^1.0.0"
+ "node": ">=10"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm-bundled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
- "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz",
+ "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==",
"dev": true,
"dependencies": {
- "npm-normalize-package-bin": "^1.0.1"
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm-conf": {
"node_modules/npm-conf/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/npm-install-checks": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz",
- "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz",
+ "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==",
"dev": true,
"dependencies": {
"semver": "^7.1.1"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm-install-checks/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
}
},
"node_modules/npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "dev": true
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
+ "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
},
"node_modules/npm-package-arg": {
- "version": "8.1.5",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
- "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz",
+ "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==",
"dev": true,
"dependencies": {
- "hosted-git-info": "^4.0.1",
- "semver": "^7.3.4",
- "validate-npm-package-name": "^3.0.0"
+ "hosted-git-info": "^6.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^5.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm-package-arg/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
}
},
"node_modules/npm-packlist": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz",
- "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz",
+ "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==",
"dev": true,
"dependencies": {
- "glob": "^7.1.6",
- "ignore-walk": "^3.0.3",
- "npm-bundled": "^1.1.1",
- "npm-normalize-package-bin": "^1.0.1"
- },
- "bin": {
- "npm-packlist": "bin/index.js"
+ "ignore-walk": "^6.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm-pick-manifest": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
- "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz",
+ "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==",
"dev": true,
"dependencies": {
- "npm-install-checks": "^4.0.0",
- "npm-normalize-package-bin": "^1.0.1",
- "npm-package-arg": "^8.1.2",
- "semver": "^7.3.4"
+ "npm-install-checks": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "npm-package-arg": "^10.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm-pick-manifest/node_modules/semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
}
},
"node_modules/npm-registry-fetch": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz",
- "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==",
+ "version": "14.0.5",
+ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz",
+ "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==",
"dev": true,
"dependencies": {
- "make-fetch-happen": "^9.0.1",
- "minipass": "^3.1.3",
- "minipass-fetch": "^1.3.0",
+ "make-fetch-happen": "^11.0.0",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
"minipass-json-stream": "^1.0.1",
- "minizlib": "^2.0.0",
- "npm-package-arg": "^8.0.0"
+ "minizlib": "^2.1.2",
+ "npm-package-arg": "^10.0.0",
+ "proc-log": "^3.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-registry-fetch/node_modules/minipass-fetch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz",
+ "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^5.0.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
}
},
"node_modules/npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
"dev": true,
"dependencies": {
"path-key": "^2.0.0"
"node_modules/npm-run-path/node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
"dev": true,
"dependencies": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true,
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/oauth-sign": {
}
},
"node_modules/object-inspect": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "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,
+ "peer": true,
"dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
"object-keys": "^1.1.1"
},
"engines": {
}
},
"node_modules/object.values": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
- "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
+ "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,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/p-cancelable": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
- "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/p-event": {
"node_modules/p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
"dev": true,
"engines": {
"node": ">=4"
"node_modules/p-is-promise": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
- "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"dependencies": {
- "p-try": "^1.0.0"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "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,
"dependencies": {
- "p-limit": "^1.1.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-map": {
}
},
"node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "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,
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/pacote": {
- "version": "11.3.5",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz",
- "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==",
+ "node_modules/pac-proxy-agent": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz",
+ "integrity": "sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==",
"dev": true,
"dependencies": {
- "@npmcli/git": "^2.1.0",
- "@npmcli/installed-package-contents": "^1.0.6",
- "@npmcli/promise-spawn": "^1.2.0",
- "@npmcli/run-script": "^1.8.2",
- "cacache": "^15.0.5",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "infer-owner": "^1.0.4",
- "minipass": "^3.1.3",
- "mkdirp": "^1.0.3",
- "npm-package-arg": "^8.0.1",
- "npm-packlist": "^2.1.4",
- "npm-pick-manifest": "^6.0.0",
- "npm-registry-fetch": "^11.0.0",
- "promise-retry": "^2.0.1",
- "read-package-json-fast": "^2.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^8.0.1",
- "tar": "^6.1.0"
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "pac-resolver": "^6.0.1",
+ "socks-proxy-agent": "^8.0.1"
},
- "bin": {
- "pacote": "lib/bin.js"
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/agent-base": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
+ "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">=10"
+ "node": ">= 14"
}
},
- "node_modules/pacote/node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz",
+ "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.1",
+ "debug": "^4.3.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-6.0.1.tgz",
+ "integrity": "sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==",
"dev": true,
+ "dependencies": {
+ "degenerator": "^4.0.1",
+ "ip": "^1.1.5",
+ "netmask": "^2.0.2"
+ },
"engines": {
- "node": ">=10"
+ "node": ">= 14"
}
},
- "node_modules/pacote/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
+ "node_modules/pac-resolver/node_modules/ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
+ "dev": true
+ },
+ "node_modules/pacote": {
+ "version": "15.2.0",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz",
+ "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==",
+ "dev": true,
+ "dependencies": {
+ "@npmcli/git": "^4.0.0",
+ "@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/promise-spawn": "^6.0.1",
+ "@npmcli/run-script": "^6.0.0",
+ "cacache": "^17.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^5.0.0",
+ "npm-package-arg": "^10.0.0",
+ "npm-packlist": "^7.0.0",
+ "npm-pick-manifest": "^8.0.0",
+ "npm-registry-fetch": "^14.0.0",
+ "proc-log": "^3.0.0",
+ "promise-retry": "^2.0.1",
+ "read-package-json": "^6.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "sigstore": "^1.3.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11"
+ },
"bin": {
- "mkdirp": "bin/cmd.js"
+ "pacote": "lib/bin.js"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/pako": {
"node": ">=6"
}
},
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-json/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
+ },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
}
},
"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=",
+ "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,
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
"node_modules/path-is-absolute": {
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
+ "node_modules/path-scurry": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz",
+ "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1",
+ "minipass": "^5.0.0 || ^6.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz",
+ "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "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/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true
},
"node_modules/performance-now": {
"dev": true
},
"node_modules/picomatch": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
- "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+ "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"
"node_modules/pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"node_modules/pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
"dev": true,
"dependencies": {
"pinkie": "^2.0.0"
"node": ">=0.10.0"
}
},
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/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,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/portfinder": {
"version": "1.0.28",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
"node_modules/prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
"dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/printj": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
- "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
+ "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,
"bin": {
- "printj": "bin/printj.njs"
+ "prettier": "bin-prettier.js"
},
"engines": {
- "node": ">=0.8"
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/proc-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
+ "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/process-nextick-args": {
"node_modules/promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
"dev": true
},
"node_modules/promise-retry": {
"node_modules/proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
"dev": true
},
+ "node_modules/proxy-agent": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.2.1.tgz",
+ "integrity": "sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^6.0.3",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/agent-base": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
+ "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/http-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/https-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/socks-proxy-agent": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz",
+ "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.1",
+ "debug": "^4.3.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
"dev": true
},
"node_modules/psl": {
"node": ">=6"
}
},
+ "node_modules/puppeteer": {
+ "version": "20.6.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-20.6.0.tgz",
+ "integrity": "sha512-D/kkEIpDFRqpLOcCoNNdXI+IUcoD1FmdlWteT4FFPOhNLC46urmItMfQDKSwk2NJoO38ncgCQe5XEQ3QHD+piA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@puppeteer/browsers": "1.4.1",
+ "cosmiconfig": "8.2.0",
+ "puppeteer-core": "20.6.0"
+ },
+ "engines": {
+ "node": ">=16.3.0"
+ }
+ },
"node_modules/puppeteer-core": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-5.5.0.tgz",
"node": ">=10.18.1"
}
},
- "node_modules/puppeteer-core/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/puppeteer-core/node_modules/agent-base": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
+ "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==",
"dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">= 6.0.0"
}
},
- "node_modules/puppeteer-core/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "node_modules/puppeteer-core/node_modules/https-proxy-agent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
+ "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
"dev": true,
"dependencies": {
- "p-locate": "^4.1.0"
+ "agent-base": "5",
+ "debug": "4"
},
"engines": {
- "node": ">=8"
+ "node": ">= 6.0.0"
}
},
- "node_modules/puppeteer-core/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==",
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
"engines": {
- "node": ">=6"
+ "node": ">=8.3.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/puppeteer-core/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
},
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/puppeteer-core/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,
- "engines": {
- "node": ">=6"
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "node_modules/puppeteer-core/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,
- "engines": {
- "node": ">=8"
- }
+ "node_modules/puppeteer/node_modules/devtools-protocol": {
+ "version": "0.0.1135028",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1135028.tgz",
+ "integrity": "sha512-jEcNGrh6lOXNRJvZb9RjeevtZGrgugPKSMJZxfyxWQnhlKawMPhMtk/dfC+Z/6xNXExlzTKlY5LzIAK/fRpQIw==",
+ "dev": true
},
- "node_modules/puppeteer-core/node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "node_modules/puppeteer/node_modules/puppeteer-core": {
+ "version": "20.6.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.6.0.tgz",
+ "integrity": "sha512-vUE6VnqvOHX1ABssTxtzTJUzEJrTL49DmXflSvlRIcolzOISVni1niI5/oWsDxzyRVE9sfwe8QqFbsWozs5RPA==",
"dev": true,
"dependencies": {
- "find-up": "^4.0.0"
+ "@puppeteer/browsers": "1.4.1",
+ "chromium-bidi": "0.4.11",
+ "cross-fetch": "3.1.6",
+ "debug": "4.3.4",
+ "devtools-protocol": "0.0.1135028",
+ "ws": "8.13.0"
+ },
+ "engines": {
+ "node": ">=16.3.0"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.7.4"
},
- "engines": {
- "node": ">=8"
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/puppeteer-core/node_modules/ws": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz",
- "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==",
+ "node_modules/puppeteer/node_modules/ws": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+ "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
"dev": true,
"engines": {
- "node": ">=8.3.0"
+ "node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
}
},
"node_modules/qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"dev": true,
"engines": {
"node": ">=0.6"
"inherits": "~2.0.3"
}
},
+ "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/quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
}
},
"node_modules/raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "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==",
"dev": true,
"dependencies": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"node": ">= 0.8"
}
},
+ "node_modules/read-package-json": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz",
+ "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.2.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^5.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/read-package-json-fast": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
- "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz",
+ "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==",
"dev": true,
"dependencies": {
- "json-parse-even-better-errors": "^2.3.0",
- "npm-normalize-package-bin": "^1.0.1"
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-package-json/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/read-package-json/node_modules/glob": {
+ "version": "10.2.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz",
+ "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/read-package-json/node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/readable-stream": {
}
},
"node_modules/readdir-glob": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz",
- "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
"dev": true,
"dependencies": {
- "minimatch": "^3.0.4"
+ "minimatch": "^5.1.0"
+ }
+ },
+ "node_modules/readdir-glob/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,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/readdir-glob/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,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/readdirp": {
"dev": true
},
"node_modules/regenerate-unicode-properties": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
- "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+ "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
"dev": true,
"dependencies": {
"regenerate": "^1.4.2"
"dev": true
},
"node_modules/regenerator-transform": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
- "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+ "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.8.4"
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
- "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
+ "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "define-properties": "^1.2.0",
+ "functions-have-names": "^1.2.3"
},
"engines": {
"node": ">= 0.4"
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/regexpu-core": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
- "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
"dev": true,
"dependencies": {
+ "@babel/regjsgen": "^0.8.0",
"regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^9.0.0",
- "regjsgen": "^0.5.2",
- "regjsparser": "^0.7.0",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
"unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.0.0"
+ "unicode-match-property-value-ecmascript": "^2.1.0"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/regjsgen": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
- "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
- "dev": true
- },
"node_modules/regjsparser": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
- "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
"dev": true,
"dependencies": {
"jsesc": "~0.5.0"
"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=",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
"dev": true,
"bin": {
"jsesc": "bin/jsesc"
"dev": true
},
"node_modules/resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
+ "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
+ "is-core-module": "^2.11.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/responselike": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
- "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
"dev": true,
"dependencies": {
- "lowercase-keys": "^1.0.0"
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/resq": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.1.tgz",
- "integrity": "sha512-zhp1iyUH02MLciv3bIM2bNtTFx/fqRsK4Jk73jcPqp00d/sMTTjOtjdTMAcgjrQKGx5DvQ/HSpeqaMW0atGRJA==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz",
+ "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^2.0.1"
"node_modules/resq/node_modules/fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==",
"dev": true
},
"node_modules/restructure": {
"node_modules/retry": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
"dev": true,
"engines": {
"node": ">= 4"
}
},
+ "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,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/rfdc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
"dev": true
},
"node_modules/rollup": {
- "version": "2.66.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.66.1.tgz",
- "integrity": "sha512-crSgLhSkLMnKr4s9iZ/1qJCplgAgrRY+igWv8KhG/AjKOJ0YX/WpmANyn8oxrw+zenF3BXWDLa7Xl/QZISH+7w==",
+ "version": "3.25.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz",
+ "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-filesize": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-9.1.2.tgz",
- "integrity": "sha512-m2fE9hFaKgWKisJzyWXctOFKlgMRelo/58HgeC0lXUK/qykxiqkr6bsrotlvo2bvrwPsjgT7scNdQSr6qtl37A==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-10.0.0.tgz",
+ "integrity": "sha512-JAYYhzCcmGjmCzo3LEHSDE3RAPHKIeBdpqRhiyZSv5o/3wFhktUOzYAWg/uUKyEu5dEaVaql6UOmaqHx1qKrZA==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.13.8",
"colors": "1.4.0",
"filesize": "^6.1.0",
"gzip-size": "^6.0.0",
- "pacote": "^11.2.7",
+ "pacote": "^15.1.1",
"terser": "^5.6.0"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/rollup-plugin-terser": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
- "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
- "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+ "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": {
- "@babel/code-frame": "^7.10.4",
- "jest-worker": "^26.2.1",
- "serialize-javascript": "^4.0.0",
- "terser": "^5.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.0.0"
+ "queue-microtask": "^1.2.2"
}
},
"node_modules/safe-buffer": {
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
+ "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,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"node_modules/semver-compare": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
"dev": true
},
"node_modules/semver-regex": {
"node_modules/semver-truncate": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz",
- "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=",
+ "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==",
"dev": true,
"dependencies": {
"semver": "^5.3.0"
}
},
"node_modules/serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
"dev": true,
"dependencies": {
"randombytes": "^2.1.0"
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"dev": true
},
"node_modules/setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"dev": true
},
"node_modules/shallow-copy": {
}
},
"node_modules/signal-exit": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
- "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
+ "node_modules/sigstore": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.6.0.tgz",
+ "integrity": "sha512-QODKff/qW/TXOZI6V/Clqu74xnInAS6it05mufj4/fSewexLtfEntgLZZcBtUK44CDQyUE5TUXYy1ARYzlfG9g==",
+ "dev": true,
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.1.0",
+ "@sigstore/tuf": "^1.0.0",
+ "make-fetch-happen": "^11.0.1",
+ "tuf-js": "^1.1.3"
+ },
+ "bin": {
+ "sigstore": "bin/sigstore.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sigstore/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/sigstore/node_modules/minipass-fetch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz",
+ "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^5.0.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
"node_modules/smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"npm": ">= 3.0.0"
}
},
+ "node_modules/smob": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.0.tgz",
+ "integrity": "sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg==",
+ "dev": true
+ },
"node_modules/snake-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
}
},
"node_modules/socket.io": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.3.1.tgz",
- "integrity": "sha512-HC5w5Olv2XZ0XJ4gOLGzzHEuOCfj3G0SmoW3jLHYYh34EVsIr3EkW9h6kgfW+K3TFEcmYy8JcPWe//KUkBp5jA==",
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.2.tgz",
+ "integrity": "sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==",
"dev": true,
"dependencies": {
"accepts": "~1.3.4",
"base64id": "~2.0.0",
"debug": "~4.3.2",
- "engine.io": "~6.0.0",
- "socket.io-adapter": "~2.3.2",
- "socket.io-parser": "~4.0.4"
+ "engine.io": "~6.4.2",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/socket.io-adapter": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz",
- "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==",
- "dev": true
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
+ "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
+ "dev": true,
+ "dependencies": {
+ "ws": "~8.11.0"
+ }
},
"node_modules/socket.io-parser": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
- "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
"dev": true,
"dependencies": {
- "@types/component-emitter": "^1.2.10",
- "component-emitter": "~1.3.0",
+ "@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1"
},
"engines": {
}
},
"node_modules/socks": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz",
- "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+ "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
"dev": true,
"dependencies": {
- "ip": "^1.1.5",
- "smart-buffer": "^4.1.0"
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
},
"engines": {
"node": ">= 10.13.0",
}
},
"node_modules/socks-proxy-agent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz",
- "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
"dev": true,
"dependencies": {
"agent-base": "^6.0.2",
- "debug": "^4.3.1",
- "socks": "^2.6.1"
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
},
"engines": {
"node": ">= 10"
}
},
- "node_modules/socks-proxy-agent/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==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
"node_modules/sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
"dev": true,
"dependencies": {
"is-plain-obj": "^1.0.0"
"node_modules/sort-keys-length": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
- "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",
+ "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
"dev": true,
"dependencies": {
"sort-keys": "^1.0.0"
"deprecated": "Please use @jridgewell/sourcemap-codec instead",
"dev": true
},
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
+ "dev": true
+ },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
}
},
"node_modules/ssri": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
- "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz",
+ "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==",
"dev": true,
"dependencies": {
- "minipass": "^3.1.1"
+ "minipass": "^5.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/static-eval": {
}
},
"node_modules/streamroller": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz",
- "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==",
- "deprecated": "2.x is no longer supported. Please upgrade to 3.x or higher.",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz",
+ "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==",
"dev": true,
"dependencies": {
- "date-format": "^2.1.0",
- "debug": "^4.1.1",
+ "date-format": "^4.0.14",
+ "debug": "^4.3.4",
"fs-extra": "^8.1.0"
},
"engines": {
"node": ">=8.0"
}
},
- "node_modules/streamroller/node_modules/date-format": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
- "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==",
- "deprecated": "2.x is no longer supported. Please upgrade to 4.x or higher.",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/strict-uri-encode": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
- "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "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==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
+ "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
"dev": true,
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
"node": ">=8"
}
},
+ "node_modules/strip-ansi-cjs": {
+ "name": "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,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
+ "peer": true,
"engines": {
"node": ">=4"
}
"node_modules/strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
"dev": true,
"engines": {
"node": ">=0.10.0"
"node": ">=4"
}
},
+ "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,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/svgdom": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/svgdom/-/svgdom-0.1.10.tgz",
- "integrity": "sha512-MMx2owmn+V8xYc+29MWVEsKZi7ZGxvnV4U/QNyX+miSH4F+veOL7gFO86kKawIfx1K+CogSK9ZAtod7dsf8LSA==",
+ "version": "0.1.14",
+ "resolved": "https://registry.npmjs.org/svgdom/-/svgdom-0.1.14.tgz",
+ "integrity": "sha512-RsaFHupZ92NLkpuszq2t04XUI6biqh/Q+R7ntpC0FteTs6zK1lP7jHk++p2N9IBfpi5iU4J/tkKTjIzDmKdOZw==",
"dev": true,
"dependencies": {
"fontkit": "^1.8.1",
- "image-size": "^1.0.0",
+ "image-size": "^1.0.2",
"sax": "^1.2.4"
},
"funding": {
}
},
"node_modules/tar": {
- "version": "6.1.11",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
- "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
+ "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
"dev": true,
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
+ "minipass": "^5.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
"node_modules/tar-fs": {
}
},
"node_modules/tar-fs/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==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
"node": ">=10"
}
},
+ "node_modules/tar/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==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/tar/node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
}
},
"node_modules/terser": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
- "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
+ "version": "5.17.7",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz",
+ "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==",
"dev": true,
"dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
"commander": "^2.20.0",
- "source-map": "~0.7.2",
"source-map-support": "~0.5.20"
},
"bin": {
"node": ">=10"
}
},
- "node_modules/terser/node_modules/source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "node_modules/terser/node_modules/acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
"dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
"engines": {
- "node": ">= 8"
+ "node": ">=0.4.0"
}
},
"node_modules/text-table": {
"node_modules/timed-out": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true,
"engines": {
"node": ">=0.6"
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
"dev": true
},
"node_modules/trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
- "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
+ "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
"dev": true,
"dependencies": {
"escape-string-regexp": "^1.0.2"
}
},
"node_modules/tsconfig-paths": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz",
- "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==",
+ "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,
+ "peer": true,
"dependencies": {
"@types/json5": "^0.0.29",
- "json5": "^1.0.1",
- "minimist": "^1.2.0",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
"strip-bom": "^3.0.0"
}
},
"node_modules/tsconfig-paths/node_modules/json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
+ "peer": true,
"dependencies": {
"minimist": "^1.2.0"
},
}
},
"node_modules/tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
+ "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==",
"dev": true
},
+ "node_modules/tuf-js": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.6.tgz",
+ "integrity": "sha512-CXwFVIsXGbVY4vFiWF7TJKWmlKJAT8TWkH4RmiohJRcDJInix++F0dznDmoVbtJNzZ8yLprKUG4YrDIhv3nBMg==",
+ "dev": true,
+ "dependencies": {
+ "@tufjs/models": "1.0.4",
+ "debug": "^4.3.4",
+ "make-fetch-happen": "^11.1.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/tuf-js/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz",
+ "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==",
+ "dev": true,
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/tuf-js/node_modules/minipass-fetch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz",
+ "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^5.0.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"node": ">= 0.6"
}
},
+ "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,
+ "peer": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"dev": true
},
"node_modules/typescript": {
- "version": "4.5.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
- "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz",
+ "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/ua-parser-js": {
- "version": "0.7.31",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
- "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==",
+ "version": "0.7.35",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz",
+ "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==",
"dev": true,
"funding": [
{
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
+ "peer": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
"which-boxed-primitive": "^1.0.2"
},
"funding": {
}
},
"node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
- "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"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==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
+ "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==",
"dev": true,
"dependencies": {
- "unique-slug": "^2.0.0"
+ "unique-slug": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/unique-slug": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
- "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz",
+ "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==",
"dev": true,
"dependencies": {
"imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/universalify": {
"node": ">= 0.8"
}
},
+ "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/upper-case": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
"node_modules/url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
- "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
"dev": true,
"dependencies": {
"prepend-http": "^2.0.0"
"node_modules/url-to-options": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
- "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=",
+ "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==",
"dev": true,
"engines": {
"node": ">= 4"
"uuid": "bin/uuid"
}
},
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
},
"node_modules/validate-npm-package-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
- "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz",
+ "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==",
"dev": true,
"dependencies": {
- "builtins": "^1.0.3"
+ "builtins": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"dev": true,
"engines": {
"node": ">= 0.8"
"extsprintf": "^1.2.0"
}
},
+ "node_modules/vm2": {
+ "version": "3.9.19",
+ "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz",
+ "integrity": "sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.7.0",
+ "acorn-walk": "^8.2.0"
+ },
+ "bin": {
+ "vm2": "bin/vm2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/vm2/node_modules/acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/vm2/node_modules/acorn-walk": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/void-elements": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
"dev": true
},
"node_modules/whatwg-encoding": {
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dev": true,
"dependencies": {
"tr46": "~0.0.3",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
+ "peer": true,
"dependencies": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrap-ansi-cjs": {
+ "name": "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==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"dev": true
},
"node_modules/ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"dev": true,
"engines": {
"node": ">=10.0.0"
"dev": true
},
"node_modules/yargs": {
- "version": "17.3.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
- "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^21.0.0"
+ "yargs-parser": "^21.1.1"
},
"engines": {
"node": ">=12"
"node": ">=10"
}
},
+ "node_modules/yargs/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==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/yargs/node_modules/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==",
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"engines": {
"node": ">=12"
"node_modules/yauzl": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
"dev": true,
"dependencies": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
},
+ "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,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/zip-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz",
}
},
"node_modules/zip-stream/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==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"dependencies": {
"inherits": "^2.0.3",
{
"name": "@svgdotjs/svg.js",
"version": "3.2.0",
+ "type": "module",
"description": "A lightweight library for manipulating and animating SVG.",
"url": "https://svgjs.dev/",
"homepage": "https://svgjs.dev/",
},
"typings": "./svg.js.d.ts",
"scripts": {
- "build": "npm run fix && npm run rollup",
+ "build": "npm run format && npm run rollup",
"build:polyfills": "npx rollup -c .config/rollup.polyfills.js",
"build:tests": "npx rollup -c .config/rollup.tests.js",
"fix": "npx eslint ./src --fix",
"lint": "npx eslint ./src",
+ "prettier": "npx prettier --write .",
+ "format": "npm run fix && npm run prettier",
"rollup": "npx rollup -c .config/rollup.config.js",
"server": "npx http-server ./ -d",
- "test": "npx karma start .config/karma.conf.js || true",
- "test:ci": "karma start .config/karma.conf.saucelabs.js",
- "test:svgdom": "node -r esm ./spec/runSVGDomTest.js || true",
+ "test": "npx karma start .config/karma.conf.cjs || true",
+ "test:ci": "karma start .config/karma.conf.saucelabs.cjs",
+ "test:svgdom": "node ./spec/runSVGDomTest.js || true",
"zip": "zip -j dist/svg.js.zip -- LICENSE.txt README.md CHANGELOG.md dist/svg.js dist/svg.js.map dist/svg.min.js dist/svg.min.js.map dist/polyfills.js dist/polyfillsIE.js",
"prepublishOnly": "rm -rf ./dist && npm run build && npm run build:polyfills && npm test",
"postpublish": "npm run zip",
"checkTests": "node spec/checkForAllTests.js"
},
"devDependencies": {
- "@babel/core": "^7.16.12",
- "@babel/plugin-transform-runtime": "^7.16.10",
- "@babel/preset-env": "^7.16.11",
- "@rollup/plugin-babel": "^5.3.0",
- "@rollup/plugin-commonjs": "^21.0.1",
- "@rollup/plugin-multi-entry": "^4.1.0",
- "@rollup/plugin-node-resolve": "^13.1.3",
+ "@babel/core": "^7.22.5",
+ "@babel/eslint-parser": "^7.22.5",
+ "@babel/plugin-transform-runtime": "^7.22.5",
+ "@babel/preset-env": "^7.22.5",
+ "@rollup/plugin-babel": "^6.0.3",
+ "@rollup/plugin-commonjs": "^25.0.1",
+ "@rollup/plugin-node-resolve": "^15.1.0",
+ "@rollup/plugin-terser": "^0.4.3",
"@target/custom-event-polyfill": "github:Adobe-Marketing-Cloud/custom-event-polyfill",
- "babel-eslint": "^10.1.0",
- "core-js": "^3.20.3",
+ "@types/jasmine": "^4.3.2",
+ "babel-plugin-polyfill-corejs3": "^0.8.1",
+ "core-js": "^3.31.0",
"coveralls": "^3.1.1",
- "eslint": "^8.7.0",
- "eslint-config-standard": "^16.0.3",
- "eslint-plugin-import": "^2.25.4",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^6.0.0",
- "eslint-plugin-sort-class-members": "^1.14.1",
- "eslint-plugin-standard": "^5.0.0",
- "esm": "^3.2.25",
- "http-server": "^14.1.0",
- "jasmine": "^4.0.2",
- "jasmine-core": "^4.0.0",
- "karma": "^6.3.12",
- "karma-chrome-launcher": "^3.1.0",
- "karma-coverage": "^2.1.0",
+ "eslint": "^8.42.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-config-standard": "^17.1.0",
+ "http-server": "^14.1.1",
+ "jasmine": "^5.0.1",
+ "jasmine-core": "^5.0.1",
+ "karma": "^6.4.2",
+ "karma-chrome-launcher": "^3.2.0",
+ "karma-coverage": "^2.2.0",
"karma-firefox-launcher": "^2.1.2",
- "karma-jasmine": "^4.0.1",
+ "karma-jasmine": "^5.1.0",
"karma-sauce-launcher": "^4.3.6",
- "rollup": "^2.66.1",
- "rollup-plugin-filesize": "^9.1.2",
- "rollup-plugin-terser": "^7.0.2",
- "typescript": "^4.5.5",
- "yargs": "^17.3.1",
- "svgdom": "^0.1.10",
- "babel-plugin-polyfill-corejs3": "^0.5.1"
+ "prettier": "^2.8.8",
+ "rollup": "^3.25.1",
+ "rollup-plugin-filesize": "^10.0.0",
+ "svgdom": "^0.1.14",
+ "typescript": "^5.1.3",
+ "yargs": "^17.7.2"
},
- "browserslist": "last 2 version and > 0.25% and not op_mini all and not ie 11"
+ "browserslist": ">0.3%, last 2 version, not dead, not op_mini all"
}
-
<!DOCTYPE html>
<html>
-
<head>
- <meta charset="utf-8">
+ <meta charset="utf-8" />
<title>SVG Playground</title>
- <link type="text/css" rel="stylesheet" href="style.css">
+ <link type="text/css" rel="stylesheet" href="style.css" />
</head>
<body>
-
<h1>Color Playground</h1>
- <p>
- Lets test the different types of random colors we can make
- </p>
+ <p>Lets test the different types of random colors we can make</p>
<svg viewBox="0 0 1500 1500" id="canvas"></svg>
-
</body>
<script src="../../dist/svg.js" charset="utf-8"></script>
<script src="main.js" charset="utf-8"></script>
-
</html>
-
-
-let canvas = SVG('#canvas').group()
- .translate( -150, 230 )
+let canvas = SVG('#canvas').group().translate(-150, 230)
// Make a bunch of rectangles
-function rectangles ( method='Vibrant') {
-
+function rectangles(method = 'Vibrant') {
// Make a group
let group = canvas.group()
- group.text(method).attr('font-size', 50).move( -230, 20 )
+ group.text(method).attr('font-size', 50).move(-230, 20)
// Add the squares
- for ( let i = 0; i < 20; i++ ) {
- let color = SVG.Color.random( method.toLowerCase() ).toHex()
- let rect = group.rect(100, 100)
- .x( 20 + 100 * i )
- .fill( color )
+ for (let i = 0; i < 20; i++) {
+ let color = SVG.Color.random(method.toLowerCase()).toHex()
+ let rect = group
+ .rect(100, 100)
+ .x(20 + 100 * i)
+ .fill(color)
}
return group
}
-rectangles( 'Vibrant' ).translate( 0, 100 )
-rectangles( 'Sine' ).translate( 0, 220 )
-rectangles( 'Pastel' ).translate( 0, 340 )
-rectangles( 'Dark' ).translate( 0, 460 )
-rectangles( 'RGB' ).translate( 0, 580 )
-rectangles( 'LAB' ).translate( 0, 700 )
-rectangles( 'Grey' ).translate( 0, 820 )
+rectangles('Vibrant').translate(0, 100)
+rectangles('Sine').translate(0, 220)
+rectangles('Pastel').translate(0, 340)
+rectangles('Dark').translate(0, 460)
+rectangles('RGB').translate(0, 580)
+rectangles('LAB').translate(0, 700)
+rectangles('Grey').translate(0, 820)
-
* {
box-sizing: border-box;
}
html {
- background-color : #fefefe;
+ background-color: #fefefe;
}
body {
}
.pink {
- fill: #FF0066;
+ fill: #ff0066;
}
.green {
}
.light-pink {
- fill: #FF99C2;
+ fill: #ff99c2;
}
.off-white {
- fill: #FFCCE0;
+ fill: #ffcce0;
}
function reactToDrag(element, onDrag, beforeDrag) {
-
let xStart, yStart
- let startDrag = event => {
-
+ let startDrag = (event) => {
// Avoid the default events
event.preventDefault()
SVG.on(window, ['mouseup.drag', 'touchend.drag'], stopDrag)
}
- let reactDrag = event => {
-
+ let reactDrag = (event) => {
// Convert screen coordinates to svg coordinates and use them
var { x, y } = parent.point(event.pageX, event.pageY)
- if (onDrag)
- onDrag(event, x, y)
+ if (onDrag) onDrag(event, x, y)
}
- let stopDrag = event => {
+ let stopDrag = (event) => {
SVG.off(window, ['mousemove.drag', 'touchmove.drag'])
SVG.off(window, ['mouseup.drag', 'touchend.drag'])
}
SVG.extend(SVG.Element, {
draggable: function (after) {
-
let sx, sy
- reactToDrag(this, (e, x, y) => {
-
- this.transform({
- origin: [sx, sy],
- position: [x, y],
- })
-
- if (after) {
- after(this, x, y)
+ reactToDrag(
+ this,
+ (e, x, y) => {
+ this.transform({
+ origin: [sx, sy],
+ position: [x, y]
+ })
+
+ if (after) {
+ after(this, x, y)
+ }
+ },
+ (e, x, y) => {
+ var toAbsolute = new SVG.Matrix(this).inverse()
+ var p = new SVG.Point(x, y).transform(toAbsolute)
+ sx = p.x
+ sy = p.y
}
-
- }, (e, x, y) => {
-
- var toAbsolute = new SVG.Matrix(this).inverse()
- var p = new SVG.Point(x, y).transform(toAbsolute)
- sx = p.x
- sy = p.y
- })
+ )
return this
- },
+ }
})
-
<!DOCTYPE html>
<html>
-
<head>
- <meta charset="utf-8">
+ <meta charset="utf-8" />
<title>SVG Playground</title>
- <link rel="stylesheet" href="style.css">
+ <link rel="stylesheet" href="style.css" />
</head>
<body>
-
<h1>SVG Transformations</h1>
<p>
</p>
<svg viewBox="-200 -200 400 400">
-
<g id="tester">
- <rect class="green" width=50 height=50 />
- <line x2=50 stroke=black stroke-width=1 />
+ <rect class="green" width="50" height="50" />
+ <line x2="50" stroke="black" stroke-width="1" />
</g>
<g id="guess">
- <rect class="dark-pink" width=50 height=50 opacity=0.5 />
- <line x2=50 stroke=black stroke-width=1 />
+ <rect class="dark-pink" width="50" height="50" opacity="0.5" />
+ <line x2="50" stroke="black" stroke-width="1" />
</g>
<g id="true">
- <rect class="pink" width=50 height=50 opacity=0.5 />
- <line x2=50 stroke=black stroke-width=1 />
+ <rect class="pink" width="50" height="50" opacity="0.5" />
+ <line x2="50" stroke="black" stroke-width="1" />
</g>
- <ellipse id="or" class="dark-pink" rx=5 ry=5 />
- <ellipse id="b1" class="pink" cx="50" rx=5 ry=5 />
- <ellipse id="b2" class="green" cy="50" rx=5 ry=5 />
-
+ <ellipse id="or" class="dark-pink" rx="5" ry="5" />
+ <ellipse id="b1" class="pink" cx="50" rx="5" ry="5" />
+ <ellipse id="b2" class="green" cy="50" rx="5" ry="5" />
</svg>
-
</body>
<script src="../../dist/svg.js" charset="utf-8"></script>
<script src="drag.js" charset="utf-8"></script>
<script src="matrix.js" charset="utf-8"></script>
-
</html>
-
-function print (mat) {
- let {a, b, c, d} = mat
+function print(mat) {
+ let { a, b, c, d } = mat
console.log(`
a: ${a.toFixed(2)}
b: ${b.toFixed(2)}
`)
}
-function moveit () {
-
- let {cx: x0, cy: y0} = or.rbox(svg)
- let {cx: x1, cy: y1} = b1.rbox(svg)
- let {cx: x2, cy: y2} = b2.rbox(svg)
+function moveit() {
+ let { cx: x0, cy: y0 } = or.rbox(svg)
+ let { cx: x1, cy: y1 } = b1.rbox(svg)
+ let { cx: x2, cy: y2 } = b2.rbox(svg)
let m = new SVG.Matrix(
- (x1 - x0) / 50, (y1 - y0) / 50, (x2 - x0) / 50, (y2 - y0) / 50, x0, y0)
+ (x1 - x0) / 50,
+ (y1 - y0) / 50,
+ (x2 - x0) / 50,
+ (y2 - y0) / 50,
+ x0,
+ y0
+ )
let com = m.decompose()
let g = new SVG.Matrix().compose(com)
target.transform(m)
mover.transform(g)
- console.log(com);
+ console.log(com)
print(m)
print(g)
}
// Declare the two points
let svg = SVG('svg')
-var or = SVG("#or").draggable(moveit)
-var b1 = SVG("#b1").draggable(moveit)
-var b2 = SVG("#b2").draggable(moveit)
+var or = SVG('#or').draggable(moveit)
+var b1 = SVG('#b1').draggable(moveit)
+var b2 = SVG('#b2').draggable(moveit)
// Declare the squares
-let target = SVG("#true")
-let mover = SVG("#guess")
-let tester = SVG("#tester")
+let target = SVG('#true')
+let mover = SVG('#guess')
+let tester = SVG('#tester')
-
* {
box-sizing: border-box;
}
html {
- background-color : #fefefe;
+ background-color: #fefefe;
}
body {
}
.pink {
- fill: #FF0066;
+ fill: #ff0066;
}
.green {
}
.light-pink {
- fill: #FF99C2;
+ fill: #ff99c2;
}
.off-white {
- fill: #FFCCE0;
+ fill: #ffcce0;
}
-
<!DOCTYPE html>
<html>
-
<head>
- <meta charset="utf-8">
+ <meta charset="utf-8" />
<title>SVG Playground</title>
- <link rel="stylesheet" href="style.css">
+ <link rel="stylesheet" href="style.css" />
</head>
<body>
-
<h1>Transformations</h1>
<p>
</p>
<svg viewBox="0 0 1500 1500" id="canvas"></svg>
-
</body>
<script src="../../dist/svg.js" charset="utf-8"></script>
<script src="transforms.js" charset="utf-8"></script>
-
</html>
-
* {
box-sizing: border-box;
}
html {
- background-color : #fefefe;
+ background-color: #fefefe;
}
body {
}
.pink {
- fill: #FF0066;
+ fill: #ff0066;
}
.green {
}
.light-pink {
- fill: #FF99C2;
+ fill: #ff99c2;
}
.off-white {
- fill: #FFCCE0;
+ fill: #ffcce0;
}
-
-
let canvas = SVG('#canvas')
// Make the green rectangle
-canvas.rect(200, 400).move(200, 400)
- .attr('opacity', 0.3)
- .addClass('green')
+canvas.rect(200, 400).move(200, 400).attr('opacity', 0.3).addClass('green')
// Make the pink rectangle
-let a = canvas.rect(200, 400).move(200, 400)
+let a = canvas
+ .rect(200, 400)
+ .move(200, 400)
.attr('opacity', 0.3)
.addClass('pink')
.transform({ px: 100, py: 500, origin: 'top-left' })
- a.animate()
- .rotate({ rotate: 500, origin: 'top-right' })
+a.animate().rotate({ rotate: 500, origin: 'top-right' })
// Put an ellipse where we expect the object to be
-canvas.ellipse(30, 30).center(100, 500)
+canvas
+ .ellipse(30, 30)
+ .center(100, 500)
.attr('opacity', 0.3)
.addClass('dark-pink')
var path = require('path')
module.exports = function (env) {
-
let currentTest = path.resolve(__dirname, env)
return {
-
mode: 'development',
devtool: 'eval-source-map',
devServer: {
- contentBase: [ currentTest, __dirname ],
+ contentBase: [currentTest, __dirname]
},
devServer: {
- contentBase: [currentTest, '..'],
+ contentBase: [currentTest, '..']
},
entry: {
- app: path.resolve(currentTest, "main.js"),
+ app: path.resolve(currentTest, 'main.js')
},
output: {
path: currentTest,
- filename: 'bundle.js',
+ filename: 'bundle.js'
},
resolve: {
- modules: [
- path.resolve(__dirname, "node_modules"),
- "node_modules"
- ]
+ modules: [path.resolve(__dirname, 'node_modules'), 'node_modules']
}
}
}
* Jasmine RequestAnimationFrame: a set of helpers for testing functionality
* that uses requestAnimationFrame under the Jasmine BDD framework for JavaScript.
*/
-function RAFPlugin (jasmine) {
-
+function RAFPlugin(jasmine) {
var index = 0
var callbacks = []
- function MockRAF () {
+ function MockRAF() {
this.nextTime = 0
var _this = this
/**
- * Mock for window.requestAnimationFrame
- */
+ * Mock for window.requestAnimationFrame
+ */
this.mockRAF = function (fn) {
if (typeof fn !== 'function') {
throw new Error('You should pass a function to requestAnimationFrame')
}
/**
- * Mock for window.cancelAnimationFrame
- */
+ * Mock for window.cancelAnimationFrame
+ */
this.mockCAF = function (requestID) {
callbacks.splice(requestID, 1)
}
}
/**
- * Install request animation frame mocks.
- */
+ * Install request animation frame mocks.
+ */
this.install = function (global) {
_this.realRAF = global.requestAnimationFrame
_this.realCAF = global.cancelAnimationFrame
}
/**
- * Uninstall request animation frame mocks.
- */
+ * Uninstall request animation frame mocks.
+ */
this.uninstall = function (global) {
global.requestAnimationFrame = _this.realRAF
global.cancelAnimationFrame = _this.realCAF
}
/**
- * Simulate animation frame readiness.
- */
+ * Simulate animation frame readiness.
+ */
this.tick = function (dt) {
- _this.nextTime += (dt || 1)
+ _this.nextTime += dt || 1
- var fns = callbacks; var fn; var i
+ var fns = callbacks
+ var fn
+ var i
callbacks = []
index = 0
<!DOCTYPE html>
<html>
-<head>
- <meta charset="utf-8">
- <title>SVG.js - Jasmine Spec Runner</title>
-
- <link rel="shortcut icon" type="image/png" href="../node_modules/jasmine-core/images/jasmine_favicon.png">
- <link rel="stylesheet" href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
-
- <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
- <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
- <script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
- <script src="RAFPlugin.js"></script>
-
- <link rel="stylesheet" href="fixtures/fixture.css">
-
-</head>
-
-<body>
-
-
- <!-- include spec files here... -->
-
- <script src="../dist/polyfillsIE.js"></script>
- <script src="es5TestBundle.js"></script>
-</body>
+ <head>
+ <meta charset="utf-8" />
+ <title>SVG.js - Jasmine Spec Runner</title>
+
+ <link
+ rel="shortcut icon"
+ type="image/png"
+ href="../node_modules/jasmine-core/images/jasmine_favicon.png"
+ />
+ <link
+ rel="stylesheet"
+ href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css"
+ />
+
+ <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
+ <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
+ <script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
+ <script src="RAFPlugin.js"></script>
+
+ <link rel="stylesheet" href="fixtures/fixture.css" />
+ </head>
+
+ <body>
+ <!-- include spec files here... -->
+
+ <script src="../dist/polyfillsIE.js"></script>
+ <script src="es5TestBundle.js"></script>
+ </body>
</html>
<!DOCTYPE html>
<html>
-<head>
- <meta charset="utf-8">
- <title>SVG.js - Jasmine Spec Runner</title>
+ <head>
+ <meta charset="utf-8" />
+ <title>SVG.js - Jasmine Spec Runner</title>
- <link rel="shortcut icon" type="image/png" href="../node_modules/jasmine-core/images/jasmine_favicon.png">
- <link rel="stylesheet" href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
+ <link
+ rel="shortcut icon"
+ type="image/png"
+ href="../node_modules/jasmine-core/images/jasmine_favicon.png"
+ />
+ <link
+ rel="stylesheet"
+ href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css"
+ />
- <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
- <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
- <script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
- <script src="RAFPlugin.js"></script>
+ <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
+ <script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
+ <script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
+ <script src="RAFPlugin.js"></script>
- <link rel="stylesheet" href="fixtures/fixture.css">
+ <link rel="stylesheet" href="fixtures/fixture.css" />
+ </head>
-</head>
-
-<body>
-
- <!-- include spec files here... -->
- <script type="module" src="setupBrowser.js"></script>
- <script type="module" src="spec/elements/A.js"></script>
- <script type="module" src="spec/elements/Circle.js"></script>
- <script type="module" src="spec/elements/ClipPath.js"></script>
- <script type="module" src="spec/elements/Container.js"></script>
- <script type="module" src="spec/elements/Dom.js"></script>
- <script type="module" src="spec/elements/Element.js"></script>
- <script type="module" src="spec/elements/ForeignObject.js"></script>
- <script type="module" src="spec/elements/G.js"></script>
- <script type="module" src="spec/elements/Image.js"></script>
- <script type="module" src="spec/elements/Marker.js"></script>
- <script type="module" src="spec/elements/Svg.js"></script>
- <script type="module" src="spec/elements/Text.js"></script>
- <script type="module" src="spec/elements/TextPath.js"></script>
- <script type="module" src="spec/elements/Tspan.js"></script>
- <script type="module" src="spec/modules/core/event.js"></script>
- <script type="module" src="spec/modules/core/textable.js"></script>
- <script type="module" src="spec/types/ArrayPolyfill.js"></script>
- <script type="module" src="spec/types/Base.js"></script>
- <script type="module" src="spec/types/Box.js"></script>
- <script type="module" src="spec/utils/adopter.js"></script>
- <script type="module" src="spec/utils/utils.js"></script>
-</body>
+ <body>
+ <!-- include spec files here... -->
+ <script type="module" src="setupBrowser.js"></script>
+ <script type="module" src="spec/elements/A.js"></script>
+ <script type="module" src="spec/elements/Circle.js"></script>
+ <script type="module" src="spec/elements/ClipPath.js"></script>
+ <script type="module" src="spec/elements/Container.js"></script>
+ <script type="module" src="spec/elements/Dom.js"></script>
+ <script type="module" src="spec/elements/Element.js"></script>
+ <script type="module" src="spec/elements/ForeignObject.js"></script>
+ <script type="module" src="spec/elements/G.js"></script>
+ <script type="module" src="spec/elements/Image.js"></script>
+ <script type="module" src="spec/elements/Marker.js"></script>
+ <script type="module" src="spec/elements/Svg.js"></script>
+ <script type="module" src="spec/elements/Text.js"></script>
+ <script type="module" src="spec/elements/TextPath.js"></script>
+ <script type="module" src="spec/elements/Tspan.js"></script>
+ <script type="module" src="spec/modules/core/event.js"></script>
+ <script type="module" src="spec/modules/core/textable.js"></script>
+ <script type="module" src="spec/types/ArrayPolyfill.js"></script>
+ <script type="module" src="spec/types/Base.js"></script>
+ <script type="module" src="spec/types/Box.js"></script>
+ <script type="module" src="spec/utils/adopter.js"></script>
+ <script type="module" src="spec/utils/utils.js"></script>
+ </body>
</html>
const path = require('path')
glob('./spec/*/**/*.js', (err, tests) => {
-
if (err) {
throw err
}
files = files.map((e) => path.basename(e))
tests = tests.map((e) => path.basename(e))
- const difference = files.filter(x => !tests.includes(x))
+ const difference = files.filter((x) => !tests.includes(x))
if (difference.length) {
- console.error('The following files dont have a test file:\n\t' + difference.join('\n\t'))
+ console.error(
+ 'The following files dont have a test file:\n\t' +
+ difference.join('\n\t')
+ )
} else {
console.info('All src files are covered by tests')
}
#drawing {
- width: 500px;
- height: 500px;
- position: fixed;
- z-index: -1;
+ width: 500px;
+ height: 500px;
+ position: fixed;
+ z-index: -1;
}
import { getWindow } from '../src/utils/window.js'
import { svg } from '../src/modules/core/namespaces.js'
-function tag (name, attrs, children) {
+function tag(name, attrs, children) {
const doc = getWindow().document
const el = doc.createElementNS(svg, name)
let i
}
for (i in children) {
- if (typeof children[i] === 'string') { children[i] = doc.createTextNode(children[i]) }
+ if (typeof children[i] === 'string') {
+ children[i] = doc.createTextNode(children[i])
+ }
el.appendChild(children[i])
}
return el
}
-export function fixtures () {
- return tag('svg', {
- height: 0,
- width: 0,
- id: 'inlineSVG'
- }, [
- tag('defs', {}, [
- tag('linearGradient', {}, [
- tag('stop', { offset: '5%', 'stop-color': 'green' }),
- tag('stop', { offset: '95%', 'stop-color': 'gold' })
+export function fixtures() {
+ return tag(
+ 'svg',
+ {
+ height: 0,
+ width: 0,
+ id: 'inlineSVG'
+ },
+ [
+ tag('defs', {}, [
+ tag('linearGradient', {}, [
+ tag('stop', { offset: '5%', 'stop-color': 'green' }),
+ tag('stop', { offset: '95%', 'stop-color': 'gold' })
+ ]),
+ tag('radialGradient', {}, [
+ tag('stop', { offset: '5%', 'stop-color': 'green' }),
+ tag('stop', { offset: '95%', 'stop-color': 'gold' })
+ ])
]),
- tag('radialGradient', {}, [
- tag('stop', { offset: '5%', 'stop-color': 'green' }),
- tag('stop', { offset: '95%', 'stop-color': 'gold' })
- ])
- ]),
- tag('desc', {}, [ 'Some description' ]),
- tag('path', {
- id: 'lineAB',
- d: 'M 100 350 l 150 -300',
- stroke: 'red',
- 'stroke-width': '3',
- fill: 'none'
- }),
- tag('path', {
- id: 'lineBC',
- d: 'M 250 50 l 150 300',
- stroke: 'red',
- 'stroke-width': '3',
- fill: 'none'
- }),
- tag('path', {
- d: 'M 175 200 l 150 0',
- stroke: 'green',
- 'stroke-width': '3',
- fill: 'none'
- }),
- tag('path', {
- d: 'M 100 350 q 150 -300 300 0',
- stroke: 'blue',
- 'stroke-width': '5',
- fill: 'none'
- }),
- tag('g', {
- stroke: 'black',
- 'stroke-width': '2',
- fill: 'black',
- id: 'pointGroup'
- }, [
- tag('circle', {
- id: 'pointA',
- cx: '100',
- cy: '350',
- r: '3'
+ tag('desc', {}, ['Some description']),
+ tag('path', {
+ id: 'lineAB',
+ d: 'M 100 350 l 150 -300',
+ stroke: 'red',
+ 'stroke-width': '3',
+ fill: 'none'
}),
- tag('circle', {
- id: 'pointB',
- cx: '250',
- cy: '50',
- r: '50'
+ tag('path', {
+ id: 'lineBC',
+ d: 'M 250 50 l 150 300',
+ stroke: 'red',
+ 'stroke-width': '3',
+ fill: 'none'
}),
- tag('circle', {
- id: 'pointC',
- cx: '400',
- cy: '350',
- r: '50'
- })
- ]),
- tag('g', {
- 'font-size': '30',
- font: 'sans-serif',
- fill: 'black',
- stroke: 'none',
- 'text-anchor': 'middle',
- id: 'labelGroup'
- }, [
- tag('text', {
- x: '100',
- y: '350',
- dy: '-30'
- }, [ 'A' ]),
- tag('text', {
- x: '250',
- y: '50',
- dy: '-10'
- }, [ 'B' ]),
- tag('text', {
- x: '400',
- y: '350',
- dx: '30'
- }, [ 'C' ])
- ]),
- tag('polygon', { points: '200,10 250,190 160,210' }),
- tag('polyline', { points: '20,20 40,25 60,40 80,120 120,140 200,180' })
- ])
+ tag('path', {
+ d: 'M 175 200 l 150 0',
+ stroke: 'green',
+ 'stroke-width': '3',
+ fill: 'none'
+ }),
+ tag('path', {
+ d: 'M 100 350 q 150 -300 300 0',
+ stroke: 'blue',
+ 'stroke-width': '5',
+ fill: 'none'
+ }),
+ tag(
+ 'g',
+ {
+ stroke: 'black',
+ 'stroke-width': '2',
+ fill: 'black',
+ id: 'pointGroup'
+ },
+ [
+ tag('circle', {
+ id: 'pointA',
+ cx: '100',
+ cy: '350',
+ r: '3'
+ }),
+ tag('circle', {
+ id: 'pointB',
+ cx: '250',
+ cy: '50',
+ r: '50'
+ }),
+ tag('circle', {
+ id: 'pointC',
+ cx: '400',
+ cy: '350',
+ r: '50'
+ })
+ ]
+ ),
+ tag(
+ 'g',
+ {
+ 'font-size': '30',
+ font: 'sans-serif',
+ fill: 'black',
+ stroke: 'none',
+ 'text-anchor': 'middle',
+ id: 'labelGroup'
+ },
+ [
+ tag(
+ 'text',
+ {
+ x: '100',
+ y: '350',
+ dy: '-30'
+ },
+ ['A']
+ ),
+ tag(
+ 'text',
+ {
+ x: '250',
+ y: '50',
+ dy: '-10'
+ },
+ ['B']
+ ),
+ tag(
+ 'text',
+ {
+ x: '400',
+ y: '350',
+ dx: '30'
+ },
+ ['C']
+ )
+ ]
+ ),
+ tag('polygon', { points: '200,10 250,190 160,210' }),
+ tag('polyline', { points: '20,20 40,25 60,40 80,120 120,140 200,180' })
+ ]
+ )
}
-export function buildFixtures () {
+export function buildFixtures() {
const doc = getWindow().document
const body = doc.body || doc.documentElement
body.appendChild(div)
}
-export function buildCanvas () {
+export function buildCanvas() {
const doc = getWindow().document
const body = doc.body || doc.documentElement
body.appendChild(div)
}
-export function clear () {
+export function clear() {
const doc = getWindow().document
const canvas = doc.getElementById('canvas')
const fixtures = doc.getElementById('fixtures')
// remove if present
fixtures && fixtures.parentNode.removeChild(fixtures)
canvas.parentNode.removeChild(canvas)
-
- ;[ ...doc.querySelectorAll('svg') ].forEach((el) => el.parentNode.removeChild(el))
+ ;[...doc.querySelectorAll('svg')].forEach((el) =>
+ el.parentNode.removeChild(el)
+ )
}
jasmine.loadConfig({
spec_dir: '/',
- spec_files: [
- 'spec/spec/*/**/*.js'
- ],
- helpers: [
- 'spec/setupSVGDom.js'
- ]
+ spec_files: ['spec/spec/*/**/*.js'],
+ helpers: ['spec/setupSVGDom.js']
})
jasmine.execute()
jasmine.DEFAULT_TIMEOUT_INTERVAL = 200
-function setup () {
+function setup() {
const win = createHTMLWindow()
registerWindow(win, win.document)
buildCanvas()
global.container = win.document.getElementById('canvas')
}
-function teardown () {
+function teardown() {
clear()
global.container = null
registerWindow()
import { getWindow } from '../../../src/utils/window.js'
describe('Animator.js', () => {
-
beforeEach(() => {
jasmine.RequestAnimationFrame.install(getWindow())
Animator.timeouts = new Queue()
describe('timeout()', () => {
it('calls a function after a specific time', () => {
-
var spy = jasmine.createSpy('tester')
Animator.timeout(spy, 100)
/* globals describe, expect, it, jasmine */
import { easing, defaults } from '../../../src/main.js'
-import { Stepper, Ease, Controller, Spring, PID } from '../../../src/animation/Controller.js'
+import {
+ Stepper,
+ Ease,
+ Controller,
+ Spring,
+ PID
+} from '../../../src/animation/Controller.js'
const { any, createSpy } = jasmine
describe('Controller.js', () => {
-
describe('easing', () => {
var easedValues = {
'-': 0.5,
'<': 0.2929
}
- ;[ '-', '<>', '<', '>' ].forEach((el) => {
+ ;['-', '<>', '<', '>'].forEach((el) => {
describe(el, () => {
it('is 0 at 0', () => {
expect(easing[el](0)).toBe(0)
/* globals describe, expect, it, jasmine */
-import { Morphable, NonMorphable, ObjectBag, Color, Box, Matrix, PointArray, PathArray, TransformBag, Number as SVGNumber, Array as SVGArray } from '../../../src/main.js'
+import {
+ Morphable,
+ NonMorphable,
+ ObjectBag,
+ Color,
+ Box,
+ Matrix,
+ PointArray,
+ PathArray,
+ TransformBag,
+ Number as SVGNumber,
+ Array as SVGArray
+} from '../../../src/main.js'
import { Stepper, easing, Ease } from '../../../src/animation/Controller.js'
const { objectContaining, arrayContaining, any } = jasmine
})
describe('constructors', () => {
-
it('Morphable with SVGNumber', () => {
const morpher = new Morphable().from(10).to(5)
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(ObjectBag)
expect(morpher.at(0.5)).toEqual(any(Object))
- expect(morpher.at(0.5).valueOf()).toEqual(objectContaining({ a: new SVGNumber(7.5), b: new SVGNumber(15) }))
+ expect(morpher.at(0.5).valueOf()).toEqual(
+ objectContaining({ a: new SVGNumber(7.5), b: new SVGNumber(15) })
+ )
})
it('Morphable from object containing css values', () => {
- const morpher = new Morphable().from({ opacity: '0', 'stroke-width': '10px' }).to({ opacity: 1, 'stroke-width': 20 })
+ const morpher = new Morphable()
+ .from({ opacity: '0', 'stroke-width': '10px' })
+ .to({ opacity: 1, 'stroke-width': 20 })
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(ObjectBag)
expect(morpher.at(0.5)).toEqual(any(Object))
- expect(morpher.at(0.5).valueOf()).toEqual(objectContaining({ opacity: new SVGNumber(0.5), 'stroke-width': new SVGNumber('15px') }))
+ expect(morpher.at(0.5).valueOf()).toEqual(
+ objectContaining({
+ opacity: new SVGNumber(0.5),
+ 'stroke-width': new SVGNumber('15px')
+ })
+ )
})
it('Creates a morphable out of an SVGNumber', () => {
})
it('Creates a morphable out of an Box', () => {
- const morpher = new Box(1, 2, 3, 4).to([ 5, 6, 7, 8 ])
+ const morpher = new Box(1, 2, 3, 4).to([5, 6, 7, 8])
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(Box)
expect(morpher.at(0.5)).toEqual(any(Box))
- expect(morpher.at(0.5)).toEqual(objectContaining({ x: 3, y: 4, width: 5, height: 6 }))
+ expect(morpher.at(0.5)).toEqual(
+ objectContaining({ x: 3, y: 4, width: 5, height: 6 })
+ )
})
it('Creates a morphable out of an Matrix', () => {
- const morpher = new Matrix(1, 2, 3, 4, 5, 6).to([ 3, 4, 5, 6, 7, 8 ])
+ const morpher = new Matrix(1, 2, 3, 4, 5, 6).to([3, 4, 5, 6, 7, 8])
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(Matrix)
expect(morpher.at(0.5)).toEqual(any(Matrix))
- expect(morpher.at(0.5)).toEqual(objectContaining(new Matrix(2, 3, 4, 5, 6, 7)))
+ expect(morpher.at(0.5)).toEqual(
+ objectContaining(new Matrix(2, 3, 4, 5, 6, 7))
+ )
})
it('Creates a morphable out of an SVGArray', () => {
- const morpher = new SVGArray([ 1, 2, 3, 4, 5, 6 ]).to([ 3, 4, 5, 6, 7, 8 ])
+ const morpher = new SVGArray([1, 2, 3, 4, 5, 6]).to([3, 4, 5, 6, 7, 8])
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(SVGArray)
expect(morpher.at(0.5)).toEqual(any(SVGArray))
- expect(morpher.at(0.5).toArray()).toEqual(arrayContaining([ 2, 3, 4, 5, 6, 7 ]))
+ expect(morpher.at(0.5).toArray()).toEqual(
+ arrayContaining([2, 3, 4, 5, 6, 7])
+ )
})
it('Creates a morphable out of an PointArray', () => {
- const morpher = new PointArray([ 1, 2, 3, 4, 5, 6 ]).to([ 3, 4, 5, 6, 7, 8 ])
+ const morpher = new PointArray([1, 2, 3, 4, 5, 6]).to([3, 4, 5, 6, 7, 8])
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(PointArray)
expect(morpher.at(0.5)).toEqual(any(PointArray))
- expect(morpher.at(0.5).toArray()).toEqual(arrayContaining([ 2, 3, 4, 5, 6, 7 ]))
+ expect(morpher.at(0.5).toArray()).toEqual(
+ arrayContaining([2, 3, 4, 5, 6, 7])
+ )
})
it('Creates a morphable out of an PathArray', () => {
- const morpher = new PathArray([ 'M', 1, 2, 'L', 3, 4, 'L', 5, 6 ]).to([ 'M', 3, 4, 'L', 5, 6, 'L', 7, 8 ])
+ const morpher = new PathArray(['M', 1, 2, 'L', 3, 4, 'L', 5, 6]).to([
+ 'M',
+ 3,
+ 4,
+ 'L',
+ 5,
+ 6,
+ 'L',
+ 7,
+ 8
+ ])
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(PathArray)
expect(morpher.at(0.5)).toEqual(any(PathArray))
- expect(morpher.at(0.5).toArray()).toEqual(arrayContaining([ 'M', 2, 3, 'L', 4, 5, 'L', 6, 7 ]))
+ expect(morpher.at(0.5).toArray()).toEqual(
+ arrayContaining(['M', 2, 3, 'L', 4, 5, 'L', 6, 7])
+ )
})
it('creates a morphable from unmorphable types', () => {
})
it('Creates a morphable out of an TransformBag', () => {
- const morpher = new TransformBag({ rotate: 0, translateX: 0 })
- .to({ rotate: 50, translateX: 20 })
+ const morpher = new TransformBag({ rotate: 0, translateX: 0 }).to({
+ rotate: 50,
+ translateX: 20
+ })
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(TransformBag)
expect(morpher.at(0.5)).toEqual(any(TransformBag))
- expect(morpher.at(0.5)).toEqual(objectContaining({ rotate: 25, translateX: 10 }))
+ expect(morpher.at(0.5)).toEqual(
+ objectContaining({ rotate: 25, translateX: 10 })
+ )
})
it('Creates a morphable out of an ObjectBag', () => {
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(ObjectBag)
expect(morpher.at(0.5)).toEqual(any(Object))
- expect(morpher.at(0.5).valueOf()).toEqual(objectContaining({ a: new SVGNumber(7.5), b: new SVGNumber(15) }))
+ expect(morpher.at(0.5).valueOf()).toEqual(
+ objectContaining({ a: new SVGNumber(7.5), b: new SVGNumber(15) })
+ )
})
it('creates a morphable from a color string', () => {
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(SVGArray)
expect(morpher.at(0.5)).toEqual(any(SVGArray))
- expect(morpher.at(0.5)).toEqual([ 2, 3, 4, 5 ])
+ expect(morpher.at(0.5)).toEqual([2, 3, 4, 5])
})
it('creates a morphable from an array', () => {
- const morpher = new Morphable().from([ 0, 1, 2, 3 ]).to([ 4, 5, 6, 7 ])
+ const morpher = new Morphable().from([0, 1, 2, 3]).to([4, 5, 6, 7])
expect(morpher).toEqual(any(Morphable))
expect(morpher.type()).toBe(SVGArray)
expect(morpher.at(0.5)).toEqual(any(SVGArray))
- expect(morpher.at(0.5)).toEqual([ 2, 3, 4, 5 ])
+ expect(morpher.at(0.5)).toEqual([2, 3, 4, 5])
})
it('converts the to-color to the from-type', () => {
it('sets the from attribute to an array representation of the morphable type', () => {
const morpher = new Morphable().from(5)
- expect(morpher.from()).toEqual(arrayContaining([ 5 ]))
+ expect(morpher.from()).toEqual(arrayContaining([5]))
})
})
it('sets the from attribute to an array representation of the morphable type', () => {
const morpher = new Morphable().to(5)
- expect(morpher.to()).toEqual(arrayContaining([ 5 ]))
+ expect(morpher.to()).toEqual(arrayContaining([5]))
})
})
describe('NonMorphable', () => {
describe('()', () => {
it('wraps any type into a NonMorphable from an array', () => {
- const non = new NonMorphable([ 5 ])
+ const non = new NonMorphable([5])
expect(non.valueOf()).toBe(5)
})
describe('toArray()', () => {
it('returns array representation of NonMorphable', () => {
- expect(new NonMorphable(5).toArray()).toEqual([ 5 ])
- expect(new NonMorphable('Hello').toArray()).toEqual([ 'Hello' ])
+ expect(new NonMorphable(5).toArray()).toEqual([5])
+ expect(new NonMorphable('Hello').toArray()).toEqual(['Hello'])
})
})
})
describe('TransformBag', () => {
describe('()', () => {
it('creates an object which holds transformations for morphing by passing array', () => {
- const bag = new TransformBag([ 0, 1, 2, 3, 4, 5, 6, 7 ])
- expect(bag.toArray()).toEqual([ 0, 1, 2, 3, 4, 5, 6, 7 ])
+ const bag = new TransformBag([0, 1, 2, 3, 4, 5, 6, 7])
+ expect(bag.toArray()).toEqual([0, 1, 2, 3, 4, 5, 6, 7])
})
it('creates an object which holds transformations for morphing by passing object', () => {
originY: 7
})
- expect(bag.toArray()).toEqual([ 0, 1, 2, 3, 4, 5, 6, 7 ])
+ expect(bag.toArray()).toEqual([0, 1, 2, 3, 4, 5, 6, 7])
})
})
describe('toArray()', () => {
it('creates an array out of the transform values', () => {
- const bag = new TransformBag([ 0, 1, 2, 3, 4, 5, 6, 7 ])
- expect(bag.toArray()).toEqual([ 0, 1, 2, 3, 4, 5, 6, 7 ])
+ const bag = new TransformBag([0, 1, 2, 3, 4, 5, 6, 7])
+ expect(bag.toArray()).toEqual([0, 1, 2, 3, 4, 5, 6, 7])
})
})
})
describe('ObjectBag', () => {
describe('()', () => {
it('wraps an object into a morphable object by passing an array', () => {
- const bag = new ObjectBag([ 'foo', SVGNumber, 2, 1, '', 'bar', SVGNumber, 2, 2, '', 'baz', SVGNumber, 2, 3, '' ])
- expect(bag.values).toEqual([ 'foo', SVGNumber, 2, 1, '', 'bar', SVGNumber, 2, 2, '', 'baz', SVGNumber, 2, 3, '' ])
+ const bag = new ObjectBag([
+ 'foo',
+ SVGNumber,
+ 2,
+ 1,
+ '',
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'baz',
+ SVGNumber,
+ 2,
+ 3,
+ ''
+ ])
+ expect(bag.values).toEqual([
+ 'foo',
+ SVGNumber,
+ 2,
+ 1,
+ '',
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'baz',
+ SVGNumber,
+ 2,
+ 3,
+ ''
+ ])
})
it('wraps an object into a morphable object by passing an object', () => {
const bag = new ObjectBag({ foo: 1, bar: 2, baz: 3 })
- expect(bag.values).toEqual([ 'bar', SVGNumber, 2, 2, '', 'baz', SVGNumber, 2, 3, '', 'foo', SVGNumber, 2, 1, '' ])
+ expect(bag.values).toEqual([
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'baz',
+ SVGNumber,
+ 2,
+ 3,
+ '',
+ 'foo',
+ SVGNumber,
+ 2,
+ 1,
+ ''
+ ])
})
it('wraps an object with morphable values in an ObjectBag', () => {
const bag = new ObjectBag({ fill: new Color(), bar: 2 })
- expect(bag.values).toEqual([ 'bar', SVGNumber, 2, 2, '', 'fill', Color, 5, 0, 0, 0, 0, 'rgb' ])
+ expect(bag.values).toEqual([
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'fill',
+ Color,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 'rgb'
+ ])
})
it('wraps an array with morphable representation in an ObjectBag', () => {
- const bag = new ObjectBag([ 'bar', SVGNumber, 2, 2, '', 'fill', Color, 5, 0, 0, 0, 0, 'rgb' ])
- expect(bag.toArray()).toEqual([ 'bar', SVGNumber, 2, 2, '', 'fill', Color, 5, 0, 0, 0, 0, 'rgb' ])
+ const bag = new ObjectBag([
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'fill',
+ Color,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 'rgb'
+ ])
+ expect(bag.toArray()).toEqual([
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'fill',
+ Color,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 'rgb'
+ ])
})
})
describe('toArray()', () => {
it('creates an array out of the object', () => {
const bag = new ObjectBag({ foo: 1, bar: 2, baz: 3 })
- expect(bag.toArray()).toEqual(
- [ 'bar', SVGNumber, 2, 2, '', 'baz', SVGNumber, 2, 3, '', 'foo', SVGNumber, 2, 1, '' ]
- )
+ expect(bag.toArray()).toEqual([
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'baz',
+ SVGNumber,
+ 2,
+ 3,
+ '',
+ 'foo',
+ SVGNumber,
+ 2,
+ 1,
+ ''
+ ])
})
it('creates a flattened array out of the object with morphable values', () => {
const bag = new ObjectBag({ fill: new Color(), bar: 2 })
- expect(bag.toArray()).toEqual(
- [ 'bar', SVGNumber, 2, 2, '', 'fill', Color, 5, 0, 0, 0, 0, 'rgb' ]
- )
+ expect(bag.toArray()).toEqual([
+ 'bar',
+ SVGNumber,
+ 2,
+ 2,
+ '',
+ 'fill',
+ Color,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 'rgb'
+ ])
})
})
describe('valueOf()', () => {
it('creates morphable objects from the stored values', () => {
const bag = new ObjectBag({ foo: 1, bar: 2, baz: 3 })
- expect(bag.valueOf()).toEqual({ foo: new SVGNumber(1), bar: new SVGNumber(2), baz: new SVGNumber(3) })
+ expect(bag.valueOf()).toEqual({
+ foo: new SVGNumber(1),
+ bar: new SVGNumber(2),
+ baz: new SVGNumber(3)
+ })
})
it('creates also morphable objects from the stored values', () => {
const bag = new ObjectBag({ fill: new Color(), bar: 2 })
- expect(bag.valueOf()).toEqual({ fill: objectContaining(new Color()), bar: new SVGNumber(2) })
+ expect(bag.valueOf()).toEqual({
+ fill: objectContaining(new Color()),
+ bar: new SVGNumber(2)
+ })
})
})
const bag1 = new ObjectBag({ x: 1, y: '#fff' })
const bag2 = new ObjectBag({ x: 2, y: new Color().hsl() })
bag1.align(bag2.toArray())
- expect(bag1.toArray()).toEqual([ 'x', SVGNumber, 2, 1, '', 'y', Color, 5, 0, 0, 100, 0, 'hsl' ])
+ expect(bag1.toArray()).toEqual([
+ 'x',
+ SVGNumber,
+ 2,
+ 1,
+ '',
+ 'y',
+ Color,
+ 5,
+ 0,
+ 0,
+ 100,
+ 0,
+ 'hsl'
+ ])
})
})
})
import { Queue } from '../../../src/main.js'
describe('Queue.js', function () {
-
describe('first ()', function () {
-
it('returns null if no item in the queue', function () {
var queue = new Queue()
expect(queue.first()).toEqual(null)
})
describe('last ()', function () {
-
it('returns null if no item in the queue', function () {
var queue = new Queue()
expect(queue.last()).toEqual(null)
})
describe('push ()', function () {
-
it('adds an element to the end of the queue', function () {
var queue = new Queue()
queue.push(1)
/* globals describe, expect, it, beforeEach, afterEach, spyOn, jasmine */
-import { Runner, defaults, Ease, Controller, SVG, Timeline, Rect, Morphable, Animator, Queue, Matrix, Color, Box, Polygon, PointArray } from '../../../src/main.js'
+import {
+ Runner,
+ defaults,
+ Ease,
+ Controller,
+ SVG,
+ Timeline,
+ Rect,
+ Morphable,
+ Animator,
+ Queue,
+ Matrix,
+ Color,
+ Box,
+ Polygon,
+ PointArray
+} from '../../../src/main.js'
import { FakeRunner, RunnerArray } from '../../../src/animation/Runner.js'
import { getWindow } from '../../../src/utils/window.js'
import SVGNumber from '../../../src/types/SVGNumber.js'
const { any, createSpy, objectContaining, arrayContaining } = jasmine
describe('Runner.js', () => {
-
describe('Runner', () => {
var initFn = createSpy('initFn')
var runFn = createSpy('runFn')
it('can handle all form of input', () => {
var fn = Runner.sanitise
- expect(fn(200, 200, 'now')).toEqual(objectContaining({
- duration: 200,
- delay: 200,
- when: 'now',
- times: 1,
- wait: 0,
- swing: false
- }))
-
- expect(fn(200, 200)).toEqual(objectContaining({
- duration: 200,
- delay: 200,
- when: 'last',
- times: 1,
- wait: 0,
- swing: false
- }))
-
- expect(fn(200)).toEqual(objectContaining({
- duration: 200,
- delay: defaults.timeline.delay,
- when: 'last',
- times: 1,
- wait: 0,
- swing: false
- }))
-
- expect(fn(runFn)).toEqual(objectContaining({
- duration: runFn,
- delay: defaults.timeline.delay,
- when: 'last',
- times: 1,
- wait: 0,
- swing: false
- }))
-
- expect(fn({ delay: 200 })).toEqual(objectContaining({
- duration: defaults.timeline.duration,
- delay: 200,
- when: 'last',
- times: 1,
- wait: 0,
- swing: false
- }))
-
- expect(fn({ times: 3, delay: 200, when: 'now', swing: true, wait: 200 })).toEqual(objectContaining({
- duration: defaults.timeline.duration,
- delay: 200,
- when: 'now',
- times: 3,
- wait: 200,
- swing: true
- }))
+ expect(fn(200, 200, 'now')).toEqual(
+ objectContaining({
+ duration: 200,
+ delay: 200,
+ when: 'now',
+ times: 1,
+ wait: 0,
+ swing: false
+ })
+ )
+
+ expect(fn(200, 200)).toEqual(
+ objectContaining({
+ duration: 200,
+ delay: 200,
+ when: 'last',
+ times: 1,
+ wait: 0,
+ swing: false
+ })
+ )
+
+ expect(fn(200)).toEqual(
+ objectContaining({
+ duration: 200,
+ delay: defaults.timeline.delay,
+ when: 'last',
+ times: 1,
+ wait: 0,
+ swing: false
+ })
+ )
+
+ expect(fn(runFn)).toEqual(
+ objectContaining({
+ duration: runFn,
+ delay: defaults.timeline.delay,
+ when: 'last',
+ times: 1,
+ wait: 0,
+ swing: false
+ })
+ )
+
+ expect(fn({ delay: 200 })).toEqual(
+ objectContaining({
+ duration: defaults.timeline.duration,
+ delay: 200,
+ when: 'last',
+ times: 1,
+ wait: 0,
+ swing: false
+ })
+ )
+
+ expect(
+ fn({ times: 3, delay: 200, when: 'now', swing: true, wait: 200 })
+ ).toEqual(
+ objectContaining({
+ duration: defaults.timeline.duration,
+ delay: 200,
+ when: 'now',
+ times: 3,
+ wait: 200,
+ swing: true
+ })
+ )
})
})
var runner = new Runner()
runner.queue(initFn, runFn, true)
- expect(runner._queue[0]).toEqual(objectContaining({
- initialiser: initFn,
- initialised: false,
- runner: runFn,
- finished: false
- }))
+ expect(runner._queue[0]).toEqual(
+ objectContaining({
+ initialiser: initFn,
+ initialised: false,
+ runner: runFn,
+ finished: false
+ })
+ )
})
})
describe('step()', () => {
-
it('returns itself', () => {
var runner = new Runner()
expect(runner.step()).toBe(runner)
expect(runFn.calls.count()).toBe(2)
})
- function getLoop (r) {
+ function getLoop(r) {
var loopDuration = r._duration + r._wait
var loopsDone = Math.floor(r._time / loopDuration)
return loopsDone
})
})
})
-
})
describe('active()', () => {
})
describe('position()', () => {
-
it('gets the position of a runner', () => {
var spy = createSpy('stepper')
var runner = new Runner(1000).queue(null, spy)
it('throws if no timeline is given', () => {
var runner = new Runner()
- expect(() => runner.schedule(200, 'now')).toThrowError('Runner cannot be scheduled without timeline')
+ expect(() => runner.schedule(200, 'now')).toThrowError(
+ 'Runner cannot be scheduled without timeline'
+ )
})
-
})
describe('unschedule()', () => {
expect(runner2.timeline()).toBe(timeline)
expect(runner2.time()).toBe(0)
- expect(timeline.schedule()).toEqual(arrayContaining([
- objectContaining({ start: t, duration: 1000, end: t + 1000, runner: runner }),
- objectContaining({ start: t + 2000, duration: 500, end: t + 2500, runner: runner2 })
- ]))
+ expect(timeline.schedule()).toEqual(
+ arrayContaining([
+ objectContaining({
+ start: t,
+ duration: 1000,
+ end: t + 1000,
+ runner: runner
+ }),
+ objectContaining({
+ start: t + 2000,
+ duration: 500,
+ end: t + 2500,
+ runner: runner2
+ })
+ ])
+ )
})
it('reuses timeline and element of current runner', () => {
const runner = rect.animate().move(10, 10)
jasmine.RequestAnimationFrame.tick(16)
expect(runner._tryRetarget('x', 20)).toBe(true)
- expect(runner._history.x.morpher.to()).toEqual([ 20, '' ])
+ expect(runner._history.x.morpher.to()).toEqual([20, ''])
})
it('throws away the morpher if it was not initialized yet and returns false', () => {
it('does only work with controller for transformations and uses retarget function when retargeting transformations', () => {
const rect = new Rect()
- const runner = rect.animate(new Controller(() => 0)).transform({ translate: [ 10, 10 ] })
+ const runner = rect
+ .animate(new Controller(() => 0))
+ .transform({ translate: [10, 10] })
jasmine.RequestAnimationFrame.tick(16)
// In that case tryRetarget is not successful
- expect(runner._tryRetarget('transform', { translate: [ 20, 20 ] })).toBe(true)
+ expect(
+ runner._tryRetarget('transform', { translate: [20, 20] })
+ ).toBe(true)
})
it('starts the timeline if retarget was successful', () => {
jasmine.RequestAnimationFrame.tick(16)
const spy = spyOn(timeline, 'play')
expect(runner._tryRetarget('x', 20)).toBe(true)
- expect(runner._history.x.morpher.to()).toEqual([ 20, '' ])
+ expect(runner._history.x.morpher.to()).toEqual([20, ''])
expect(spy).toHaveBeenCalledTimes(1)
})
})
describe('addTransform()', () => {
it('adds a transformation by multiplying', () => {
const runner = new Runner()
- runner.addTransform({ translate: [ 10, 10 ] })
+ runner.addTransform({ translate: [10, 10] })
expect(runner.transforms).toEqual(new Matrix(1, 0, 0, 1, 10, 10))
})
})
describe('clearTransform()', () => {
it('resets the transformations to identity', () => {
const runner = new Runner()
- runner.addTransform({ translate: [ 10, 10 ] })
+ runner.addTransform({ translate: [10, 10] })
runner.clearTransform()
expect(runner.transforms).toEqual(new Matrix())
})
describe('clearTransformsFromQueue', () => {
it('deletes all functions from the queue which are transformations', () => {
const runner = new Runner().queue(initFn, runFn)
- runner.transform({ translate: [ 10, 20 ] })
+ runner.transform({ translate: [10, 20] })
runner.clearTransformsFromQueue()
expect(runner._queue.length).toBe(1)
})
it('calculates the current transformation of this element', () => {
const rect = new Rect()
rect._prepareRunner()
- const runner1 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner1 = new Runner().addTransform({ translate: [10, 20] })
const runner2 = new Runner().addTransform({ rotate: 45 })
- const runner3 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner3 = new Runner().addTransform({ translate: [10, 20] })
rect._addRunner(runner1)
rect._addRunner(runner2)
rect._addRunner(runner3)
expect(rect._currentTransform(runner3)).toEqual(
- new Matrix({ translate: [ 10, 20 ] })
- .rotate(45)
- .translate(10, 20)
+ new Matrix({ translate: [10, 20] }).rotate(45).translate(10, 20)
)
})
})
const runner = new Runner()
runner.styleAttr('attr', 'x', 5)
expect(runner._history.attr.morpher).toEqual(any(Morphable))
- expect(runner._history.attr.morpher.to()).toEqual([ 'x', SVGNumber, 2, 5, '' ])
+ expect(runner._history.attr.morpher.to()).toEqual([
+ 'x',
+ SVGNumber,
+ 2,
+ 5,
+ ''
+ ])
})
it('adds a morpher for css', () => {
const runner = new Runner()
runner.styleAttr('css', 'x', 5)
expect(runner._history.css.morpher).toEqual(any(Morphable))
- expect(runner._history.css.morpher.to()).toEqual([ 'x', SVGNumber, 2, 5, '' ])
+ expect(runner._history.css.morpher.to()).toEqual([
+ 'x',
+ SVGNumber,
+ 2,
+ 5,
+ ''
+ ])
})
it('adds init and run fn for execution when runner runs', () => {
const runner = new Runner(100).ease('-').element(element)
runner.styleAttr('attr', 'x', 5)
runner.step(50)
- expect(runner._history.attr.morpher.from()).toEqual([ 'x', SVGNumber, 2, 0, '' ])
- expect(runner._history.attr.morpher.to()).toEqual([ 'x', SVGNumber, 2, 5, '' ])
+ expect(runner._history.attr.morpher.from()).toEqual([
+ 'x',
+ SVGNumber,
+ 2,
+ 0,
+ ''
+ ])
+ expect(runner._history.attr.morpher.to()).toEqual([
+ 'x',
+ SVGNumber,
+ 2,
+ 5,
+ ''
+ ])
expect(element.x()).toBe(2.5)
})
const runner = new Runner(100).ease('-').element(element)
runner.styleAttr('attr', { fill: '#000', stroke: new Color('#fff') })
runner.step(50)
- expect(runner._history.attr.morpher.from()).toEqual(
- [ 'fill', Color, 5, 255, 255, 255, 0, 'rgb', 'stroke', Color, 5, 0, 0, 0, 0, 'rgb' ]
- )
-
- expect(runner._history.attr.morpher.to()).toEqual(
- [ 'fill', Color, 5, 0, 0, 0, 0, 'rgb', 'stroke', Color, 5, 255, 255, 255, 0, 'rgb' ]
- )
+ expect(runner._history.attr.morpher.from()).toEqual([
+ 'fill',
+ Color,
+ 5,
+ 255,
+ 255,
+ 255,
+ 0,
+ 'rgb',
+ 'stroke',
+ Color,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 'rgb'
+ ])
+
+ expect(runner._history.attr.morpher.to()).toEqual([
+ 'fill',
+ Color,
+ 5,
+ 0,
+ 0,
+ 0,
+ 0,
+ 'rgb',
+ 'stroke',
+ Color,
+ 5,
+ 255,
+ 255,
+ 255,
+ 0,
+ 'rgb'
+ ])
const result = runner._history.attr.morpher.at(0.5).valueOf()
expect(result.fill).toEqual(any(Color))
expect(result.stroke).toEqual(any(Color))
- expect(result.fill.toArray()).toEqual([ 127.5, 127.5, 127.5, 0, 'rgb' ])
- expect(result.stroke.toArray()).toEqual([ 127.5, 127.5, 127.5, 0, 'rgb' ])
+ expect(result.fill.toArray()).toEqual([127.5, 127.5, 127.5, 0, 'rgb'])
+ expect(result.stroke.toArray()).toEqual([
+ 127.5,
+ 127.5,
+ 127.5,
+ 0,
+ 'rgb'
+ ])
})
it('it changes color space', () => {
const runner = new Runner(100).ease('-').element(element)
runner.styleAttr('attr', { fill: new Color(100, 12, 12, 'hsl') })
runner.step(50)
- expect(runner._history.attr.morpher.from()).toEqual(
- [ 'fill', Color, 5, 0, 0, 100, 0, 'hsl' ]
- )
-
- expect(runner._history.attr.morpher.to()).toEqual(
- [ 'fill', Color, 5, 100, 12, 12, 0, 'hsl' ]
- )
+ expect(runner._history.attr.morpher.from()).toEqual([
+ 'fill',
+ Color,
+ 5,
+ 0,
+ 0,
+ 100,
+ 0,
+ 'hsl'
+ ])
+
+ expect(runner._history.attr.morpher.to()).toEqual([
+ 'fill',
+ Color,
+ 5,
+ 100,
+ 12,
+ 12,
+ 0,
+ 'hsl'
+ ])
const result = runner._history.attr.morpher.at(0.5).valueOf()
expect(result.fill).toEqual(any(Color))
- expect(result.fill.toArray()).toEqual([ 50, 6, 56, 0, 'hsl' ])
+ expect(result.fill.toArray()).toEqual([50, 6, 56, 0, 'hsl'])
expect(element.fill()).toBe('#969388')
})
runner.styleAttr('attr', { fill: new Color(100, 12, 12, 'hsl') })
runner.step(50)
expect(element.fill()).toBe('#969388')
- runner.styleAttr('attr', { fill: new Color(100, 50, 50, 'hsl'), x: 50 })
+ runner.styleAttr('attr', {
+ fill: new Color(100, 50, 50, 'hsl'),
+ x: 50
+ })
runner.step(25)
expect(element.fill()).toBe('#b1c37c')
expect(element.x()).toBe(37.5)
})
})
- function closeTo (number, precision = 2) {
+ function closeTo(number, precision = 2) {
return {
/*
* The asymmetricMatch function is required, and must return a boolean.
*/
asymmetricMatch: function (compareTo) {
const factor = 10 ** precision
- return Math.round((~~(compareTo * factor)) / factor) === Math.round((~~(number * factor)) / factor)
+ return (
+ Math.round(~~(compareTo * factor) / factor) ===
+ Math.round(~~(number * factor) / factor)
+ )
},
/*
* be seen by the user in the message when a test fails.
*/
jasmineToString: function () {
- return '<close to: ' + number + ' with precision: ' + precision + '>'
+ return (
+ '<close to: ' + number + ' with precision: ' + precision + '>'
+ )
}
}
}
- function equal (obj) {
+ function equal(obj) {
return {
/*
* The asymmetricMatch function is required, and must return a boolean.
if (!(compareTo instanceof obj.constructor)) return false
const keys = Object.keys(obj)
- const difference = Object.keys(compareTo).filter((el) => !keys.includes(el))
+ const difference = Object.keys(compareTo).filter(
+ (el) => !keys.includes(el)
+ )
if (difference.length) return false
const runner = new Runner(100).ease('-').element(element)
runner.zoom(2, { x: 0, y: 0 })
runner.step(50)
- expect(runner._history.zoom.morpher.from()).toEqual(
- [ 1, '' ]
- )
- expect(runner._history.zoom.morpher.to()).toEqual(
- [ 2, '' ]
- )
+ expect(runner._history.zoom.morpher.from()).toEqual([1, ''])
+ expect(runner._history.zoom.morpher.to()).toEqual([2, ''])
expect(element.zoom()).toBeCloseTo(1.5, 10)
- expect(element.viewbox().toArray()).toEqual([ 0, 0, closeTo(66.666, 3), closeTo(66.666, 3) ])
+ expect(element.viewbox().toArray()).toEqual([
+ 0,
+ 0,
+ closeTo(66.666, 3),
+ closeTo(66.666, 3)
+ ])
})
it('retargets if called twice', () => {
runner.zoom(2, { x: 0, y: 0 })
runner.step(50)
runner.zoom(4, { x: 0, y: 0 })
- expect(runner._history.zoom.morpher.from()).toEqual(
- [ 1, '' ]
- )
- expect(runner._history.zoom.morpher.to()).toEqual(
- [ 4, '' ]
- )
+ expect(runner._history.zoom.morpher.from()).toEqual([1, ''])
+ expect(runner._history.zoom.morpher.to()).toEqual([4, ''])
runner.step(25)
expect(element.zoom()).toBeCloseTo(3.25, 10)
- expect(element.viewbox().toArray()).toEqual([ 0, 0, closeTo(30.769, 3), closeTo(30.769, 3) ])
+ expect(element.viewbox().toArray()).toEqual([
+ 0,
+ 0,
+ closeTo(30.769, 3),
+ closeTo(30.769, 3)
+ ])
})
})
it('does not retarget for non-declarative transformations', () => {
const runner = new Runner()
const spy = spyOn(runner, '_tryRetarget')
- runner.transform({ translate: [ 10, 20 ] })
+ runner.transform({ translate: [10, 20] })
expect(spy).not.toHaveBeenCalled()
})
it('does not retarget for relative transformations', () => {
const runner = new Runner(new Controller(() => 0))
const spy = spyOn(runner, '_tryRetarget')
- runner.transform({ translate: [ 10, 20 ] }, true)
+ runner.transform({ translate: [10, 20] }, true)
expect(spy).not.toHaveBeenCalled()
})
it('does retarget for absolute declarative transformations', () => {
const runner = new Runner(new Controller(() => 0))
const spy = spyOn(runner, '_tryRetarget')
- runner.transform({ translate: [ 10, 20 ] })
+ runner.transform({ translate: [10, 20] })
expect(spy).toHaveBeenCalled()
})
it('calls queue with isTransform=true', () => {
const runner = new Runner()
const spy = spyOn(runner, 'queue')
- runner.transform({ translate: [ 10, 20 ] })
- expect(spy).toHaveBeenCalledWith(any(Function), any(Function), any(Function), true)
+ runner.transform({ translate: [10, 20] })
+ expect(spy).toHaveBeenCalledWith(
+ any(Function),
+ any(Function),
+ any(Function),
+ true
+ )
})
it('steps an affine transformation correctly', () => {
const element = new Rect()
const runner = new Runner(100).ease('-').element(element)
- runner.transform({ translate: [ 10, 20 ], scale: 2, rotate: 90 })
+ runner.transform({ translate: [10, 20], scale: 2, rotate: 90 })
runner.step(50)
// transform sets an immediate callback to apply all merged transforms
// when every runner had the chance to add its bit of transforms
jasmine.RequestAnimationFrame.tick(1)
- expect(element.matrix().decompose()).toEqual(objectContaining({
- translateX: 5,
- translateY: 10,
- scaleX: closeTo(1.5, 10),
- scaleY: closeTo(1.5),
- rotate: closeTo(45, 10)
- }))
+ expect(element.matrix().decompose()).toEqual(
+ objectContaining({
+ translateX: 5,
+ translateY: 10,
+ scaleX: closeTo(1.5, 10),
+ scaleY: closeTo(1.5),
+ rotate: closeTo(45, 10)
+ })
+ )
})
it('retargets an affine transformation correctly', () => {
const element = new Rect()
const runner = new Runner(() => 1).element(element)
- runner.transform({ translate: [ 10, 20 ], scale: 2, rotate: 90 })
+ runner.transform({ translate: [10, 20], scale: 2, rotate: 90 })
runner.step(50)
runner.transform({ scale: 2 })
// on every frame. That is why we step here to see the effect of our retargeting
runner.step(25)
- expect(runner._history.transform.morpher.to()).toEqual(
- [ 2, 2, 0, 0, 0, 0, 0, 0 ]
- )
+ expect(runner._history.transform.morpher.to()).toEqual([
+ 2, 2, 0, 0, 0, 0, 0, 0
+ ])
})
it('retargets an affine transformation correctly and sets new origin', () => {
const element = new Rect()
const runner = new Runner(() => 1).element(element)
- runner.transform({ translate: [ 10, 20 ], scale: 2, rotate: 90 })
+ runner.transform({ translate: [10, 20], scale: 2, rotate: 90 })
runner.step(50)
- runner.transform({ scale: 2, origin: [ 10, 10 ] })
+ runner.transform({ scale: 2, origin: [10, 10] })
// transform sets its to-target to the morpher in the initialisation step
// because it depends on the from-target. Declaritive animation run the init-step
// on every frame. That is why we step here to see the effect of our retargeting
runner.step(25)
- expect(runner._history.transform.morpher.to()).toEqual(
- [ 2, 2, 0, 0, 0, 0, 10, 10 ]
- )
+ expect(runner._history.transform.morpher.to()).toEqual([
+ 2, 2, 0, 0, 0, 0, 10, 10
+ ])
})
it('steps multiple relative animations correctly', () => {
expect(runner1._queue.length).toBe(0)
// The origin is transformed with every
- expect(element.matrix()).toEqual(
- new Matrix().scale(1.5).rotate(22.5)
- )
+ expect(element.matrix()).toEqual(new Matrix().scale(1.5).rotate(22.5))
})
it('correctly animates matrices directly', () => {
it('correctly animates matrices affine', () => {
const element = new Rect()
const runner = new Runner(100).ease('-').element(element)
- runner.transform(Object.assign({ affine: true }, new Matrix({ rotate: 90 })))
+ runner.transform(
+ Object.assign({ affine: true }, new Matrix({ rotate: 90 }))
+ )
runner.step(50)
// transform sets an immediate callback to apply all merged transforms
// when every runner had the chance to add its bit of transforms
jasmine.RequestAnimationFrame.tick(1)
// The origin is transformed with every
- expect(element.matrix()).toEqual(
- new Matrix({ rotate: 45 })
- )
+ expect(element.matrix()).toEqual(new Matrix({ rotate: 45 }))
})
it('correctly animates matrices affine by passing third parameter', () => {
jasmine.RequestAnimationFrame.tick(1)
// The origin is transformed with every
- expect(element.matrix()).toEqual(
- new Matrix({ rotate: 45 })
- )
+ expect(element.matrix()).toEqual(new Matrix({ rotate: 45 }))
})
it('correctly animates a declarative relative rotation', () => {
runner._queueNumberDelta('x', 10)
runner.step(50)
expect(runner._history.x.morpher.type()).toEqual(SVGNumber)
- expect(runner._history.x.morpher.from()).toEqual([ 10, '' ])
- expect(runner._history.x.morpher.to()).toEqual([ 20, '' ])
+ expect(runner._history.x.morpher.from()).toEqual([10, ''])
+ expect(runner._history.x.morpher.to()).toEqual([20, ''])
expect(element.x()).toBe(15)
})
runner.step(25)
runner._queueNumberDelta('x', 20)
- expect(runner._history.x.morpher.to()).toEqual([ 30, '' ])
+ expect(runner._history.x.morpher.to()).toEqual([30, ''])
runner.step(25)
expect(element.x()).toBe(20)
runner._queueObject('x', new SVGNumber(20))
runner.step(50)
expect(runner._history.x.morpher.type()).toEqual(SVGNumber)
- expect(runner._history.x.morpher.from()).toEqual([ 10, '' ])
- expect(runner._history.x.morpher.to()).toEqual([ 20, '' ])
+ expect(runner._history.x.morpher.from()).toEqual([10, ''])
+ expect(runner._history.x.morpher.to()).toEqual([20, ''])
expect(element.x()).toBe(15)
})
describe('plot()', () => {
it('queues a morphable array', () => {
- const element = new Polygon().plot([ 10, 10, 20, 20 ])
+ const element = new Polygon().plot([10, 10, 20, 20])
const runner = new Runner(100).ease('-').element(element)
runner.plot(20, 20, 30, 30)
runner.step(50)
- expect(runner._history.plot.morpher.from()).toEqual([ 10, 10, 20, 20 ])
- expect(runner._history.plot.morpher.to()).toEqual([ 20, 20, 30, 30 ])
- expect(element.array()).toEqual(new PointArray([ 15, 15, 25, 25 ]))
+ expect(runner._history.plot.morpher.from()).toEqual([10, 10, 20, 20])
+ expect(runner._history.plot.morpher.to()).toEqual([20, 20, 30, 30])
+ expect(element.array()).toEqual(new PointArray([15, 15, 25, 25]))
})
it('retargets correctly', () => {
- const element = new Polygon().plot([ 10, 10, 20, 20 ])
+ const element = new Polygon().plot([10, 10, 20, 20])
const runner = new Runner(100).ease('-').element(element)
runner.plot(20, 20, 30, 30)
runner.step(25)
runner.plot(30, 30, 40, 40)
runner.step(25)
- expect(runner._history.plot.morpher.from()).toEqual([ 10, 10, 20, 20 ])
- expect(runner._history.plot.morpher.to()).toEqual([ 30, 30, 40, 40 ])
- expect(element.array()).toEqual(new PointArray([ 20, 20, 30, 30 ]))
+ expect(runner._history.plot.morpher.from()).toEqual([10, 10, 20, 20])
+ expect(runner._history.plot.morpher.to()).toEqual([30, 30, 40, 40])
+ expect(element.array()).toEqual(new PointArray([20, 20, 30, 30]))
})
})
const runner = new Runner()
const spy = spyOn(runner, '_queueObject')
runner.viewbox(10, 10, 100, 100)
- expect(spy).toHaveBeenCalledWith('viewbox', equal(new Box(10, 10, 100, 100)))
+ expect(spy).toHaveBeenCalledWith(
+ 'viewbox',
+ equal(new Box(10, 10, 100, 100))
+ )
})
})
describe('mergeWith()', () => {
it('merges the transformations of a runner with another and returns a FakeRunner', () => {
const fake = new FakeRunner()
- const runner = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner = new Runner().addTransform({ translate: [10, 20] })
const newRunner = fake.mergeWith(runner)
expect(newRunner).toEqual(any(FakeRunner))
- expect(newRunner.transforms).toEqual(new Matrix({ translate: [ 10, 20 ] }))
+ expect(newRunner.transforms).toEqual(
+ new Matrix({ translate: [10, 20] })
+ )
})
})
})
describe('merge()', () => {
it('merges all runners which are done', () => {
- const runner1 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner1 = new Runner().addTransform({ translate: [10, 20] })
const runner2 = new Runner().addTransform({ rotate: 45 })
- const runner3 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner3 = new Runner().addTransform({ translate: [10, 20] })
const arr = new RunnerArray()
arr.add(runner1).add(runner2).add(runner3)
runner1.done = true
arr.merge()
expect(arr.runners[0]).toEqual(any(FakeRunner))
expect(arr.runners[0].transforms).toEqual(
- new Matrix({ translate: [ 10, 20 ] })
- .rotate(45)
- .translate(10, 20)
+ new Matrix({ translate: [10, 20] }).rotate(45).translate(10, 20)
)
})
it('skips runners which are not done', () => {
- const runner1 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner1 = new Runner().addTransform({ translate: [10, 20] })
const runner2 = new Runner().addTransform({ rotate: 45 })
const runner3 = new Runner().addTransform({ rotate: 45 })
- const runner4 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner4 = new Runner().addTransform({ translate: [10, 20] })
const runner5 = new Runner().addTransform({ rotate: 45 })
const arr = new RunnerArray()
arr.add(runner1).add(runner2).add(runner3).add(runner4).add(runner5)
arr.merge()
expect(arr.runners[0]).toEqual(any(FakeRunner))
expect(arr.runners[0].transforms).toEqual(
- new Matrix({ translate: [ 10, 20 ] })
- .rotate(45)
+ new Matrix({ translate: [10, 20] }).rotate(45)
)
expect(arr.runners[2]).toEqual(any(FakeRunner))
expect(arr.runners[2].transforms).toEqual(
- new Matrix({ translate: [ 10, 20 ] })
- .rotate(45)
+ new Matrix({ translate: [10, 20] }).rotate(45)
)
expect(arr.runners[1]).toBe(runner3)
})
it('skips runners which have a timeline and are scheduled on that timeline', () => {
- const runner1 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner1 = new Runner().addTransform({ translate: [10, 20] })
const runner2 = new Runner().addTransform({ rotate: 45 })
const runner3 = new Runner().addTransform({ rotate: 45 })
- const runner4 = new Runner().addTransform({ translate: [ 10, 20 ] })
+ const runner4 = new Runner().addTransform({ translate: [10, 20] })
const runner5 = new Runner().addTransform({ rotate: 45 })
const arr = new RunnerArray()
arr.add(runner1).add(runner2).add(runner3).add(runner4).add(runner5)
arr.merge()
expect(arr.runners[0]).toEqual(any(FakeRunner))
expect(arr.runners[0].transforms).toEqual(
- new Matrix({ translate: [ 10, 20 ] })
- .rotate(45)
+ new Matrix({ translate: [10, 20] }).rotate(45)
)
expect(arr.runners[2]).toEqual(any(FakeRunner))
expect(arr.runners[2].transforms).toEqual(
- new Matrix({ translate: [ 10, 20 ] })
- .rotate(45)
+ new Matrix({ translate: [10, 20] }).rotate(45)
)
expect(arr.runners[1]).toBe(runner3)
arr.add(runner1).add(runner2).add(runner3).add(runner4).add(runner5)
arr.clearBefore(runner3.id)
expect(arr.length()).toBe(4)
- expect(arr.runners).toEqual([ any(FakeRunner), runner3, runner4, runner5 ])
+ expect(arr.runners).toEqual([
+ any(FakeRunner),
+ runner3,
+ runner4,
+ runner5
+ ])
})
})
})
/* globals describe, expect, it, beforeEach, afterEach, spyOn, container, jasmine */
-import { Timeline, SVG, Runner, Animator, Queue, Rect } from '../../../src/main.js'
+import {
+ Timeline,
+ SVG,
+ Runner,
+ Animator,
+ Queue,
+ Rect
+} from '../../../src/main.js'
import { getWindow } from '../../../src/utils/window.js'
const { createSpy, any } = jasmine
it('throws if when is not supported', () => {
const timeline = new Timeline().schedule(new Runner(1000), 1000)
const runner = new Runner(1000)
- expect(() => timeline.schedule(runner, 0, 'not supported')).toThrowError('Invalid value for the "when" parameter')
+ expect(() => timeline.schedule(runner, 0, 'not supported')).toThrowError(
+ 'Invalid value for the "when" parameter'
+ )
})
it('uses persist value of the runner of present', () => {
it('gets a runner by its id from the timeline', () => {
const timeline = new Timeline()
const runner = new Runner(1000)
- expect(timeline.schedule(runner).getRunnerInfoById(runner.id).runner).toBe(runner)
+ expect(
+ timeline.schedule(runner).getRunnerInfoById(runner.id).runner
+ ).toBe(runner)
})
it('returns null of runner not found', () => {
it('continues if there are still runners left from us when going back in time', () => {
const spy = createSpy()
- const timeline = new Timeline().on('finished', spy).time(1200).reverse(true)
+ const timeline = new Timeline()
+ .on('finished', spy)
+ .time(1200)
+ .reverse(true)
const runner = new Runner(1000)
spy.calls.reset()
timeline.schedule(runner, 0).play() // we have to play because its synchronous here
const url = 'https://svgjs.dev'
describe('A.js', () => {
-
describe('()', () => {
it('creates a new object of type A', () => {
expect(new A()).toEqual(any(A))
expect(link.parent()).toBe(null)
})
- it('removes also the link when link wasn\'t in document', () => {
+ it("removes also the link when link wasn't in document", () => {
const link = new A().to(url)
const rect = link.rect(100, 100)
})
})
})
-
})
const canvas = SVG().addTo(container)
const clip = canvas.clip()
const rect = canvas.rect(100, 100).clipWith(clip)
- expect(clip.targets()).toEqual([ rect ])
+ expect(clip.targets()).toEqual([rect])
})
})
const canvas = SVG()
const clip = canvas.clip()
expect(clip).toEqual(any(ClipPath))
- expect(canvas.defs().children()).toEqual([ clip ])
+ expect(canvas.defs().children()).toEqual([clip])
})
})
})
it('flattens the whole document when called on the root', () => {
canvas.flatten()
- expect(canvas.children()).toEqual([ rect1, rect2, circle1, circle2, line1, line2, circle3, rect3 ])
+ expect(canvas.children()).toEqual([
+ rect1,
+ rect2,
+ circle1,
+ circle2,
+ line1,
+ line2,
+ circle3,
+ rect3
+ ])
})
it('flattens a group and places all children into its parent when called on a group - 1', () => {
rect3
*/
- expect(canvas.children()).toEqual([ rect1, group1, group4 ])
- expect(group1.children()).toEqual([ rect2, circle1, circle2, line1, line2, circle3 ])
+ expect(canvas.children()).toEqual([rect1, group1, group4])
+ expect(group1.children()).toEqual([
+ rect2,
+ circle1,
+ circle2,
+ line1,
+ line2,
+ circle3
+ ])
})
it('flattens a group and places all children into its parent when called on a group - 2', () => {
rect3
*/
- expect(group2.children()).toEqual([ circle2, line1, line2, circle3 ])
+ expect(group2.children()).toEqual([circle2, line1, line2, circle3])
})
})
it('ungroups a group and inserts all children in the correct order in the parent parent of the group', () => {
group1.ungroup()
- expect(canvas.children()).toEqual([ rect1, rect2, circle1, group2, group4 ])
+ expect(canvas.children()).toEqual([rect1, rect2, circle1, group2, group4])
group4.ungroup()
- expect(canvas.children()).toEqual([ rect1, rect2, circle1, group2, rect3 ])
+ expect(canvas.children()).toEqual([rect1, rect2, circle1, group2, rect3])
})
it('ungroups a group into another group and appends the elements to the other group', () => {
group1.ungroup(group4)
- expect(group4.children()).toEqual([ rect3, rect2, circle1, group2 ])
+ expect(group4.children()).toEqual([rect3, rect2, circle1, group2])
})
it('ungroups a group into another group at the specified position', () => {
group2.ungroup(group1, 1)
- expect(group1.children()).toEqual([ rect2, circle2, group3, circle3, circle1 ])
+ expect(group1.children()).toEqual([
+ rect2,
+ circle2,
+ group3,
+ circle3,
+ circle1
+ ])
})
})
})
/* globals describe, expect, it, beforeEach, spyOn, jasmine, container */
-import { SVG, G, Rect, Svg, Dom, List, Fragment, Circle, Tspan, create } from '../../../src/main.js'
+import {
+ SVG,
+ G,
+ Rect,
+ Svg,
+ Dom,
+ List,
+ Fragment,
+ Circle,
+ Tspan,
+ create
+} from '../../../src/main.js'
import { getWindow } from '../../../src/utils/window.js'
import { svg, html } from '../../../src/modules/core/namespaces.js'
const { any, createSpy, objectContaining } = jasmine
describe('Dom.js', function () {
-
describe('()', () => {
it('creates a new object of type Dom', () => {
const rect = new Rect()
const rect = g.rect(100, 100)
const circle = g.circle(100, 100)
const children = g.children()
- expect(children).toEqual([ rect, circle ])
+ expect(children).toEqual([rect, circle])
expect(children).toEqual(any(List))
})
})
group.each(spy)
expect(spy.calls.all()).toEqual([
- objectContaining({ object: group2, args: [ 0, [ group2, circle ] ] }),
- objectContaining({ object: circle, args: [ 1, [ group2, circle ] ] })
+ objectContaining({ object: group2, args: [0, [group2, circle]] }),
+ objectContaining({ object: circle, args: [1, [group2, circle]] })
])
})
group.each(spy, true)
expect(spy.calls.all()).toEqual([
- objectContaining({ object: group2, args: [ 0, [ group2, circle ] ] }),
- objectContaining({ object: rect, args: [ 0, [ rect ] ] }),
- objectContaining({ object: circle, args: [ 1, [ group2, circle ] ] })
+ objectContaining({ object: group2, args: [0, [group2, circle]] }),
+ objectContaining({ object: rect, args: [0, [rect]] }),
+ objectContaining({ object: circle, args: [1, [group2, circle]] })
])
})
})
expect(g.has(rect)).toBe(true)
})
- it('returns false if the element hasn\'t the passed element as child', () => {
+ it("returns false if the element hasn't the passed element as child", () => {
const g = new G()
const rect = new Rect()
expect(g.has(rect)).toBe(false)
const rect = new Rect()
const ret = rect.putIn(g)
expect(ret).toEqual(any(G))
- expect(ret.children()).toEqual([ rect ])
+ expect(ret.children()).toEqual([rect])
})
it('works with a query selector', () => {
const rect = canvas.rect(100, 100)
const ret = rect.putIn('.test')
expect(ret).toBe(g)
- expect(g.children()).toEqual([ rect ])
+ expect(g.children()).toEqual([rect])
})
})
it('removes the element from the parent', () => {
const canvas = SVG().addTo(container)
const rect = canvas.rect(100, 100)
- expect(canvas.children()).toEqual([ rect ])
+ expect(canvas.children()).toEqual([rect])
rect.remove()
expect(canvas.children()).toEqual([])
})
it('also works when direct child of document-fragment', () => {
const fragment = new Fragment()
const rect = fragment.rect(100, 100)
- expect(fragment.children()).toEqual([ rect ])
+ expect(fragment.children()).toEqual([rect])
expect(rect.remove()).toBe(rect)
expect(fragment.children()).toEqual([])
})
const rect3 = g.rect(100, 100)
const circle = new Circle()
rect2.replace(circle)
- expect(g.children()).toEqual([ rect1, circle, rect3 ])
+ expect(g.children()).toEqual([rect1, circle, rect3])
})
it('also works without a parent', () => {
describe('round()', () => {
it('rounds all attributes whose values are numbers to two decimals by default', () => {
const rect = new Rect({ id: 'foo', x: 10.678, y: 3, width: 123.456 })
- expect(rect.round().attr()).toEqual({ id: 'foo', x: 10.68, y: 3, width: 123.46 })
+ expect(rect.round().attr()).toEqual({
+ id: 'foo',
+ x: 10.68,
+ y: 3,
+ width: 123.46
+ })
})
it('rounds all attributes whose values are numbers to the passed precision', () => {
const rect = new Rect({ id: 'foo', x: 10.678, y: 3, width: 123.456 })
- expect(rect.round(1).attr()).toEqual({ id: 'foo', x: 10.7, y: 3, width: 123.5 })
+ expect(rect.round(1).attr()).toEqual({
+ id: 'foo',
+ x: 10.7,
+ y: 3,
+ width: 123.5
+ })
})
it('rounds the given attributes whose values are numbers to the passed precision', () => {
const rect = new Rect({ id: 'foo', x: 10.678, y: 3, width: 123.456 })
- expect(rect.round(1, [ 'id', 'x' ]).attr()).toEqual({ id: 'foo', x: 10.7, y: 3, width: 123.456 })
+ expect(rect.round(1, ['id', 'x']).attr()).toEqual({
+ id: 'foo',
+ x: 10.7,
+ y: 3,
+ width: 123.456
+ })
})
})
})
})
- describe('writeDataToDom()', () => {
- // not really testable
- })
+ // describe('writeDataToDom()', () => {
+ // // not really testable
+ // })
describe('xml()', () => {
describe('as setter', () => {
it('imports a single element', () => {
const g = new G().xml('<rect />', undefined, svg)
- expect(g.children()).toEqual([ any(Rect) ])
+ expect(g.children()).toEqual([any(Rect)])
expect(g.children()[0].node.namespaceURI).toBe(svg)
})
it('imports multiple elements', () => {
const g = new G().xml('<rect /><circle />', undefined, svg)
- expect(g.children()).toEqual([ any(Rect), any(Circle) ])
+ expect(g.children()).toEqual([any(Rect), any(Circle)])
})
it('replaces the current element with the imported elements with outerHtml = true', () => {
const canvas = new Svg()
const g = canvas.group()
g.xml('<rect /><circle />', true, svg)
- expect(canvas.children()).toEqual([ any(Rect), any(Circle) ])
+ expect(canvas.children()).toEqual([any(Rect), any(Circle)])
})
it('returns the parent when outerHtml = true', () => {
const canvas = new Svg()
const g = canvas.group()
expect(g.xml('<rect /><circle />', true, svg)).toBe(canvas)
- expect(canvas.children()).toEqual([ any(Rect), any(Circle) ])
+ expect(canvas.children()).toEqual([any(Rect), any(Circle)])
})
it('works without a parent', () => {
})
it('returns the svg string of the element by default', () => {
- expect(rect.xml(), svg).toBe('<rect width="123.456" height="234.567"></rect>')
- expect(canvas.xml(), svg).toBe('<svg><g><rect width="123.456" height="234.567"></rect></g></svg>')
+ expect(rect.xml(), svg).toBe(
+ '<rect width="123.456" height="234.567"></rect>'
+ )
+ expect(canvas.xml(), svg).toBe(
+ '<svg><g><rect width="123.456" height="234.567"></rect></g></svg>'
+ )
})
it('returns the innerHtml when outerHtml = false', () => {
expect(rect.xml(false, svg)).toBe('')
- expect(canvas.xml(false, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>')
+ expect(canvas.xml(false, svg)).toBe(
+ '<g><rect width="123.456" height="234.567"></rect></g>'
+ )
})
it('runs a function on every exported node', () => {
- expect(rect.xml((el) => el.round(1))).toBe('<rect width="123.5" height="234.6"></rect>')
+ expect(rect.xml((el) => el.round(1))).toBe(
+ '<rect width="123.5" height="234.6"></rect>'
+ )
})
it('runs a function on every exported node and replaces node with returned node if return value is not falsy', () => {
- expect(rect.xml((el) => new Circle(), svg)).toBe('<circle></circle>')
- expect(canvas.xml((el) => new G(), svg)).toBe('<g></g>') // outer <svg> was replaced by an empty g
- expect(canvas.xml((el) => {
- if (el instanceof Rect) return new Circle()
- if (el instanceof Svg) el.removeNamespace()
- }, svg)).toBe('<svg><g><circle></circle></g></svg>')
+ expect(rect.xml(() => new Circle(), svg)).toBe('<circle></circle>')
+ expect(canvas.xml(() => new G(), svg)).toBe('<g></g>') // outer <svg> was replaced by an empty g
+ expect(
+ canvas.xml((el) => {
+ if (el instanceof Rect) return new Circle()
+ if (el instanceof Svg) el.removeNamespace()
+ }, svg)
+ ).toBe('<svg><g><circle></circle></g></svg>')
})
it('runs a function on every exported node and removes node if return value is false', () => {
expect(group.xml(() => false, svg)).toBe('')
expect(canvas.xml(() => false, svg)).toBe('')
- expect(canvas.xml((el) => {
- if (el instanceof Svg) {
- el.removeNamespace()
- } else {
- return false
- }
- }, svg)).toBe('<svg></svg>')
+ expect(
+ canvas.xml((el) => {
+ if (el instanceof Svg) {
+ el.removeNamespace()
+ } else {
+ return false
+ }
+ }, svg)
+ ).toBe('<svg></svg>')
})
it('runs a function on every inner node and exports it when outerHtml = false', () => {
expect(canvas.xml(() => false, false, svg)).toBe('')
- expect(canvas.xml(() => undefined, false, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>')
+ expect(canvas.xml(() => undefined, false, svg)).toBe(
+ '<g><rect width="123.456" height="234.567"></rect></g>'
+ )
})
-
})
-
})
})
const group3 = group2.group()
const rect = group3.rect(100, 100)
- expect(rect.parents('.test')).toEqual([ group3, group2, group1 ])
- expect(rect.parents(group2)).toEqual([ group3, group2 ])
+ expect(rect.parents('.test')).toEqual([group3, group2, group1])
+ expect(rect.parents(group2)).toEqual([group3, group2])
expect(rect.parents(group1).length).toBe(3)
- expect(rect.parents()).toEqual([ group3, group2, group1, canvas ])
+ expect(rect.parents()).toEqual([group3, group2, group1, canvas])
})
it('returns array of parents until the closest matching parent', () => {
const group3 = group2.group().addClass('foo')
const rect = group3.rect(100, 100)
- expect(rect.parents('.test')).toEqual([ group3, group2 ])
- expect(rect.parents('.foo')).toEqual([ group3 ])
- expect(rect.parents('.test:not(.foo)')).toEqual([ group3, group2, group1 ])
+ expect(rect.parents('.test')).toEqual([group3, group2])
+ expect(rect.parents('.foo')).toEqual([group3])
+ expect(rect.parents('.test:not(.foo)')).toEqual([group3, group2, group1])
})
it('returns null if the passed element is not an ancestor', () => {
const group3 = group2.group()
const rect = group3.rect(100, 100)
-
expect(rect.parents('.does-not-exist')).toEqual(null)
expect(rect.parents('.test')).toEqual(null)
expect(rect.parents(groupA)).toEqual(null)
it('writes data from the dom property into the dom', () => {
element.dom = { foo: 'bar' }
element.writeDataToDom()
- expect(element.node.getAttribute('svgjs:data')).toBe(JSON.stringify({ foo: 'bar' }))
+ expect(element.node.getAttribute('svgjs:data')).toBe(
+ JSON.stringify({ foo: 'bar' })
+ )
})
it('recursively calls writeDataToDom on all children', () => {
const { any } = jasmine
describe('ForeignObject.js', () => {
-
describe('()', () => {
it('creates a new object of type ForeignObject', () => {
expect(new ForeignObject()).toEqual(any(ForeignObject))
const { any } = jasmine
describe('Fragment.js', () => {
-
describe('()', () => {
it('creates a new object of type Fragment', () => {
expect(new Fragment()).toEqual(any(Fragment))
const frag = new Fragment()
const rect = frag.rect(100, 100)
- expect(frag.children()).toEqual([ rect ])
+ expect(frag.children()).toEqual([rect])
})
})
group.rect(123.456, 234.567)
const spy = spyOn(Dom.prototype, 'xml').and.callThrough()
- expect(frag.xml(false, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>')
+ expect(frag.xml(false, svg)).toBe(
+ '<g><rect width="123.456" height="234.567"></rect></g>'
+ )
expect(spy).toHaveBeenCalledWith(false, svg)
})
group.rect(123.456, 234.567)
const spy = spyOn(Dom.prototype, 'xml').and.callThrough()
- expect(frag.xml(true, svg)).toBe('<g><rect width="123.456" height="234.567"></rect></g>')
+ expect(frag.xml(true, svg)).toBe(
+ '<g><rect width="123.456" height="234.567"></rect></g>'
+ )
expect(spy).toHaveBeenCalledWith(false, svg)
})
})
-
})
})
const { any } = jasmine
describe('G.js', () => {
-
describe('()', () => {
it('creates a new object of type G', () => {
expect(new G()).toEqual(any(G))
const canvas = SVG().addTo(container)
const gradient = canvas.gradient('linear')
const rect = canvas.rect(100, 100).fill(gradient)
- expect(gradient.targets()).toEqual([ rect ])
+ expect(gradient.targets()).toEqual([rect])
})
})
const spy = createSpy('gradient')
gradient.update(spy)
expect(spy.calls.all()).toEqual([
- objectContaining({ object: gradient, args: [ gradient ] })
+ objectContaining({ object: gradient, args: [gradient] })
])
})
})
const gradient = defs.gradient('linear', spy)
expect(gradient).toEqual(any(Gradient))
expect(gradient.type).toBe('linearGradient')
- expect(defs.children()).toEqual([ gradient ])
+ expect(defs.children()).toEqual([gradient])
expect(spy).toHaveBeenCalled()
})
})
const url = 'spec/fixtures/pixel.png'
describe('Image.js', () => {
-
describe('()', () => {
it('creates a new object of type Image', () => {
expect(new Image()).toEqual(any(Image))
const spy = createSpy('image', (e) => {
expect(e.target.complete).toBe(true)
expect(spy.calls.all()).toEqual([
- objectContaining({ object: image, args: [ any(getWindow().Event) ] })
+ objectContaining({ object: image, args: [any(getWindow().Event)] })
])
done()
}).and.callThrough()
})
it('should not change with and height when size already set', (done) => {
- const image = new Image().load(url, () => {
- expect(image.attr('height')).toBe(100)
- expect(image.attr('width')).toBe(100)
- done()
- }).size(100, 100)
+ const image = new Image()
+ .load(url, () => {
+ expect(image.attr('height')).toBe(100)
+ expect(image.attr('width')).toBe(100)
+ done()
+ })
+ .size(100, 100)
})
it('changes size of pattern to image size if parent is pattern and size is 0', (done) => {
const pattern = new Pattern().size(0, 0)
- new Image().load(url, () => {
- expect(pattern.attr('height')).toBe(100)
- expect(pattern.attr('width')).toBe(100)
- done()
- }).size(100, 100).addTo(pattern)
+ new Image()
+ .load(url, () => {
+ expect(pattern.attr('height')).toBe(100)
+ expect(pattern.attr('width')).toBe(100)
+ done()
+ })
+ .size(100, 100)
+ .addTo(pattern)
})
it('does not change size of pattern if pattern has a size set', (done) => {
const pattern = new Pattern().size(50, 50)
- new Image().load(url, () => {
- expect(pattern.attr('height')).toBe(50)
- expect(pattern.attr('width')).toBe(50)
- done()
- }).size(100, 100).addTo(pattern)
+ new Image()
+ .load(url, () => {
+ expect(pattern.attr('height')).toBe(50)
+ expect(pattern.attr('width')).toBe(50)
+ done()
+ })
+ .size(100, 100)
+ .addTo(pattern)
})
})
const canvas = SVG()
const image = canvas.image(url)
expect(image).toBe(image)
- expect(canvas.children()).toEqual([ image ])
+ expect(canvas.children()).toEqual([image])
})
})
})
const canvas = SVG()
const image = new Image()
canvas.rect(100, 100).attr('something', image)
- expect(canvas.defs().children()).toEqual([ any(Pattern) ])
+ expect(canvas.defs().children()).toEqual([any(Pattern)])
expect(canvas.defs().findOne('image')).toBe(image)
})
it('creates an image from image path in defs with pattern when attr is fill', () => {
const canvas = SVG()
canvas.rect(100, 100).attr('fill', url)
- expect(canvas.defs().children()).toEqual([ any(Pattern) ])
+ expect(canvas.defs().children()).toEqual([any(Pattern)])
expect(canvas.defs().findOne('image').attr('href')).toBe(url)
})
it('creates an image from image path in defs with pattern when attr is stroke', () => {
const canvas = SVG()
canvas.rect(100, 100).attr('stroke', url)
- expect(canvas.defs().children()).toEqual([ any(Pattern) ])
+ expect(canvas.defs().children()).toEqual([any(Pattern)])
expect(canvas.defs().findOne('image').attr('href')).toBe(url)
})
})
it('returns a PointArray containing the points of the line', () => {
const array = line.plot(1, 2, 3, 4).array()
expect(array).toEqual(any(PointArray))
- expect(array).toEqual([ [ 1, 2 ], [ 3, 4 ] ])
+ expect(array).toEqual([
+ [1, 2],
+ [3, 4]
+ ])
})
})
const canvas = SVG().addTo(container)
const line = canvas.line(1, 2, 3, 4)
line.move(50, 50)
- expect(line.bbox()).toEqual(objectContaining({
- x: 50, y: 50, width: 2, height: 2
- }))
+ expect(line.bbox()).toEqual(
+ objectContaining({
+ x: 50,
+ y: 50,
+ width: 2,
+ height: 2
+ })
+ )
})
})
it('calls attr with line attributes when array given', () => {
const spy = spyOn(line, 'attr')
- line.plot([ 1, 2, 3, 4 ])
+ line.plot([1, 2, 3, 4])
expect(spy).toHaveBeenCalledWith({ x1: 1, y1: 2, x2: 3, y2: 4 })
})
it('calls attr with line attributes when multi array given', () => {
const spy = spyOn(line, 'attr')
- line.plot([ [ 1, 2 ], [ 3, 4 ] ])
+ line.plot([
+ [1, 2],
+ [3, 4]
+ ])
expect(spy).toHaveBeenCalledWith({ x1: 1, y1: 2, x2: 3, y2: 4 })
})
it('calls attr with line attributes when PointArray given', () => {
const spy = spyOn(line, 'attr')
- line.plot(new PointArray([ [ 1, 2 ], [ 3, 4 ] ]))
+ line.plot(
+ new PointArray([
+ [1, 2],
+ [3, 4]
+ ])
+ )
expect(spy).toHaveBeenCalledWith({ x1: 1, y1: 2, x2: 3, y2: 4 })
})
})
const canvas = SVG().addTo(container)
const line = canvas.line(1, 2, 3, 4)
line.size(50, 50)
- expect(line.bbox()).toEqual(objectContaining({
- width: 50, height: 50, x: 1, y: 2
- }))
+ expect(line.bbox()).toEqual(
+ objectContaining({
+ width: 50,
+ height: 50,
+ x: 1,
+ y: 2
+ })
+ )
})
it('changes height proportionally', () => {
const canvas = SVG().addTo(container)
const line = canvas.line(1, 2, 3, 4)
line.size(50, null)
- expect(line.bbox()).toEqual(objectContaining({
- width: 50, height: 50, x: 1, y: 2
- }))
+ expect(line.bbox()).toEqual(
+ objectContaining({
+ width: 50,
+ height: 50,
+ x: 1,
+ y: 2
+ })
+ )
})
it('changes width proportionally', () => {
const canvas = SVG().addTo(container)
const line = canvas.line(1, 2, 3, 4)
line.size(null, 50)
- expect(line.bbox()).toEqual(objectContaining({
- width: 50, height: 50, x: 1, y: 2
- }))
+ expect(line.bbox()).toEqual(
+ objectContaining({
+ width: 50,
+ height: 50,
+ x: 1,
+ y: 2
+ })
+ )
})
})
it('creates a line with given points', () => {
const group = new G()
const line = group.line(1, 2, 3, 4)
- expect(line.array()).toEqual([ [ 1, 2 ], [ 3, 4 ] ])
+ expect(line.array()).toEqual([
+ [1, 2],
+ [3, 4]
+ ])
expect(line).toEqual(any(Line))
})
it('defaults to zero line', () => {
const group = new G()
const line = group.line()
- expect(line.array()).toEqual([ [ 0, 0 ], [ 0, 0 ] ])
+ expect(line.array()).toEqual([
+ [0, 0],
+ [0, 0]
+ ])
expect(line).toEqual(any(Line))
})
})
const { any } = jasmine
describe('Marker.js', function () {
-
describe('()', () => {
it('creates a new object of type Marker', () => {
expect(new Marker()).toEqual(any(Marker))
expect(marker.attr('viewBox')).toBe('0 0 10 12')
expect(marker.attr('orient')).toBe('auto')
expect(marker).toEqual(any(Marker))
- expect(defs.children()).toEqual([ marker ])
+ expect(defs.children()).toEqual([marker])
})
})
})
beforeEach(() => {
// because we use `reference` here we need to put it into the live dom
canvas = new SVG().addTo(container)
- path = canvas.path('M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100')
+ path = canvas.path(
+ 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
+ )
})
it('creates an instance of Marker', () => {
expect(path.node.getAttribute('marker-mid')).toBe(marker.toString())
})
})
-
})
-
})
const { any } = jasmine
describe('Mask.js', () => {
-
describe('()', () => {
it('creates a new object of type Mask', () => {
expect(new Mask()).toEqual(any(Mask))
const canvas = SVG().addTo(container)
const mask = canvas.mask()
const rect = canvas.rect(100, 100).maskWith(mask)
- expect(mask.targets()).toEqual([ rect ])
+ expect(mask.targets()).toEqual([rect])
})
})
const canvas = SVG()
const mask = canvas.mask()
expect(mask).toEqual(any(Mask))
- expect(canvas.defs().children()).toEqual([ mask ])
+ expect(canvas.defs().children()).toEqual([mask])
})
})
})
it('returns the underlying PathArray', () => {
const array = path.plot('M1 2 3 4').array()
expect(array).toEqual(any(PathArray))
- expect(array).toEqual([ [ 'M', 1, 2 ], [ 'L', 3, 4 ] ])
+ expect(array).toEqual([
+ ['M', 1, 2],
+ ['L', 3, 4]
+ ])
})
})
const canvas = SVG().addTo(container)
const path = canvas.path('M0 0 50, 50')
path.move(50, 50)
- expect(path.bbox()).toEqual(objectContaining({
- x: 50, y: 50, width: 50, height: 50
- }))
+ expect(path.bbox()).toEqual(
+ objectContaining({
+ x: 50,
+ y: 50,
+ width: 50,
+ height: 50
+ })
+ )
})
})
it('works with flat array', () => {
const spy = spyOn(path, 'attr')
- path.plot([ 'M', 0, 0, 'L', 50, 50 ])
- expect(spy).toHaveBeenCalledWith('d', [ [ 'M', 0, 0 ], [ 'L', 50, 50 ] ])
+ path.plot(['M', 0, 0, 'L', 50, 50])
+ expect(spy).toHaveBeenCalledWith('d', [
+ ['M', 0, 0],
+ ['L', 50, 50]
+ ])
})
it('works with multi array', () => {
const spy = spyOn(path, 'attr')
- path.plot([ [ 'M', 0, 0 ], [ 'L', 50, 50 ] ])
- expect(spy).toHaveBeenCalledWith('d', [ [ 'M', 0, 0 ], [ 'L', 50, 50 ] ])
+ path.plot([
+ ['M', 0, 0],
+ ['L', 50, 50]
+ ])
+ expect(spy).toHaveBeenCalledWith('d', [
+ ['M', 0, 0],
+ ['L', 50, 50]
+ ])
})
it('works with PathArray', () => {
const spy = spyOn(path, 'attr')
- path.plot(new PathArray([ [ 'M', 0, 0 ], [ 'L', 50, 50 ] ]))
- expect(spy).toHaveBeenCalledWith('d', [ [ 'M', 0, 0 ], [ 'L', 50, 50 ] ])
+ path.plot(
+ new PathArray([
+ ['M', 0, 0],
+ ['L', 50, 50]
+ ])
+ )
+ expect(spy).toHaveBeenCalledWith('d', [
+ ['M', 0, 0],
+ ['L', 50, 50]
+ ])
})
})
const canvas = SVG().addTo(container)
const path = canvas.path('M0 0 50, 50')
path.size(100, 100)
- expect(path.bbox()).toEqual(objectContaining({
- width: 100, height: 100, x: 0, y: 0
- }))
+ expect(path.bbox()).toEqual(
+ objectContaining({
+ width: 100,
+ height: 100,
+ x: 0,
+ y: 0
+ })
+ )
})
it('changes height proportionally', () => {
const canvas = SVG().addTo(container)
const path = canvas.path('M0 0 50, 50')
path.size(100, null)
- expect(path.bbox()).toEqual(objectContaining({
- width: 100, height: 100, x: 0, y: 0
- }))
+ expect(path.bbox()).toEqual(
+ objectContaining({
+ width: 100,
+ height: 100,
+ x: 0,
+ y: 0
+ })
+ )
})
it('changes width proportionally', () => {
const canvas = SVG().addTo(container)
const path = canvas.path('M0 0 50, 50')
path.size(null, 100)
- expect(path.bbox()).toEqual(objectContaining({
- width: 100, height: 100, x: 0, y: 0
- }))
+ expect(path.bbox()).toEqual(
+ objectContaining({
+ width: 100,
+ height: 100,
+ x: 0,
+ y: 0
+ })
+ )
})
})
const canvas = SVG().addTo(container)
const pattern = canvas.pattern()
const rect = canvas.rect(100, 100).fill(pattern)
- expect(pattern.targets()).toEqual([ rect ])
+ expect(pattern.targets()).toEqual([rect])
})
})
const spy = createSpy('pattern')
pattern.update(spy)
expect(spy.calls.all()).toEqual([
- objectContaining({ object: pattern, args: [ pattern ] })
+ objectContaining({ object: pattern, args: [pattern] })
])
})
})
const spy = createSpy('pattern')
const pattern = defs.pattern(100, 100, spy)
expect(pattern).toEqual(any(Pattern))
- expect(defs.children()).toEqual([ pattern ])
+ expect(defs.children()).toEqual([pattern])
expect(spy).toHaveBeenCalled()
- expect(pattern.attr([ 'x', 'y', 'width', 'height' ])).toEqual({ x: 0, y: 0, width: 100, height: 100 })
+ expect(pattern.attr(['x', 'y', 'width', 'height'])).toEqual({
+ x: 0,
+ y: 0,
+ width: 100,
+ height: 100
+ })
})
})
})
describe('polygon()', () => {
it('creates a polygon with given points', () => {
const group = new G()
- const polygon = group.polygon([ 1, 2, 3, 4 ])
- expect(polygon.array()).toEqual([ [ 1, 2 ], [ 3, 4 ] ])
+ const polygon = group.polygon([1, 2, 3, 4])
+ expect(polygon.array()).toEqual([
+ [1, 2],
+ [3, 4]
+ ])
expect(polygon).toEqual(any(Polygon))
})
})
it('creates a polygon with one point by default', () => {
const group = new G()
const polygon = group.polygon()
- expect(polygon.array()).toEqual([ [ 0, 0 ] ])
+ expect(polygon.array()).toEqual([[0, 0]])
expect(polygon).toEqual(any(Polygon))
})
})
describe('polyline()', () => {
it('creates a polyline with given points', () => {
const group = new G()
- const polyline = group.polyline([ 1, 2, 3, 4 ])
- expect(polyline.array()).toEqual([ [ 1, 2 ], [ 3, 4 ] ])
+ const polyline = group.polyline([1, 2, 3, 4])
+ expect(polyline.array()).toEqual([
+ [1, 2],
+ [3, 4]
+ ])
expect(polyline).toEqual(any(Polyline))
})
it('creates a polyline with one point by default', () => {
const group = new G()
const polyline = group.polyline()
- expect(polyline.array()).toEqual([ [ 0, 0 ] ])
+ expect(polyline.array()).toEqual([[0, 0]])
expect(polyline).toEqual(any(Polyline))
})
})
it('creates a rect with given size', () => {
const group = new G()
const rect = group.rect(100, 100)
- expect(rect.attr([ 'width', 'height' ])).toEqual({ width: 100, height: 100 })
+ expect(rect.attr(['width', 'height'])).toEqual({
+ width: 100,
+ height: 100
+ })
expect(rect).toEqual(any(Rect))
})
})
it('creates stop in the gradient with object given', () => {
const gradient = new Gradient('linear')
- const stop = gradient.stop({ offset: 0.1, color: '#ffffff', opacity: 0.5 })
+ const stop = gradient.stop({
+ offset: 0.1,
+ color: '#ffffff',
+ opacity: 0.5
+ })
expect(stop.attr('offset')).toBe(0.1)
expect(stop.attr('stop-color')).toBe('#ffffff')
expect(stop.attr('stop-opacity')).toBe(0.5)
it('adds a font-face rule to load a custom font and returns itself', () => {
const style = new Style()
expect(style.font('fontName', 'url')).toBe(style)
- expect(style.node.textContent).toBe('@font-face{font-family:fontName;src:url;}')
+ expect(style.node.textContent).toBe(
+ '@font-face{font-family:fontName;src:url;}'
+ )
})
it('adds extra parameters if wanted', () => {
const style = new Style()
style.font('fontName', 'url', { foo: 'bar' })
- expect(style.node.textContent).toBe('@font-face{font-family:fontName;src:url;foo:bar;}')
+ expect(style.node.textContent).toBe(
+ '@font-face{font-family:fontName;src:url;foo:bar;}'
+ )
})
})
const g = new G()
const style = g.fontface('fontName', 'url', { foo: 'bar' })
expect(style).toEqual(any(Style))
- expect(style.node.textContent).toBe('@font-face{font-family:fontName;src:url;foo:bar;}')
+ expect(style.node.textContent).toBe(
+ '@font-face{font-family:fontName;src:url;foo:bar;}'
+ )
})
})
})
/* globals describe, expect, it, jasmine, container */
import { Svg, SVG, Defs } from '../../../src/main.js'
-import { svg as ns, xlink, svgjs } from '../../../src/modules/core/namespaces.js'
+import {
+ svg as ns,
+ xlink,
+ svgjs
+} from '../../../src/modules/core/namespaces.js'
import { getWindow } from '../../../src/utils/window.js'
const { any } = jasmine
describe('Svg.js', () => {
-
describe('()', () => {
it('creates a new object of type Svg', () => {
expect(new Svg()).toEqual(any(Svg))
const g = new G()
const symbol = g.symbol()
expect(symbol).toEqual(any(Symbol))
- expect(g.children()).toEqual([ symbol ])
+ expect(g.children()).toEqual([symbol])
})
})
})
/* globals describe, expect, it, spyOn jasmine, container */
-import { Text, Number as SVGNumber, SVG, G, Path, TextPath } from '../../../src/main.js'
+import {
+ Text,
+ Number as SVGNumber,
+ SVG,
+ G,
+ Path,
+ TextPath
+} from '../../../src/main.js'
const { any } = jasmine
describe('TextPath.js', () => {
var canvas, text, path
var txt = 'We go up, then we go down, then up again'
- var data = 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
+ var data =
+ 'M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100'
beforeEach(() => {
canvas = new SVG().addTo(container)
describe('targets', () => {
it('returns all elements referencing this path with href', () => {
const textPath = text.path(path)
- expect(path.targets()).toEqual([ textPath ])
+ expect(path.targets()).toEqual([textPath])
})
})
})
-
})
text.tspan('Second Line').newLine()
const third = text.tspan('Third Line').newLine()
- const fontSize = getWindow().getComputedStyle(third.node).getPropertyValue('font-size')
+ const fontSize = getWindow()
+ .getComputedStyle(third.node)
+ .getPropertyValue('font-size')
const dy = 2 * new SVGNumber(fontSize)
expect(third.dy()).toBe(dy)
})
-
})
describe('Tspan', () => {
const { objectContaining } = jasmine
describe('attr.js', () => {
-
describe('attr()', () => {
let element
'fill-opacity': 0.5
})
- const ret = element.attr([ 'x', 'fill-opacity' ])
+ const ret = element.attr(['x', 'fill-opacity'])
expect(ret).toEqual({ x: 1, 'fill-opacity': 0.5 })
})
it('correctly creates SVG.Array if array given', () => {
- element.attr('something', [ 2, 3, 4 ])
+ element.attr('something', [2, 3, 4])
expect(element.attr('something')).toBe('2 3 4')
})
element.attr('name', 'Bob')
}
- expect(throwingFn).toThrowError('This hook should only be executed in one test')
+ expect(throwingFn).toThrowError(
+ 'This hook should only be executed in one test'
+ )
})
})
-
})
expect(element.height()).toBe(100)
})
})
-
})
const { any, objectContaining } = jasmine
describe('containerGeometry.js', () => {
-
describe('dmove()', () => {
it('moves the bbox of the group by a certain amount (1)', () => {
const canvas = SVG().addTo(container)
g.dmove(10, 10)
const box = g.bbox()
- expect(box).toEqual(objectContaining({
- x: 20, y: 30, width: box.width, height: box.height
- }))
+ expect(box).toEqual(
+ objectContaining({
+ x: 20,
+ y: 30,
+ width: box.width,
+ height: box.height
+ })
+ )
})
it('moves the bbox of the group by a certain amount (2)', () => {
expect(fn).not.toThrowError()
const box = g.bbox()
- expect(box).toEqual(objectContaining({
- x: 20, y: 30, width: box.width, height: box.height
- }))
+ expect(box).toEqual(
+ objectContaining({
+ x: 20,
+ y: 30,
+ width: box.width,
+ height: box.height
+ })
+ )
})
})
expect(newBox.w).toBeCloseTo(100, 4)
expect(newBox.h).toBeCloseTo(100, 4)
})
-
})
describe('width()', () => {
/* globals describe, expect, it, spyOn, jasmine */
-import { windowEvents, getEvents, getEventTarget, clearEvents, dispatch, on, off } from '../../../../src/modules/core/event.js'
+import {
+ windowEvents,
+ getEvents,
+ getEventTarget,
+ clearEvents,
+ dispatch,
+ on,
+ off
+} from '../../../../src/modules/core/event.js'
import { getWindow } from '../../../../src/utils/window.js'
import { EventTarget, SVG } from '../../../../src/main.js'
it('binds to multiple events passed as array', () => {
const eventTarget = new EventTarget()
const spy = createSpy('spy')
- on(eventTarget, [ 'event1', 'event2', 'event3' ], spy)
+ on(eventTarget, ['event1', 'event2', 'event3'], spy)
dispatch(eventTarget, 'event1')
dispatch(eventTarget, 'event2')
dispatch(eventTarget, 'event3')
it('unbinds multiple events with space or comma separated string', () => {
const eventTarget = new EventTarget()
const spy = createSpy('spy')
- on(eventTarget, [ 'event1', 'event2', 'event3' ], spy)
+ on(eventTarget, ['event1', 'event2', 'event3'], spy)
dispatch(eventTarget, 'event1')
dispatch(eventTarget, 'event2')
dispatch(eventTarget, 'event3')
- off(eventTarget, [ 'event1', 'event2', 'event3' ], spy)
+ off(eventTarget, ['event1', 'event2', 'event3'], spy)
dispatch(eventTarget, 'event1')
dispatch(eventTarget, 'event2')
dispatch(eventTarget, 'event3')
it('unbinds all events including namespaced ones when only event is passed', () => {
const eventTarget = new EventTarget()
const spy = createSpy('spy')
- on(eventTarget, [ 'event1.ns1', 'event2.ns2', 'event3' ], spy)
+ on(eventTarget, ['event1.ns1', 'event2.ns2', 'event3'], spy)
dispatch(eventTarget, 'event1')
dispatch(eventTarget, 'event2')
dispatch(eventTarget, 'event3')
- off(eventTarget, [ 'event1', 'event2', 'event3' ])
+ off(eventTarget, ['event1', 'event2', 'event3'])
dispatch(eventTarget, 'event1')
dispatch(eventTarget, 'event2')
dispatch(eventTarget, 'event3')
it('dispatches a custom event on the EventTarget by calling dispatchEvent()', () => {
const eventTarget = new EventTarget()
const spy = spyOn(eventTarget, 'dispatchEvent')
- const event = dispatch(eventTarget, 'event', { some: 'data' }, { cancelable: false })
+ const event = dispatch(
+ eventTarget,
+ 'event',
+ { some: 'data' },
+ { cancelable: false }
+ )
expect(event).toEqual(any(getWindow().CustomEvent))
expect(spy).toHaveBeenCalledWith(event)
expect(event.detail).toEqual({ some: 'data' })
import { Gradient } from '../../../../src/main.js'
describe('gradiented.js', () => {
-
describe('from()', () => {
it('sets fx and fy for radial gradients and returns itself', () => {
const gradient = new Gradient('radial')
expect(gradient.attr('y2')).toBe(20)
})
})
-
})
beforeEach(() => {
canvas = SVG().addTo(container)
const line = canvas.line(1, 2, 3, 4)
- const polygon = canvas.polygon([ 1, 2, 3, 4 ])
- const polyline = canvas.polyline([ 1, 2, 3, 4 ])
+ const polygon = canvas.polygon([1, 2, 3, 4])
+ const polyline = canvas.polyline([1, 2, 3, 4])
lines = { line, polygon, polyline }
})
-
- ;[ 'line', 'polygon', 'polyline' ].forEach((l) => {
+ ;['line', 'polygon', 'polyline'].forEach((l) => {
describe('for ' + l, () => {
describe('x()', () => {
it('sets the x value of the ' + l + 'and returns itself', () => {
it('returns the underlying PointArray', () => {
const array = poly.plot('1 2 3 4').array()
expect(array).toEqual(any(PointArray))
- expect(array).toEqual([ [ 1, 2 ], [ 3, 4 ] ])
+ expect(array).toEqual([
+ [1, 2],
+ [3, 4]
+ ])
})
})
const canvas = SVG().addTo(container)
const poly = canvas.polygon('0 0 50 50')
poly.move(50, 50)
- expect(poly.bbox()).toEqual(objectContaining({
- x: 50, y: 50, width: 50, height: 50
- }))
+ expect(poly.bbox()).toEqual(
+ objectContaining({
+ x: 50,
+ y: 50,
+ width: 50,
+ height: 50
+ })
+ )
})
})
it('works with flat array', () => {
const spy = spyOn(poly, 'attr')
- poly.plot([ 1, 2, 3, 4 ])
- expect(spy).toHaveBeenCalledWith('points', [ [ 1, 2 ], [ 3, 4 ] ])
+ poly.plot([1, 2, 3, 4])
+ expect(spy).toHaveBeenCalledWith('points', [
+ [1, 2],
+ [3, 4]
+ ])
})
it('works with multi array', () => {
const spy = spyOn(poly, 'attr')
- poly.plot([ [ 1, 2 ], [ 3, 4 ] ])
- expect(spy).toHaveBeenCalledWith('points', [ [ 1, 2 ], [ 3, 4 ] ])
+ poly.plot([
+ [1, 2],
+ [3, 4]
+ ])
+ expect(spy).toHaveBeenCalledWith('points', [
+ [1, 2],
+ [3, 4]
+ ])
})
it('works with PointArray', () => {
const spy = spyOn(poly, 'attr')
- poly.plot(new PointArray([ [ 1, 2 ], [ 3, 4 ] ]))
- expect(spy).toHaveBeenCalledWith('points', [ [ 1, 2 ], [ 3, 4 ] ])
+ poly.plot(
+ new PointArray([
+ [1, 2],
+ [3, 4]
+ ])
+ )
+ expect(spy).toHaveBeenCalledWith('points', [
+ [1, 2],
+ [3, 4]
+ ])
})
})
const canvas = SVG().addTo(container)
const poly = canvas.polygon('0 0 50 50')
poly.size(100, 100)
- expect(poly.bbox()).toEqual(objectContaining({
- width: 100, height: 100, x: 0, y: 0
- }))
+ expect(poly.bbox()).toEqual(
+ objectContaining({
+ width: 100,
+ height: 100,
+ x: 0,
+ y: 0
+ })
+ )
})
it('changes height proportionally', () => {
const canvas = SVG().addTo(container)
const poly = canvas.polygon('0 0 50 50')
poly.size(100, null)
- expect(poly.bbox()).toEqual(objectContaining({
- width: 100, height: 100, x: 0, y: 0
- }))
+ expect(poly.bbox()).toEqual(
+ objectContaining({
+ width: 100,
+ height: 100,
+ x: 0,
+ y: 0
+ })
+ )
})
it('changes width proportionally', () => {
const canvas = SVG().addTo(container)
const poly = canvas.polygon('0 0 50 50')
poly.size(null, 100)
- expect(poly.bbox()).toEqual(objectContaining({
- width: 100, height: 100, x: 0, y: 0
- }))
+ expect(poly.bbox()).toEqual(
+ objectContaining({
+ width: 100,
+ height: 100,
+ x: 0,
+ y: 0
+ })
+ )
})
})
})
describe('transforms', () => {
it('splits a transform chain', () => {
- const split = 'rotate(34) translate(1,2), translate(1 , 3),rotate(12) , something(1,2,3)'.split(regex.transforms)
- expect(split).toEqual([ 'rotate(34', 'translate(1,2', 'translate(1 , 3', 'rotate(12', 'something(1,2,3', '' ])
+ const split =
+ 'rotate(34) translate(1,2), translate(1 , 3),rotate(12) , something(1,2,3)'.split(
+ regex.transforms
+ )
+ expect(split).toEqual([
+ 'rotate(34',
+ 'translate(1,2',
+ 'translate(1 , 3',
+ 'rotate(12',
+ 'something(1,2,3',
+ ''
+ ])
})
})
describe('whitespace', () => {
it('replaces all whitespaces', () => {
- expect(' \n \r \t '.replace(regex.whitespace, ' ')).toBe(' ')
+ expect(' \n \r \t '.replace(regex.whitespace, ' ')).toBe(
+ ' '
+ )
})
})
describe('delimiter', () => {
it('splits at whitespace and comma', () => {
const split = '1,2 3 , 4 5,, 6'.split(regex.delimiter)
- expect(split).toEqual([ '1', '2', '3', '4', '5', '6' ])
+ expect(split).toEqual(['1', '2', '3', '4', '5', '6'])
})
})
const span = SVG('<span />', true).addClass('bar').addTo(div)
const span2 = SVG('<span />', true).addTo(div)
- expect(find('#canvas').map(el => el.node)).toEqual([ container ])
- expect(find('span')).toEqual([ span, span2 ])
- expect(find('#foo')).toEqual([ div ])
- expect(find('.bar')).toEqual([ span ])
+ expect(find('#canvas').map((el) => el.node)).toEqual([container])
+ expect(find('span')).toEqual([span, span2])
+ expect(find('#foo')).toEqual([div])
+ expect(find('.bar')).toEqual([span])
})
it('finds all elements of a selector scoped to an element', () => {
const div = SVG('<div />', true).id('foo').addTo(container)
expect(find('#canvas', getWindow().document)[0].node).toBe(container)
- expect(find('#foo', container)).toEqual([ div ])
+ expect(find('#foo', container)).toEqual([div])
expect(find('#canvas', div.node)).toEqual([])
})
})
const g4 = new G().addTo(g2)
const g5 = new G().addTo(g3)
- expect(g1.find('g')).toEqual([ g2, g4, g3, g5 ])
- expect(g2.find('g')).toEqual([ g4 ])
- expect(g1.find('#foo')).toEqual([ g2 ])
+ expect(g1.find('g')).toEqual([g2, g4, g3, g5])
+ expect(g2.find('g')).toEqual([g4])
+ expect(g1.find('#foo')).toEqual([g2])
expect(g2.find('#foo')).toEqual([])
- expect(g1.find('.bar')).toEqual([ g3 ])
+ expect(g1.find('.bar')).toEqual([g3])
})
})
add.tspan('The second.')
add.tspan('The third.')
})
- expect(text.length()).toBeCloseTo(text.get(0).length() + text.get(1).length() + text.get(2).length(), 3)
+ expect(text.length()).toBeCloseTo(
+ text.get(0).length() + text.get(1).length() + text.get(2).length(),
+ 3
+ )
})
it('gets total length of tspan', () => {
add.tspan('The second.')
add.tspan('The third.')
})
- expect(tspan.length()).toBeCloseTo(tspan.get(0).length() + tspan.get(1).length() + tspan.get(2).length(), 3)
+ expect(tspan.length()).toBeCloseTo(
+ tspan.get(0).length() + tspan.get(1).length() + tspan.get(2).length(),
+ 3
+ )
})
})
text.tspan('A great piece!')
text.tspan('Another great piece!')
expect(text.node.childNodes[0].childNodes[0].data).toBe('A great piece!')
- expect(text.node.childNodes[1].childNodes[0].data).toBe('Another great piece!')
+ expect(text.node.childNodes[1].childNodes[0].data).toBe(
+ 'Another great piece!'
+ )
})
it('disables adding multiple plain text nodes when given false for Text', () => {
text.clear().build(true)
text.tspan('A great piece!')
text.build(false).tspan('Another great piece!')
- expect(text.node.childNodes[0].childNodes[0].data).toBe('Another great piece!')
+ expect(text.node.childNodes[0].childNodes[0].data).toBe(
+ 'Another great piece!'
+ )
expect(text.node.childNodes[1]).toBe(undefined)
})
tspan.tspan('A great piece!')
tspan.tspan('Another great piece!')
expect(tspan.node.childNodes[0].childNodes[0].data).toBe('A great piece!')
- expect(tspan.node.childNodes[1].childNodes[0].data).toBe('Another great piece!')
+ expect(tspan.node.childNodes[1].childNodes[0].data).toBe(
+ 'Another great piece!'
+ )
})
it('disables adding multiple plain text nodes when given false for Tspan', () => {
tspan.clear().build(true)
tspan.tspan('A great piece!')
tspan.build(false).tspan('Another great piece!')
- expect(tspan.node.childNodes[0].childNodes[0].data).toBe('Another great piece!')
+ expect(tspan.node.childNodes[0].childNodes[0].data).toBe(
+ 'Another great piece!'
+ )
expect(tspan.node.childNodes[1]).toBe(undefined)
})
})
-
})
const circle = g.circle(100)
const line = g.line(1, 2, 3, 4)
- expect(circle.siblings()).toEqual([ rect, circle, line ])
+ expect(circle.siblings()).toEqual([rect, circle, line])
})
})
rect.forward()
- expect(g.children()).toEqual([ circle, rect, line ])
+ expect(g.children()).toEqual([circle, rect, line])
})
it('does nothing when the element is already the last one', () => {
line.forward()
- expect(g.children()).toEqual([ rect, circle, line ])
+ expect(g.children()).toEqual([rect, circle, line])
})
})
line.backward()
- expect(g.children()).toEqual([ rect, line, circle ])
+ expect(g.children()).toEqual([rect, line, circle])
})
it('does nothing when the element is already the first one', () => {
rect.backward()
- expect(g.children()).toEqual([ rect, circle, line ])
+ expect(g.children()).toEqual([rect, circle, line])
})
})
rect.front()
- expect(g.children()).toEqual([ circle, line, rect ])
+ expect(g.children()).toEqual([circle, line, rect])
})
it('does nothing when the element is already the last one', () => {
line.front()
- expect(g.children()).toEqual([ rect, circle, line ])
+ expect(g.children()).toEqual([rect, circle, line])
})
})
line.back()
- expect(g.children()).toEqual([ line, rect, circle ])
+ expect(g.children()).toEqual([line, rect, circle])
})
it('does nothing when the element is already the first one', () => {
rect.back()
- expect(g.children()).toEqual([ rect, circle, line ])
+ expect(g.children()).toEqual([rect, circle, line])
})
})
const line = new Line()
circle.before(line)
- expect(g.children()).toEqual([ rect, line, circle ])
+ expect(g.children()).toEqual([rect, line, circle])
})
})
const line = new Line()
rect.after(line)
- expect(g.children()).toEqual([ rect, line, circle ])
+ expect(g.children()).toEqual([rect, line, circle])
})
})
const line = new Line().insertBefore(circle)
- expect(g.children()).toEqual([ rect, line, circle ])
+ expect(g.children()).toEqual([rect, line, circle])
})
})
const line = new Line().insertAfter(rect)
- expect(g.children()).toEqual([ rect, line, circle ])
+ expect(g.children()).toEqual([rect, line, circle])
})
})
})
describe('classes()', () => {
it('returns all classes on an element', () => {
const rect = new Rect({ class: 'myClass myClass2' })
- expect(rect.classes()).toEqual([ 'myClass', 'myClass2' ])
+ expect(rect.classes()).toEqual(['myClass', 'myClass2'])
})
it('returns an empty array if no class on the element', () => {
})
it('adds a class to the element', () => {
- const rect = new Rect({ class: 'myClass myClass2' }).addClass('myClass3')
- expect(rect.classes()).toEqual([ 'myClass', 'myClass2', 'myClass3' ])
+ const rect = new Rect({ class: 'myClass myClass2' }).addClass(
+ 'myClass3'
+ )
+ expect(rect.classes()).toEqual(['myClass', 'myClass2', 'myClass3'])
})
it('does nothing if class already present on the element', () => {
const rect = new Rect({ class: 'myClass myClass2' }).addClass('myClass')
- expect(rect.classes()).toEqual([ 'myClass', 'myClass2' ])
+ expect(rect.classes()).toEqual(['myClass', 'myClass2'])
})
})
})
it('removes a class from the element', () => {
- const rect = new Rect({ class: 'myClass myClass2' }).removeClass('myClass2')
- expect(rect.classes()).toEqual([ 'myClass' ])
+ const rect = new Rect({ class: 'myClass myClass2' }).removeClass(
+ 'myClass2'
+ )
+ expect(rect.classes()).toEqual(['myClass'])
})
it('does nothing if class is not present on the element', () => {
- const rect = new Rect({ class: 'myClass myClass2' }).removeClass('myClass3')
- expect(rect.classes()).toEqual([ 'myClass', 'myClass2' ])
+ const rect = new Rect({ class: 'myClass myClass2' }).removeClass(
+ 'myClass3'
+ )
+ expect(rect.classes()).toEqual(['myClass', 'myClass2'])
})
})
})
it('removes a class from the element when its present', () => {
- const rect = new Rect({ class: 'myClass myClass2' }).toggleClass('myClass2')
- expect(rect.classes()).toEqual([ 'myClass' ])
+ const rect = new Rect({ class: 'myClass myClass2' }).toggleClass(
+ 'myClass2'
+ )
+ expect(rect.classes()).toEqual(['myClass'])
})
it('adds a class to the element if its not present', () => {
- const rect = new Rect({ class: 'myClass myClass2' }).toggleClass('myClass3')
- expect(rect.classes()).toEqual([ 'myClass', 'myClass2', 'myClass3' ])
+ const rect = new Rect({ class: 'myClass myClass2' }).toggleClass(
+ 'myClass3'
+ )
+ expect(rect.classes()).toEqual(['myClass', 'myClass2', 'myClass3'])
})
})
})
describe('css()', () => {
describe('as getter', () => {
it('returns all css as object', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css()).toEqual({
fill: 'none',
'outline-width': '1px',
})
it('returns an object with selected css properties', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
- expect(rect.css([ 'fill', 'stroke' ])).toEqual({
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
+ expect(rect.css(['fill', 'stroke'])).toEqual({
fill: 'none',
stroke: 'none'
})
})
it('returns a single property with property name given', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css('fill')).toBe('none')
})
it('returns undefined if css property is not set', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css('outline-color')).toBe('')
})
})
describe('as setter', () => {
it('returns itself', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css('fill', 'black')).toBe(rect)
})
it('adds a css property', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
- expect(rect.css('stroke-width', '2px').css('stroke-width')).toBe('2px')
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
+ expect(rect.css('stroke-width', '2px').css('stroke-width')).toBe(
+ '2px'
+ )
})
it('changes a css property', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css('fill', 'black').css('fill')).toBe('black')
})
it('sets an object of properties', () => {
const rect = new Rect()
- expect(rect.css({ fill: 'none', stroke: 'none' }).css()).toEqual({ fill: 'none', stroke: 'none' })
+ expect(rect.css({ fill: 'none', stroke: 'none' }).css()).toEqual({
+ fill: 'none',
+ stroke: 'none'
+ })
})
it('removes property if empty string is passed as value', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css('fill', '').css('fill')).toBe('')
})
it('removes property if null is passed as value', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css('fill', null).css('fill')).toBe('')
})
it('removes property if null is passed as part of object', () => {
- const rect = new Rect({ style: 'fill: none; outline-width: 1px; stroke: none' })
+ const rect = new Rect({
+ style: 'fill: none; outline-width: 1px; stroke: none'
+ })
expect(rect.css({ fill: null, stroke: 'black' }).css('fill')).toBe('')
})
})
describe('data()', () => {
describe('as getter', () => {
it('returns all data as object', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
expect(rect.data()).toEqual({
fill: 'none',
'outline-width': '1px',
})
it('returns an object with selected data properties', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
- expect(rect.data([ 'fill', 'stroke' ])).toEqual({
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
+ expect(rect.data(['fill', 'stroke'])).toEqual({
fill: 'none',
stroke: 'none'
})
})
it('returns a single property with property name given', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
expect(rect.data('fill')).toBe('none')
})
it('returns undefined if data property is not set', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
expect(rect.data('outline-color')).toBe(undefined)
})
})
describe('as setter', () => {
it('returns itself', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
expect(rect.data('fill', 'black')).toBe(rect)
})
it('adds a data property', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
- expect(rect.data('stroke-width', '2px').data('stroke-width')).toBe('2px')
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
+ expect(rect.data('stroke-width', '2px').data('stroke-width')).toBe(
+ '2px'
+ )
})
it('changes a data property', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
expect(rect.data('fill', 'black').data('fill')).toBe('black')
})
it('sets an object of properties', () => {
const rect = new Rect()
- expect(rect.data({ fill: 'none', stroke: 'none' }).data()).toEqual({ fill: 'none', stroke: 'none' })
+ expect(rect.data({ fill: 'none', stroke: 'none' }).data()).toEqual({
+ fill: 'none',
+ stroke: 'none'
+ })
})
it('removes property if null is passed as value', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
expect(rect.data('fill', null).data('fill')).toBe(undefined)
})
it('removes property if null is passed as part of object', () => {
- const rect = new Rect({ 'data-fill': 'none', 'data-outline-width': '1px', 'data-stroke': 'none' })
- expect(rect.data({ fill: null, stroke: 'black' }).data('fill')).toBe(undefined)
+ const rect = new Rect({
+ 'data-fill': 'none',
+ 'data-outline-width': '1px',
+ 'data-stroke': 'none'
+ })
+ expect(rect.data({ fill: null, stroke: 'black' }).data('fill')).toBe(
+ undefined
+ )
})
it('converts everything except number and strings to JSON', () => {
const rect = new Rect()
- expect(rect.data('fill', { some: 'object' }).attr('data-fill')).toBe(JSON.stringify({ some: 'object' }))
+ expect(rect.data('fill', { some: 'object' }).attr('data-fill')).toBe(
+ JSON.stringify({ some: 'object' })
+ )
expect(rect.data('fill', 5).attr('data-fill')).toBe(5)
expect(rect.data('fill', 'string').attr('data-fill')).toBe('string')
})
it('does not convert to json with third parameter true', () => {
const rect = new Rect()
- expect(rect.data('fill', { some: 'object' }, true).attr('data-fill')).toBe({}.toString())
+ expect(
+ rect.data('fill', { some: 'object' }, true).attr('data-fill')
+ ).toBe({}.toString())
})
})
})
describe('Dom', () => {
describe('memory()', () => {
it('returns all memory as object', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.memory()).toEqual({
fill: 'none',
'outline-width': '1px',
describe('remember()', () => {
describe('as getter', () => {
it('returns a single property with property name given', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.remember('fill')).toBe('none')
})
it('returns undefined if memory property is not set', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.remember('outline-color')).toBe(undefined)
})
})
describe('as setter', () => {
it('returns itself', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.remember('fill', 'black')).toBe(rect)
})
it('adds a memory property', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
- expect(rect.remember('stroke-width', '2px').remember('stroke-width')).toBe('2px')
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
+ expect(
+ rect.remember('stroke-width', '2px').remember('stroke-width')
+ ).toBe('2px')
})
it('changes a memory property', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.remember('fill', 'black').remember('fill')).toBe('black')
})
it('sets an object of properties', () => {
const rect = new Rect()
- expect(rect.remember({ fill: 'none', stroke: 'none' }).memory()).toEqual({ fill: 'none', stroke: 'none' })
+ expect(
+ rect.remember({ fill: 'none', stroke: 'none' }).memory()
+ ).toEqual({ fill: 'none', stroke: 'none' })
})
})
})
describe('forget()', () => {
it('removes property', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.forget('fill').remember('fill')).toBe(undefined)
})
it('removes multiple properties', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
- expect(rect.forget('fill', 'stroke').memory()).toEqual({ 'outline-width': '1px' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
+ expect(rect.forget('fill', 'stroke').memory()).toEqual({
+ 'outline-width': '1px'
+ })
})
it('erases the whole object with nothing passed', () => {
- const rect = new Rect().remember({ fill: 'none', 'outline-width': '1px', stroke: 'none' })
+ const rect = new Rect().remember({
+ fill: 'none',
+ 'outline-width': '1px',
+ stroke: 'none'
+ })
expect(rect.forget().memory()).toEqual({})
})
})
it('sets an object of fill properties', () => {
const rect = new Rect()
- expect(rect.fill({
- color: 'black',
- opacity: 0.5,
- rule: 'even-odd'
- }).attr()).toEqual({
+ expect(
+ rect
+ .fill({
+ color: 'black',
+ opacity: 0.5,
+ rule: 'even-odd'
+ })
+ .attr()
+ ).toEqual({
fill: 'black',
'fill-opacity': 0.5,
- 'fill-rule':
- 'even-odd'
+ 'fill-rule': 'even-odd'
})
})
})
it('sets an object of stroke properties', () => {
const rect = new Rect()
- expect(rect.stroke({
- color: 'black',
- width: 2,
- opacity: 0.5,
- linecap: 'butt',
- linejoin: 'miter',
- miterlimit: 10,
- dasharray: '2 2',
- dashoffset: 15
- }).attr()).toEqual({
+ expect(
+ rect
+ .stroke({
+ color: 'black',
+ width: 2,
+ opacity: 0.5,
+ linecap: 'butt',
+ linejoin: 'miter',
+ miterlimit: 10,
+ dasharray: '2 2',
+ dashoffset: 15
+ })
+ .attr()
+ ).toEqual({
stroke: 'black',
'stroke-width': 2,
'stroke-opacity': 0.5,
})
it('sets stroke dasharray with array passed', () => {
- const rect = new Rect().stroke({ dasharray: [ 2, 2 ] })
+ const rect = new Rect().stroke({ dasharray: [2, 2] })
expect(rect.attr()).toEqual({ 'stroke-dasharray': '2 2' })
})
})
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.skew()
- expect(spy).toHaveBeenCalledWith({ skew: [ undefined, undefined ], ox: undefined, oy: undefined }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { skew: [undefined, undefined], ox: undefined, oy: undefined },
+ true
+ )
})
it('redirects to transform() with one argument', function () {
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.skew(5)
- expect(spy).toHaveBeenCalledWith({ skew: 5, ox: undefined, oy: undefined }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { skew: 5, ox: undefined, oy: undefined },
+ true
+ )
})
it('redirects to transform() with two argument', function () {
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.skew(5, 6)
- expect(spy).toHaveBeenCalledWith({ skew: [ 5, 6 ], ox: undefined, oy: undefined }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { skew: [5, 6], ox: undefined, oy: undefined },
+ true
+ )
})
it('redirects to transform() with three arguments', function () {
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.skew(5, 6, 7, 8)
- expect(spy).toHaveBeenCalledWith({ skew: [ 5, 6 ], ox: 7, oy: 8 }, true)
+ expect(spy).toHaveBeenCalledWith({ skew: [5, 6], ox: 7, oy: 8 }, true)
})
})
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.scale()
- expect(spy).toHaveBeenCalledWith({ scale: [ undefined, undefined ], ox: undefined, oy: undefined }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { scale: [undefined, undefined], ox: undefined, oy: undefined },
+ true
+ )
})
it('redirects to transform() with one argument', function () {
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.scale(5)
- expect(spy).toHaveBeenCalledWith({ scale: 5, ox: undefined, oy: undefined }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { scale: 5, ox: undefined, oy: undefined },
+ true
+ )
})
it('redirects to transform() with two argument', function () {
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.scale(5, 6)
- expect(spy).toHaveBeenCalledWith({ scale: [ 5, 6 ], ox: undefined, oy: undefined }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { scale: [5, 6], ox: undefined, oy: undefined },
+ true
+ )
})
it('redirects to transform() with three arguments', function () {
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.scale(5, 6, 7, 8)
- expect(spy).toHaveBeenCalledWith({ scale: [ 5, 6 ], ox: 7, oy: 8 }, true)
+ expect(spy).toHaveBeenCalledWith({ scale: [5, 6], ox: 7, oy: 8 }, true)
})
})
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.translate(1, 2)
- expect(spy).toHaveBeenCalledWith({ translate: [ 1, 2 ] }, true)
+ expect(spy).toHaveBeenCalledWith({ translate: [1, 2] }, true)
})
})
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.relative(1, 2)
- expect(spy).toHaveBeenCalledWith({ relative: [ 1, 2 ] }, true)
+ expect(spy).toHaveBeenCalledWith({ relative: [1, 2] }, true)
})
})
const rect = new Rect()
const spy = spyOn(rect, 'transform')
rect.flip()
- expect(spy).toHaveBeenCalledWith({ flip: 'both', origin: 'center' }, true)
+ expect(spy).toHaveBeenCalledWith(
+ { flip: 'both', origin: 'center' },
+ true
+ )
})
// this works because only x and y are valid flip values. Everything else flips on both axis
expect(spy).toHaveBeenCalledWith('font-size', undefined)
})
})
-
})
describe('radius()', () => {
})
describe('events', () => {
- [ 'click',
+ ;[
+ 'click',
'dblclick',
'mousedown',
'mouseup',
'touchmove',
'touchleave',
'touchend',
- 'touchcancel' ].forEach(ev => {
+ 'touchcancel'
+ ].forEach((ev) => {
describe(ev, () => {
it('calls on() with the eventname set to ' + ev, () => {
const rect = new Rect()
expect(spy).toHaveBeenCalledWith(ev, fn)
})
- it('calls off() with the eventname set to ' + ev + ' when null is passed as second argument', () => {
- const rect = new Rect()
- const spy = spyOn(rect, 'off')
- rect[ev](null)
- expect(spy).toHaveBeenCalledWith(ev)
- })
+ it(
+ 'calls off() with the eventname set to ' +
+ ev +
+ ' when null is passed as second argument',
+ () => {
+ const rect = new Rect()
+ const spy = spyOn(rect, 'off')
+ rect[ev](null)
+ expect(spy).toHaveBeenCalledWith(ev)
+ }
+ )
})
})
})
it('reduces all transformations of the transform list into one matrix - 2', () => {
const rect = new Rect().attr('transform', 'translate(10, 20) rotate(45)')
- expect(rect.matrixify()).toEqual(new Matrix().rotate(45).translate(10, 20))
+ expect(rect.matrixify()).toEqual(
+ new Matrix().rotate(45).translate(10, 20)
+ )
})
it('reduces all transformations of the transform list into one matrix - 3', () => {
- const rect = new Rect().attr('transform', 'translate(10, 20) rotate(45) skew(1,2) skewX(10) skewY(20)')
- expect(rect.matrixify()).toEqual(new Matrix().skewY(20).skewX(10).skew(1, 2).rotate(45).translate(10, 20))
+ const rect = new Rect().attr(
+ 'transform',
+ 'translate(10, 20) rotate(45) skew(1,2) skewX(10) skewY(20)'
+ )
+ expect(rect.matrixify()).toEqual(
+ new Matrix().skewY(20).skewX(10).skew(1, 2).rotate(45).translate(10, 20)
+ )
})
})
const expected = new Matrix().translate(10, 20).rotate(-10)
// funny enough the dom seems to shorten the floats and precision gets lost
- ;[ ...'abcdef' ].forEach(prop => expect(actual[prop]).toBeCloseTo(expected[prop], 5))
+ ;[...'abcdef'].forEach((prop) =>
+ expect(actual[prop]).toBeCloseTo(expected[prop], 5)
+ )
})
it('inserts the element at the specified position', () => {
})
it('sets the transformation with an object', () => {
- const rect = new Rect().transform({ rotate: 45, translate: [ 10, 20 ] })
+ const rect = new Rect().transform({ rotate: 45, translate: [10, 20] })
expect(rect.transform('rotate')).toBe(45)
expect(rect.transform('translateX')).toBe(10)
expect(rect.transform('translateY')).toBe(20)
})
it('performs a relative transformation with flag=true', () => {
- const rect = new Rect().transform({ rotate: 45, translate: [ 10, 20 ] }).transform({ rotate: 10 }, true)
+ const rect = new Rect()
+ .transform({ rotate: 45, translate: [10, 20] })
+ .transform({ rotate: 10 }, true)
expect(rect.transform('rotate')).toBeCloseTo(55, 5) // rounding errors
expect(rect.transform('translateX')).toBe(10)
expect(rect.transform('translateY')).toBe(20)
})
it('performs a relative transformation with flag=other matrix', () => {
- const rect = new Rect().transform({ rotate: 45, translate: [ 10, 20 ] }).transform({ rotate: 10 }, new Matrix().rotate(30))
+ const rect = new Rect()
+ .transform({ rotate: 45, translate: [10, 20] })
+ .transform({ rotate: 10 }, new Matrix().rotate(30))
expect(rect.transform('rotate')).toBeCloseTo(40, 5) // rounding errors
expect(rect.transform('translateX')).toBe(0)
expect(rect.transform('translateY')).toBe(0)
it('performs a relative transformation with flag=other element', () => {
const referenceElement = new Rect().transform({ rotate: 30 })
- const rect = new Rect().transform({ rotate: 45, translate: [ 10, 20 ] }).transform({ rotate: 10 }, referenceElement)
+ const rect = new Rect()
+ .transform({ rotate: 45, translate: [10, 20] })
+ .transform({ rotate: 10 }, referenceElement)
expect(rect.transform('rotate')).toBeCloseTo(40, 5) // rounding errors
expect(rect.transform('translateX')).toBe(0)
expect(rect.transform('translateY')).toBe(0)
/* globals describe, expect, it, beforeEach, afterEach, spyOn, jasmine, container */
-import {
- Box,
- Matrix,
- Rect,
- G,
- makeInstance as SVG
-} from '../../../src/main.js'
+import { Box, Matrix, Rect, G, makeInstance as SVG } from '../../../src/main.js'
import { withWindow, getWindow } from '../../../src/utils/window.js'
import { isNulledBox, domContains } from '../../../src/types/Box.js'
it('creates a new Box with default attributes', () => {
const box = new Box()
expect(box).toEqual(any(Box))
- expect(box).toEqual(objectContaining({
- width: 0, height: 0, x: 0, y: 0, w: 0, h: 0, cx: 0, cy: 0, x2: 0, y2: 0
- }))
+ expect(box).toEqual(
+ objectContaining({
+ width: 0,
+ height: 0,
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ cx: 0,
+ cy: 0,
+ x2: 0,
+ y2: 0
+ })
+ )
})
})
describe('init()', () => {
it('inits or reinits the box according to input', () => {
- expect(new Box().init(1, 2, 3, 4).toArray()).toEqual([ 1, 2, 3, 4 ])
+ expect(new Box().init(1, 2, 3, 4).toArray()).toEqual([1, 2, 3, 4])
})
it('works with array input', () => {
- expect(new Box().init([ 1, 2, 3, 4 ]).toArray()).toEqual([ 1, 2, 3, 4 ])
+ expect(new Box().init([1, 2, 3, 4]).toArray()).toEqual([1, 2, 3, 4])
})
it('works with 3 arguments as input', () => {
- expect(new Box().init(1, 2, 3, 4).toArray()).toEqual([ 1, 2, 3, 4 ])
+ expect(new Box().init(1, 2, 3, 4).toArray()).toEqual([1, 2, 3, 4])
})
it('works with string input', () => {
- expect(new Box().init('1,2,3,4').toArray()).toEqual([ 1, 2, 3, 4 ])
+ expect(new Box().init('1,2,3,4').toArray()).toEqual([1, 2, 3, 4])
})
it('creates a new box from parsed string with exponential values', function () {
- expect(new Box().init('-1.12e1 1e-2 +2e2 +.3e+4').toArray())
- .toEqual([ -11.2, 0.01, 200, 3000 ])
+ expect(new Box().init('-1.12e1 1e-2 +2e2 +.3e+4').toArray()).toEqual([
+ -11.2, 0.01, 200, 3000
+ ])
})
it('works with object input', () => {
- expect(new Box().init({ x: 1, y: 2, width: 3, height: 4 }).toArray())
- .toEqual([ 1, 2, 3, 4 ])
+ expect(
+ new Box().init({ x: 1, y: 2, width: 3, height: 4 }).toArray()
+ ).toEqual([1, 2, 3, 4])
})
it('calculates all derived values correctly', () => {
- expect(new Box().init(2, 4, 6, 8)).toEqual(objectContaining({
- cx: 5, cy: 8, x2: 8, y2: 12, w: 6, h: 8
- }))
+ expect(new Box().init(2, 4, 6, 8)).toEqual(
+ objectContaining({
+ cx: 5,
+ cy: 8,
+ x2: 8,
+ y2: 12,
+ w: 6,
+ h: 8
+ })
+ )
})
it('can handle input with left instead of x and top instead of y', () => {
- expect(new Box().init({ left: 1, top: 2, width: 3, height: 4 }).toArray())
- .toEqual([ 1, 2, 3, 4 ])
+ expect(
+ new Box().init({ left: 1, top: 2, width: 3, height: 4 }).toArray()
+ ).toEqual([1, 2, 3, 4])
})
})
var box3 = new Box(500, 100, 100, 100)
var merged = box1.merge(box2).merge(box3)
- expect(merged.toArray()).toEqual([ 50, 50, 550, 450 ])
+ expect(merged.toArray()).toEqual([50, 50, 550, 450])
})
it('returns a new instance', () => {
describe('transform()', () => {
it('transforms the box with given matrix', () => {
- var box1 = new Box(50, 50, 100, 100).transform(new Matrix(1, 0, 0, 1, 20, 20))
- var box2 = new Box(50, 50, 100, 100).transform(new Matrix(2, 0, 0, 2, 0, 0))
- var box3 = new Box(-200, -200, 100, 100).transform(new Matrix(1, 0, 0, 1, -20, -20))
+ var box1 = new Box(50, 50, 100, 100).transform(
+ new Matrix(1, 0, 0, 1, 20, 20)
+ )
+ var box2 = new Box(50, 50, 100, 100).transform(
+ new Matrix(2, 0, 0, 2, 0, 0)
+ )
+ var box3 = new Box(-200, -200, 100, 100).transform(
+ new Matrix(1, 0, 0, 1, -20, -20)
+ )
- expect(box1.toArray()).toEqual([ 70, 70, 100, 100 ])
- expect(box2.toArray()).toEqual([ 100, 100, 200, 200 ])
- expect(box3.toArray()).toEqual([ -220, -220, 100, 100 ])
+ expect(box1.toArray()).toEqual([70, 70, 100, 100])
+ expect(box2.toArray()).toEqual([100, 100, 200, 200])
+ expect(box3.toArray()).toEqual([-220, -220, 100, 100])
})
it('also works with matrix like input', () => {
- var box1 = new Box(50, 50, 100, 100).transform(new Matrix(1, 0, 0, 1, 20, 20).toArray())
- var box2 = new Box(50, 50, 100, 100).transform(new Matrix(2, 0, 0, 2, 0, 0).toArray())
- var box3 = new Box(-200, -200, 100, 100).transform(new Matrix(1, 0, 0, 1, -20, -20).toArray())
-
- expect(box1.toArray()).toEqual([ 70, 70, 100, 100 ])
- expect(box2.toArray()).toEqual([ 100, 100, 200, 200 ])
- expect(box3.toArray()).toEqual([ -220, -220, 100, 100 ])
+ var box1 = new Box(50, 50, 100, 100).transform(
+ new Matrix(1, 0, 0, 1, 20, 20).toArray()
+ )
+ var box2 = new Box(50, 50, 100, 100).transform(
+ new Matrix(2, 0, 0, 2, 0, 0).toArray()
+ )
+ var box3 = new Box(-200, -200, 100, 100).transform(
+ new Matrix(1, 0, 0, 1, -20, -20).toArray()
+ )
+
+ expect(box1.toArray()).toEqual([70, 70, 100, 100])
+ expect(box2.toArray()).toEqual([100, 100, 200, 200])
+ expect(box3.toArray()).toEqual([-220, -220, 100, 100])
})
})
withWindow({ pageXOffset: 50, pageYOffset: 25 }, () => {
const box = new Box(100, 100, 100, 100).addOffset()
- expect(box.toArray()).toEqual([ 150, 125, 100, 100 ])
+ expect(box.toArray()).toEqual([150, 125, 100, 100])
})
})
})
describe('toArray()', () => {
it('returns an array representation of the box', () => {
- expect(new Box(1, 2, 3, 4).toArray()).toEqual([ 1, 2, 3, 4 ])
+ expect(new Box(1, 2, 3, 4).toArray()).toEqual([1, 2, 3, 4])
})
})
const rect = new Rect().size(100, 200).move(20, 30).addTo(canvas)
expect(rect.bbox()).toEqual(any(Box))
- expect(rect.bbox().toArray()).toEqual([ 20, 30, 100, 200 ])
+ expect(rect.bbox().toArray()).toEqual([20, 30, 100, 200])
})
it('returns the bounding box of the element even if the node is not in the dom', () => {
const rect = new Rect().size(100, 200).move(20, 30)
- expect(rect.bbox().toArray()).toEqual([ 20, 30, 100, 200 ])
+ expect(rect.bbox().toArray()).toEqual([20, 30, 100, 200])
})
it('throws when it is not possible to get a bbox', () => {
- const spy = spyOn(getWindow().SVGGraphicsElement.prototype, 'getBBox')
- .and.callFake(() => { throw new Error('No BBox for you') })
+ const spy = spyOn(
+ getWindow().SVGGraphicsElement.prototype,
+ 'getBBox'
+ ).and.callFake(() => {
+ throw new Error('No BBox for you')
+ })
const rect = new Rect()
expect(() => rect.bbox()).toThrow()
expect(spy).toHaveBeenCalled()
describe('rbox()', () => {
it('returns the BoundingClientRect of the element', () => {
const canvas = SVG().addTo(container)
- const rect = new Rect().size(100, 200).move(20, 30).addTo(canvas)
- .attr('transform', new Matrix({ scale: 2, translate: [ 40, 50 ] }))
+ const rect = new Rect()
+ .size(100, 200)
+ .move(20, 30)
+ .addTo(canvas)
+ .attr('transform', new Matrix({ scale: 2, translate: [40, 50] }))
expect(rect.rbox()).toEqual(any(Box))
- expect(rect.rbox().toArray()).toEqual([ 80, 110, 200, 400 ])
+ expect(rect.rbox().toArray()).toEqual([80, 110, 200, 400])
})
it('returns the rbox box of the element in the coordinate system of the passed element', () => {
const canvas = SVG().addTo(container)
const group = canvas.group().translate(1, 1)
- const rect = new Rect().size(100, 200).move(20, 30).addTo(canvas)
- .attr('transform', new Matrix({ scale: 2, translate: [ 40, 50 ] }))
+ const rect = new Rect()
+ .size(100, 200)
+ .move(20, 30)
+ .addTo(canvas)
+ .attr('transform', new Matrix({ scale: 2, translate: [40, 50] }))
expect(rect.rbox(group)).toEqual(any(Box))
- expect(rect.rbox(group).toArray()).toEqual([ 79, 109, 200, 400 ])
+ expect(rect.rbox(group).toArray()).toEqual([79, 109, 200, 400])
})
// svgdom actually only throws here because a new Rect without dimensions has no bounding box
it('gets the viewbox of the element', () => {
const canvas = SVG().addTo(container).viewbox(10, 10, 200, 200)
expect(canvas.viewbox()).toEqual(any(Box))
- expect(canvas.viewbox().toArray()).toEqual([ 10, 10, 200, 200 ])
+ expect(canvas.viewbox().toArray()).toEqual([10, 10, 200, 200])
})
})
describe('zoom()', () => {
it('zooms around the center by default', () => {
- const canvas = SVG().size(100, 50).viewbox(0, 0, 100, 50).addTo(container).zoom(2)
+ const canvas = SVG()
+ .size(100, 50)
+ .viewbox(0, 0, 100, 50)
+ .addTo(container)
+ .zoom(2)
expect(canvas.attr('viewBox')).toEqual('25 12.5 50 25')
})
it('zooms around a point', () => {
- const canvas = SVG().size(100, 50).viewbox(0, 0, 100, 50).addTo(container).zoom(2, [ 0, 0 ])
+ const canvas = SVG()
+ .size(100, 50)
+ .viewbox(0, 0, 100, 50)
+ .addTo(container)
+ .zoom(2, [0, 0])
expect(canvas.attr('viewBox')).toEqual('0 0 50 25')
})
it('gets the zoom', () => {
// We use a nested here because its actually harder to get a width and height for a nested svg because clientHeight
// is not available
- const svg = SVG().size(100, 50).addTo(container).nested().size(100, 50).viewbox(0, 0, 100, 50).zoom(2)
+ const svg = SVG()
+ .size(100, 50)
+ .addTo(container)
+ .nested()
+ .size(100, 50)
+ .viewbox(0, 0, 100, 50)
+ .zoom(2)
expect(svg.zoom()).toEqual(2)
})
it('gets the zoom with clientHeight', () => {
- const svg = SVG().css({ width: '100px', height: '50px' }).addTo(container).viewbox(25, 12.5, 50, 25)
+ const svg = SVG()
+ .css({ width: '100px', height: '50px' })
+ .addTo(container)
+ .viewbox(25, 12.5, 50, 25)
const node = svg.node
})
it('throws an error if it is impossible to get an absolute value', () => {
- const svg = SVG().size(100, 50).addTo(container).nested().viewbox(0, 0, 100, 50)
- expect(() => svg.zoom()).toThrowError('Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element')
+ const svg = SVG()
+ .size(100, 50)
+ .addTo(container)
+ .nested()
+ .viewbox(0, 0, 100, 50)
+ expect(() => svg.zoom()).toThrowError(
+ 'Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element'
+ )
})
it('handles zoom level 0 which is - which basically sets the viewbox to a very high value', () => {
- const svg = SVG().size(100, 50).viewbox(0, 0, 100, 50).addTo(container).zoom(0)
+ const svg = SVG()
+ .size(100, 50)
+ .viewbox(0, 0, 100, 50)
+ .addTo(container)
+ .zoom(0)
expect(svg.zoom()).toBeCloseTo(0, 10)
})
it('handles zoom level 0 and can recover from it', () => {
- const svg = SVG().size(100, 50).viewbox(0, 0, 100, 50).addTo(container).zoom(0).zoom(1)
+ const svg = SVG()
+ .size(100, 50)
+ .viewbox(0, 0, 100, 50)
+ .addTo(container)
+ .zoom(0)
+ .zoom(1)
expect(svg.zoom()).toBe(1)
})
})
})
describe('()', () => {
-
describe('constructs a color from an object in the correct color space', () => {
it('rgb', () => {
const color = new Color({ r: 255, g: 0, b: 128 })
})
it('constructs a color from an array', () => {
- const color = new Color([ 30, 24, 50 ])
+ const color = new Color([30, 24, 50])
expect(color.r).toBe(30)
expect(color.g).toBe(24)
expect(color.b).toBe(50)
})
it('constructs a color from an array with space in array', () => {
- const color = new Color([ 50, 50, 5, 'lab' ])
+ const color = new Color([50, 50, 5, 'lab'])
expect(color.l).toBe(50)
expect(color.a).toBe(50)
expect(color.b).toBe(5)
})
it('constructs a color from an array with space given', () => {
- const color = new Color([ 50, 50, 5 ], 'lab')
+ const color = new Color([50, 50, 5], 'lab')
expect(color.l).toBe(50)
expect(color.a).toBe(50)
expect(color.b).toBe(5)
})
it('throws an error if unsupported string format was given', () => {
- expect(() => new Color('#0066')).toThrowError('Unsupported string format, can\'t construct Color')
+ expect(() => new Color('#0066')).toThrowError(
+ "Unsupported string format, can't construct Color"
+ )
})
})
})
describe('color spaces: The color spaces supported by our library', () => {
-
describe('lab()', () => {
it('can convert rgb to lab', () => {
const color = new Color(255, 0, 128)
})
describe('hsl()', () => {
-
it('can convert from rgb to hsl', () => {
const color = new Color(255, 0, 128)
const hsl = color.hsl()
// })
describe('cmyk()', () => {
-
it('can convert from rgb to cmyk', () => {
const color = new Color(255, 0, 128)
const cmyk = color.cmyk()
expect(color.b).toBeCloseTo(255, 0)
expect(color.toHex()).toBe('#ffffff')
})
-
})
-
})
describe('static methods', () => {
})
it('throws an error if mode is unknown', () => {
- expect(() => Color.random('foo')).toThrowError('Unsupported random color mode')
+ expect(() => Color.random('foo')).toThrowError(
+ 'Unsupported random color mode'
+ )
})
})
})
})
})
-
})
const options = { cancelable: false }
const event = target.dispatch('bla', 'foo', options)
expect(spy).toHaveBeenCalledWith(event)
- expect(event).toEqual(objectContaining({ type: 'bla', detail: 'foo', cancelable: false }))
+ expect(event).toEqual(
+ objectContaining({ type: 'bla', detail: 'foo', cancelable: false })
+ )
})
})
describe('List.js', () => {
describe('()', () => {
it('creates a new List from Array', () => {
- const list = new List([ 1, 2, 3 ])
+ const list = new List([1, 2, 3])
expect(list).toEqual(any(List))
})
})
it('is instance of Array', () => {
- const list = new List([ 1, 2, 3 ])
+ const list = new List([1, 2, 3])
expect(list).toEqual(any(Array))
})
it('allows index access', () => {
- const list = new List([ 1, 2, 3 ])
+ const list = new List([1, 2, 3])
expect(list[1]).toBe(2)
})
})
describe('each()', () => {
it('works like map but with context set to the element when a function is passed', () => {
- const list = new List([ 1, 2, 3 ]).each((el) => el * 2)
+ const list = new List([1, 2, 3]).each((el) => el * 2)
expect(list).toEqual(any(List))
- expect(list).toEqual([ 2, 4, 6 ])
+ expect(list).toEqual([2, 4, 6])
const spy = createSpy()
const obj = {}
- const list2 = new List([ obj ])
+ const list2 = new List([obj])
list2.each(spy)
- expect(spy.calls.first()).toEqual(objectContaining({
- object: obj,
- args: [ obj, 0, list2 ]
- }))
+ expect(spy.calls.first()).toEqual(
+ objectContaining({
+ object: obj,
+ args: [obj, 0, list2]
+ })
+ )
})
it('calls a method on every element in the list and passes arguments when a string is passed', () => {
- const list = new List([ 10, 11, 12 ])
- expect(list.each('toString', 16)).toEqual([ 'a', 'b', 'c' ])
+ const list = new List([10, 11, 12])
+ expect(list.each('toString', 16)).toEqual(['a', 'b', 'c'])
})
})
describe('toArray()', () => {
it('returns a plain array from the contents of the list', () => {
- const list = new List([ 1, 2, 3 ])
+ const list = new List([1, 2, 3])
const arr = list.toArray()
expect(arr).toEqual(any(Array))
expect(arr).not.toEqual(any(List))
- expect(arr).toEqual([ 1, 2, 3 ])
+ expect(arr).toEqual([1, 2, 3])
})
})
describe('static extend()', () => {
it('adds new method names to the List', () => {
- List.extend([ 'fooBar' ])
+ List.extend(['fooBar'])
expect(new List().fooBar).toEqual(any(Function))
const obj = { fooBar: createSpy() }
- new List([ obj ]).fooBar()
+ new List([obj]).fooBar()
expect(obj.fooBar).toHaveBeenCalled()
delete List.prototype.fooBar
it('skips reserved names', () => {
const { constructor, each, toArray } = List.prototype
- List.extend([ 'constructor', 'each', 'toArray' ])
- expect(List.prototype).toEqual(objectContaining({ constructor, each, toArray }))
+ List.extend(['constructor', 'each', 'toArray'])
+ expect(List.prototype).toEqual(
+ objectContaining({ constructor, each, toArray })
+ )
})
it('skips private methods starting with an underscore', () => {
- List.extend([ '_private' ])
+ List.extend(['_private'])
expect(new List()._private).toBe(undefined)
})
})
const comp = { a: 2, b: 0, c: 0, d: 2, e: 100, f: 50 }
describe('initialization', () => {
-
it('creates a new matrix with default values', () => {
const matrix = new Matrix()
- expect(matrix).toEqual(objectContaining(
- { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }
- ))
+ expect(matrix).toEqual(
+ objectContaining({ a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 })
+ )
})
it('parses the current transform matrix from an element', () => {
})
it('parses an array correctly', () => {
- const matrix = new Matrix([ 2, 0, 0, 2, 100, 50 ])
+ const matrix = new Matrix([2, 0, 0, 2, 100, 50])
expect(matrix).toEqual(objectContaining(comp))
})
})
it('parses a transform object correctly', () => {
- const matrix = new Matrix({ scale: 2, translate: [ 100, 50 ] })
+ const matrix = new Matrix({ scale: 2, translate: [100, 50] })
expect(matrix).toEqual(objectContaining(comp))
})
describe('decompose()', () => {
it('decomposes a matrix properly', () => {
- var matrix = new Matrix().scale(3, 2.5).shear(4).rotate(30).translate(20, 30)
+ var matrix = new Matrix()
+ .scale(3, 2.5)
+ .shear(4)
+ .rotate(30)
+ .translate(20, 30)
var decomposed = matrix.decompose()
expect(decomposed.scaleX).toBeCloseTo(3)
expect(decomposed.scaleY).toBeCloseTo(2.5)
})
it('can be recomposed to the same matrix', () => {
- var matrix = new Matrix().scale(3, 2.5).shear(4).rotate(30).translate(20, 30)
+ var matrix = new Matrix()
+ .scale(3, 2.5)
+ .shear(4)
+ .rotate(30)
+ .translate(20, 30)
var decomposed = matrix.decompose()
// Get rid of the matrix values before recomposing with the matrix constructor
it('inverses matrix', () => {
var matrix1 = new Matrix(2, 0, 0, 5, 4, 3)
var matrix2 = matrix1.inverse()
- var abcdef = [ 0.5, 0, 0, 0.2, -2, -0.6 ]
+ var abcdef = [0.5, 0, 0, 0.2, -2, -0.6]
for (var i in 'abcdef') {
expect(matrix2['abcdef'[i]]).toBeCloseTo(abcdef[i])
it('throws if matrix is not invertible', () => {
const matrix = new Matrix(0, 0, 0, 0, 0, 0)
- expect(() => matrix.inverse()).toThrowError('Cannot invert matrix(0,0,0,0,0,0)')
+ expect(() => matrix.inverse()).toThrowError(
+ 'Cannot invert matrix(0,0,0,0,0,0)'
+ )
})
})
describe('around()', () => {
it('performs a matrix operation around an origin by shifting the origin to 0,0', () => {
- const matrix = new Matrix(1, 0, 0, 1, 0, 0).around(10, 10, new Matrix().scale(2))
+ const matrix = new Matrix(1, 0, 0, 1, 0, 0).around(
+ 10,
+ 10,
+ new Matrix().scale(2)
+ )
expect(matrix).toEqual(new Matrix(2, 0, 0, 2, -10, -10))
})
it('defaults to around center of 0,0', () => {
- const matrix = new Matrix(1, 0, 0, 1, 0, 0).around(0, 0, new Matrix().scale(2))
+ const matrix = new Matrix(1, 0, 0, 1, 0, 0).around(
+ 0,
+ 0,
+ new Matrix().scale(2)
+ )
expect(matrix).toEqual(new Matrix(2, 0, 0, 2, 0, 0))
})
describe('toArray', () => {
it('converts matrix to array', () => {
const arr = new Matrix().toArray()
- expect(arr).toEqual([ 1, 0, 0, 1, 0, 0 ])
+ expect(arr).toEqual([1, 0, 0, 1, 0, 0])
})
})
describe('static', () => {
describe('fromArray()', () => {
it('creates a matrix like object from an array', () => {
- const matrix = Matrix.fromArray([ 1, 2, 3, 4, 5, 6 ])
+ const matrix = Matrix.fromArray([1, 2, 3, 4, 5, 6])
expect(matrix).not.toEqual(any(Matrix))
expect(matrix).toEqual(new Matrix(1, 2, 3, 4, 5, 6).valueOf())
})
describe('formatTransforms()', () => {
it('formats all transform input varieties to a canonical form', () => {
- expect(Matrix.formatTransforms({
- flip: true,
- skew: 5,
- scale: 5,
- originX: 5,
- originY: 5,
- positionX: 5,
- positionY: 5,
- translateX: 5,
- translateY: 5,
- relativeX: 5,
- relativeY: 5
- })).toEqual({ scaleX: -5, scaleY: -5, skewX: 5, skewY: 5, shear: 0, theta: 0, rx: 5, ry: 5, tx: 5, ty: 5, ox: 5, oy: 5, px: 5, py: 5 })
+ expect(
+ Matrix.formatTransforms({
+ flip: true,
+ skew: 5,
+ scale: 5,
+ originX: 5,
+ originY: 5,
+ positionX: 5,
+ positionY: 5,
+ translateX: 5,
+ translateY: 5,
+ relativeX: 5,
+ relativeY: 5
+ })
+ ).toEqual({
+ scaleX: -5,
+ scaleY: -5,
+ skewX: 5,
+ skewY: 5,
+ shear: 0,
+ theta: 0,
+ rx: 5,
+ ry: 5,
+ tx: 5,
+ ty: 5,
+ ox: 5,
+ oy: 5,
+ px: 5,
+ py: 5
+ })
})
it('respects flip=x', () => {
- expect(Matrix.formatTransforms({
- flip: 'x',
- scale: [ 1, 2 ],
- skew: [ 1, 2 ]
- })).toEqual(objectContaining({ scaleX: -1, scaleY: 2, skewX: 1, skewY: 2 }))
+ expect(
+ Matrix.formatTransforms({
+ flip: 'x',
+ scale: [1, 2],
+ skew: [1, 2]
+ })
+ ).toEqual(
+ objectContaining({ scaleX: -1, scaleY: 2, skewX: 1, skewY: 2 })
+ )
})
it('respects flip=y', () => {
- expect(Matrix.formatTransforms({
- flip: 'y',
- scaleX: 1,
- scaleY: 2,
- skewX: 1,
- skewY: 2
- })).toEqual(objectContaining({ scaleX: 1, scaleY: -2, skewX: 1, skewY: 2 }))
+ expect(
+ Matrix.formatTransforms({
+ flip: 'y',
+ scaleX: 1,
+ scaleY: 2,
+ skewX: 1,
+ skewY: 2
+ })
+ ).toEqual(
+ objectContaining({ scaleX: 1, scaleY: -2, skewX: 1, skewY: 2 })
+ )
})
it('makes position NaN if not passed', () => {
- expect(Matrix.formatTransforms({
- flip: 'y',
- scaleX: 1,
- scaleY: 2,
- skewX: 1,
- skewY: 2
- })).toEqual(objectContaining({ px: NaN, py: NaN }))
+ expect(
+ Matrix.formatTransforms({
+ flip: 'y',
+ scaleX: 1,
+ scaleY: 2,
+ skewX: 1,
+ skewY: 2
+ })
+ ).toEqual(objectContaining({ px: NaN, py: NaN }))
})
})
})
})
it('does extra work for nested svgs because firefox needs it', () => {
- const spy = spyOn(getWindow().SVGGraphicsElement.prototype, 'getScreenCTM')
+ const spy = spyOn(
+ getWindow().SVGGraphicsElement.prototype,
+ 'getScreenCTM'
+ )
const svg = SVG().nested()
svg.screenCTM()
expect(spy).toHaveBeenCalled()
beforeEach(() => {
p1 = new PathArray('m10 10 h 80 v 80 h -80 l 300 400 z')
- p2 = new PathArray('m10 80 c 40 10 65 10 95 80 s 150 150 180 80 t 300 300 q 52 10 95 80 z')
+ p2 = new PathArray(
+ 'm10 80 c 40 10 65 10 95 80 s 150 150 180 80 t 300 300 q 52 10 95 80 z'
+ )
p3 = new PathArray('m80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 z')
})
it('parses flat arrays correctly', () => {
- const arr = new PathArray([ 'M', 0, 0, 'L', 100, 100, 'z' ])
+ const arr = new PathArray(['M', 0, 0, 'L', 100, 100, 'z'])
expect(arr.toString()).toBe('M0 0L100 100Z ')
})
it('parses nested arrays correctly', () => {
- const arr = new PathArray([ [ 'M', 0, 0 ], [ 'L', 100, 100 ], [ 'z' ] ])
+ const arr = new PathArray([['M', 0, 0], ['L', 100, 100], ['z']])
expect(arr.toString()).toBe('M0 0L100 100Z ')
})
it('returns the valueOf when PathArray is given', () => {
const p = new PathArray('m10 10 h 80 v 80 h -80 l 300 400 z')
- expect((new PathArray(p))).toEqual(p)
+ expect(new PathArray(p)).toEqual(p)
})
describe('move()', () => {
it('moves all points in a straight path', () => {
- expect(p1.move(100, 200).toString()).toBe('M100 200H180V280H100L400 680Z ')
+ expect(p1.move(100, 200).toString()).toBe(
+ 'M100 200H180V280H100L400 680Z '
+ )
})
it('moves all points in a curved path', () => {
- expect(p2.move(100, 200).toString()).toBe('M100 200C140 210 165 210 195 280S345 430 375 360T675 660Q727 670 770 740Z ')
+ expect(p2.move(100, 200).toString()).toBe(
+ 'M100 200C140 210 165 210 195 280S345 430 375 360T675 660Q727 670 770 740Z '
+ )
})
it('moves all points in a arc path', () => {
- expect(p3.move(100, 200).toString()).toBe('M100 200A45 45 0 0 0 145 245L145 200Z ')
+ expect(p3.move(100, 200).toString()).toBe(
+ 'M100 200A45 45 0 0 0 145 245L145 200Z '
+ )
})
it('does nothing if passed number is not a number', () => {
describe('size()', () => {
it('resizes all points in a straight path', () => {
- expect(p1.size(600, 200).toString()).toBe('M10 10H170V43.333333333333336H10L610 210Z ')
+ expect(p1.size(600, 200).toString()).toBe(
+ 'M10 10H170V43.333333333333336H10L610 210Z '
+ )
})
it('resizes all points in a curved path', () => {
- expect(p2.size(600, 200).toString()).toBe('M10 80C45.82089552238806 83.70370370370371 68.2089552238806 83.70370370370371 95.07462686567165 109.62962962962963S229.40298507462686 165.1851851851852 256.2686567164179 139.25925925925927T524.9253731343283 250.37037037037038Q571.4925373134329 254.07407407407408 610 280Z ')
+ expect(p2.size(600, 200).toString()).toBe(
+ 'M10 80C45.82089552238806 83.70370370370371 68.2089552238806 83.70370370370371 95.07462686567165 109.62962962962963S229.40298507462686 165.1851851851852 256.2686567164179 139.25925925925927T524.9253731343283 250.37037037037038Q571.4925373134329 254.07407407407408 610 280Z '
+ )
})
it('resizes all points in a arc path', () => {
const expected = [
- [ 'M', 80, 80 ],
- [ 'A', 600, 200, 0, 0, 0, 680, 280 ],
- [ 'L', 680, 80 ],
- [ 'Z' ]
+ ['M', 80, 80],
+ ['A', 600, 200, 0, 0, 0, 680, 280],
+ ['L', 680, 80],
+ ['Z']
]
const toBeTested = p3.size(600, 200)
- for (let i = toBeTested.length; i--;) {
- expect(toBeTested[i].shift().toUpperCase()).toBe(expected[i].shift().toUpperCase())
- for (let j = toBeTested[i].length; j--;) {
+ for (let i = toBeTested.length; i--; ) {
+ expect(toBeTested[i].shift().toUpperCase()).toBe(
+ expected[i].shift().toUpperCase()
+ )
+ for (let j = toBeTested[i].length; j--; ) {
expect(toBeTested[i][j]).toBeCloseTo(expected[i][j])
}
}
var point
describe('initialization', () => {
-
describe('without a source', () => {
-
beforeEach(() => {
point = new Point()
})
expect(point.x).toBe(0)
expect(point.y).toBe(0)
})
-
})
describe('with x and y given', () => {
describe('with array given', () => {
it('creates a point from array', () => {
- var point = new Point([ 2, 4 ])
+ var point = new Point([2, 4])
expect(point.x).toBe(2)
expect(point.y).toBe(4)
describe('transform()', () => {
it('transforms a point with a matrix', () => {
- expect(new Point().transform(new Matrix({ translate: [ 10, 10 ] }))).toEqual(new Point(10, 10))
+ expect(
+ new Point().transform(new Matrix({ translate: [10, 10] }))
+ ).toEqual(new Point(10, 10))
})
it('transforms a point with a transformation object', () => {
- expect(new Point().transform({ translate: [ 10, 10 ] })).toEqual(new Point(10, 10))
+ expect(new Point().transform({ translate: [10, 10] })).toEqual(
+ new Point(10, 10)
+ )
})
})
describe('toArray()', () => {
it('creates an array representation of Point', () => {
const p = new Point(1, 2)
- expect(p.toArray()).toEqual([ 1, 2 ])
+ expect(p.toArray()).toEqual([1, 2])
})
})
describe('point()', () => {
it('transforms a screen point into the coordinate system of the element', () => {
const rect = new Rect()
- spyOn(rect, 'screenCTM').and.callFake(() => new Matrix(1, 0, 0, 1, 20, 20))
+ spyOn(rect, 'screenCTM').and.callFake(
+ () => new Matrix(1, 0, 0, 1, 20, 20)
+ )
expect(rect.point({ x: 10, y: 10 })).toEqual(new Point(-10, -10))
})
})
const squareString = '0,0 1,0 1,1 0,1'
describe('()', () => {
-
it('parses a string to a point array', () => {
var array = new PointArray('0,1 -.05,7.95 1000.0001,-200.222')
- expect(array.valueOf()).toEqual([ [ 0, 1 ], [ -0.05, 7.95 ], [ 1000.0001, -200.222 ] ])
+ expect(array.valueOf()).toEqual([
+ [0, 1],
+ [-0.05, 7.95],
+ [1000.0001, -200.222]
+ ])
})
it('parses a points array correctly to string', () => {
- var array = new PointArray([ [ 0, 0.15 ], [ -100, -3.141592654 ], [ 50, 100 ] ])
+ var array = new PointArray([
+ [0, 0.15],
+ [-100, -3.141592654],
+ [50, 100]
+ ])
expect(array + '').toBe('0,0.15 -100,-3.141592654 50,100')
})
it('parses a flat array of x/y coordinates to a point array', () => {
- var array = new PointArray([ 1, 4, 5, 68, 12, 24 ])
- expect(array.valueOf()).toEqual([ [ 1, 4 ], [ 5, 68 ], [ 12, 24 ] ])
+ var array = new PointArray([1, 4, 5, 68, 12, 24])
+ expect(array.valueOf()).toEqual([
+ [1, 4],
+ [5, 68],
+ [12, 24]
+ ])
})
it('parses points with space delimitered x/y coordinates', () => {
- var array = new PointArray('221.08 191.79 0.46 191.79 0.46 63.92 63.8 0.46 284.46 0.46 284.46 128.37 221.08 191.79')
- expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79')
+ var array = new PointArray(
+ '221.08 191.79 0.46 191.79 0.46 63.92 63.8 0.46 284.46 0.46 284.46 128.37 221.08 191.79'
+ )
+ expect(array + '').toBe(
+ '221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79'
+ )
})
it('parses points with comma delimitered x/y coordinates', () => {
- var array = new PointArray('221.08,191.79,0.46,191.79,0.46,63.92,63.8,0.46,284.46,0.46,284.46,128.37,221.08,191.79')
- expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79')
+ var array = new PointArray(
+ '221.08,191.79,0.46,191.79,0.46,63.92,63.8,0.46,284.46,0.46,284.46,128.37,221.08,191.79'
+ )
+ expect(array + '').toBe(
+ '221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79'
+ )
})
it('parses points with comma and space delimitered x/y coordinates', () => {
- var array = new PointArray('221.08, 191.79, 0.46, 191.79, 0.46, 63.92, 63.8, 0.46, 284.46, 0.46, 284.46, 128.37, 221.08, 191.79')
- expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79')
+ var array = new PointArray(
+ '221.08, 191.79, 0.46, 191.79, 0.46, 63.92, 63.8, 0.46, 284.46, 0.46, 284.46, 128.37, 221.08, 191.79'
+ )
+ expect(array + '').toBe(
+ '221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79'
+ )
})
it('parses points with space and comma delimitered x/y coordinates', () => {
- var array = new PointArray('221.08 ,191.79 ,0.46 ,191.79 ,0.46 ,63.92 ,63.8 ,0.46 ,284.46 ,0.46 ,284.46 ,128.37 ,221.08 ,191.79')
- expect(array + '').toBe('221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79')
+ var array = new PointArray(
+ '221.08 ,191.79 ,0.46 ,191.79 ,0.46 ,63.92 ,63.8 ,0.46 ,284.46 ,0.46 ,284.46 ,128.37 ,221.08 ,191.79'
+ )
+ expect(array + '').toBe(
+ '221.08,191.79 0.46,191.79 0.46,63.92 63.8,0.46 284.46,0.46 284.46,128.37 221.08,191.79'
+ )
})
it('parses points with redundant spaces at the end', () => {
- var array = new PointArray('2176.6,1708.8 2176.4,1755.8 2245.8,1801.5 2297,1787.8 ')
- expect(array + '').toBe('2176.6,1708.8 2176.4,1755.8 2245.8,1801.5 2297,1787.8')
+ var array = new PointArray(
+ '2176.6,1708.8 2176.4,1755.8 2245.8,1801.5 2297,1787.8 '
+ )
+ expect(array + '').toBe(
+ '2176.6,1708.8 2176.4,1755.8 2245.8,1801.5 2297,1787.8'
+ )
})
it('parses points with space delimitered x/y coordinates - even with leading or trailing space', () => {
it('parses odd number of points in a flat array of x/y coordinates and silently remove the odd point', () => {
// this is according to spec: https://svgwg.org/svg2-draft/shapes.html#DataTypePoints
- var array = new PointArray([ 1, 2, 3 ])
- expect(array.valueOf()).toEqual([ [ 1, 2 ] ])
+ var array = new PointArray([1, 2, 3])
+ expect(array.valueOf()).toEqual([[1, 2]])
})
-
})
describe('move()', () => {
it('moves the whole array by the passed value', () => {
- const arr = new PointArray([ 1, 2, 3, 4 ]).move(10, 10)
- expect(arr.toArray()).toEqual([ 10, 10, 12, 12 ])
+ const arr = new PointArray([1, 2, 3, 4]).move(10, 10)
+ expect(arr.toArray()).toEqual([10, 10, 12, 12])
})
it('does nothing if values not numbers', () => {
- const arr = new PointArray([ 1, 2, 3, 4 ]).move()
- expect(arr.toArray()).toEqual([ 1, 2, 3, 4 ])
+ const arr = new PointArray([1, 2, 3, 4]).move()
+ expect(arr.toArray()).toEqual([1, 2, 3, 4])
})
})
describe('size()', () => {
it('correctly sizes the points over the whole area', () => {
- var array = new PointArray([ 10, 10, 20, 20, 30, 30 ])
- expect(array.size(60, 60).valueOf()).toEqual([ [ 10, 10 ], [ 40, 40 ], [ 70, 70 ] ])
+ var array = new PointArray([10, 10, 20, 20, 30, 30])
+ expect(array.size(60, 60).valueOf()).toEqual([
+ [10, 10],
+ [40, 40],
+ [70, 70]
+ ])
})
it('let coordinates untouched when width/height is zero', () => {
- var array = new PointArray([ 10, 10, 10, 20, 10, 30 ])
- expect(array.size(60, 60).valueOf()).toEqual([ [ 10, 10 ], [ 10, 40 ], [ 10, 70 ] ])
-
- array = new PointArray([ 10, 10, 20, 10, 30, 10 ])
- expect(array.size(60, 60).valueOf()).toEqual([ [ 10, 10 ], [ 40, 10 ], [ 70, 10 ] ])
+ var array = new PointArray([10, 10, 10, 20, 10, 30])
+ expect(array.size(60, 60).valueOf()).toEqual([
+ [10, 10],
+ [10, 40],
+ [10, 70]
+ ])
+
+ array = new PointArray([10, 10, 20, 10, 30, 10])
+ expect(array.size(60, 60).valueOf()).toEqual([
+ [10, 10],
+ [40, 10],
+ [70, 10]
+ ])
})
-
})
describe('toString()', () => {
describe('toLine', () => {
it('returns an object which can be passed to a line as point attributes', () => {
- const arr = new PointArray([ 1, 2, 3, 4 ])
+ const arr = new PointArray([1, 2, 3, 4])
expect(arr.toLine()).toEqual({ x1: 1, y1: 2, x2: 3, y2: 4 })
})
})
describe('transform()', () => {
it('translates correctly', () => {
const square = new PointArray(squareString)
- const translation = new Matrix({ translate: [ 2, 1 ] })
+ const translation = new Matrix({ translate: [2, 1] })
const newSquare = square.transform(translation)
expect(newSquare.toString()).toEqual('2,1 3,1 3,2 2,2')
})
it('works with transform object instead of matrix', () => {
const square = new PointArray(squareString)
- const newSquare = square.transform({ translate: [ 2, 1 ] })
+ const newSquare = square.transform({ translate: [2, 1] })
expect(newSquare.toString()).toEqual('2,1 3,1 3,2 2,2')
})
})
describe('SVGArray.js', () => {
describe('()', () => {
-
it('preallocates memory if only number is passed', () => {
const arr = new SVGArray(1)
expect(arr.length).toBe(1)
it('parses a matrix array correctly to string', () => {
const array = new SVGArray([
- 0.343, 0.669, 0.119, 0, 0,
- 0.249, -0.626, 0.130, 0, 0,
- 0.172, 0.334, 0.111, 0, 0,
- 0.000, 0.000, 0.000, 1, -0
+ 0.343, 0.669, 0.119, 0, 0, 0.249, -0.626, 0.13, 0, 0, 0.172, 0.334,
+ 0.111, 0, 0, 0.0, 0.0, 0.0, 1, -0
])
- expect(array + '').toBe('0.343 0.669 0.119 0 0 0.249 -0.626 0.13 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0')
+ expect(array + '').toBe(
+ '0.343 0.669 0.119 0 0 0.249 -0.626 0.13 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0'
+ )
})
it('parses space separated string and converts it to array', () => {
- expect((new SVGArray('1 2 3 4')).valueOf()).toEqual([ 1, 2, 3, 4 ])
+ expect(new SVGArray('1 2 3 4').valueOf()).toEqual([1, 2, 3, 4])
})
it('parses comma separated string and converts it to array', () => {
- expect((new SVGArray('1,2,3,4')).valueOf()).toEqual([ 1, 2, 3, 4 ])
+ expect(new SVGArray('1,2,3,4').valueOf()).toEqual([1, 2, 3, 4])
})
-
})
describe('reverse()', () => {
it('reverses the array', () => {
- const array = new SVGArray([ 1, 2, 3, 4, 5 ]).reverse()
- expect(array.valueOf()).toEqual([ 5, 4, 3, 2, 1 ])
+ const array = new SVGArray([1, 2, 3, 4, 5]).reverse()
+ expect(array.valueOf()).toEqual([5, 4, 3, 2, 1])
})
it('returns itself', () => {
describe('clone()', () => {
it('creates a shallow clone of the array', () => {
- const array = new SVGArray([ 1, 2, 3, 4, 5 ])
+ const array = new SVGArray([1, 2, 3, 4, 5])
const clone = array.clone()
expect(array).toEqual(clone)
})
it('also works with PointArray (one depths clone)', () => {
- const array = new PointArray([ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ])
+ const array = new PointArray([
+ [1, 2],
+ [3, 4],
+ [5, 6]
+ ])
const clone = array.clone()
expect(array).toEqual(clone)
expect(array).not.toBe(clone)
- for (let i = array.length; i--;) {
+ for (let i = array.length; i--; ) {
expect(array[i]).not.toBe(clone[i])
}
})
it('also works with PathArray (one depths clone)', () => {
- const array = new PathArray([ [ 'M', 1, 2 ], [ 'L', 3, 4 ], [ 'L', 5, 6 ] ])
+ const array = new PathArray([
+ ['M', 1, 2],
+ ['L', 3, 4],
+ ['L', 5, 6]
+ ])
const clone = array.clone()
expect(array).toEqual(clone)
expect(array).not.toBe(clone)
- for (let i = array.length; i--;) {
+ for (let i = array.length; i--; ) {
expect(array[i]).not.toBe(clone[i])
}
})
describe('toSet()', () => {
it('creates a Set from the Array', () => {
- const set = new SVGArray([ 1, 1, 2, 3 ]).toSet()
+ const set = new SVGArray([1, 1, 2, 3]).toSet()
expect(set).toEqual(any(Set))
- expect(set).toEqual(new Set([ 1, 2, 3 ]))
+ expect(set).toEqual(new Set([1, 2, 3]))
})
})
})
})
it('falls back to maximum value if given number is positive infinite', () => {
- number = new SVGNumber(1.7976931348623157E+10308)
- expect(number.value).toBe(3.4e+38)
+ // eslint-disable-next-line no-loss-of-precision
+ number = new SVGNumber(1.7976931348623157e10308)
+ expect(number.value).toBe(3.4e38)
})
it('falls back to minimum value if given number is negative infinite', () => {
- number = new SVGNumber(-1.7976931348623157E+10308)
- expect(number.value).toBe(-3.4e+38)
+ // eslint-disable-next-line no-loss-of-precision
+ number = new SVGNumber(-1.7976931348623157e10308)
+ expect(number.value).toBe(-3.4e38)
})
})
const rect = makeInstance('<rect width="200px" />')
expect(adoptSpy).toHaveBeenCalledWith(any(Node))
- expect(adoptSpy).toHaveBeenCalledWith(objectContaining({ nodeName: 'rect' }))
+ expect(adoptSpy).toHaveBeenCalledWith(
+ objectContaining({ nodeName: 'rect' })
+ )
expect(rect).toEqual(any(Rect))
expect(rect.parent()).toBe(null)
})
const div = makeInstance('<div />', true)
expect(adoptSpy).toHaveBeenCalledWith(any(Node))
- expect(adoptSpy).toHaveBeenCalledWith(objectContaining({ nodeName: 'DIV', namespaceURI: 'http://www.w3.org/1999/xhtml' }))
+ expect(adoptSpy).toHaveBeenCalledWith(
+ objectContaining({
+ nodeName: 'DIV',
+ namespaceURI: 'http://www.w3.org/1999/xhtml'
+ })
+ )
expect(div).toEqual(any(Dom))
expect(div.parent()).toBe(null)
})
const rect = makeInstance(create('rect'))
expect(adoptSpy).toHaveBeenCalledWith(any(Node))
- expect(adoptSpy).toHaveBeenCalledWith(objectContaining({ nodeName: 'rect' }))
+ expect(adoptSpy).toHaveBeenCalledWith(
+ objectContaining({ nodeName: 'rect' })
+ )
expect(rect).toEqual(any(Rect))
})
})
const A = class {}
extend(A, {
- test () { this.prop = 'test'; return this }
+ test() {
+ this.prop = 'test'
+ return this
+ }
})
expect(typeof A.prototype.test).toBe('function')
const B = class {}
const C = class {}
- extend([ A, B, C ], {
- test () { this.prop = 'test'; return this }
+ extend([A, B, C], {
+ test() {
+ this.prop = 'test'
+ return this
+ }
})
expect(typeof A.prototype.test).toBe('function')
const A = class {}
extend(A, {
test: wrapWithAttrCheck(function () {
- this.prop = 'test'; return this
+ this.prop = 'test'
+ return this
}),
attr: attrSpy
})
/* globals describe, expect, it */
-import { registerMethods, getMethodsFor, getMethodNames } from '../../../src/utils/methods.js'
+import {
+ registerMethods,
+ getMethodsFor,
+ getMethodNames
+} from '../../../src/utils/methods.js'
describe('methods.js', () => {
describe('registerMethods() / getMethodsFor() / addMethodNames / getMethodNames()', () => {
describe('pathParser.js', () => {
describe('pathParser()', () => {
it('parses all paths correctly', () => {
- expect(pathParser('M2,0a2 2 0 00-2 2a2 2 0 002 2a.5.5 0 011 0z')).toEqual([
- [ 'M', 2, 0 ],
- [ 'A', 2, 2, 0, 0, 0, 0, 2 ],
- [ 'A', 2, 2, 0, 0, 0, 2, 4 ],
- [ 'A', 0.5, 0.5, 0, 0, 1, 3, 4 ],
- [ 'Z' ]
- ])
-
- expect(pathParser('M2,0a2 2 0 00-2 2a2 2 0 002 2a.5.5 0 111 0z')).toEqual([
- [ 'M', 2, 0 ],
- [ 'A', 2, 2, 0, 0, 0, 0, 2 ],
- [ 'A', 2, 2, 0, 0, 0, 2, 4 ],
- [ 'A', 0.5, 0.5, 0, 1, 1, 3, 4 ],
- [ 'Z' ]
- ])
+ expect(pathParser('M2,0a2 2 0 00-2 2a2 2 0 002 2a.5.5 0 011 0z')).toEqual(
+ [
+ ['M', 2, 0],
+ ['A', 2, 2, 0, 0, 0, 0, 2],
+ ['A', 2, 2, 0, 0, 0, 2, 4],
+ ['A', 0.5, 0.5, 0, 0, 1, 3, 4],
+ ['Z']
+ ]
+ )
+
+ expect(pathParser('M2,0a2 2 0 00-2 2a2 2 0 002 2a.5.5 0 111 0z')).toEqual(
+ [
+ ['M', 2, 0],
+ ['A', 2, 2, 0, 0, 0, 0, 2],
+ ['A', 2, 2, 0, 0, 0, 2, 4],
+ ['A', 0.5, 0.5, 0, 1, 1, 3, 4],
+ ['Z']
+ ]
+ )
expect(pathParser('m10 10 h 80 v 80 h -80 l 300 400 z')).toEqual([
- [ 'M', 10, 10 ],
- [ 'H', 90 ],
- [ 'V', 90 ],
- [ 'H', 10 ],
- [ 'L', 310, 490 ],
- [ 'Z' ]
- ])
-
- expect(pathParser('m10 80 c 40 10 65 10 95 80 s 150 150 180 80 t 300 300 q 52 10 95 80 z')).toEqual([
- [ 'M', 10, 80 ],
- [ 'C', 50, 90, 75, 90, 105, 160 ],
- [ 'S', 255, 310, 285, 240 ],
- [ 'T', 585, 540 ],
- [ 'Q', 637, 550, 680, 620 ],
- [ 'Z' ]
- ])
-
- expect(pathParser('m80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 z')).toEqual([
- [ 'M', 80, 80 ],
- [ 'A', 45, 45, 0, 0, 0, 125, 125 ],
- [ 'L', 125, 80 ],
- [ 'Z' ]
- ])
-
- expect(pathParser('M215.458,245.23c0,0,77.403,0,94.274,0S405,216.451,405,138.054S329.581,15,287.9,15c-41.68,0-139.924,0-170.688,0C86.45,15,15,60.65,15,134.084c0,73.434,96.259,112.137,114.122,112.137C146.984,246.221,215.458,245.23,215.458,245.23z')).toEqual([
- [ 'M', 215.458, 245.23 ],
- [ 'C', 215.458, 245.23, 292.861, 245.23, 309.73199999999997, 245.23 ],
- [ 'S', 405, 216.451, 405, 138.054 ],
- [ 'S', 329.581, 15, 287.9, 15 ],
- [ 'C', 246.21999999999997, 15, 147.97599999999997, 15, 117.21199999999999, 15 ],
- [ 'C', 86.45, 15, 15, 60.65, 15, 134.084 ],
- [ 'C', 15, 207.518, 111.259, 246.221, 129.122, 246.221 ],
- [ 'C', 146.984, 246.221, 215.458, 245.23, 215.458, 245.23 ],
- [ 'Z' ]
- ])
-
- expect(pathParser('M10 10-45-30.5.5 .89L2e-2.5.5-.5C.5.5.5.5.5.5L-3-4z')).toEqual([
- [ 'M', 10, 10 ],
- [ 'L', -45, -30.5 ],
- [ 'L', 0.5, 0.89 ],
- [ 'L', 0.02, 0.5 ],
- [ 'L', 0.5, -0.5 ],
- [ 'C', 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ],
- [ 'L', -3, -4 ],
- [ 'Z' ]
- ])
-
- expect(pathParser('m 0,0 0,3189 2209,0 0,-3189 -2209,0 z m 154,154 1901,0 0,2881 -1901,0 0,-2881 z')).toEqual([
- [ 'M', 0, 0 ],
- [ 'L', 0, 3189 ],
- [ 'L', 2209, 3189 ],
- [ 'L', 2209, 0 ],
- [ 'L', 0, 0 ],
- [ 'Z' ],
- [ 'M', 154, 154 ],
- [ 'L', 2055, 154 ],
- [ 'L', 2055, 3035 ],
- [ 'L', 154, 3035 ],
- [ 'L', 154, 154 ],
- [ 'Z' ]
+ ['M', 10, 10],
+ ['H', 90],
+ ['V', 90],
+ ['H', 10],
+ ['L', 310, 490],
+ ['Z']
+ ])
+
+ expect(
+ pathParser(
+ 'm10 80 c 40 10 65 10 95 80 s 150 150 180 80 t 300 300 q 52 10 95 80 z'
+ )
+ ).toEqual([
+ ['M', 10, 80],
+ ['C', 50, 90, 75, 90, 105, 160],
+ ['S', 255, 310, 285, 240],
+ ['T', 585, 540],
+ ['Q', 637, 550, 680, 620],
+ ['Z']
+ ])
+
+ expect(pathParser('m80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 z')).toEqual(
+ [['M', 80, 80], ['A', 45, 45, 0, 0, 0, 125, 125], ['L', 125, 80], ['Z']]
+ )
+
+ expect(
+ pathParser(
+ 'M215.458,245.23c0,0,77.403,0,94.274,0S405,216.451,405,138.054S329.581,15,287.9,15c-41.68,0-139.924,0-170.688,0C86.45,15,15,60.65,15,134.084c0,73.434,96.259,112.137,114.122,112.137C146.984,246.221,215.458,245.23,215.458,245.23z'
+ )
+ ).toEqual([
+ ['M', 215.458, 245.23],
+ ['C', 215.458, 245.23, 292.861, 245.23, 309.73199999999997, 245.23],
+ ['S', 405, 216.451, 405, 138.054],
+ ['S', 329.581, 15, 287.9, 15],
+ [
+ 'C',
+ 246.21999999999997,
+ 15,
+ 147.97599999999997,
+ 15,
+ 117.21199999999999,
+ 15
+ ],
+ ['C', 86.45, 15, 15, 60.65, 15, 134.084],
+ ['C', 15, 207.518, 111.259, 246.221, 129.122, 246.221],
+ ['C', 146.984, 246.221, 215.458, 245.23, 215.458, 245.23],
+ ['Z']
+ ])
+
+ expect(
+ pathParser('M10 10-45-30.5.5 .89L2e-2.5.5-.5C.5.5.5.5.5.5L-3-4z')
+ ).toEqual([
+ ['M', 10, 10],
+ ['L', -45, -30.5],
+ ['L', 0.5, 0.89],
+ ['L', 0.02, 0.5],
+ ['L', 0.5, -0.5],
+ ['C', 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
+ ['L', -3, -4],
+ ['Z']
+ ])
+
+ expect(
+ pathParser(
+ 'm 0,0 0,3189 2209,0 0,-3189 -2209,0 z m 154,154 1901,0 0,2881 -1901,0 0,-2881 z'
+ )
+ ).toEqual([
+ ['M', 0, 0],
+ ['L', 0, 3189],
+ ['L', 2209, 3189],
+ ['L', 2209, 0],
+ ['L', 0, 0],
+ ['Z'],
+ ['M', 154, 154],
+ ['L', 2055, 154],
+ ['L', 2055, 3035],
+ ['L', 154, 3035],
+ ['L', 154, 154],
+ ['Z']
])
expect(pathParser('m 0,0 a 45 45, 0, 0, 0, 125 125')).toEqual([
- [ 'M', 0, 0 ],
- [ 'A', 45, 45, 0, 0, 0, 125, 125 ]
+ ['M', 0, 0],
+ ['A', 45, 45, 0, 0, 0, 125, 125]
])
expect(pathParser('M10 10 80 80 30 30 Z')).toEqual([
- [ 'M', 10, 10 ],
- [ 'L', 80, 80 ],
- [ 'L', 30, 30 ],
- [ 'Z' ]
+ ['M', 10, 10],
+ ['L', 80, 80],
+ ['L', 30, 30],
+ ['Z']
])
expect(pathParser('M10 10L.5.5.3.3Z')).toEqual([
- [ 'M', 10, 10 ],
- [ 'L', 0.5, 0.5 ],
- [ 'L', 0.3, 0.3 ],
- [ 'Z' ]
+ ['M', 10, 10],
+ ['L', 0.5, 0.5],
+ ['L', 0.3, 0.3],
+ ['Z']
])
// "a" commands without optional whitespace around the flag params and ending coordinate pair
expect(pathParser('a32 32 0 00.03-45.22', false)).toEqual([
- [ 'a', 32.0, 32.0, 0.0, 0.0, 0.0, 0.03, -45.22 ],
+ ['a', 32.0, 32.0, 0.0, 0.0, 0.0, 0.03, -45.22]
])
expect(pathParser('a48 48 0 1148-48', false)).toEqual([
- [ 'a', 48.0, 48.0, 0.0, 1.0, 1.0, 48.0, -48.0],
+ ['a', 48.0, 48.0, 0.0, 1.0, 1.0, 48.0, -48.0]
])
expect(pathParser('a82.6 82.6 0 0033.48-20.25', false)).toEqual([
- [ 'a', 82.6, 82.6, 0.0, 0.0, 0.0, 33.48, -20.25 ],
+ ['a', 82.6, 82.6, 0.0, 0.0, 0.0, 33.48, -20.25]
])
expect(pathParser('a82.45 82.45 0 00-20.24 33.47', false)).toEqual([
- [ 'a', 82.45, 82.45, 0.0, 0.0, 0.0, -20.24, 33.47 ],
+ ['a', 82.45, 82.45, 0.0, 0.0, 0.0, -20.24, 33.47]
])
expect(pathParser('a2.51 2.51 0 01.25.32', false)).toEqual([
- [ 'a', 2.51, 2.51, 0, 0, 1, 0.25, 0.32 ],
+ ['a', 2.51, 2.51, 0, 0, 1, 0.25, 0.32]
])
expect(pathParser('a2.51 2.51 0 00.25.32', false)).toEqual([
- [ 'a', 2.51, 2.51, 0, 0, 0, 0.25, 0.32 ],
+ ['a', 2.51, 2.51, 0, 0, 0, 0.25, 0.32]
])
expect(pathParser('a2.51 2.51 0 000.25.32', false)).toEqual([
- [ 'a', 2.51, 2.51, 0, 0, 0, 0.25, 0.32 ],
+ ['a', 2.51, 2.51, 0, 0, 0, 0.25, 0.32]
])
expect(pathParser('a48 48 0 1148-48 48 48 0 01-48 48', false)).toEqual([
- [ 'a', 48.0, 48.0, 0.0, 1.0, 1.0, 48.0, -48.0 ],
- [ 'a', 48.0, 48.0, 0.0, 0.0, 1.0, -48.0, 48.0 ]
+ ['a', 48.0, 48.0, 0.0, 1.0, 1.0, 48.0, -48.0],
+ ['a', 48.0, 48.0, 0.0, 0.0, 1.0, -48.0, 48.0]
])
})
})
var arr2
beforeEach(function () {
- arr1 = [ 1, 2, 3, 4 ]
+ arr1 = [1, 2, 3, 4]
arr2 = map(arr1, function (el) {
return el * 2
})
})
it('executes a function on every element and returns the result in a new array', function () {
- expect(arr2).toEqual([ 2, 4, 6, 8 ])
+ expect(arr2).toEqual([2, 4, 6, 8])
})
})
var arr2
beforeEach(function () {
- arr1 = [ 1, 2, 3, 4 ]
+ arr1 = [1, 2, 3, 4]
arr2 = filter(arr1, function (el) {
return el % 2 === 0
})
})
it('filters elements by function', function () {
- expect(arr2).toEqual([ 2, 4 ])
+ expect(arr2).toEqual([2, 4])
})
})
var el = { bbox: () => ({ width: 200, height: 100 }) }
it('calculates height proportionally', function () {
- expect(proportionalSize(el, 400, null)).toEqual({ width: 400, height: 200 })
+ expect(proportionalSize(el, 400, null)).toEqual({
+ width: 400,
+ height: 200
+ })
})
it('calculates width proportionally', function () {
- expect(proportionalSize(el, null, 200)).toEqual({ width: 400, height: 200 })
+ expect(proportionalSize(el, null, 200)).toEqual({
+ width: 400,
+ height: 200
+ })
})
it('prefers passed box over element', function () {
- expect(proportionalSize(el, 300, null, box)).toEqual({ width: 300, height: 200 })
- expect(proportionalSize(el, null, 200, box)).toEqual({ width: 300, height: 200 })
+ expect(proportionalSize(el, 300, null, box)).toEqual({
+ width: 300,
+ height: 200
+ })
+ expect(proportionalSize(el, null, 200, box)).toEqual({
+ width: 300,
+ height: 200
+ })
})
})
var el = { bbox: () => ({ width: 200, height: 100, x: 300, y: 400 }) }
it('gets the origin from [ox, oy]', function () {
- var origin = { origin: [ 10, 20 ] }
- expect(getOrigin(origin, el)).toEqual([ 10, 20 ])
+ var origin = { origin: [10, 20] }
+ expect(getOrigin(origin, el)).toEqual([10, 20])
})
it('gets the origin from [ox, oy] as strings', function () {
- var origin = { origin: [ 'center', 'top' ] }
- expect(getOrigin(origin, el)).toEqual([ 400, 400 ])
+ var origin = { origin: ['center', 'top'] }
+ expect(getOrigin(origin, el)).toEqual([400, 400])
})
it('gets the origin from {x, y}', function () {
var origin = { origin: { x: 10, y: 20 } }
- expect(getOrigin(origin, el)).toEqual([ 10, 20 ])
+ expect(getOrigin(origin, el)).toEqual([10, 20])
})
it('gets the origin from {ox, oy}', function () {
var origin = { ox: 10, oy: 20 }
- expect(getOrigin(origin, el)).toEqual([ 10, 20 ])
+ expect(getOrigin(origin, el)).toEqual([10, 20])
})
it('gets the origin from {ox, oy} as strings', function () {
var origin = { ox: 'center', oy: 'top' }
- expect(getOrigin(origin, el)).toEqual([ 400, 400 ])
+ expect(getOrigin(origin, el)).toEqual([400, 400])
})
it('gets the origin from {originX, originY}', function () {
var origin = { originX: 10, originY: 20 }
- expect(getOrigin(origin, el)).toEqual([ 10, 20 ])
+ expect(getOrigin(origin, el)).toEqual([10, 20])
})
it('gets the origin from {originX, originY} as strings', function () {
var origin = { originX: 'center', originY: 'top' }
- expect(getOrigin(origin, el)).toEqual([ 400, 400 ])
+ expect(getOrigin(origin, el)).toEqual([400, 400])
})
it('gets the origin from string', function () {
var origin = { origin: 'center top' }
- expect(getOrigin(origin, el)).toEqual([ 400, 400 ])
+ expect(getOrigin(origin, el)).toEqual([400, 400])
})
it('gets the origin from number', function () {
var origin = { origin: 5 }
- expect(getOrigin(origin, el)).toEqual([ 5, 5 ])
+ expect(getOrigin(origin, el)).toEqual([5, 5])
})
})
})
/* globals describe, expect, it */
-import { registerWindow, globals, withWindow, getWindow, saveWindow, restoreWindow } from '../../../src/utils/window.js'
+import {
+ registerWindow,
+ globals,
+ withWindow,
+ getWindow,
+ saveWindow,
+ restoreWindow
+} from '../../../src/utils/window.js'
describe('window.js', () => {
describe('registerWindow()', () => {
timer: () => globals.window.performance || globals.window.Date,
transforms: [],
- frame (fn) {
+ frame(fn) {
// Store the node
const node = Animator.frames.push({ run: fn })
return node
},
- timeout (fn, delay) {
+ timeout(fn, delay) {
delay = delay || 0
// Work out when the event should fire
return node
},
- immediate (fn) {
+ immediate(fn) {
// Add the immediate fn to the end of the queue
const node = Animator.immediates.push(fn)
// Request another animation frame if we need one
return node
},
- cancelFrame (node) {
+ cancelFrame(node) {
node != null && Animator.frames.remove(node)
},
- clearTimeout (node) {
+ clearTimeout(node) {
node != null && Animator.timeouts.remove(node)
},
- cancelImmediate (node) {
+ cancelImmediate(node) {
node != null && Animator.immediates.remove(node)
},
- _draw (now) {
+ _draw(now) {
// Run all the timeouts we can run, if they are not ready yet, add them
// to the end of the queue immediately! (bad timeouts!!! [sarcasm])
let nextTimeout = null
// Run all of the animation frames
let nextFrame = null
const lastFrame = Animator.frames.last()
- while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {
+ while (nextFrame !== lastFrame && (nextFrame = Animator.frames.shift())) {
nextFrame.run(now)
}
}
// If we have remaining timeouts or frames, draw until we don't anymore
- Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first()
- ? globals.window.requestAnimationFrame(Animator._draw)
- : null
+ Animator.nextDraw =
+ Animator.timeouts.first() || Animator.frames.first()
+ ? globals.window.requestAnimationFrame(Animator._draw)
+ : null
}
}
The base stepper class that will be
***/
-function makeSetterGetter (k, f) {
+function makeSetterGetter(k, f) {
return function (v) {
if (v == null) return this[k]
this[k] = v
return -Math.cos(pos * Math.PI) / 2 + 0.5
},
'>': function (pos) {
- return Math.sin(pos * Math.PI / 2)
+ return Math.sin((pos * Math.PI) / 2)
},
'<': function (pos) {
- return -Math.cos(pos * Math.PI / 2) + 1
+ return -Math.cos((pos * Math.PI) / 2) + 1
},
bezier: function (x1, y1, x2, y2) {
// see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo
return function (t) {
if (t < 0) {
if (x1 > 0) {
- return y1 / x1 * t
+ return (y1 / x1) * t
} else if (x2 > 0) {
- return y2 / x2 * t
+ return (y2 / x2) * t
} else {
return 0
}
} else if (t > 1) {
if (x2 < 1) {
- return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2)
+ return ((1 - y2) / (1 - x2)) * t + (y2 - x2) / (1 - x2)
} else if (x1 < 1) {
- return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1)
+ return ((1 - y1) / (1 - x1)) * t + (y1 - x1) / (1 - x1)
} else {
return 1
}
}
export class Stepper {
- done () {
+ done() {
return false
}
}
***/
export class Ease extends Stepper {
- constructor (fn = timeline.ease) {
+ constructor(fn = timeline.ease) {
super()
this.ease = easing[fn] || fn
}
- step (from, to, pos) {
+ step(from, to, pos) {
if (typeof from !== 'number') {
return pos < 1 ? from : to
}
***/
export class Controller extends Stepper {
- constructor (fn) {
+ constructor(fn) {
super()
this.stepper = fn
}
- done (c) {
+ done(c) {
return c.done
}
- step (current, target, dt, c) {
+ step(current, target, dt, c) {
return this.stepper(current, target, dt, c)
}
-
}
-function recalculate () {
+function recalculate() {
// Apply the default parameters
const duration = (this._duration || 500) / 1000
const overshoot = this._overshoot || 0
}
export class Spring extends Controller {
- constructor (duration = 500, overshoot = 0) {
+ constructor(duration = 500, overshoot = 0) {
super()
- this.duration(duration)
- .overshoot(overshoot)
+ this.duration(duration).overshoot(overshoot)
}
- step (current, target, dt, c) {
+ step(current, target, dt, c) {
if (typeof current === 'string') return current
c.done = dt === Infinity
if (dt === Infinity) return target
// Apply the control to get the new position and store it
const acceleration = -this.d * velocity - this.k * (current - target)
- const newPosition = current
- + velocity * dt
- + acceleration * dt * dt / 2
+ const newPosition = current + velocity * dt + (acceleration * dt * dt) / 2
// Store the velocity
c.velocity = velocity + acceleration * dt
})
export class PID extends Controller {
- constructor (p = 0.1, i = 0.01, d = 0, windup = 1000) {
+ constructor(p = 0.1, i = 0.01, d = 0, windup = 1000) {
super()
this.p(p).i(i).d(d).windup(windup)
}
- step (current, target, dt, c) {
+ step(current, target, dt, c) {
if (typeof current === 'string') return current
c.done = dt === Infinity
if (Color.isColor(value)) {
return Color
} else if (delimiter.test(value)) {
- return isPathLetter.test(value)
- ? PathArray
- : SVGArray
+ return isPathLetter.test(value) ? PathArray : SVGArray
} else if (numberAndUnit.test(value)) {
return SVGNumber
} else {
}
export default class Morphable {
- constructor (stepper) {
+ constructor(stepper) {
this._stepper = stepper || new Ease('-')
this._from = null
this._morphObj = null
}
- at (pos) {
- return this._morphObj.morph(this._from, this._to, pos, this._stepper, this._context)
-
+ at(pos) {
+ return this._morphObj.morph(
+ this._from,
+ this._to,
+ pos,
+ this._stepper,
+ this._context
+ )
}
- done () {
+ done() {
const complete = this._context
.map(this._stepper.done)
.reduce(function (last, curr) {
return complete
}
- from (val) {
+ from(val) {
if (val == null) {
return this._from
}
return this
}
- stepper (stepper) {
+ stepper(stepper) {
if (stepper == null) return this._stepper
this._stepper = stepper
return this
}
- to (val) {
+ to(val) {
if (val == null) {
return this._to
}
return this
}
- type (type) {
+ type(type) {
// getter
if (type == null) {
return this._type
return this
}
- _set (value) {
+ _set(value) {
if (!this._type) {
this.type(getClassForType(value))
}
- let result = (new this._type(value))
+ let result = new this._type(value)
if (this._type === Color) {
result = this._to
? result[this._to[4]]()
: this._from
- ? result[this._from[4]]()
- : result
+ ? result[this._from[4]]()
+ : result
}
if (this._type === ObjectBag) {
result = this._to
? result.align(this._to)
: this._from
- ? result.align(this._from)
- : result
+ ? result.align(this._from)
+ : result
}
result = result.toConsumable()
this._morphObj = this._morphObj || new this._type()
- this._context = this._context
- || Array.apply(null, Array(result.length))
+ this._context =
+ this._context ||
+ Array.apply(null, Array(result.length))
.map(Object)
.map(function (o) {
o.done = true
})
return result
}
-
}
export class NonMorphable {
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
- init (val) {
+ init(val) {
val = Array.isArray(val) ? val[0] : val
this.value = val
return this
}
- toArray () {
- return [ this.value ]
+ toArray() {
+ return [this.value]
}
- valueOf () {
+ valueOf() {
return this.value
}
-
}
export class TransformBag {
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
- init (obj) {
+ init(obj) {
if (Array.isArray(obj)) {
obj = {
scaleX: obj[0],
return this
}
- toArray () {
+ toArray() {
const v = this
return [
}
const sortByKey = (a, b) => {
- return (a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0))
+ return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0
}
export class ObjectBag {
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
- align (other) {
+ align(other) {
const values = this.values
for (let i = 0, il = values.length; i < il; ++i) {
-
// If the type is the same we only need to check if the color is in the correct format
if (values[i + 1] === other[i + 1]) {
if (values[i + 1] === Color && other[i + 7] !== values[i + 7]) {
const space = other[i + 7]
- const color = new Color(this.values.splice(i + 3, 5))[space]().toArray()
+ const color = new Color(this.values.splice(i + 3, 5))
+ [space]()
+ .toArray()
this.values.splice(i + 3, 0, ...color)
}
// The types differ, so we overwrite the new type with the old one
// And initialize it with the types default (e.g. black for color or 0 for number)
- const defaultObject = new (other[i + 1])().toArray()
+ const defaultObject = new other[i + 1]().toArray()
// Than we fix the values array
- const toDelete = (values[i + 2]) + 3
+ const toDelete = values[i + 2] + 3
- values.splice(i, toDelete, other[i], other[i + 1], other[i + 2], ...defaultObject)
+ values.splice(
+ i,
+ toDelete,
+ other[i],
+ other[i + 1],
+ other[i + 2],
+ ...defaultObject
+ )
i += values[i + 2] + 2
}
return this
}
- init (objOrArr) {
+ init(objOrArr) {
this.values = []
if (Array.isArray(objOrArr)) {
for (const i in objOrArr) {
const Type = getClassForType(objOrArr[i])
const val = new Type(objOrArr[i]).toArray()
- entries.push([ i, Type, val.length, ...val ])
+ entries.push([i, Type, val.length, ...val])
}
entries.sort(sortByKey)
return this
}
- toArray () {
+ toArray() {
return this.values
}
- valueOf () {
+ valueOf() {
const obj = {}
const arr = this.values
const Type = arr.shift()
const num = arr.shift()
const values = arr.splice(0, num)
- obj[key] = new Type(values)// .valueOf()
+ obj[key] = new Type(values) // .valueOf()
}
return obj
}
-
}
-const morphableTypes = [
- NonMorphable,
- TransformBag,
- ObjectBag
-]
+const morphableTypes = [NonMorphable, TransformBag, ObjectBag]
-export function registerMorphableType (type = []) {
+export function registerMorphableType(type = []) {
morphableTypes.push(...[].concat(type))
}
-export function makeMorphable () {
+export function makeMorphable() {
extend(morphableTypes, {
- to (val) {
+ to(val) {
return new Morphable()
.type(this.constructor)
- .from(this.toArray())// this.valueOf())
+ .from(this.toArray()) // this.valueOf())
.to(val)
},
- fromArray (arr) {
+ fromArray(arr) {
this.init(arr)
return this
},
- toConsumable () {
+ toConsumable() {
return this.toArray()
},
- morph (from, to, pos, stepper, context) {
+ morph(from, to, pos, stepper, context) {
const mapper = function (i, index) {
return stepper.step(i, to[index], pos, context[index], context)
}
export default class Queue {
- constructor () {
+ constructor() {
this._first = null
this._last = null
}
// Shows us the first item in the list
- first () {
+ first() {
return this._first && this._first.value
}
// Shows us the last item in the list
- last () {
+ last() {
return this._last && this._last.value
}
- push (value) {
+ push(value) {
// An item stores an id and the provided value
- const item = typeof value.next !== 'undefined' ? value : { value: value, next: null, prev: null }
+ const item =
+ typeof value.next !== 'undefined'
+ ? value
+ : { value: value, next: null, prev: null }
// Deal with the queue being empty or populated
if (this._last) {
}
// Removes the item that was returned from the push
- remove (item) {
+ remove(item) {
// Relink the previous item
if (item.prev) item.prev.next = item.next
if (item.next) item.next.prev = item.prev
item.next = null
}
- shift () {
+ shift() {
// Check if we have a value
const remove = this._first
if (!remove) return null
this._last = this._first ? this._last : null
return remove.value
}
-
}
import Timeline from './Timeline.js'
export default class Runner extends EventTarget {
- constructor (options) {
+ constructor(options) {
super()
// Store a unique id on the runner, so that we can identify it later
this.id = Runner.id++
// Ensure a default value
- options = options == null
- ? timeline.duration
- : options
+ options = options == null ? timeline.duration : options
// Ensure that we get a controller
- options = typeof options === 'function'
- ? new Controller(options)
- : options
+ options = typeof options === 'function' ? new Controller(options) : options
// Declare all of the variables
this._element = null
this._persist = this._isDeclarative ? true : null
}
- static sanitise (duration, delay, when) {
+ static sanitise(duration, delay, when) {
// Initialise the default parameters
let times = 1
let swing = false
}
}
- active (enabled) {
+ active(enabled) {
if (enabled == null) return this.enabled
this.enabled = enabled
return this
===============
Methods that shouldn't be used externally
*/
- addTransform (transform, index) {
+ addTransform(transform) {
this.transforms.lmultiplyO(transform)
return this
}
- after (fn) {
+ after(fn) {
return this.on('finished', fn)
}
- animate (duration, delay, when) {
+ animate(duration, delay, when) {
const o = Runner.sanitise(duration, delay, when)
const runner = new Runner(o.duration)
if (this._timeline) runner.timeline(this._timeline)
return runner.loop(o).schedule(o.delay, o.when)
}
- clearTransform () {
+ clearTransform() {
this.transforms = new Matrix()
return this
}
// TODO: Keep track of all transformations so that deletion is faster
- clearTransformsFromQueue () {
- if (!this.done || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {
+ clearTransformsFromQueue() {
+ if (
+ !this.done ||
+ !this._timeline ||
+ !this._timeline._runnerIds.includes(this.id)
+ ) {
this._queue = this._queue.filter((item) => {
return !item.isTransform
})
}
}
- delay (delay) {
+ delay(delay) {
return this.animate(0, delay)
}
- duration () {
+ duration() {
return this._times * (this._wait + this._duration) - this._wait
}
- during (fn) {
+ during(fn) {
return this.queue(null, fn)
}
- ease (fn) {
+ ease(fn) {
this._stepper = new Ease(fn)
return this
}
help us make new runners from the current runner
*/
- element (element) {
+ element(element) {
if (element == null) return this._element
this._element = element
element._prepareRunner()
return this
}
- finish () {
+ finish() {
return this.step(Infinity)
}
- loop (times, swing, wait) {
+ loop(times, swing, wait) {
// Deal with the user passing in an object
if (typeof times === 'object') {
swing = times.swing
this._wait = wait || 0
// Allow true to be passed
- if (this._times === true) { this._times = Infinity }
+ if (this._times === true) {
+ this._times = Infinity
+ }
return this
}
- loops (p) {
+ loops(p) {
const loopDuration = this._duration + this._wait
if (p == null) {
const loopsDone = Math.floor(this._time / loopDuration)
- const relativeTime = (this._time - loopsDone * loopDuration)
+ const relativeTime = this._time - loopsDone * loopDuration
const position = relativeTime / this._duration
return Math.min(loopsDone + position, this._times)
}
return this.time(time)
}
- persist (dtOrForever) {
+ persist(dtOrForever) {
if (dtOrForever == null) return this._persist
this._persist = dtOrForever
return this
}
- position (p) {
+ position(p) {
// Get all of the variables we need
const x = this._time
const d = this._duration
// Figure out the value without thinking about the start or end time
const f = function (x) {
- const swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))
+ const swinging = s * Math.floor((x % (2 * (w + d))) / (w + d))
const backwards = (swinging && !r) || (!swinging && r)
- const uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards
+ const uncliped =
+ (Math.pow(-1, backwards) * (x % (w + d))) / d + backwards
const clipped = Math.max(Math.min(uncliped, 1), 0)
return clipped
}
// Figure out the value by incorporating the start time
const endTime = t * (w + d) - w
- position = x <= 0
- ? Math.round(f(1e-5))
- : x < endTime
+ position =
+ x <= 0
+ ? Math.round(f(1e-5))
+ : x < endTime
? f(x)
: Math.round(f(endTime - 1e-5))
return position
// Work out the loops done and add the position to the loops done
const loopsDone = Math.floor(this.loops())
- const swingForward = s && (loopsDone % 2 === 0)
+ const swingForward = s && loopsDone % 2 === 0
const forwards = (swingForward && !r) || (r && swingForward)
position = loopsDone + (forwards ? p : 1 - p)
return this.loops(position)
}
- progress (p) {
+ progress(p) {
if (p == null) {
return Math.min(1, this._time / this.duration())
}
===================
These methods allow us to attach basic functions to the runner directly
*/
- queue (initFn, runFn, retargetFn, isTransform) {
+ queue(initFn, runFn, retargetFn, isTransform) {
this._queue.push({
initialiser: initFn || noop,
runner: runFn || noop,
return this
}
- reset () {
+ reset() {
if (this._reseted) return this
this.time(0)
this._reseted = true
return this
}
- reverse (reverse) {
+ reverse(reverse) {
this._reverse = reverse == null ? !this._reverse : reverse
return this
}
- schedule (timeline, delay, when) {
+ schedule(timeline, delay, when) {
// The user doesn't need to pass a timeline if we already have one
if (!(timeline instanceof Timeline)) {
when = delay
return this
}
- step (dt) {
+ step(dt) {
// If we are inactive, this stepper just gets skipped
if (!this.enabled) return this
========================
Control how the animation plays
*/
- time (time) {
+ time(time) {
if (time == null) {
return this._time
}
return this
}
- timeline (timeline) {
+ timeline(timeline) {
// check explicitly for undefined so we can set the timeline to null
if (typeof timeline === 'undefined') return this._timeline
this._timeline = timeline
return this
}
- unschedule () {
+ unschedule() {
const timeline = this.timeline()
timeline && timeline.unschedule(this)
return this
}
// Run each initialise function in the runner if required
- _initialise (running) {
+ _initialise(running) {
// If we aren't running, we shouldn't initialise when not declarative
if (!running && !this._isDeclarative) return
}
// Save a morpher to the morpher list so that we can retarget it later
- _rememberMorpher (method, morpher) {
+ _rememberMorpher(method, morpher) {
this._history[method] = {
morpher: morpher,
caller: this._queue[this._queue.length - 1]
// Try to set the target for a morpher if the morpher exists, otherwise
// Run each run function for the position or dt given
- _run (positionOrDt) {
+ _run(positionOrDt) {
// Run all of the _queue directly
let allfinished = true
for (let i = 0, len = this._queue.length; i < len; ++i) {
// Run the function if its not finished, we keep track of the finished
// flag for the sake of declarative _queue
const converged = current.runner.call(this, positionOrDt)
- current.finished = current.finished || (converged === true)
+ current.finished = current.finished || converged === true
allfinished = allfinished && current.finished
}
}
// do nothing and return false
- _tryRetarget (method, target, extra) {
+ _tryRetarget(method, target, extra) {
if (this._history[method]) {
// if the last method wasn't even initialised, throw it away
if (!this._history[method].caller.initialised) {
}
return false
}
-
}
Runner.id = 0
export class FakeRunner {
- constructor (transforms = new Matrix(), id = -1, done = true) {
+ constructor(transforms = new Matrix(), id = -1, done = true) {
this.transforms = transforms
this.id = id
this.done = done
}
- clearTransformsFromQueue () { }
+ clearTransformsFromQueue() {}
}
-extend([ Runner, FakeRunner ], {
- mergeWith (runner) {
+extend([Runner, FakeRunner], {
+ mergeWith(runner) {
return new FakeRunner(
runner.transforms.lmultiply(this.transforms),
runner.id
const lmultiply = (last, curr) => last.lmultiplyO(curr)
const getRunnerTransform = (runner) => runner.transforms
-function mergeTransforms () {
+function mergeTransforms() {
// Find the matrix to apply to the element and apply it
const runners = this._transformationRunners.runners
const netTransform = runners
}
export class RunnerArray {
- constructor () {
+ constructor() {
this.runners = []
this.ids = []
}
- add (runner) {
+ add(runner) {
if (this.runners.includes(runner)) return
const id = runner.id + 1
return this
}
- clearBefore (id) {
+ clearBefore(id) {
const deleteCnt = this.ids.indexOf(id + 1) || 1
this.ids.splice(0, deleteCnt, 0)
- this.runners.splice(0, deleteCnt, new FakeRunner())
+ this.runners
+ .splice(0, deleteCnt, new FakeRunner())
.forEach((r) => r.clearTransformsFromQueue())
return this
}
- edit (id, newRunner) {
+ edit(id, newRunner) {
const index = this.ids.indexOf(id + 1)
this.ids.splice(index, 1, id + 1)
this.runners.splice(index, 1, newRunner)
return this
}
- getByID (id) {
+ getByID(id) {
return this.runners[this.ids.indexOf(id + 1)]
}
- length () {
+ length() {
return this.ids.length
}
- merge () {
+ merge() {
let lastRunner = null
for (let i = 0; i < this.runners.length; ++i) {
const runner = this.runners[i]
- const condition = lastRunner
- && runner.done && lastRunner.done
+ const condition =
+ lastRunner &&
+ runner.done &&
+ lastRunner.done &&
// don't merge runner when persisted on timeline
- && (!runner._timeline || !runner._timeline._runnerIds.includes(runner.id))
- && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id))
+ (!runner._timeline ||
+ !runner._timeline._runnerIds.includes(runner.id)) &&
+ (!lastRunner._timeline ||
+ !lastRunner._timeline._runnerIds.includes(lastRunner.id))
if (condition) {
// the +1 happens in the function
return this
}
- remove (id) {
+ remove(id) {
const index = this.ids.indexOf(id + 1)
this.ids.splice(index, 1)
this.runners.splice(index, 1)
return this
}
-
}
registerMethods({
Element: {
- animate (duration, delay, when) {
+ animate(duration, delay, when) {
const o = Runner.sanitise(duration, delay, when)
const timeline = this.timeline()
return new Runner(o.duration)
.schedule(o.delay, o.when)
},
- delay (by, when) {
+ delay(by, when) {
return this.animate(0, by, when)
},
// which run before the current one. This is because absolute transformations
// overwrite anything anyway so there is no need to waste time computing
// other runners
- _clearTransformRunnersBefore (currentRunner) {
+ _clearTransformRunnersBefore(currentRunner) {
this._transformationRunners.clearBefore(currentRunner.id)
},
- _currentTransform (current) {
- return this._transformationRunners.runners
- // we need the equal sign here to make sure, that also transformations
- // on the same runner which execute before the current transformation are
- // taken into account
- .filter((runner) => runner.id <= current.id)
- .map(getRunnerTransform)
- .reduce(lmultiply, new Matrix())
+ _currentTransform(current) {
+ return (
+ this._transformationRunners.runners
+ // we need the equal sign here to make sure, that also transformations
+ // on the same runner which execute before the current transformation are
+ // taken into account
+ .filter((runner) => runner.id <= current.id)
+ .map(getRunnerTransform)
+ .reduce(lmultiply, new Matrix())
+ )
},
- _addRunner (runner) {
+ _addRunner(runner) {
this._transformationRunners.add(runner)
// Make sure that the runner merge is executed at the very end of
this._frameId = Animator.immediate(mergeTransforms.bind(this))
},
- _prepareRunner () {
+ _prepareRunner() {
if (this._frameId == null) {
- this._transformationRunners = new RunnerArray()
- .add(new FakeRunner(new Matrix(this)))
+ this._transformationRunners = new RunnerArray().add(
+ new FakeRunner(new Matrix(this))
+ )
}
}
}
})
// Will output the elements from array A that are not in the array B
-const difference = (a, b) => a.filter(x => !b.includes(x))
+const difference = (a, b) => a.filter((x) => !b.includes(x))
extend(Runner, {
- attr (a, v) {
+ attr(a, v) {
return this.styleAttr('attr', a, v)
},
// Add animatable styles
- css (s, v) {
+ css(s, v) {
return this.styleAttr('css', s, v)
},
- styleAttr (type, nameOrAttrs, val) {
+ styleAttr(type, nameOrAttrs, val) {
if (typeof nameOrAttrs === 'string') {
return this.styleAttr(type, { [nameOrAttrs]: val })
}
let morpher = new Morphable(this._stepper).to(attrs)
let keys = Object.keys(attrs)
- this.queue(function () {
- morpher = morpher.from(this.element()[type](keys))
- }, function (pos) {
- this.element()[type](morpher.at(pos).valueOf())
- return morpher.done()
- }, function (newToAttrs) {
+ this.queue(
+ function () {
+ morpher = morpher.from(this.element()[type](keys))
+ },
+ function (pos) {
+ this.element()[type](morpher.at(pos).valueOf())
+ return morpher.done()
+ },
+ function (newToAttrs) {
+ // Check if any new keys were added
+ const newKeys = Object.keys(newToAttrs)
+ const differences = difference(newKeys, keys)
+
+ // If their are new keys, initialize them and add them to morpher
+ if (differences.length) {
+ // Get the values
+ const addedFromAttrs = this.element()[type](differences)
+
+ // Get the already initialized values
+ const oldFromAttrs = new ObjectBag(morpher.from()).valueOf()
+
+ // Merge old and new
+ Object.assign(oldFromAttrs, addedFromAttrs)
+ morpher.from(oldFromAttrs)
+ }
- // Check if any new keys were added
- const newKeys = Object.keys(newToAttrs)
- const differences = difference(newKeys, keys)
+ // Get the object from the morpher
+ const oldToAttrs = new ObjectBag(morpher.to()).valueOf()
- // If their are new keys, initialize them and add them to morpher
- if (differences.length) {
- // Get the values
- const addedFromAttrs = this.element()[type](differences)
+ // Merge in new attributes
+ Object.assign(oldToAttrs, newToAttrs)
- // Get the already initialized values
- const oldFromAttrs = new ObjectBag(morpher.from()).valueOf()
+ // Change morpher target
+ morpher.to(oldToAttrs)
- // Merge old and new
- Object.assign(oldFromAttrs, addedFromAttrs)
- morpher.from(oldFromAttrs)
+ // Make sure that we save the work we did so we don't need it to do again
+ keys = newKeys
+ attrs = newToAttrs
}
-
- // Get the object from the morpher
- const oldToAttrs = new ObjectBag(morpher.to()).valueOf()
-
- // Merge in new attributes
- Object.assign(oldToAttrs, newToAttrs)
-
- // Change morpher target
- morpher.to(oldToAttrs)
-
- // Make sure that we save the work we did so we don't need it to do again
- keys = newKeys
- attrs = newToAttrs
- })
+ )
this._rememberMorpher(type, morpher)
return this
},
- zoom (level, point) {
+ zoom(level, point) {
if (this._tryRetarget('zoom', level, point)) return this
let morpher = new Morphable(this._stepper).to(new SVGNumber(level))
- this.queue(function () {
- morpher = morpher.from(this.element().zoom())
- }, function (pos) {
- this.element().zoom(morpher.at(pos), point)
- return morpher.done()
- }, function (newLevel, newPoint) {
- point = newPoint
- morpher.to(newLevel)
- })
+ this.queue(
+ function () {
+ morpher = morpher.from(this.element().zoom())
+ },
+ function (pos) {
+ this.element().zoom(morpher.at(pos), point)
+ return morpher.done()
+ },
+ function (newLevel, newPoint) {
+ point = newPoint
+ morpher.to(newLevel)
+ }
+ )
this._rememberMorpher('zoom', morpher)
return this
// - Note F(1) = T
// 4. Now you get the delta matrix as a result: D = F * inv(M)
- transform (transforms, relative, affine) {
+ transform(transforms, relative, affine) {
// If we have a declarative function, we should retarget it if possible
relative = transforms.relative || relative
- if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {
+ if (
+ this._isDeclarative &&
+ !relative &&
+ this._tryRetarget('transform', transforms)
+ ) {
return this
}
// Parse the parameters
const isMatrix = Matrix.isMatrixLike(transforms)
- affine = transforms.affine != null
- ? transforms.affine
- : (affine != null ? affine : !isMatrix)
+ affine =
+ transforms.affine != null
+ ? transforms.affine
+ : affine != null
+ ? affine
+ : !isMatrix
// Create a morpher and set its type
- const morpher = new Morphable(this._stepper)
- .type(affine ? TransformBag : Matrix)
+ const morpher = new Morphable(this._stepper).type(
+ affine ? TransformBag : Matrix
+ )
let origin
let element
let currentAngle
let startTransform
- function setup () {
+ function setup() {
// make sure element and origin is defined
element = element || this.element()
origin = origin || getOrigin(transforms, element)
}
}
- function run (pos) {
+ function run(pos) {
// clear all other transforms before this in case something is saved
// on this runner. We are absolute. We dont need these!
if (!relative) this.clearTransform()
- const { x, y } = new Point(origin).transform(element._currentTransform(this))
+ const { x, y } = new Point(origin).transform(
+ element._currentTransform(this)
+ )
- let target = new Matrix({ ...transforms, origin: [ x, y ] })
- let start = this._isDeclarative && current
- ? current
- : startTransform
+ let target = new Matrix({ ...transforms, origin: [x, y] })
+ let start = this._isDeclarative && current ? current : startTransform
if (affine) {
target = target.decompose(x, y)
const rCurrent = start.rotate
// Figure out the shortest path to rotate directly
- const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]
- const distances = possibilities.map(a => Math.abs(a - rCurrent))
+ const possibilities = [rTarget - 360, rTarget, rTarget + 360]
+ const distances = possibilities.map((a) => Math.abs(a - rCurrent))
const shortest = Math.min(...distances)
const index = distances.indexOf(shortest)
target.rotate = possibilities[index]
return morpher.done()
}
- function retarget (newTransforms) {
+ function retarget(newTransforms) {
// only get a new origin if it changed since the last call
if (
- (newTransforms.origin || 'center').toString()
- !== (transforms.origin || 'center').toString()
+ (newTransforms.origin || 'center').toString() !==
+ (transforms.origin || 'center').toString()
) {
origin = getOrigin(newTransforms, element)
}
},
// Animatable x-axis
- x (x, relative) {
+ x(x) {
return this._queueNumber('x', x)
},
// Animatable y-axis
- y (y) {
+ y(y) {
return this._queueNumber('y', y)
},
- dx (x = 0) {
+ dx(x = 0) {
return this._queueNumberDelta('x', x)
},
- dy (y = 0) {
+ dy(y = 0) {
return this._queueNumberDelta('y', y)
},
- dmove (x, y) {
+ dmove(x, y) {
return this.dx(x).dy(y)
},
- _queueNumberDelta (method, to) {
+ _queueNumberDelta(method, to) {
to = new SVGNumber(to)
// Try to change the target if we have this method already registered
// Make a morpher and queue the animation
const morpher = new Morphable(this._stepper).to(to)
let from = null
- this.queue(function () {
- from = this.element()[method]()
- morpher.from(from)
- morpher.to(from + to)
- }, function (pos) {
- this.element()[method](morpher.at(pos))
- return morpher.done()
- }, function (newTo) {
- morpher.to(from + new SVGNumber(newTo))
- })
+ this.queue(
+ function () {
+ from = this.element()[method]()
+ morpher.from(from)
+ morpher.to(from + to)
+ },
+ function (pos) {
+ this.element()[method](morpher.at(pos))
+ return morpher.done()
+ },
+ function (newTo) {
+ morpher.to(from + new SVGNumber(newTo))
+ }
+ )
// Register the morpher so that if it is changed again, we can retarget it
this._rememberMorpher(method, morpher)
return this
},
- _queueObject (method, to) {
+ _queueObject(method, to) {
// Try to change the target if we have this method already registered
if (this._tryRetarget(method, to)) return this
// Make a morpher and queue the animation
const morpher = new Morphable(this._stepper).to(to)
- this.queue(function () {
- morpher.from(this.element()[method]())
- }, function (pos) {
- this.element()[method](morpher.at(pos))
- return morpher.done()
- })
+ this.queue(
+ function () {
+ morpher.from(this.element()[method]())
+ },
+ function (pos) {
+ this.element()[method](morpher.at(pos))
+ return morpher.done()
+ }
+ )
// Register the morpher so that if it is changed again, we can retarget it
this._rememberMorpher(method, morpher)
return this
},
- _queueNumber (method, value) {
+ _queueNumber(method, value) {
return this._queueObject(method, new SVGNumber(value))
},
// Animatable center x-axis
- cx (x) {
+ cx(x) {
return this._queueNumber('cx', x)
},
// Animatable center y-axis
- cy (y) {
+ cy(y) {
return this._queueNumber('cy', y)
},
// Add animatable move
- move (x, y) {
+ move(x, y) {
return this.x(x).y(y)
},
// Add animatable center
- center (x, y) {
+ center(x, y) {
return this.cx(x).cy(y)
},
// Add animatable size
- size (width, height) {
+ size(width, height) {
// animate bbox based size for all other elements
let box
}
if (!width) {
- width = box.width / box.height * height
+ width = (box.width / box.height) * height
}
if (!height) {
- height = box.height / box.width * width
+ height = (box.height / box.width) * width
}
- return this
- .width(width)
- .height(height)
+ return this.width(width).height(height)
},
// Add animatable width
- width (width) {
+ width(width) {
return this._queueNumber('width', width)
},
// Add animatable height
- height (height) {
+ height(height) {
return this._queueNumber('height', height)
},
// Add animatable plot
- plot (a, b, c, d) {
+ plot(a, b, c, d) {
// Lines can be plotted with 4 arguments
if (arguments.length === 4) {
- return this.plot([ a, b, c, d ])
+ return this.plot([a, b, c, d])
}
if (this._tryRetarget('plot', a)) return this
const morpher = new Morphable(this._stepper)
- .type(this._element.MorphArray).to(a)
-
- this.queue(function () {
- morpher.from(this._element.array())
- }, function (pos) {
- this._element.plot(morpher.at(pos))
- return morpher.done()
- })
+ .type(this._element.MorphArray)
+ .to(a)
+
+ this.queue(
+ function () {
+ morpher.from(this._element.array())
+ },
+ function (pos) {
+ this._element.plot(morpher.at(pos))
+ return morpher.done()
+ }
+ )
this._rememberMorpher('plot', morpher)
return this
},
// Add leading method
- leading (value) {
+ leading(value) {
return this._queueNumber('leading', value)
},
// Add animatable viewbox
- viewbox (x, y, width, height) {
+ viewbox(x, y, width, height) {
return this._queueObject('viewbox', new Box(x, y, width, height))
},
- update (o) {
+ update(o) {
if (typeof o !== 'object') {
return this.update({
offset: arguments[0],
const start = runnerInfo.start
const duration = runnerInfo.runner.duration()
const end = start + duration
- return { start: start, duration: duration, end: end, runner: runnerInfo.runner }
+ return {
+ start: start,
+ duration: duration,
+ end: end,
+ runner: runnerInfo.runner
+ }
}
const defaultSource = function () {
export default class Timeline extends EventTarget {
// Construct a new timeline on the given element
- constructor (timeSource = defaultSource) {
+ constructor(timeSource = defaultSource) {
super()
this._timeSource = timeSource
this._stepImmediate = this._stepFn.bind(this, true)
}
- active () {
+ active() {
return !!this._nextFrame
}
- finish () {
+ finish() {
// Go to end and pause
this.time(this.getEndTimeOfTimeline() + 1)
return this.pause()
}
// Calculates the end of the timeline
- getEndTime () {
+ getEndTime() {
const lastRunnerInfo = this.getLastRunnerInfo()
const lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0
const lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : this._time
return lastStartTime + lastDuration
}
- getEndTimeOfTimeline () {
+ getEndTimeOfTimeline() {
const endTimes = this._runners.map((i) => i.start + i.runner.duration())
return Math.max(0, ...endTimes)
}
- getLastRunnerInfo () {
+ getLastRunnerInfo() {
return this.getRunnerInfoById(this._lastRunnerId)
}
- getRunnerInfoById (id) {
+ getRunnerInfoById(id) {
return this._runners[this._runnerIds.indexOf(id)] || null
}
- pause () {
+ pause() {
this._paused = true
return this._continue()
}
- persist (dtOrForever) {
+ persist(dtOrForever) {
if (dtOrForever == null) return this._persist
this._persist = dtOrForever
return this
}
- play () {
+ play() {
// Now make sure we are not paused and continue the animation
this._paused = false
return this.updateTime()._continue()
}
- reverse (yes) {
+ reverse(yes) {
const currentSpeed = this.speed()
if (yes == null) return this.speed(-currentSpeed)
}
// schedules a runner on the timeline
- schedule (runner, delay, when) {
+ schedule(runner, delay, when) {
if (runner == null) {
return this._runners.map(makeSchedule)
}
this._runners.push(runnerInfo)
this._runners.sort((a, b) => a.start - b.start)
- this._runnerIds = this._runners.map(info => info.runner.id)
+ this._runnerIds = this._runners.map((info) => info.runner.id)
this.updateTime()._continue()
return this
}
- seek (dt) {
+ seek(dt) {
return this.time(this._time + dt)
}
- source (fn) {
+ source(fn) {
if (fn == null) return this._timeSource
this._timeSource = fn
return this
}
- speed (speed) {
+ speed(speed) {
if (speed == null) return this._speed
this._speed = speed
return this
}
- stop () {
+ stop() {
// Go to start and pause
this.time(0)
return this.pause()
}
- time (time) {
+ time(time) {
if (time == null) return this._time
this._time = time
return this._continue(true)
}
// Remove the runner from this timeline
- unschedule (runner) {
+ unschedule(runner) {
const index = this._runnerIds.indexOf(runner.id)
if (index < 0) return this
}
// Makes sure, that after pausing the time doesn't jump
- updateTime () {
+ updateTime() {
if (!this.active()) {
this._lastSourceTime = this._timeSource()
}
}
// Checks if we are running and continues the animation
- _continue (immediateStep = false) {
+ _continue(immediateStep = false) {
Animator.cancelFrame(this._nextFrame)
this._nextFrame = null
return this
}
- _stepFn (immediateStep = false) {
+ _stepFn(immediateStep = false) {
// Get the time delta from the last time and update the time
const time = this._timeSource()
let dtSource = time - this._lastSourceTime
// runner always wins the reset even if the other runner started earlier
// and therefore should win the attribute battle
// this can be solved by resetting them backwards
- for (let k = this._runners.length; k--;) {
+ for (let k = this._runners.length; k--; ) {
// Get and run the current runner and ignore it if its inactive
const runnerInfo = this._runners[k]
const runner = runnerInfo.runner
// Basically: we continue when there are runners right from us in time
// when -->, and when runners are left from us when <--
- if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._runnerIds.length && this._speed < 0 && this._time > 0)) {
+ if (
+ (runnersLeft && !(this._speed < 0 && this._time === 0)) ||
+ (this._runnerIds.length && this._speed < 0 && this._time > 0)
+ ) {
this._continue()
} else {
this.pause()
return this
}
-
}
registerMethods({
Element: {
timeline: function (timeline) {
if (timeline == null) {
- this._timeline = (this._timeline || new Timeline())
+ this._timeline = this._timeline || new Timeline()
return this._timeline
} else {
this._timeline = timeline
-import { nodeOrNew, register, wrapWithAttrCheck, extend } from '../utils/adopter.js'
+import {
+ nodeOrNew,
+ register,
+ wrapWithAttrCheck,
+ extend
+} from '../utils/adopter.js'
import { registerMethods } from '../utils/methods.js'
import { xlink } from '../modules/core/namespaces.js'
import Container from './Container.js'
import * as containerGeometry from '../modules/core/containerGeometry.js'
export default class A extends Container {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('a', node), attrs)
}
// Link target attribute
- target (target) {
+ target(target) {
return this.attr('target', target)
}
// Link url
- to (url) {
+ to(url) {
return this.attr('href', url, xlink)
}
-
}
extend(A, containerGeometry)
})
},
Element: {
- unlink () {
+ unlink() {
const link = this.linker()
if (!link) return this
link.remove()
return this
},
- linkTo (url) {
+ linkTo(url) {
// reuse old link if possible
let link = this.linker()
return this
},
- linker () {
+ linker() {
const link = this.parent()
if (link && link.node.nodeName.toLowerCase() === 'a') {
return link
import Shape from './Shape.js'
export default class Circle extends Shape {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('circle', node), attrs)
}
- radius (r) {
+ radius(r) {
return this.attr('r', r)
}
// Radius x value
- rx (rx) {
+ rx(rx) {
return this.attr('r', rx)
}
// Alias radius x value
- ry (ry) {
+ ry(ry) {
return this.rx(ry)
}
- size (size) {
+ size(size) {
return this.radius(new SVGNumber(size).divide(2))
}
}
Container: {
// Create circle element
circle: wrapWithAttrCheck(function (size = 0) {
- return this.put(new Circle())
- .size(size)
- .move(0, 0)
+ return this.put(new Circle()).size(size).move(0, 0)
})
}
})
import baseFind from '../modules/core/selector.js'
export default class ClipPath extends Container {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('clipPath', node), attrs)
}
// Unclip all clipped elements and remove itself
- remove () {
+ remove() {
// unclip all targets
this.targets().forEach(function (el) {
el.unclip()
return super.remove()
}
- targets () {
+ targets() {
return baseFind('svg [clip-path*=' + this.id() + ']')
}
}
},
Element: {
// Distribute clipPath to svg element
- clipper () {
+ clipper() {
return this.reference('clip-path')
},
- clipWith (element) {
+ clipWith(element) {
// use given clip or create a new one
- const clipper = element instanceof ClipPath
- ? element
- : this.parent().clip().add(element)
+ const clipper =
+ element instanceof ClipPath
+ ? element
+ : this.parent().clip().add(element)
// apply mask
return this.attr('clip-path', 'url(#' + clipper.id() + ')')
},
// Unclip element
- unclip () {
+ unclip() {
return this.attr('clip-path', null)
}
}
import Element from './Element.js'
export default class Container extends Element {
- flatten (parent = this, index) {
+ flatten() {
this.each(function () {
if (this instanceof Container) {
return this.flatten().ungroup()
return this
}
- ungroup (parent = this.parent(), index = parent.index(this)) {
+ ungroup(parent = this.parent(), index = parent.index(this)) {
// when parent != this, we want append all elements to the end
index = index === -1 ? parent.children().length : index
import Container from './Container.js'
export default class Defs extends Container {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('defs', node), attrs)
}
- flatten () {
+ flatten() {
return this
}
- ungroup () {
+ ungroup() {
return this
}
}
import attr from '../modules/core/attr.js'
export default class Dom extends EventTarget {
- constructor (node, attrs) {
+ constructor(node, attrs) {
super()
this.node = node
this.type = node.nodeName
}
// Add given element at a position
- add (element, i) {
+ add(element, i) {
element = makeInstance(element)
// If non-root svg nodes are added we have to remove their namespaces
- if (element.removeNamespace && this.node instanceof globals.window.SVGElement) {
+ if (
+ element.removeNamespace &&
+ this.node instanceof globals.window.SVGElement
+ ) {
element.removeNamespace()
}
}
// Add element to given container and return self
- addTo (parent, i) {
+ addTo(parent, i) {
return makeInstance(parent).put(this, i)
}
// Returns all child elements
- children () {
- return new List(map(this.node.children, function (node) {
- return adopt(node)
- }))
+ children() {
+ return new List(
+ map(this.node.children, function (node) {
+ return adopt(node)
+ })
+ )
}
// Remove all elements in this container
- clear () {
+ clear() {
// remove children
while (this.node.hasChildNodes()) {
this.node.removeChild(this.node.lastChild)
}
// Clone element
- clone (deep = true, assignNewIds = true) {
+ clone(deep = true, assignNewIds = true) {
// write dom data to the dom so the clone can pickup the data
this.writeDataToDom()
}
// Iterates over all children and invokes a given block
- each (block, deep) {
+ each(block, deep) {
const children = this.children()
let i, il
for (i = 0, il = children.length; i < il; i++) {
- block.apply(children[i], [ i, children ])
+ block.apply(children[i], [i, children])
if (deep) {
children[i].each(block, deep)
return this
}
- element (nodeName, attrs) {
+ element(nodeName, attrs) {
return this.put(new Dom(create(nodeName), attrs))
}
// Get first child
- first () {
+ first() {
return adopt(this.node.firstChild)
}
// Get a element at the given index
- get (i) {
+ get(i) {
return adopt(this.node.childNodes[i])
}
- getEventHolder () {
+ getEventHolder() {
return this.node
}
- getEventTarget () {
+ getEventTarget() {
return this.node
}
// Checks if the given element is a child
- has (element) {
+ has(element) {
return this.index(element) >= 0
}
- html (htmlOrFn, outerHTML) {
+ html(htmlOrFn, outerHTML) {
return this.xml(htmlOrFn, outerHTML, html)
}
// Get / set id
- id (id) {
+ id(id) {
// generate new id if no id set
if (typeof id === 'undefined' && !this.node.id) {
this.node.id = eid(this.type)
}
// Gets index of given element
- index (element) {
+ index(element) {
return [].slice.call(this.node.childNodes).indexOf(element.node)
}
// Get the last child
- last () {
+ last() {
return adopt(this.node.lastChild)
}
// matches the element vs a css selector
- matches (selector) {
+ matches(selector) {
const el = this.node
- const matcher = el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector || null
+ const matcher =
+ el.matches ||
+ el.matchesSelector ||
+ el.msMatchesSelector ||
+ el.mozMatchesSelector ||
+ el.webkitMatchesSelector ||
+ el.oMatchesSelector ||
+ null
return matcher && matcher.call(el, selector)
}
// Returns the parent element instance
- parent (type) {
+ parent(type) {
let parent = this
// check for parent
// loop through ancestors if type is given
do {
- if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent
+ if (
+ typeof type === 'string' ? parent.matches(type) : parent instanceof type
+ )
+ return parent
} while ((parent = adopt(parent.node.parentNode)))
return parent
}
// Basically does the same as `add()` but returns the added element instead
- put (element, i) {
+ put(element, i) {
element = makeInstance(element)
this.add(element, i)
return element
}
// Add element to given container and return container
- putIn (parent, i) {
+ putIn(parent, i) {
return makeInstance(parent).add(this, i)
}
// Remove element
- remove () {
+ remove() {
if (this.parent()) {
this.parent().removeElement(this)
}
}
// Remove a given child
- removeElement (element) {
+ removeElement(element) {
this.node.removeChild(element.node)
return this
}
// Replace this with element
- replace (element) {
+ replace(element) {
element = makeInstance(element)
if (this.node.parentNode) {
return element
}
- round (precision = 2, map = null) {
+ round(precision = 2, map = null) {
const factor = 10 ** precision
const attrs = this.attr(map)
}
// Import / Export raw svg
- svg (svgOrFn, outerSVG) {
+ svg(svgOrFn, outerSVG) {
return this.xml(svgOrFn, outerSVG, svg)
}
// Return id on string conversion
- toString () {
+ toString() {
return this.id()
}
- words (text) {
+ words(text) {
// This is faster than removing all children and adding a new one
this.node.textContent = text
return this
}
- wrap (node) {
+ wrap(node) {
const parent = this.parent()
if (!parent) {
}
// write svgjs data to the dom
- writeDataToDom () {
+ writeDataToDom() {
// dump variables recursively
this.each(function () {
this.writeDataToDom()
}
// Import / Export raw svg
- xml (xmlOrFn, outerXML, ns) {
+ xml(xmlOrFn, outerXML, ns) {
if (typeof xmlOrFn === 'boolean') {
ns = outerXML
outerXML = xmlOrFn
}
// Return outer or inner content
- return outerXML
- ? current.node.outerHTML
- : current.node.innerHTML
+ return outerXML ? current.node.outerHTML : current.node.innerHTML
}
// Act as setter if we got a string
well.innerHTML = xmlOrFn
// Transplant nodes into the fragment
- for (let len = well.children.length; len--;) {
+ for (let len = well.children.length; len--; ) {
fragment.appendChild(well.firstElementChild)
}
const parent = this.parent()
// Add the whole fragment at once
- return outerXML
- ? this.replace(fragment) && parent
- : this.add(fragment)
+ return outerXML ? this.replace(fragment) && parent : this.add(fragment)
}
}
import SVGNumber from '../types/SVGNumber.js'
export default class Element extends Dom {
- constructor (node, attrs) {
+ constructor(node, attrs) {
super(node, attrs)
// initialize data object
}
// Move element by its center
- center (x, y) {
+ center(x, y) {
return this.cx(x).cy(y)
}
// Move by center over x-axis
- cx (x) {
+ cx(x) {
return x == null
? this.x() + this.width() / 2
: this.x(x - this.width() / 2)
}
// Move by center over y-axis
- cy (y) {
+ cy(y) {
return y == null
? this.y() + this.height() / 2
: this.y(y - this.height() / 2)
}
// Get defs
- defs () {
+ defs() {
const root = this.root()
return root && root.defs()
}
// Relative move over x and y axes
- dmove (x, y) {
+ dmove(x, y) {
return this.dx(x).dy(y)
}
// Relative move over x axis
- dx (x = 0) {
+ dx(x = 0) {
return this.x(new SVGNumber(x).plus(this.x()))
}
// Relative move over y axis
- dy (y = 0) {
+ dy(y = 0) {
return this.y(new SVGNumber(y).plus(this.y()))
}
- getEventHolder () {
+ getEventHolder() {
return this
}
// Set height of element
- height (height) {
+ height(height) {
return this.attr('height', height)
}
// Move element to given x and y values
- move (x, y) {
+ move(x, y) {
return this.x(x).y(y)
}
// return array of all ancestors of given type up to the root svg
- parents (until = this.root()) {
+ parents(until = this.root()) {
const isSelector = typeof until === 'string'
if (!isSelector) {
until = makeInstance(until)
let parent = this
while (
- (parent = parent.parent())
- && parent.node !== globals.document
- && parent.nodeName !== '#document-fragment') {
-
+ (parent = parent.parent()) &&
+ parent.node !== globals.document &&
+ parent.nodeName !== '#document-fragment'
+ ) {
parents.push(parent)
- if (!isSelector && (parent.node === until.node)) {
+ if (!isSelector && parent.node === until.node) {
break
}
if (isSelector && parent.matches(until)) {
}
// Get referenced element form attribute value
- reference (attr) {
+ reference(attr) {
attr = this.attr(attr)
if (!attr) return null
}
// Get parent document
- root () {
+ root() {
const p = this.parent(getClass(root))
return p && p.root()
}
// set given data to the elements data property
- setData (o) {
+ setData(o) {
this.dom = o
return this
}
// Set element size to given width and height
- size (width, height) {
+ size(width, height) {
const p = proportionalSize(this, width, height)
- return this
- .width(new SVGNumber(p.width))
- .height(new SVGNumber(p.height))
+ return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height))
}
// Set width of element
- width (width) {
+ width(width) {
return this.attr('width', width)
}
// write svgjs data to the dom
- writeDataToDom () {
+ writeDataToDom() {
// remove previously set data
this.node.removeAttribute('svgjs:data')
}
// Move over x-axis
- x (x) {
+ x(x) {
return this.attr('x', x)
}
// Move over y-axis
- y (y) {
+ y(y) {
return this.attr('y', y)
}
}
extend(Element, {
- bbox, rbox, inside, point, ctm, screenCTM
+ bbox,
+ rbox,
+ inside,
+ point,
+ ctm,
+ screenCTM
})
register(Element, 'Element')
import * as circled from '../modules/core/circled.js'
export default class Ellipse extends Shape {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('ellipse', node), attrs)
}
- size (width, height) {
+ size(width, height) {
const p = proportionalSize(this, width, height)
- return this
- .rx(new SVGNumber(p.width).divide(2))
- .ry(new SVGNumber(p.height).divide(2))
+ return this.rx(new SVGNumber(p.width).divide(2)).ry(
+ new SVGNumber(p.height).divide(2)
+ )
}
}
import Element from './Element.js'
export default class ForeignObject extends Element {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('foreignObject', node), attrs)
}
}
import { register, create } from '../utils/adopter.js'
class Fragment extends Dom {
- constructor (node = globals.document.createDocumentFragment()) {
+ constructor(node = globals.document.createDocumentFragment()) {
super(node)
}
// Import / Export raw xml
- xml (xmlOrFn, outerXML, ns) {
+ xml(xmlOrFn, outerXML, ns) {
if (typeof xmlOrFn === 'boolean') {
ns = outerXML
outerXML = xmlOrFn
// Act as setter if we got a string
return super.xml(xmlOrFn, false, ns)
}
-
}
register(Fragment, 'Fragment')
-import { nodeOrNew, register, wrapWithAttrCheck, extend } from '../utils/adopter.js'
+import {
+ nodeOrNew,
+ register,
+ wrapWithAttrCheck,
+ extend
+} from '../utils/adopter.js'
import { registerMethods } from '../utils/methods.js'
import Container from './Container.js'
import * as containerGeometry from '../modules/core/containerGeometry.js'
export default class G extends Container {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('g', node), attrs)
}
}
import * as gradiented from '../modules/core/gradiented.js'
export default class Gradient extends Container {
- constructor (type, attrs) {
+ constructor(type, attrs) {
super(
nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),
attrs
}
// custom attr to handle transform
- attr (a, b, c) {
+ attr(a, b, c) {
if (a === 'transform') a = 'gradientTransform'
return super.attr(a, b, c)
}
- bbox () {
+ bbox() {
return new Box()
}
- targets () {
+ targets() {
return baseFind('svg [fill*=' + this.id() + ']')
}
// Alias string conversion to fill
- toString () {
+ toString() {
return this.url()
}
// Update gradient
- update (block) {
+ update(block) {
// remove all stops
this.clear()
}
// Return the fill id
- url () {
+ url() {
return 'url(#' + this.id() + ')'
}
}
registerMethods({
Container: {
// Create gradient element in defs
- gradient (...args) {
+ gradient(...args) {
return this.defs().gradient(...args)
}
},
import { globals } from '../utils/window.js'
export default class Image extends Shape {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('image', node), attrs)
}
// (re)load image
- load (url, callback) {
+ load(url, callback) {
if (!url) return this
const img = new globals.window.Image()
- on(img, 'load', function (e) {
- const p = this.parent(Pattern)
+ on(
+ img,
+ 'load',
+ function (e) {
+ const p = this.parent(Pattern)
- // ensure image size
- if (this.width() === 0 && this.height() === 0) {
- this.size(img.width, img.height)
- }
+ // ensure image size
+ if (this.width() === 0 && this.height() === 0) {
+ this.size(img.width, img.height)
+ }
- if (p instanceof Pattern) {
- // ensure pattern size if not set
- if (p.width() === 0 && p.height() === 0) {
- p.size(this.width(), this.height())
+ if (p instanceof Pattern) {
+ // ensure pattern size if not set
+ if (p.width() === 0 && p.height() === 0) {
+ p.size(this.width(), this.height())
+ }
}
- }
- if (typeof callback === 'function') {
- callback.call(this, e)
- }
- }, this)
+ if (typeof callback === 'function') {
+ callback.call(this, e)
+ }
+ },
+ this
+ )
on(img, 'load error', function () {
// dont forget to unbind memory leaking events
}
if (val instanceof Image) {
- val = _this.root().defs().pattern(0, 0, (pattern) => {
- pattern.add(val)
- })
+ val = _this
+ .root()
+ .defs()
+ .pattern(0, 0, (pattern) => {
+ pattern.add(val)
+ })
}
return val
export default class Line extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('line', node), attrs)
}
// Get array
- array () {
+ array() {
return new PointArray([
- [ this.attr('x1'), this.attr('y1') ],
- [ this.attr('x2'), this.attr('y2') ]
+ [this.attr('x1'), this.attr('y1')],
+ [this.attr('x2'), this.attr('y2')]
])
}
// Move by left top corner
- move (x, y) {
+ move(x, y) {
return this.attr(this.array().move(x, y).toLine())
}
// Overwrite native plot() method
- plot (x1, y1, x2, y2) {
+ plot(x1, y1, x2, y2) {
if (x1 == null) {
return this.array()
} else if (typeof y1 !== 'undefined') {
}
// Set element size to given width and height
- size (width, height) {
+ size(width, height) {
const p = proportionalSize(this, width, height)
return this.attr(this.array().size(p.width, p.height).toLine())
}
// make sure plot is called as a setter
// x1 is not necessarily a number, it can also be an array, a string and a PointArray
return Line.prototype.plot.apply(
- this.put(new Line())
- , args[0] != null ? args : [ 0, 0, 0, 0 ]
+ this.put(new Line()),
+ args[0] != null ? args : [0, 0, 0, 0]
)
})
}
export default class Marker extends Container {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('marker', node), attrs)
}
// Set height of element
- height (height) {
+ height(height) {
return this.attr('markerHeight', height)
}
- orient (orient) {
+ orient(orient) {
return this.attr('orient', orient)
}
// Set marker refX and refY
- ref (x, y) {
+ ref(x, y) {
return this.attr('refX', x).attr('refY', y)
}
// Return the fill id
- toString () {
+ toString() {
return 'url(#' + this.id() + ')'
}
// Update marker
- update (block) {
+ update(block) {
// remove all content
this.clear()
}
// Set width of element
- width (width) {
+ width(width) {
return this.attr('markerWidth', width)
}
-
}
registerMethods({
Container: {
- marker (...args) {
+ marker(...args) {
// Create marker element in defs
return this.defs().marker(...args)
}
},
marker: {
// Create and attach markers
- marker (marker, width, height, block) {
- let attr = [ 'marker' ]
+ marker(marker, width, height, block) {
+ let attr = ['marker']
// Build attribute name
if (marker !== 'all') attr.push(marker)
attr = attr.join('-')
// Set marker attribute
- marker = arguments[1] instanceof Marker
- ? arguments[1]
- : this.defs().marker(width, height, block)
+ marker =
+ arguments[1] instanceof Marker
+ ? arguments[1]
+ : this.defs().marker(width, height, block)
return this.attr(attr, marker)
}
export default class Mask extends Container {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('mask', node), attrs)
}
// Unmask all masked elements and remove itself
- remove () {
+ remove() {
// unmask all targets
this.targets().forEach(function (el) {
el.unmask()
return super.remove()
}
- targets () {
+ targets() {
return baseFind('svg [mask*=' + this.id() + ']')
}
}
},
Element: {
// Distribute mask to svg element
- masker () {
+ masker() {
return this.reference('mask')
},
- maskWith (element) {
+ maskWith(element) {
// use given mask or create a new one
- const masker = element instanceof Mask
- ? element
- : this.parent().mask().add(element)
+ const masker =
+ element instanceof Mask ? element : this.parent().mask().add(element)
// apply mask
return this.attr('mask', 'url(#' + masker.id() + ')')
},
// Unmask element
- unmask () {
+ unmask() {
return this.attr('mask', null)
}
}
export default class Path extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('path', node), attrs)
}
// Get array
- array () {
+ array() {
return this._array || (this._array = new PathArray(this.attr('d')))
}
// Clear array cache
- clear () {
+ clear() {
delete this._array
return this
}
// Set height of element
- height (height) {
- return height == null ? this.bbox().height : this.size(this.bbox().width, height)
+ height(height) {
+ return height == null
+ ? this.bbox().height
+ : this.size(this.bbox().width, height)
}
// Move by left top corner
- move (x, y) {
+ move(x, y) {
return this.attr('d', this.array().move(x, y))
}
// Plot new path
- plot (d) {
- return (d == null)
+ plot(d) {
+ return d == null
? this.array()
- : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))
+ : this.clear().attr(
+ 'd',
+ typeof d === 'string' ? d : (this._array = new PathArray(d))
+ )
}
// Set element size to given width and height
- size (width, height) {
+ size(width, height) {
const p = proportionalSize(this, width, height)
return this.attr('d', this.array().size(p.width, p.height))
}
// Set width of element
- width (width) {
- return width == null ? this.bbox().width : this.size(width, this.bbox().height)
+ width(width) {
+ return width == null
+ ? this.bbox().width
+ : this.size(width, this.bbox().height)
}
// Move by left top corner over x-axis
- x (x) {
+ x(x) {
return x == null ? this.bbox().x : this.move(x, this.bbox().y)
}
// Move by left top corner over y-axis
- y (y) {
+ y(y) {
return y == null ? this.bbox().y : this.move(this.bbox().x, y)
}
-
}
// Define morphable array
export default class Pattern extends Container {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('pattern', node), attrs)
}
// custom attr to handle transform
- attr (a, b, c) {
+ attr(a, b, c) {
if (a === 'transform') a = 'patternTransform'
return super.attr(a, b, c)
}
- bbox () {
+ bbox() {
return new Box()
}
- targets () {
+ targets() {
return baseFind('svg [fill*=' + this.id() + ']')
}
// Alias string conversion to fill
- toString () {
+ toString() {
return this.url()
}
// Update pattern by rebuilding
- update (block) {
+ update(block) {
// remove content
this.clear()
}
// Return the fill id
- url () {
+ url() {
return 'url(#' + this.id() + ')'
}
-
}
registerMethods({
Container: {
// Create pattern element in defs
- pattern (...args) {
+ pattern(...args) {
return this.defs().pattern(...args)
}
},
export default class Polygon extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('polygon', node), attrs)
}
}
export default class Polyline extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('polyline', node), attrs)
}
}
export default class Rect extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('rect', node), attrs)
}
}
import { registerMethods } from '../utils/methods.js'
export default class Stop extends Element {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('stop', node), attrs)
}
// add color stops
- update (o) {
+ update(o) {
if (typeof o === 'number' || o instanceof SVGNumber) {
o = {
offset: arguments[0],
import { unCamelCase } from '../utils/utils.js'
import Element from './Element.js'
-function cssRule (selector, rule) {
+function cssRule(selector, rule) {
if (!selector) return ''
if (!rule) return selector
}
export default class Style extends Element {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('style', node), attrs)
}
- addText (w = '') {
+ addText(w = '') {
this.node.textContent += w
return this
}
- font (name, src, params = {}) {
+ font(name, src, params = {}) {
return this.rule('@font-face', {
fontFamily: name,
src: src,
})
}
- rule (selector, obj) {
+ rule(selector, obj) {
return this.addText(cssRule(selector, obj))
}
}
registerMethods('Dom', {
- style (selector, obj) {
+ style(selector, obj) {
return this.put(new Style()).rule(selector, obj)
},
- fontface (name, src, params) {
+ fontface(name, src, params) {
return this.put(new Style()).font(name, src, params)
}
})
import { globals } from '../utils/window.js'
export default class Svg extends Container {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('svg', node), attrs)
this.namespace()
}
// Creates and returns defs element
- defs () {
+ defs() {
if (!this.isRoot()) return this.root().defs()
- return adopt(this.node.querySelector('defs'))
- || this.put(new Defs())
+ return adopt(this.node.querySelector('defs')) || this.put(new Defs())
}
- isRoot () {
- return !this.node.parentNode
- || (!(this.node.parentNode instanceof globals.window.SVGElement) && this.node.parentNode.nodeName !== '#document-fragment')
+ isRoot() {
+ return (
+ !this.node.parentNode ||
+ (!(this.node.parentNode instanceof globals.window.SVGElement) &&
+ this.node.parentNode.nodeName !== '#document-fragment')
+ )
}
// Add namespaces
- namespace () {
+ namespace() {
if (!this.isRoot()) return this.root().namespace()
- return this
- .attr({ xmlns: svg, version: '1.1' })
+ return this.attr({ xmlns: svg, version: '1.1' })
.attr('xmlns:xlink', xlink, xmlns)
.attr('xmlns:svgjs', svgjs, xmlns)
}
- removeNamespace () {
+ removeNamespace() {
return this.attr({ xmlns: null, version: null })
.attr('xmlns:xlink', null, xmlns)
.attr('xmlns:svgjs', null, xmlns)
// Check if this is a root svg
// If not, call root() from this element
- root () {
+ root() {
if (this.isRoot()) return this
return super.root()
}
-
}
registerMethods({
export default class Symbol extends Container {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('symbol', node), attrs)
}
}
export default class Text extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('text', node), attrs)
this.dom.leading = new SVGNumber(1.3) // store leading value for rebuilding
}
// Set / get leading
- leading (value) {
+ leading(value) {
// act as getter
if (value == null) {
return this.dom.leading
}
// Rebuild appearance type
- rebuild (rebuild) {
+ rebuild(rebuild) {
// store new rebuild flag if given
if (typeof rebuild === 'boolean') {
this._rebuild = rebuild
const leading = this.dom.leading
this.each(function (i) {
- const fontSize = globals.window.getComputedStyle(this.node)
+ const fontSize = globals.window
+ .getComputedStyle(this.node)
.getPropertyValue('font-size')
const dy = leading * new SVGNumber(fontSize)
}
// overwrite method from parent to set data properly
- setData (o) {
+ setData(o) {
this.dom = o
this.dom.leading = new SVGNumber(o.leading || 1.3)
return this
}
// Set the text content
- text (text) {
+ text(text) {
// act as getter
if (text === undefined) {
const children = this.node.childNodes
}
// add newline if its not the first child and newLined is set to true
- if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {
+ if (
+ i !== firstLine &&
+ children[i].nodeType !== 3 &&
+ adopt(children[i]).dom.newLined === true
+ ) {
text += '\n'
}
// disable build mode and rebuild lines
return this.build(false).rebuild()
}
-
}
extend(Text, textable)
export default class TextPath extends Text {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('textPath', node), attrs)
}
// return the array of the path track element
- array () {
+ array() {
const track = this.track()
return track ? track.array() : null
}
// Plot path if any
- plot (d) {
+ plot(d) {
const track = this.track()
let pathArray = null
pathArray = track.plot(d)
}
- return (d == null) ? pathArray : this
+ return d == null ? pathArray : this
}
// Get the path element
- track () {
+ track() {
return this.reference('href')
}
}
}),
// Get the textPath children
- textPath () {
+ textPath() {
return this.findOne('textPath')
}
},
return text.path(this)
}),
- targets () {
+ targets() {
return baseFind('svg textPath').filter((node) => {
return (node.attr('href') || '').includes(this.id())
})
export default class Tspan extends Shape {
// Initialize node
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('tspan', node), attrs)
this._build = false // disable build mode for adding multiple lines
}
// Shortcut dx
- dx (dx) {
+ dx(dx) {
return this.attr('dx', dx)
}
// Shortcut dy
- dy (dy) {
+ dy(dy) {
return this.attr('dy', dy)
}
// Create new line
- newLine () {
+ newLine() {
// mark new line
this.dom.newLined = true
const i = text.index(this)
- const fontSize = globals.window.getComputedStyle(this.node)
+ const fontSize = globals.window
+ .getComputedStyle(this.node)
.getPropertyValue('font-size')
const dy = text.dom.leading * new SVGNumber(fontSize)
}
// Set text content
- text (text) {
- if (text == null) return this.node.textContent + (this.dom.newLined ? '\n' : '')
+ text(text) {
+ if (text == null)
+ return this.node.textContent + (this.dom.newLined ? '\n' : '')
if (typeof text === 'function') {
this.clear().build(true)
return this
}
-
}
extend(Tspan, textable)
import Shape from './Shape.js'
export default class Use extends Shape {
- constructor (node, attrs = node) {
+ constructor(node, attrs = node) {
super(nodeOrNew('use', node), attrs)
}
// Use element as a reference
- use (element, file) {
+ use(element, file) {
// Set lined element
return this.attr('href', (file || '') + '#' + element, xlink)
}
/* Animation Modules */
export { default as Animator } from './animation/Animator.js'
-export { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'
+export {
+ Controller,
+ Ease,
+ PID,
+ Spring,
+ easing
+} from './animation/Controller.js'
export { default as Queue } from './animation/Queue.js'
export { default as Runner } from './animation/Runner.js'
export { default as Timeline } from './animation/Timeline.js'
export { default as Tspan } from './elements/Tspan.js'
export { default as Use } from './elements/Use.js'
-extend([
- Svg,
- Symbol,
- Image,
- Pattern,
- Marker
-], getMethodsFor('viewbox'))
-
-extend([
- Line,
- Polyline,
- Polygon,
- Path
-], getMethodsFor('marker'))
+extend([Svg, Symbol, Image, Pattern, Marker], getMethodsFor('viewbox'))
+
+extend([Line, Polyline, Polygon, Path], getMethodsFor('marker'))
extend(Text, getMethodsFor('Text'))
extend(Path, getMethodsFor('Path'))
extend(Defs, getMethodsFor('Defs'))
-extend([
- Text,
- Tspan
-], getMethodsFor('Tspan'))
+extend([Text, Tspan], getMethodsFor('Tspan'))
-extend([
- Rect,
- Ellipse,
- Gradient,
- Runner
-], getMethodsFor('radius'))
+extend([Rect, Ellipse, Gradient, Runner], getMethodsFor('radius'))
extend(EventTarget, getMethodsFor('EventTarget'))
extend(Dom, getMethodsFor('Dom'))
extend(Element, getMethodsFor('Element'))
extend(Shape, getMethodsFor('Shape'))
-extend([ Container, Fragment ], getMethodsFor('Container'))
+extend([Container, Fragment], getMethodsFor('Container'))
extend(Gradient, getMethodsFor('Gradient'))
extend(Runner, getMethodsFor('Runner'))
import SVGNumber from '../../types/SVGNumber.js'
const hooks = []
-export function registerAttrHook (fn) {
+export function registerAttrHook(fn) {
hooks.push(fn)
}
// Set svg element attribute
-export default function attr (attr, val, ns) {
+export default function attr(attr, val, ns) {
// act as full getter
if (attr == null) {
// get an object of attributes
return val == null
? defaults[attr]
: isNumber.test(val)
- ? parseFloat(val)
- : val
+ ? parseFloat(val)
+ : val
} else {
// Loop through hooks and execute them to convert value
val = hooks.reduce((_val, hook) => {
import SVGNumber from '../../types/SVGNumber.js'
// Radius x value
-export function rx (rx) {
+export function rx(rx) {
return this.attr('rx', rx)
}
// Radius y value
-export function ry (ry) {
+export function ry(ry) {
return this.attr('ry', ry)
}
// Move over x-axis
-export function x (x) {
- return x == null
- ? this.cx() - this.rx()
- : this.cx(x + this.rx())
+export function x(x) {
+ return x == null ? this.cx() - this.rx() : this.cx(x + this.rx())
}
// Move over y-axis
-export function y (y) {
- return y == null
- ? this.cy() - this.ry()
- : this.cy(y + this.ry())
+export function y(y) {
+ return y == null ? this.cy() - this.ry() : this.cy(y + this.ry())
}
// Move by center over x-axis
-export function cx (x) {
+export function cx(x) {
return this.attr('cx', x)
}
// Move by center over y-axis
-export function cy (y) {
+export function cy(y) {
return this.attr('cy', y)
}
// Set width of element
-export function width (width) {
- return width == null
- ? this.rx() * 2
- : this.rx(new SVGNumber(width).divide(2))
+export function width(width) {
+ return width == null ? this.rx() * 2 : this.rx(new SVGNumber(width).divide(2))
}
// Set height of element
-export function height (height) {
+export function height(height) {
return height == null
? this.ry() * 2
: this.ry(new SVGNumber(height).divide(2))
import Point from '../../types/Point.js'
import { proportionalSize } from '../../utils/utils.js'
-export function dmove (dx, dy) {
- this.children().forEach((child, i) => {
-
+export function dmove(dx, dy) {
+ this.children().forEach((child) => {
let bbox
// We have to wrap this for elements that dont have a bbox
return this
}
-export function dx (dx) {
+export function dx(dx) {
return this.dmove(dx, 0)
}
-export function dy (dy) {
+export function dy(dy) {
return this.dmove(0, dy)
}
-export function height (height, box = this.bbox()) {
+export function height(height, box = this.bbox()) {
if (height == null) return box.height
return this.size(box.width, height, box)
}
-export function move (x = 0, y = 0, box = this.bbox()) {
+export function move(x = 0, y = 0, box = this.bbox()) {
const dx = x - box.x
const dy = y - box.y
return this.dmove(dx, dy)
}
-export function size (width, height, box = this.bbox()) {
+export function size(width, height, box = this.bbox()) {
const p = proportionalSize(this, width, height, box)
const scaleX = p.width / box.width
const scaleY = p.height / box.height
- this.children().forEach((child, i) => {
+ this.children().forEach((child) => {
const o = new Point(box).transform(new Matrix(child).inverse())
child.scale(scaleX, scaleY, o.x, o.y)
})
return this
}
-export function width (width, box = this.bbox()) {
+export function width(width, box = this.bbox()) {
if (width == null) return box.width
return this.size(width, box.height, box)
}
-export function x (x, box = this.bbox()) {
+export function x(x, box = this.bbox()) {
if (x == null) return box.x
return this.move(x, box.y, box)
}
-export function y (y, box = this.bbox()) {
+export function y(y, box = this.bbox()) {
if (y == null) return box.y
return this.move(box.x, y, box)
}
-
-export function noop () {}
+export function noop() {}
// Default animation values
export const timeline = {
// Default attribute values
export const attrs = {
-
// fill and stroke
'fill-opacity': 1,
'stroke-opacity': 1,
let listenerId = 0
export const windowEvents = {}
-export function getEvents (instance) {
+export function getEvents(instance) {
let n = instance.getEventHolder()
// We dont want to save events in global space
return n.events
}
-export function getEventTarget (instance) {
+export function getEventTarget(instance) {
return instance.getEventTarget()
}
-export function clearEvents (instance) {
+export function clearEvents(instance) {
let n = instance.getEventHolder()
if (n === globals.window) n = windowEvents
if (n.events) n.events = {}
}
// Add event binder in the SVG namespace
-export function on (node, events, listener, binding, options) {
+export function on(node, events, listener, binding, options) {
const l = listener.bind(binding || node)
const instance = makeInstance(node)
const bag = getEvents(instance)
}
// Add event unbinder in the SVG namespace
-export function off (node, events, listener, options) {
+export function off(node, events, listener, options) {
const instance = makeInstance(node)
const bag = getEvents(instance)
const n = getEventTarget(instance)
// remove listener reference
if (bag[ev] && bag[ev][ns || '*']) {
// removeListener
- n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false)
+ n.removeEventListener(
+ ev,
+ bag[ev][ns || '*'][listener],
+ options || false
+ )
delete bag[ev][ns || '*'][listener]
}
// remove all listeners for a namespaced event
if (bag[ev] && bag[ev][ns]) {
for (l in bag[ev][ns]) {
- off(n, [ ev, ns ].join('.'), l)
+ off(n, [ev, ns].join('.'), l)
}
delete bag[ev][ns]
for (event in bag) {
for (namespace in bag[event]) {
if (ns === namespace) {
- off(n, [ event, ns ].join('.'))
+ off(n, [event, ns].join('.'))
}
}
}
// remove all listeners for the event
if (bag[ev]) {
for (namespace in bag[ev]) {
- off(n, [ ev, namespace ].join('.'))
+ off(n, [ev, namespace].join('.'))
}
delete bag[ev]
})
}
-export function dispatch (node, event, data, options) {
+export function dispatch(node, event, data, options) {
const n = getEventTarget(node)
// Dispatch event
if (event instanceof globals.window.Event) {
n.dispatchEvent(event)
} else {
- event = new globals.window.CustomEvent(event, { detail: data, cancelable: true, ...options })
+ event = new globals.window.CustomEvent(event, {
+ detail: data,
+ cancelable: true,
+ ...options
+ })
n.dispatchEvent(event)
}
return event
import SVGNumber from '../../types/SVGNumber.js'
-export function from (x, y) {
+export function from(x, y) {
return (this._element || this).type === 'radialGradient'
? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })
: this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })
}
-export function to (x, y) {
+export function to(x, y) {
return (this._element || this).type === 'radialGradient'
? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })
: this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })
import { globals } from '../../utils/window.js'
import { makeInstance } from '../../utils/adopter.js'
-export default function parser () {
+export default function parser() {
// Reuse cached element if possible
if (!parser.nodes) {
const svg = makeInstance().size(2, 0)
export const MorphArray = PointArray
// Move by left top corner over x-axis
-export function x (x) {
+export function x(x) {
return x == null ? this.bbox().x : this.move(x, this.bbox().y)
}
// Move by left top corner over y-axis
-export function y (y) {
+export function y(y) {
return y == null ? this.bbox().y : this.move(this.bbox().x, y)
}
// Set width of element
-export function width (width) {
+export function width(width) {
const b = this.bbox()
return width == null ? b.width : this.size(width, b.height)
}
// Set height of element
-export function height (height) {
+export function height(height) {
const b = this.bbox()
return height == null ? b.height : this.size(b.width, height)
}
import PointArray from '../../types/PointArray.js'
// Get array
-export function array () {
+export function array() {
return this._array || (this._array = new PointArray(this.attr('points')))
}
// Clear array cache
-export function clear () {
+export function clear() {
delete this._array
return this
}
// Move by left top corner
-export function move (x, y) {
+export function move(x, y) {
return this.attr('points', this.array().move(x, y))
}
// Plot new path
-export function plot (p) {
- return (p == null)
+export function plot(p) {
+ return p == null
? this.array()
- : this.clear().attr('points', typeof p === 'string'
- ? p
- : (this._array = new PointArray(p)))
+ : this.clear().attr(
+ 'points',
+ typeof p === 'string' ? p : (this._array = new PointArray(p))
+ )
}
// Set element size to given width and height
-export function size (width, height) {
+export function size(width, height) {
const p = proportionalSize(this, width, height)
return this.attr('points', this.array().size(p.width, p.height))
}
// Parse unit value
-export const numberAndUnit = /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i
+export const numberAndUnit =
+ /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i
// Parse hex value
export const hex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i
import { map } from '../../utils/utils.js'
import List from '../../types/List.js'
-export default function baseFind (query, parent) {
- return new List(map((parent || globals.document).querySelectorAll(query), function (node) {
- return adopt(node)
- }))
+export default function baseFind(query, parent) {
+ return new List(
+ map((parent || globals.document).querySelectorAll(query), function (node) {
+ return adopt(node)
+ })
+ )
}
// Scoped find method
-export function find (query) {
+export function find(query) {
return baseFind(query, this.node)
}
-export function findOne (query) {
+export function findOne(query) {
return adopt(this.node.querySelector(query))
}
import { globals } from '../../utils/window.js'
// Create plain text node
-export function plain (text) {
+export function plain(text) {
// clear if build mode is disabled
if (this._build === false) {
this.clear()
}
// Get length of text element
-export function length () {
+export function length() {
return this.node.getComputedTextLength()
}
// Move over x-axis
// Text is moved by its bounding box
// text-anchor does NOT matter
-export function x (x, box = this.bbox()) {
+export function x(x, box = this.bbox()) {
if (x == null) {
return box.x
}
}
// Move over y-axis
-export function y (y, box = this.bbox()) {
+export function y(y, box = this.bbox()) {
if (y == null) {
return box.y
}
return this.attr('y', this.attr('y') + y - box.y)
}
-export function move (x, y, box = this.bbox()) {
+export function move(x, y, box = this.bbox()) {
return this.x(x, box).y(y, box)
}
// Move center over x-axis
-export function cx (x, box = this.bbox()) {
+export function cx(x, box = this.bbox()) {
if (x == null) {
return box.cx
}
}
// Move center over y-axis
-export function cy (y, box = this.bbox()) {
+export function cy(y, box = this.bbox()) {
if (y == null) {
return box.cy
}
return this.attr('y', this.attr('y') + y - box.cy)
}
-export function center (x, y, box = this.bbox()) {
+export function center(x, y, box = this.bbox()) {
return this.cx(x, box).cy(y, box)
}
-export function ax (x) {
+export function ax(x) {
return this.attr('x', x)
}
-export function ay (y) {
+export function ay(y) {
return this.attr('y', y)
}
-export function amove (x, y) {
+export function amove(x, y) {
return this.ax(x).ay(y)
}
// Enable / disable build mode
-export function build (build) {
+export function build(build) {
this._build = !!build
return this
}
import { registerMethods } from '../../utils/methods.js'
// Get all siblings, including myself
-export function siblings () {
+export function siblings() {
return this.parent().children()
}
// Get the current position siblings
-export function position () {
+export function position() {
return this.parent().index(this)
}
// Get the next element (will return null if there is none)
-export function next () {
+export function next() {
return this.siblings()[this.position() + 1]
}
// Get the next element (will return null if there is none)
-export function prev () {
+export function prev() {
return this.siblings()[this.position() - 1]
}
// Send given element one step forward
-export function forward () {
+export function forward() {
const i = this.position()
const p = this.parent()
}
// Send given element one step backward
-export function backward () {
+export function backward() {
const i = this.position()
const p = this.parent()
}
// Send given element all the way to the front
-export function front () {
+export function front() {
const p = this.parent()
// Move node forward
}
// Send given element all the way to the back
-export function back () {
+export function back() {
const p = this.parent()
// Move node back
}
// Inserts a given element before the targeted element
-export function before (element) {
+export function before(element) {
element = makeInstance(element)
element.remove()
}
// Inserts a given element after the targeted element
-export function after (element) {
+export function after(element) {
element = makeInstance(element)
element.remove()
return this
}
-export function insertBefore (element) {
+export function insertBefore(element) {
element = makeInstance(element)
element.before(this)
return this
}
-export function insertAfter (element) {
+export function insertAfter(element) {
element = makeInstance(element)
element.after(this)
return this
import { registerMethods } from '../../utils/methods.js'
// Return array of classes on the node
-export function classes () {
+export function classes() {
const attr = this.attr('class')
return attr == null ? [] : attr.trim().split(delimiter)
}
// Return true if class exists on the node, false otherwise
-export function hasClass (name) {
+export function hasClass(name) {
return this.classes().indexOf(name) !== -1
}
// Add class to the node
-export function addClass (name) {
+export function addClass(name) {
if (!this.hasClass(name)) {
const array = this.classes()
array.push(name)
}
// Remove class from the node
-export function removeClass (name) {
+export function removeClass(name) {
if (this.hasClass(name)) {
- this.attr('class', this.classes().filter(function (c) {
- return c !== name
- }).join(' '))
+ this.attr(
+ 'class',
+ this.classes()
+ .filter(function (c) {
+ return c !== name
+ })
+ .join(' ')
+ )
}
return this
}
// Toggle the presence of a class on the node
-export function toggleClass (name) {
+export function toggleClass(name) {
return this.hasClass(name) ? this.removeClass(name) : this.addClass(name)
}
registerMethods('Dom', {
- classes, hasClass, addClass, removeClass, toggleClass
+ classes,
+ hasClass,
+ addClass,
+ removeClass,
+ toggleClass
})
import { registerMethods } from '../../utils/methods.js'
// Dynamic style generator
-export function css (style, val) {
+export function css(style, val) {
const ret = {}
if (arguments.length === 0) {
// get full style as object
- this.node.style.cssText.split(/\s*;\s*/)
+ this.node.style.cssText
+ .split(/\s*;\s*/)
.filter(function (el) {
return !!el.length
})
if (typeof style === 'object') {
for (const name in style) {
// set empty string if null/undefined/'' was given
- this.node.style[camelCase(name)]
- = (style[name] == null || isBlank.test(style[name])) ? '' : style[name]
+ this.node.style[camelCase(name)] =
+ style[name] == null || isBlank.test(style[name]) ? '' : style[name]
}
}
}
// set style for property
if (arguments.length === 2) {
- this.node.style[camelCase(style)]
- = (val == null || isBlank.test(val)) ? '' : val
+ this.node.style[camelCase(style)] =
+ val == null || isBlank.test(val) ? '' : val
}
return this
}
// Show element
-export function show () {
+export function show() {
return this.css('display', '')
}
// Hide element
-export function hide () {
+export function hide() {
return this.css('display', 'none')
}
// Is element visible?
-export function visible () {
+export function visible() {
return this.css('display') !== 'none'
}
registerMethods('Dom', {
- css, show, hide, visible
+ css,
+ show,
+ hide,
+ visible
})
import { filter, map } from '../../utils/utils.js'
// Store data values on svg nodes
-export function data (a, v, r) {
+export function data(a, v, r) {
if (a == null) {
// get an object of attributes
- return this.data(map(filter(this.node.attributes, (el) => el.nodeName.indexOf('data-') === 0), (el) => el.nodeName.slice(5)))
+ return this.data(
+ map(
+ filter(
+ this.node.attributes,
+ (el) => el.nodeName.indexOf('data-') === 0
+ ),
+ (el) => el.nodeName.slice(5)
+ )
+ )
} else if (a instanceof Array) {
const data = {}
for (const key of a) {
return this.attr('data-' + a)
}
} else {
- this.attr('data-' + a,
+ this.attr(
+ 'data-' + a,
v === null
? null
: r === true || typeof v === 'string' || typeof v === 'number'
- ? v
- : JSON.stringify(v)
+ ? v
+ : JSON.stringify(v)
)
}
import { registerMethods } from '../../utils/methods.js'
// Remember arbitrary data
-export function remember (k, v) {
+export function remember(k, v) {
// remember every item in an object individually
if (typeof arguments[0] === 'object') {
for (const key in k) {
}
// Erase a given memory
-export function forget () {
+export function forget() {
if (arguments.length === 0) {
this._memory = {}
} else {
// This triggers creation of a new hidden class which is not performant
// However, this function is not rarely used so it will not happen frequently
// Return local memory object
-export function memory () {
+export function memory() {
return (this._memory = this._memory || {})
}
// Define list of available attributes for stroke and fill
const sugar = {
- stroke: [ 'color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset' ],
- fill: [ 'color', 'opacity', 'rule' ],
+ stroke: [
+ 'color',
+ 'width',
+ 'opacity',
+ 'linecap',
+ 'linejoin',
+ 'miterlimit',
+ 'dasharray',
+ 'dashoffset'
+ ],
+ fill: ['color', 'opacity', 'rule'],
prefix: function (t, a) {
return a === 'color' ? t : t + '-' + a
}
}
// Add sugar for fill and stroke
-;[ 'fill', 'stroke' ].forEach(function (m) {
+;['fill', 'stroke'].forEach(function (m) {
const extension = {}
let i
if (typeof o === 'undefined') {
return this.attr(m)
}
- if (typeof o === 'string' || o instanceof Color || Color.isRgb(o) || (o instanceof Element)) {
+ if (
+ typeof o === 'string' ||
+ o instanceof Color ||
+ Color.isRgb(o) ||
+ o instanceof Element
+ ) {
this.attr(m, o)
} else {
// set all attributes from sugar.fill and sugar.stroke list
return this
}
- registerMethods([ 'Element', 'Runner' ], extension)
+ registerMethods(['Element', 'Runner'], extension)
})
-registerMethods([ 'Element', 'Runner' ], {
+registerMethods(['Element', 'Runner'], {
// Let the user set the matrix directly
matrix: function (mat, b, c, d, e, f) {
// Act as a getter
skew: function (x, y, cx, cy) {
return arguments.length === 1 || arguments.length === 3
? this.transform({ skew: x, ox: y, oy: cx }, true)
- : this.transform({ skew: [ x, y ], ox: cx, oy: cy }, true)
+ : this.transform({ skew: [x, y], ox: cx, oy: cy }, true)
},
shear: function (lam, cx, cy) {
scale: function (x, y, cx, cy) {
return arguments.length === 1 || arguments.length === 3
? this.transform({ scale: x, ox: y, oy: cx }, true)
- : this.transform({ scale: [ x, y ], ox: cx, oy: cy }, true)
+ : this.transform({ scale: [x, y], ox: cx, oy: cy }, true)
},
// Map translate to transform
translate: function (x, y) {
- return this.transform({ translate: [ x, y ] }, true)
+ return this.transform({ translate: [x, y] }, true)
},
// Map relative translations to transform
relative: function (x, y) {
- return this.transform({ relative: [ x, y ] }, true)
+ return this.transform({ relative: [x, y] }, true)
},
// Map flip to transform
}
})
-registerMethods([ 'Element', 'Runner' ], {
+registerMethods(['Element', 'Runner'], {
// Set font
font: function (a, v) {
if (typeof a === 'object') {
return a === 'leading'
? this.leading(v)
: a === 'anchor'
- ? this.attr('text-anchor', v)
- : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'
- ? this.attr('font-' + a, v)
- : this.attr(a, v)
+ ? this.attr('text-anchor', v)
+ : a === 'size' ||
+ a === 'family' ||
+ a === 'weight' ||
+ a === 'stretch' ||
+ a === 'variant' ||
+ a === 'style'
+ ? this.attr('font-' + a, v)
+ : this.attr(a, v)
}
})
// Add events to elements
-const methods = [ 'click',
+const methods = [
+ 'click',
'dblclick',
'mousedown',
'mouseup',
'touchmove',
'touchleave',
'touchend',
- 'touchcancel' ].reduce(function (last, event) {
+ 'touchcancel'
+].reduce(function (last, event) {
// add event to Element
const fn = function (f) {
if (f === null) {
import Matrix from '../../types/Matrix.js'
// Reset all transformations
-export function untransform () {
+export function untransform() {
return this.attr('transform', null)
}
// merge the whole transformation chain into one matrix and returns it
-export function matrixify () {
+export function matrixify() {
const matrix = (this.attr('transform') || '')
// split transformations
- .split(transforms).slice(0, -1).map(function (str) {
+ .split(transforms)
+ .slice(0, -1)
+ .map(function (str) {
// generate key => value pairs
const kv = str.trim().split('(')
- return [ kv[0],
- kv[1].split(delimiter)
- .map(function (str) {
- return parseFloat(str)
- })
+ return [
+ kv[0],
+ kv[1].split(delimiter).map(function (str) {
+ return parseFloat(str)
+ })
]
})
.reverse()
}
// add an element to another parent without changing the visual representation on the screen
-export function toParent (parent, i) {
+export function toParent(parent, i) {
if (this === parent) return this
const ctm = this.screenCTM()
const pCtm = parent.screenCTM().inverse()
}
// same as above with parent equals root-svg
-export function toRoot (i) {
+export function toRoot(i) {
return this.toParent(this.root(), i)
}
// Add transformations
-export function transform (o, relative) {
+export function transform(o, relative) {
// Act as a getter if no object was passed
if (o == null || typeof o === 'string') {
const decomposed = new Matrix(this).decompose()
}
// The user can pass a boolean, an Element or an Matrix or nothing
- const cleanRelative = relative === true ? this : (relative || false)
+ const cleanRelative = relative === true ? this : relative || false
const result = new Matrix(cleanRelative).transform(o)
return this.attr('transform', result)
}
registerMethods('Element', {
- untransform, matrixify, toParent, toRoot, transform
+ untransform,
+ matrixify,
+ toParent,
+ toRoot,
+ transform
})
import { filter } from '../utils/utils.js'
// IE11: children does not work for svg nodes
-export default function children (node) {
+export default function children(node) {
return filter(node.childNodes, function (child) {
return child.nodeType === 1
})
-/* globals SVGElement, DOMParser */
-
-(function () {
+;(function () {
try {
if (SVGElement.prototype.innerHTML) return
- } catch (e) { return }
+ } catch (e) {
+ return
+ }
const serializeXML = function (node, output) {
const nodeType = node.nodeType
if (nodeType === 3) {
- output.push(node.textContent.replace(/&/, '&').replace(/</, '<').replace('>', '>'))
+ output.push(
+ node.textContent
+ .replace(/&/, '&')
+ .replace(/</, '<')
+ .replace('>', '>')
+ )
} else if (nodeType === 1) {
output.push('<', node.tagName)
if (node.hasAttributes()) {
- [].forEach.call(node.attributes, function (attrNode) {
+ ;[].forEach.call(node.attributes, function (attrNode) {
output.push(' ', attrNode.name, '="', attrNode.value, '"')
})
}
output.push('>')
if (node.hasChildNodes()) {
- [].forEach.call(node.childNodes, function (childNode) {
+ ;[].forEach.call(node.childNodes, function (childNode) {
serializeXML(childNode, output)
})
} else {
const dXML = new DOMParser()
dXML.async = false
- const sXML = '<svg xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'>' + markupText + '</svg>'
- const svgDocElement = dXML.parseFromString(sXML, 'text/xml').documentElement
+ const sXML =
+ "<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>" +
+ markupText +
+ '</svg>'
+ const svgDocElement = dXML.parseFromString(
+ sXML,
+ 'text/xml'
+ ).documentElement
let childNode = svgDocElement.firstChild
while (childNode) {
}
} catch (e) {
throw new Error('Can not set innerHTML on node')
- };
+ }
}
})
const dXML = new DOMParser()
dXML.async = false
- const sXML = '<svg xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'>' + markupText + '</svg>'
- const svgDocElement = dXML.parseFromString(sXML, 'text/xml').documentElement
+ const sXML =
+ "<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>" +
+ markupText +
+ '</svg>'
+ const svgDocElement = dXML.parseFromString(
+ sXML,
+ 'text/xml'
+ ).documentElement
let childNode = svgDocElement.firstChild
while (childNode) {
- this.parentNode.insertBefore(this.ownerDocument.importNode(childNode, true), this)
+ this.parentNode.insertBefore(
+ this.ownerDocument.importNode(childNode, true),
+ this
+ )
// this.appendChild(this.ownerDocument.importNode(childNode, true));
childNode = childNode.nextSibling
}
} catch (e) {
throw new Error('Can not set outerHTML on node')
- };
+ }
}
})
})()
import { makeInstance } from './utils/adopter.js'
// The main wrapping element
-export default function SVG (element, isHTML) {
+export default function SVG(element, isHTML) {
return makeInstance(element, isHTML)
}
import Point from './Point.js'
import parser from '../modules/core/parser.js'
-export function isNulledBox (box) {
+export function isNulledBox(box) {
return !box.width && !box.height && !box.x && !box.y
}
-export function domContains (node) {
- return node === globals.document
- || (globals.document.documentElement.contains || function (node) {
- // This is IE - it does not support contains() for top-level SVGs
- while (node.parentNode) {
- node = node.parentNode
+export function domContains(node) {
+ return (
+ node === globals.document ||
+ (
+ globals.document.documentElement.contains ||
+ function (node) {
+ // This is IE - it does not support contains() for top-level SVGs
+ while (node.parentNode) {
+ node = node.parentNode
+ }
+ return node === globals.document
}
- return node === globals.document
- }).call(globals.document.documentElement, node)
+ ).call(globals.document.documentElement, node)
+ )
}
export default class Box {
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
- addOffset () {
+ addOffset() {
// offset by window scroll position, because getBoundingClientRect changes when window is scrolled
this.x += globals.window.pageXOffset
this.y += globals.window.pageYOffset
return new Box(this)
}
- init (source) {
- const base = [ 0, 0, 0, 0 ]
- source = typeof source === 'string'
- ? source.split(delimiter).map(parseFloat)
- : Array.isArray(source)
+ init(source) {
+ const base = [0, 0, 0, 0]
+ source =
+ typeof source === 'string'
+ ? source.split(delimiter).map(parseFloat)
+ : Array.isArray(source)
? source
: typeof source === 'object'
- ? [ source.left != null
- ? source.left
- : source.x, source.top != null ? source.top : source.y, source.width, source.height ]
- : arguments.length === 4
- ? [].slice.call(arguments)
- : base
+ ? [
+ source.left != null ? source.left : source.x,
+ source.top != null ? source.top : source.y,
+ source.width,
+ source.height
+ ]
+ : arguments.length === 4
+ ? [].slice.call(arguments)
+ : base
this.x = source[0] || 0
this.y = source[1] || 0
return this
}
- isNulled () {
+ isNulled() {
return isNulledBox(this)
}
// Merge rect box with another, return a new instance
- merge (box) {
+ merge(box) {
const x = Math.min(this.x, box.x)
const y = Math.min(this.y, box.y)
const width = Math.max(this.x + this.width, box.x + box.width) - x
return new Box(x, y, width, height)
}
- toArray () {
- return [ this.x, this.y, this.width, this.height ]
+ toArray() {
+ return [this.x, this.y, this.width, this.height]
}
- toString () {
+ toString() {
return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height
}
- transform (m) {
+ transform(m) {
if (!(m instanceof Matrix)) {
m = new Matrix(m)
}
yMax = Math.max(yMax, p.y)
})
- return new Box(
- xMin, yMin,
- xMax - xMin,
- yMax - yMin
- )
+ return new Box(xMin, yMin, xMax - xMin, yMax - yMin)
}
-
}
-function getBox (el, getBBoxFn, retry) {
+function getBox(el, getBBoxFn, retry) {
let box
try {
return box
}
-export function bbox () {
+export function bbox() {
// Function to get bbox is getBBox()
const getBBox = (node) => node.getBBox()
return box
} catch (e) {
// We give up...
- throw new Error(`Getting bbox of element "${el.node.nodeName}" is not possible: ${e.toString()}`)
+ throw new Error(
+ `Getting bbox of element "${
+ el.node.nodeName
+ }" is not possible: ${e.toString()}`
+ )
}
}
return bbox
}
-export function rbox (el) {
+export function rbox(el) {
const getRBox = (node) => node.getBoundingClientRect()
const retry = (el) => {
// There is no point in trying tricks here because if we insert the element into the dom ourselves
// it obviously will be at the wrong position
- throw new Error(`Getting rbox of element "${el.node.nodeName}" is not possible`)
+ throw new Error(
+ `Getting rbox of element "${el.node.nodeName}" is not possible`
+ )
}
const box = getBox(this, getRBox, retry)
}
// Checks whether the given point is inside the bounding box
-export function inside (x, y) {
+export function inside(x, y) {
const box = this.bbox()
- return x > box.x
- && y > box.y
- && x < box.x + box.width
- && y < box.y + box.height
+ return (
+ x > box.x && y > box.y && x < box.x + box.width && y < box.y + box.height
+ )
}
registerMethods({
viewbox: {
- viewbox (x, y, width, height) {
+ viewbox(x, y, width, height) {
// act as getter
if (x == null) return new Box(this.attr('viewBox'))
return this.attr('viewBox', new Box(x, y, width, height))
},
- zoom (level, point) {
+ zoom(level, point) {
// Its best to rely on the attributes here and here is why:
// clientXYZ: Doesn't work on non-root svgs because they dont have a CSSBox (silly!)
// getBoundingClientRect: Doesn't work because Chrome just ignores width and height of nested svgs completely
// Furthermore this size is incorrect if the element is further transformed by its parents
// computedStyle: Only returns meaningful values if css was used with px. We dont go this route here!
// getBBox: returns the bounding box of its content - that doesn't help!
- let { width, height } = this.attr([ 'width', 'height' ])
+ let { width, height } = this.attr(['width', 'height'])
// Width and height is a string when a number with a unit is present which we can't use
// So we try clientXYZ
- if ((!width && !height) || (typeof width === 'string' || typeof height === 'string')) {
+ if (
+ (!width && !height) ||
+ typeof width === 'string' ||
+ typeof height === 'string'
+ ) {
width = this.node.clientWidth
height = this.node.clientHeight
}
// Giving up...
if (!width || !height) {
- throw new Error('Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element')
+ throw new Error(
+ 'Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element'
+ )
}
const v = this.viewbox()
// The * 100 is a bit of wiggle room for the matrix transformation
if (zoomAmount === Infinity) zoomAmount = Number.MAX_SAFE_INTEGER / 100
- point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)
+ point =
+ point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)
const box = new Box(v).transform(
new Matrix({ scale: zoomAmount, origin: point })
-
import { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'
-function sixDigitHex (hex) {
+function sixDigitHex(hex) {
return hex.length === 4
- ? [ '#',
- hex.substring(1, 2), hex.substring(1, 2),
- hex.substring(2, 3), hex.substring(2, 3),
- hex.substring(3, 4), hex.substring(3, 4)
- ].join('')
+ ? [
+ '#',
+ hex.substring(1, 2),
+ hex.substring(1, 2),
+ hex.substring(2, 3),
+ hex.substring(2, 3),
+ hex.substring(3, 4),
+ hex.substring(3, 4)
+ ].join('')
: hex
}
-function componentHex (component) {
+function componentHex(component) {
const integer = Math.round(component)
const bounded = Math.max(0, Math.min(255, integer))
const hex = bounded.toString(16)
return hex.length === 1 ? '0' + hex : hex
}
-function is (object, space) {
- for (let i = space.length; i--;) {
+function is(object, space) {
+ for (let i = space.length; i--; ) {
if (object[space[i]] == null) {
return false
}
return true
}
-function getParameters (a, b) {
+function getParameters(a, b) {
const params = is(a, 'rgb')
? { _a: a.r, _b: a.g, _c: a.b, _d: 0, space: 'rgb' }
: is(a, 'xyz')
- ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }
- : is(a, 'hsl')
- ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }
- : is(a, 'lab')
- ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }
- : is(a, 'lch')
- ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }
- : is(a, 'cmyk')
- ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }
- : { _a: 0, _b: 0, _c: 0, space: 'rgb' }
+ ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }
+ : is(a, 'hsl')
+ ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }
+ : is(a, 'lab')
+ ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }
+ : is(a, 'lch')
+ ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }
+ : is(a, 'cmyk')
+ ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }
+ : { _a: 0, _b: 0, _c: 0, space: 'rgb' }
params.space = b || params.space
return params
}
-function cieSpace (space) {
+function cieSpace(space) {
if (space === 'lab' || space === 'xyz' || space === 'lch') {
return true
} else {
}
}
-function hueToRgb (p, q, t) {
+function hueToRgb(p, q, t) {
if (t < 0) t += 1
if (t > 1) t -= 1
if (t < 1 / 6) return p + (q - p) * 6 * t
}
export default class Color {
- constructor (...inputs) {
+ constructor(...inputs) {
this.init(...inputs)
}
// Test if given value is a color
- static isColor (color) {
- return color && (
- color instanceof Color
- || this.isRgb(color)
- || this.test(color)
+ static isColor(color) {
+ return (
+ color && (color instanceof Color || this.isRgb(color) || this.test(color))
)
}
// Test if given value is an rgb object
- static isRgb (color) {
- return color && typeof color.r === 'number'
- && typeof color.g === 'number'
- && typeof color.b === 'number'
+ static isRgb(color) {
+ return (
+ color &&
+ typeof color.r === 'number' &&
+ typeof color.g === 'number' &&
+ typeof color.b === 'number'
+ )
}
/*
Generating random colors
*/
- static random (mode = 'vibrant', t, u) {
-
+ static random(mode = 'vibrant', t) {
// Get the math modules
const { random, round, sin, PI: pi } = Math
// Run the correct generator
if (mode === 'vibrant') {
-
const l = (81 - 57) * random() + 57
const c = (83 - 45) * random() + 45
const h = 360 * random()
const color = new Color(l, c, h, 'lch')
return color
-
} else if (mode === 'sine') {
-
t = t == null ? random() : t
- const r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150)
- const g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200)
- const b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150)
+ const r = round(80 * sin((2 * pi * t) / 0.5 + 0.01) + 150)
+ const g = round(50 * sin((2 * pi * t) / 0.5 + 4.6) + 200)
+ const b = round(100 * sin((2 * pi * t) / 0.5 + 2.3) + 150)
const color = new Color(r, g, b)
return color
-
} else if (mode === 'pastel') {
-
const l = (94 - 86) * random() + 86
const c = (26 - 9) * random() + 9
const h = 360 * random()
const color = new Color(l, c, h, 'lch')
return color
-
} else if (mode === 'dark') {
-
const l = 10 + 10 * random()
const c = (125 - 75) * random() + 86
const h = 360 * random()
const color = new Color(l, c, h, 'lch')
return color
-
} else if (mode === 'rgb') {
-
const r = 255 * random()
const g = 255 * random()
const b = 255 * random()
const color = new Color(r, g, b)
return color
-
} else if (mode === 'lab') {
-
const l = 100 * random()
const a = 256 * random() - 128
const b = 256 * random() - 128
const color = new Color(l, a, b, 'lab')
return color
-
} else if (mode === 'grey') {
-
const grey = 255 * random()
const color = new Color(grey, grey, grey)
return color
-
} else {
-
throw new Error('Unsupported random color mode')
-
}
}
// Test if given value is a color string
- static test (color) {
- return (typeof color === 'string')
- && (isHex.test(color) || isRgb.test(color))
+ static test(color) {
+ return typeof color === 'string' && (isHex.test(color) || isRgb.test(color))
}
- cmyk () {
-
+ cmyk() {
// Get the rgb values for the current color
const { _a, _b, _c } = this.rgb()
- const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)
+ const [r, g, b] = [_a, _b, _c].map((v) => v / 255)
// Get the cmyk values in an unbounded format
const k = Math.min(1 - r, 1 - g, 1 - b)
return color
}
- hsl () {
-
+ hsl() {
// Get the rgb values
const { _a, _b, _c } = this.rgb()
- const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)
+ const [r, g, b] = [_a, _b, _c].map((v) => v / 255)
// Find the maximum and minimum values to get the lightness
const max = Math.max(r, g, b)
const s = isGrey
? 0
: l > 0.5
- ? delta / (2 - max - min)
- : delta / (max + min)
+ ? delta / (2 - max - min)
+ : delta / (max + min)
const h = isGrey
? 0
: max === r
- ? ((g - b) / delta + (g < b ? 6 : 0)) / 6
- : max === g
- ? ((b - r) / delta + 2) / 6
- : max === b
- ? ((r - g) / delta + 4) / 6
- : 0
+ ? ((g - b) / delta + (g < b ? 6 : 0)) / 6
+ : max === g
+ ? ((b - r) / delta + 2) / 6
+ : max === b
+ ? ((r - g) / delta + 4) / 6
+ : 0
// Construct and return the new color
const color = new Color(360 * h, 100 * s, 100 * l, 'hsl')
return color
}
- init (a = 0, b = 0, c = 0, d = 0, space = 'rgb') {
+ init(a = 0, b = 0, c = 0, d = 0, space = 'rgb') {
// This catches the case when a falsy value is passed like ''
a = !a ? 0 : a
// Assign the values straight to the color
Object.assign(this, { _a: a, _b: b, _c: c, _d: d, space })
- // If the user gave us an array, make the color from it
+ // If the user gave us an array, make the color from it
} else if (a instanceof Array) {
this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb'
Object.assign(this, { _a: a[0], _b: a[1], _c: a[2], _d: a[3] || 0 })
} else if (typeof a === 'string') {
if (isRgb.test(a)) {
const noWhitespace = a.replace(whitespace, '')
- const [ _a, _b, _c ] = rgb.exec(noWhitespace)
- .slice(1, 4).map(v => parseInt(v))
+ const [_a, _b, _c] = rgb
+ .exec(noWhitespace)
+ .slice(1, 4)
+ .map((v) => parseInt(v))
Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })
} else if (isHex.test(a)) {
- const hexParse = v => parseInt(v, 16)
- const [ , _a, _b, _c ] = hex.exec(sixDigitHex(a)).map(hexParse)
+ const hexParse = (v) => parseInt(v, 16)
+ const [, _a, _b, _c] = hex.exec(sixDigitHex(a)).map(hexParse)
Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })
- } else throw Error('Unsupported string format, can\'t construct Color')
+ } else throw Error("Unsupported string format, can't construct Color")
}
// Now add the components as a convenience
const { _a, _b, _c, _d } = this
- const components = this.space === 'rgb'
- ? { r: _a, g: _b, b: _c }
- : this.space === 'xyz'
+ const components =
+ this.space === 'rgb'
+ ? { r: _a, g: _b, b: _c }
+ : this.space === 'xyz'
? { x: _a, y: _b, z: _c }
: this.space === 'hsl'
- ? { h: _a, s: _b, l: _c }
- : this.space === 'lab'
- ? { l: _a, a: _b, b: _c }
- : this.space === 'lch'
- ? { l: _a, c: _b, h: _c }
- : this.space === 'cmyk'
- ? { c: _a, m: _b, y: _c, k: _d }
- : {}
+ ? { h: _a, s: _b, l: _c }
+ : this.space === 'lab'
+ ? { l: _a, a: _b, b: _c }
+ : this.space === 'lch'
+ ? { l: _a, c: _b, h: _c }
+ : this.space === 'cmyk'
+ ? { c: _a, m: _b, y: _c, k: _d }
+ : {}
Object.assign(this, components)
}
- lab () {
+ lab() {
// Get the xyz color
const { x, y, z } = this.xyz()
// Get the lab components
- const l = (116 * y) - 16
+ const l = 116 * y - 16
const a = 500 * (x - y)
const b = 200 * (y - z)
return color
}
- lch () {
-
+ lch() {
// Get the lab color directly
const { l, a, b } = this.lab()
// Get the chromaticity and the hue using polar coordinates
const c = Math.sqrt(a ** 2 + b ** 2)
- let h = 180 * Math.atan2(b, a) / Math.PI
+ let h = (180 * Math.atan2(b, a)) / Math.PI
if (h < 0) {
h *= -1
h = 360 - h
Conversion Methods
*/
- rgb () {
+ rgb() {
if (this.space === 'rgb') {
return this
} else if (cieSpace(this.space)) {
const ct = 16 / 116
const mx = 0.008856
const nm = 7.787
- x = 0.95047 * ((xL ** 3 > mx) ? xL ** 3 : (xL - ct) / nm)
- y = 1.00000 * ((yL ** 3 > mx) ? yL ** 3 : (yL - ct) / nm)
- z = 1.08883 * ((zL ** 3 > mx) ? zL ** 3 : (zL - ct) / nm)
+ x = 0.95047 * (xL ** 3 > mx ? xL ** 3 : (xL - ct) / nm)
+ y = 1.0 * (yL ** 3 > mx ? yL ** 3 : (yL - ct) / nm)
+ z = 1.08883 * (zL ** 3 > mx ? zL ** 3 : (zL - ct) / nm)
}
// Convert xyz to unbounded rgb values
const rU = x * 3.2406 + y * -1.5372 + z * -0.4986
const gU = x * -0.9689 + y * 1.8758 + z * 0.0415
- const bU = x * 0.0557 + y * -0.2040 + z * 1.0570
+ const bU = x * 0.0557 + y * -0.204 + z * 1.057
// Convert the values to true rgb values
const pow = Math.pow
const bd = 0.0031308
- const r = (rU > bd) ? (1.055 * pow(rU, 1 / 2.4) - 0.055) : 12.92 * rU
- const g = (gU > bd) ? (1.055 * pow(gU, 1 / 2.4) - 0.055) : 12.92 * gU
- const b = (bU > bd) ? (1.055 * pow(bU, 1 / 2.4) - 0.055) : 12.92 * bU
+ const r = rU > bd ? 1.055 * pow(rU, 1 / 2.4) - 0.055 : 12.92 * rU
+ const g = gU > bd ? 1.055 * pow(gU, 1 / 2.4) - 0.055 : 12.92 * gU
+ const b = bU > bd ? 1.055 * pow(bU, 1 / 2.4) - 0.055 : 12.92 * bU
// Make and return the color
const color = new Color(255 * r, 255 * g, 255 * b)
}
}
- toArray () {
+ toArray() {
const { _a, _b, _c, _d, space } = this
- return [ _a, _b, _c, _d, space ]
+ return [_a, _b, _c, _d, space]
}
- toHex () {
- const [ r, g, b ] = this._clamped().map(componentHex)
+ toHex() {
+ const [r, g, b] = this._clamped().map(componentHex)
return `#${r}${g}${b}`
}
- toRgb () {
- const [ rV, gV, bV ] = this._clamped()
+ toRgb() {
+ const [rV, gV, bV] = this._clamped()
const string = `rgb(${rV},${gV},${bV})`
return string
}
- toString () {
+ toString() {
return this.toHex()
}
- xyz () {
-
+ xyz() {
// Normalise the red, green and blue values
const { _a: r255, _b: g255, _c: b255 } = this.rgb()
- const [ r, g, b ] = [ r255, g255, b255 ].map(v => v / 255)
+ const [r, g, b] = [r255, g255, b255].map((v) => v / 255)
// Convert to the lab rgb space
- const rL = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92
- const gL = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92
- const bL = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92
+ const rL = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92
+ const gL = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92
+ const bL = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92
// Convert to the xyz color space without bounding the values
const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047
- const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.00000
+ const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.0
const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883
// Get the proper xyz values by applying the bounding
- const x = (xU > 0.008856) ? Math.pow(xU, 1 / 3) : (7.787 * xU) + 16 / 116
- const y = (yU > 0.008856) ? Math.pow(yU, 1 / 3) : (7.787 * yU) + 16 / 116
- const z = (zU > 0.008856) ? Math.pow(zU, 1 / 3) : (7.787 * zU) + 16 / 116
+ const x = xU > 0.008856 ? Math.pow(xU, 1 / 3) : 7.787 * xU + 16 / 116
+ const y = yU > 0.008856 ? Math.pow(yU, 1 / 3) : 7.787 * yU + 16 / 116
+ const z = zU > 0.008856 ? Math.pow(zU, 1 / 3) : 7.787 * zU + 16 / 116
// Make and return the color
const color = new Color(x, y, z, 'xyz')
Input and Output methods
*/
- _clamped () {
+ _clamped() {
const { _a, _b, _c } = this.rgb()
const { max, min, round } = Math
- const format = v => max(0, min(round(v), 255))
- return [ _a, _b, _c ].map(format)
+ const format = (v) => max(0, min(round(v), 255))
+ return [_a, _b, _c].map(format)
}
/*
Constructing colors
*/
-
}
import Base from './Base.js'
export default class EventTarget extends Base {
- addEventListener () {}
+ addEventListener() {}
- dispatch (event, data, options) {
+ dispatch(event, data, options) {
return dispatch(this, event, data, options)
}
- dispatchEvent (event) {
+ dispatchEvent(event) {
const bag = this.getEventHolder().events
if (!bag) return true
}
// Fire given event
- fire (event, data, options) {
+ fire(event, data, options) {
this.dispatch(event, data, options)
return this
}
- getEventHolder () {
+ getEventHolder() {
return this
}
- getEventTarget () {
+ getEventTarget() {
return this
}
// Unbind event from listener
- off (event, listener, options) {
+ off(event, listener, options) {
off(this, event, listener, options)
return this
}
// Bind given event to listener
- on (event, listener, binding, options) {
+ on(event, listener, binding, options) {
on(this, event, listener, binding, options)
return this
}
- removeEventListener () {}
+ removeEventListener() {}
}
register(EventTarget, 'EventTarget')
// import { subClassArray } from './ArrayPolyfill.js'
class List extends Array {
- constructor (arr = [], ...args) {
+ constructor(arr = [], ...args) {
super(arr, ...args)
if (typeof arr === 'number') return this
this.length = 0
export default List
-extend([ List ], {
- each (fnOrMethodName, ...args) {
+extend([List], {
+ each(fnOrMethodName, ...args) {
if (typeof fnOrMethodName === 'function') {
return this.map((el, i, arr) => {
return fnOrMethodName.call(el, el, i, arr)
})
} else {
- return this.map(el => {
+ return this.map((el) => {
return el[fnOrMethodName](...args)
})
}
},
- toArray () {
+ toArray() {
return Array.prototype.concat.apply([], this)
}
})
-const reserved = [ 'toArray', 'constructor', 'each' ]
+const reserved = ['toArray', 'constructor', 'each']
List.extend = function (methods) {
methods = methods.reduce((obj, name) => {
return obj
}, {})
- extend([ List ], methods)
+ extend([List], methods)
}
import Element from '../elements/Element.js'
import Point from './Point.js'
-function closeEnough (a, b, threshold) {
+function closeEnough(a, b, threshold) {
return Math.abs(b - a) < (threshold || 1e-6)
}
export default class Matrix {
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
- static formatTransforms (o) {
+ static formatTransforms(o) {
// Get all of the parameters required to form the matrix
const flipBoth = o.flip === 'both' || o.flip === true
const flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1
const flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1
- const skewX = o.skew && o.skew.length
- ? o.skew[0]
- : isFinite(o.skew)
+ const skewX =
+ o.skew && o.skew.length
+ ? o.skew[0]
+ : isFinite(o.skew)
? o.skew
: isFinite(o.skewX)
- ? o.skewX
- : 0
- const skewY = o.skew && o.skew.length
- ? o.skew[1]
- : isFinite(o.skew)
+ ? o.skewX
+ : 0
+ const skewY =
+ o.skew && o.skew.length
+ ? o.skew[1]
+ : isFinite(o.skew)
? o.skew
: isFinite(o.skewY)
- ? o.skewY
- : 0
- const scaleX = o.scale && o.scale.length
- ? o.scale[0] * flipX
- : isFinite(o.scale)
+ ? o.skewY
+ : 0
+ const scaleX =
+ o.scale && o.scale.length
+ ? o.scale[0] * flipX
+ : isFinite(o.scale)
? o.scale * flipX
: isFinite(o.scaleX)
- ? o.scaleX * flipX
- : flipX
- const scaleY = o.scale && o.scale.length
- ? o.scale[1] * flipY
- : isFinite(o.scale)
+ ? o.scaleX * flipX
+ : flipX
+ const scaleY =
+ o.scale && o.scale.length
+ ? o.scale[1] * flipY
+ : isFinite(o.scale)
? o.scale * flipY
: isFinite(o.scaleY)
- ? o.scaleY * flipY
- : flipY
+ ? o.scaleY * flipY
+ : flipY
const shear = o.shear || 0
const theta = o.rotate || o.theta || 0
- const origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)
+ const origin = new Point(
+ o.origin || o.around || o.ox || o.originX,
+ o.oy || o.originY
+ )
const ox = origin.x
const oy = origin.y
// We need Point to be invalid if nothing was passed because we cannot default to 0 here. That is why NaN
- const position = new Point(o.position || o.px || o.positionX || NaN, o.py || o.positionY || NaN)
+ const position = new Point(
+ o.position || o.px || o.positionX || NaN,
+ o.py || o.positionY || NaN
+ )
const px = position.x
const py = position.y
- const translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)
+ const translate = new Point(
+ o.translate || o.tx || o.translateX,
+ o.ty || o.translateY
+ )
const tx = translate.x
const ty = translate.y
- const relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)
+ const relative = new Point(
+ o.relative || o.rx || o.relativeX,
+ o.ry || o.relativeY
+ )
const rx = relative.x
const ry = relative.y
// Populate all of the values
return {
- scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py
+ scaleX,
+ scaleY,
+ skewX,
+ skewY,
+ shear,
+ theta,
+ rx,
+ ry,
+ tx,
+ ty,
+ ox,
+ oy,
+ px,
+ py
}
}
- static fromArray (a) {
+ static fromArray(a) {
return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }
}
- static isMatrixLike (o) {
+ static isMatrixLike(o) {
return (
- o.a != null
- || o.b != null
- || o.c != null
- || o.d != null
- || o.e != null
- || o.f != null
+ o.a != null ||
+ o.b != null ||
+ o.c != null ||
+ o.d != null ||
+ o.e != null ||
+ o.f != null
)
}
// left matrix, right matrix, target matrix which is overwritten
- static matrixMultiply (l, r, o) {
+ static matrixMultiply(l, r, o) {
// Work out the product directly
const a = l.a * r.a + l.c * r.b
const b = l.b * r.a + l.d * r.b
return o
}
- around (cx, cy, matrix) {
+ around(cx, cy, matrix) {
return this.clone().aroundO(cx, cy, matrix)
}
// Transform around a center point
- aroundO (cx, cy, matrix) {
+ aroundO(cx, cy, matrix) {
const dx = cx || 0
const dy = cy || 0
return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)
}
// Clones this matrix
- clone () {
+ clone() {
return new Matrix(this)
}
// Decomposes this matrix into its affine parameters
- decompose (cx = 0, cy = 0) {
+ decompose(cx = 0, cy = 0) {
// Get the parameters from the matrix
const a = this.a
const b = this.b
// and the rotation of the resulting matrix
const sx = ccw * Math.sqrt(a * a + b * b)
const thetaRad = Math.atan2(ccw * b, ccw * a)
- const theta = 180 / Math.PI * thetaRad
+ const theta = (180 / Math.PI) * thetaRad
const ct = Math.cos(thetaRad)
const st = Math.sin(thetaRad)
// We can then solve the y basis vector simultaneously to get the other
// two affine parameters directly from these parameters
const lam = (a * c + b * d) / determinant
- const sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))
+ const sy = (c * sx) / (lam * a - b) || (d * sx) / (lam * b + a)
// Use the translations
const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)
}
// Check if two matrices are equal
- equals (other) {
+ equals(other) {
if (other === this) return true
const comp = new Matrix(other)
- return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b)
- && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d)
- && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)
+ return (
+ closeEnough(this.a, comp.a) &&
+ closeEnough(this.b, comp.b) &&
+ closeEnough(this.c, comp.c) &&
+ closeEnough(this.d, comp.d) &&
+ closeEnough(this.e, comp.e) &&
+ closeEnough(this.f, comp.f)
+ )
}
// Flip matrix on x or y, at a given offset
- flip (axis, around) {
+ flip(axis, around) {
return this.clone().flipO(axis, around)
}
- flipO (axis, around) {
+ flipO(axis, around) {
return axis === 'x'
? this.scaleO(-1, 1, around, 0)
: axis === 'y'
- ? this.scaleO(1, -1, 0, around)
- : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point
+ ? this.scaleO(1, -1, 0, around)
+ : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point
}
// Initialize
- init (source) {
- const base = Matrix.fromArray([ 1, 0, 0, 1, 0, 0 ])
+ init(source) {
+ const base = Matrix.fromArray([1, 0, 0, 1, 0, 0])
// ensure source as object
- source = source instanceof Element
- ? source.matrixify()
- : typeof source === 'string'
+ source =
+ source instanceof Element
+ ? source.matrixify()
+ : typeof source === 'string'
? Matrix.fromArray(source.split(delimiter).map(parseFloat))
: Array.isArray(source)
- ? Matrix.fromArray(source)
- : (typeof source === 'object' && Matrix.isMatrixLike(source))
- ? source
- : (typeof source === 'object')
- ? new Matrix().transform(source)
- : arguments.length === 6
- ? Matrix.fromArray([].slice.call(arguments))
- : base
+ ? Matrix.fromArray(source)
+ : typeof source === 'object' && Matrix.isMatrixLike(source)
+ ? source
+ : typeof source === 'object'
+ ? new Matrix().transform(source)
+ : arguments.length === 6
+ ? Matrix.fromArray([].slice.call(arguments))
+ : base
// Merge the source matrix with the base matrix
this.a = source.a != null ? source.a : base.a
return this
}
- inverse () {
+ inverse() {
return this.clone().inverseO()
}
// Inverses matrix
- inverseO () {
+ inverseO() {
// Get the current parameters out of the matrix
const a = this.a
const b = this.b
return this
}
- lmultiply (matrix) {
+ lmultiply(matrix) {
return this.clone().lmultiplyO(matrix)
}
- lmultiplyO (matrix) {
+ lmultiplyO(matrix) {
const r = this
- const l = matrix instanceof Matrix
- ? matrix
- : new Matrix(matrix)
+ const l = matrix instanceof Matrix ? matrix : new Matrix(matrix)
return Matrix.matrixMultiply(l, r, this)
}
// Left multiplies by the given matrix
- multiply (matrix) {
+ multiply(matrix) {
return this.clone().multiplyO(matrix)
}
- multiplyO (matrix) {
+ multiplyO(matrix) {
// Get the matrices
const l = this
- const r = matrix instanceof Matrix
- ? matrix
- : new Matrix(matrix)
+ const r = matrix instanceof Matrix ? matrix : new Matrix(matrix)
return Matrix.matrixMultiply(l, r, this)
}
// Rotate matrix
- rotate (r, cx, cy) {
+ rotate(r, cx, cy) {
return this.clone().rotateO(r, cx, cy)
}
- rotateO (r, cx = 0, cy = 0) {
+ rotateO(r, cx = 0, cy = 0) {
// Convert degrees to radians
r = radians(r)
}
// Scale matrix
- scale (x, y, cx, cy) {
+ scale() {
return this.clone().scaleO(...arguments)
}
- scaleO (x, y = x, cx = 0, cy = 0) {
+ scaleO(x, y = x, cx = 0, cy = 0) {
// Support uniform scaling
if (arguments.length === 3) {
cy = cx
}
// Shear matrix
- shear (a, cx, cy) {
+ shear(a, cx, cy) {
return this.clone().shearO(a, cx, cy)
}
- shearO (lx, cx = 0, cy = 0) {
+ // eslint-disable-next-line no-unused-vars
+ shearO(lx, cx = 0, cy = 0) {
const { a, b, c, d, e, f } = this
this.a = a + b * lx
}
// Skew Matrix
- skew (x, y, cx, cy) {
+ skew() {
return this.clone().skewO(...arguments)
}
- skewO (x, y = x, cx = 0, cy = 0) {
+ skewO(x, y = x, cx = 0, cy = 0) {
// support uniformal skew
if (arguments.length === 3) {
cy = cx
}
// SkewX
- skewX (x, cx, cy) {
+ skewX(x, cx, cy) {
return this.skew(x, 0, cx, cy)
}
// SkewY
- skewY (y, cx, cy) {
+ skewY(y, cx, cy) {
return this.skew(0, y, cx, cy)
}
- toArray () {
- return [ this.a, this.b, this.c, this.d, this.e, this.f ]
+ toArray() {
+ return [this.a, this.b, this.c, this.d, this.e, this.f]
}
// Convert matrix to string
- toString () {
- return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'
+ toString() {
+ return (
+ 'matrix(' +
+ this.a +
+ ',' +
+ this.b +
+ ',' +
+ this.c +
+ ',' +
+ this.d +
+ ',' +
+ this.e +
+ ',' +
+ this.f +
+ ')'
+ )
}
// Transform a matrix into another matrix by manipulating the space
- transform (o) {
+ transform(o) {
// Check if o is a matrix and then left multiply it directly
if (Matrix.isMatrixLike(o)) {
const matrix = new Matrix(o)
}
// Translate matrix
- translate (x, y) {
+ translate(x, y) {
return this.clone().translateO(x, y)
}
- translateO (x, y) {
+ translateO(x, y) {
this.e += x || 0
this.f += y || 0
return this
}
- valueOf () {
+ valueOf() {
return {
a: this.a,
b: this.b,
f: this.f
}
}
-
}
-export function ctm () {
+export function ctm() {
return new Matrix(this.node.getCTM())
}
-export function screenCTM () {
+export function screenCTM() {
/* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537
This is needed because FF does not return the transformation matrix
for the inner coordinate system when getScreenCTM() is called on nested svgs.
import Box from './Box.js'
import { pathParser } from '../utils/pathParser.js'
-function arrayToString (a) {
+function arrayToString(a) {
let s = ''
for (let i = 0, il = a.length; i < il; i++) {
s += a[i][0]
export default class PathArray extends SVGArray {
// Get bounding box of path
- bbox () {
+ bbox() {
parser().path.setAttribute('d', this.toString())
return new Box(parser.nodes.path.getBBox())
}
// Move path string
- move (x, y) {
+ move(x, y) {
// get bounding box of current situation
const box = this.bbox()
}
// Absolutize and parse path to array
- parse (d = 'M0 0') {
+ parse(d = 'M0 0') {
if (Array.isArray(d)) {
d = Array.prototype.concat.apply([], d).toString()
}
}
// Resize path string
- size (width, height) {
+ size(width, height) {
// get bounding box of current situation
const box = this.bbox()
let i, l
}
// Convert array to string
- toString () {
+ toString() {
return arrayToString(this)
}
-
}
export default class Point {
// Initialize
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
// Clone point
- clone () {
+ clone() {
return new Point(this)
}
- init (x, y) {
+ init(x, y) {
const base = { x: 0, y: 0 }
// ensure source as object
const source = Array.isArray(x)
? { x: x[0], y: x[1] }
: typeof x === 'object'
- ? { x: x.x, y: x.y }
- : { x: x, y: y }
+ ? { x: x.x, y: x.y }
+ : { x: x, y: y }
// merge source
this.x = source.x == null ? base.x : source.x
return this
}
- toArray () {
- return [ this.x, this.y ]
+ toArray() {
+ return [this.x, this.y]
}
- transform (m) {
+ transform(m) {
return this.clone().transformO(m)
}
// Transform point with matrix
- transformO (m) {
+ transformO(m) {
if (!Matrix.isMatrixLike(m)) {
m = new Matrix(m)
}
return this
}
-
}
-export function point (x, y) {
+export function point(x, y) {
return new Point(x, y).transformO(this.screenCTM().inverseO())
}
export default class PointArray extends SVGArray {
// Get bounding box of points
- bbox () {
+ bbox() {
let maxX = -Infinity
let maxY = -Infinity
let minX = Infinity
}
// Move point string
- move (x, y) {
+ move(x, y) {
const box = this.bbox()
// get relative offset
// move every point
if (!isNaN(x) && !isNaN(y)) {
for (let i = this.length - 1; i >= 0; i--) {
- this[i] = [ this[i][0] + x, this[i][1] + y ]
+ this[i] = [this[i][0] + x, this[i][1] + y]
}
}
}
// Parse point string and flat array
- parse (array = [ 0, 0 ]) {
+ parse(array = [0, 0]) {
const points = []
// if it is an array, we flatten it and therefore clone it to 1 depths
if (array instanceof Array) {
array = Array.prototype.concat.apply([], array)
- } else { // Else, it is considered as a string
+ } else {
+ // Else, it is considered as a string
// parse points
array = array.trim().split(delimiter).map(parseFloat)
}
// wrap points in two-tuples
for (let i = 0, len = array.length; i < len; i = i + 2) {
- points.push([ array[i], array[i + 1] ])
+ points.push([array[i], array[i + 1]])
}
return points
}
// Resize poly string
- size (width, height) {
+ size(width, height) {
let i
const box = this.bbox()
// recalculate position of all points according to new size
for (i = this.length - 1; i >= 0; i--) {
- if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x
- if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y
+ if (box.width)
+ this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x
+ if (box.height)
+ this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y
}
return this
}
// Convert array to line object
- toLine () {
+ toLine() {
return {
x1: this[0][0],
y1: this[0][1],
}
// Convert array to string
- toString () {
+ toString() {
const array = []
// convert to a poly point string
for (let i = 0, il = this.length; i < il; i++) {
return array.join(' ')
}
- transform (m) {
+ transform(m) {
return this.clone().transformO(m)
}
// transform points with matrix (similar to Point.transform)
- transformO (m) {
+ transformO(m) {
if (!Matrix.isMatrixLike(m)) {
m = new Matrix(m)
}
- for (let i = this.length; i--;) {
+ for (let i = this.length; i--; ) {
// Perform the matrix multiplication
- const [ x, y ] = this[i]
+ const [x, y] = this[i]
this[i][0] = m.a * x + m.c * y + m.e
this[i][1] = m.b * x + m.d * y + m.f
}
return this
}
-
}
import { delimiter } from '../modules/core/regex.js'
export default class SVGArray extends Array {
- constructor (...args) {
+ constructor(...args) {
super(...args)
this.init(...args)
}
- clone () {
+ clone() {
return new this.constructor(this)
}
- init (arr) {
+ init(arr) {
// This catches the case, that native map tries to create an array with new Array(1)
if (typeof arr === 'number') return this
this.length = 0
}
// Parse whitespace separated string
- parse (array = []) {
+ parse(array = []) {
// If already is an array, no need to parse it
if (array instanceof Array) return array
return array.trim().split(delimiter).map(parseFloat)
}
- toArray () {
+ toArray() {
return Array.prototype.concat.apply([], this)
}
- toSet () {
+ toSet() {
return new Set(this)
}
- toString () {
+ toString() {
return this.join(' ')
}
// Flattens the array if needed
- valueOf () {
+ valueOf() {
const ret = []
ret.push(...this)
return ret
}
-
}
// Module for unit conversions
export default class SVGNumber {
// Initialize
- constructor (...args) {
+ constructor(...args) {
this.init(...args)
}
- convert (unit) {
+ convert(unit) {
return new SVGNumber(this.value, unit)
}
// Divide number
- divide (number) {
+ divide(number) {
number = new SVGNumber(number)
return new SVGNumber(this / number, this.unit || number.unit)
}
- init (value, unit) {
+ init(value, unit) {
unit = Array.isArray(value) ? value[1] : unit
value = Array.isArray(value) ? value[0] : value
// parse value
if (typeof value === 'number') {
// ensure a valid numeric value
- this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value
+ this.value = isNaN(value)
+ ? 0
+ : !isFinite(value)
+ ? value < 0
+ ? -3.4e38
+ : +3.4e38
+ : value
} else if (typeof value === 'string') {
unit = value.match(numberAndUnit)
}
// Subtract number
- minus (number) {
+ minus(number) {
number = new SVGNumber(number)
return new SVGNumber(this - number, this.unit || number.unit)
}
// Add number
- plus (number) {
+ plus(number) {
number = new SVGNumber(number)
return new SVGNumber(this + number, this.unit || number.unit)
}
// Multiply number
- times (number) {
+ times(number) {
number = new SVGNumber(number)
return new SVGNumber(this * number, this.unit || number.unit)
}
- toArray () {
- return [ this.value, this.unit ]
+ toArray() {
+ return [this.value, this.unit]
}
- toJSON () {
+ toJSON() {
return this.toString()
}
- toString () {
- return (this.unit === '%'
- ? ~~(this.value * 1e8) / 1e6
- : this.unit === 's'
+ toString() {
+ return (
+ (this.unit === '%'
+ ? ~~(this.value * 1e8) / 1e6
+ : this.unit === 's'
? this.value / 1e3
- : this.value
- ) + this.unit
+ : this.value) + this.unit
+ )
}
- valueOf () {
+ valueOf() {
return this.value
}
-
}
export const root = '___SYMBOL___ROOT___'
// Method for element creation
-export function create (name, ns = svg) {
+export function create(name, ns = svg) {
// create element
return globals.document.createElementNS(ns, name)
}
-export function makeInstance (element, isHTML = false) {
+export function makeInstance(element, isHTML = false) {
if (element instanceof Base) return element
if (typeof element === 'object') {
return element
}
-export function nodeOrNew (name, node) {
- return (node && node.ownerDocument && node instanceof node.ownerDocument.defaultView.Node) ? node : create(name)
+export function nodeOrNew(name, node) {
+ return node &&
+ node.ownerDocument &&
+ node instanceof node.ownerDocument.defaultView.Node
+ ? node
+ : create(name)
}
// Adopt existing svg elements
-export function adopt (node) {
+export function adopt(node) {
// check for presence of node
if (!node) return null
if (className === 'LinearGradient' || className === 'RadialGradient') {
className = 'Gradient'
- // Fallback to Dom if element is not known
+ // Fallback to Dom if element is not known
} else if (!elements[className]) {
className = 'Dom'
}
let adopter = adopt
-export function mockAdopt (mock = adopt) {
+export function mockAdopt(mock = adopt) {
adopter = mock
}
-export function register (element, name = element.name, asRoot = false) {
+export function register(element, name = element.name, asRoot = false) {
elements[name] = element
if (asRoot) elements[root] = element
return element
}
-export function getClass (name) {
+export function getClass(name) {
return elements[name]
}
let did = 1000
// Get next named element id
-export function eid (name) {
- return 'Svgjs' + capitalize(name) + (did++)
+export function eid(name) {
+ return 'Svgjs' + capitalize(name) + did++
}
// Deep new id assignment
-export function assignNewId (node) {
+export function assignNewId(node) {
// do the same for SVG child nodes as well
for (let i = node.children.length - 1; i >= 0; i--) {
assignNewId(node.children[i])
}
// Method for extending objects
-export function extend (modules, methods) {
+export function extend(modules, methods) {
let key, i
- modules = Array.isArray(modules) ? modules : [ modules ]
+ modules = Array.isArray(modules) ? modules : [modules]
for (i = modules.length - 1; i >= 0; i--) {
for (key in methods) {
}
}
-export function wrapWithAttrCheck (fn) {
+export function wrapWithAttrCheck(fn) {
return function (...args) {
const o = args[args.length - 1]
const methods = {}
const names = []
-export function registerMethods (name, m) {
+export function registerMethods(name, m) {
if (Array.isArray(name)) {
for (const _name of name) {
registerMethods(_name, m)
methods[name] = Object.assign(methods[name] || {}, m)
}
-export function getMethodsFor (name) {
+export function getMethodsFor(name) {
return methods[name] || {}
}
-export function getMethodNames () {
- return [ ...new Set(names) ]
+export function getMethodNames() {
+ return [...new Set(names)]
}
-export function addMethodNames (_names) {
+export function addMethodNames(_names) {
names.push(..._names)
}
import { isPathLetter } from '../modules/core/regex.js'
import Point from '../types/Point.js'
-const segmentParameters = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }
+const segmentParameters = {
+ M: 2,
+ L: 2,
+ H: 1,
+ V: 1,
+ C: 6,
+ S: 4,
+ Q: 4,
+ T: 2,
+ A: 7,
+ Z: 0
+}
const pathHandlers = {
M: function (c, p, p0) {
p.x = p0.x = c[0]
p.y = p0.y = c[1]
- return [ 'M', p.x, p.y ]
+ return ['M', p.x, p.y]
},
L: function (c, p) {
p.x = c[0]
p.y = c[1]
- return [ 'L', c[0], c[1] ]
+ return ['L', c[0], c[1]]
},
H: function (c, p) {
p.x = c[0]
- return [ 'H', c[0] ]
+ return ['H', c[0]]
},
V: function (c, p) {
p.y = c[0]
- return [ 'V', c[0] ]
+ return ['V', c[0]]
},
C: function (c, p) {
p.x = c[4]
p.y = c[5]
- return [ 'C', c[0], c[1], c[2], c[3], c[4], c[5] ]
+ return ['C', c[0], c[1], c[2], c[3], c[4], c[5]]
},
S: function (c, p) {
p.x = c[2]
p.y = c[3]
- return [ 'S', c[0], c[1], c[2], c[3] ]
+ return ['S', c[0], c[1], c[2], c[3]]
},
Q: function (c, p) {
p.x = c[2]
p.y = c[3]
- return [ 'Q', c[0], c[1], c[2], c[3] ]
+ return ['Q', c[0], c[1], c[2], c[3]]
},
T: function (c, p) {
p.x = c[0]
p.y = c[1]
- return [ 'T', c[0], c[1] ]
+ return ['T', c[0], c[1]]
},
Z: function (c, p, p0) {
p.x = p0.x
p.y = p0.y
- return [ 'Z' ]
+ return ['Z']
},
A: function (c, p) {
p.x = c[5]
p.y = c[6]
- return [ 'A', c[0], c[1], c[2], c[3], c[4], c[5], c[6] ]
+ return ['A', c[0], c[1], c[2], c[3], c[4], c[5], c[6]]
}
}
})(mlhvqtcsaz[i].toUpperCase())
}
-function makeAbsolut (parser) {
+function makeAbsolut(parser) {
const command = parser.segment[0]
return pathHandlers[command](parser.segment.slice(1), parser.p, parser.p0)
}
-function segmentComplete (parser) {
- return parser.segment.length && parser.segment.length - 1 === segmentParameters[parser.segment[0].toUpperCase()]
+function segmentComplete(parser) {
+ return (
+ parser.segment.length &&
+ parser.segment.length - 1 ===
+ segmentParameters[parser.segment[0].toUpperCase()]
+ )
}
-function startNewSegment (parser, token) {
+function startNewSegment(parser, token) {
parser.inNumber && finalizeNumber(parser, false)
const pathLetter = isPathLetter.test(token)
if (pathLetter) {
- parser.segment = [ token ]
+ parser.segment = [token]
} else {
const lastCommand = parser.lastCommand
const small = lastCommand.toLowerCase()
const isSmall = lastCommand === small
- parser.segment = [ small === 'm' ? (isSmall ? 'l' : 'L') : lastCommand ]
+ parser.segment = [small === 'm' ? (isSmall ? 'l' : 'L') : lastCommand]
}
parser.inSegment = true
return pathLetter
}
-function finalizeNumber (parser, inNumber) {
+function finalizeNumber(parser, inNumber) {
if (!parser.inNumber) throw new Error('Parser Error')
parser.number && parser.segment.push(parseFloat(parser.number))
parser.inNumber = inNumber
}
}
-function finalizeSegment (parser) {
+function finalizeSegment(parser) {
parser.inSegment = false
if (parser.absolute) {
parser.segment = makeAbsolut(parser)
parser.segments.push(parser.segment)
}
-function isArcFlag (parser) {
+function isArcFlag(parser) {
if (!parser.segment.length) return false
const isArc = parser.segment[0].toUpperCase() === 'A'
const length = parser.segment.length
return isArc && (length === 4 || length === 5)
}
-function isExponential (parser) {
+function isExponential(parser) {
return parser.lastToken.toUpperCase() === 'E'
}
-export function pathParser (d, toAbsolute = true) {
-
+export function pathParser(d, toAbsolute = true) {
let index = 0
let token = ''
const parser = {
p: new Point()
}
- while ((parser.lastToken = token, token = d.charAt(index++))) {
+ while (((parser.lastToken = token), (token = d.charAt(index++)))) {
if (!parser.inSegment) {
if (startNewSegment(parser, token)) {
continue
}
if (!isNaN(parseInt(token))) {
-
if (parser.number === '0' || isArcFlag(parser)) {
parser.inNumber = true
parser.number = token
}
return parser.segments
-
}
// Map function
-export function map (array, block) {
+export function map(array, block) {
let i
const il = array.length
const result = []
}
// Filter function
-export function filter (array, block) {
+export function filter(array, block) {
let i
const il = array.length
const result = []
}
// Degrees to radians
-export function radians (d) {
- return d % 360 * Math.PI / 180
+export function radians(d) {
+ return ((d % 360) * Math.PI) / 180
}
// Radians to degrees
-export function degrees (r) {
- return r * 180 / Math.PI % 360
+export function degrees(r) {
+ return ((r * 180) / Math.PI) % 360
}
// Convert dash-separated-string to camelCase
-export function camelCase (s) {
+export function camelCase(s) {
return s.toLowerCase().replace(/-(.)/g, function (m, g) {
return g.toUpperCase()
})
}
// Convert camel cased string to dash separated
-export function unCamelCase (s) {
+export function unCamelCase(s) {
return s.replace(/([A-Z])/g, function (m, g) {
return '-' + g.toLowerCase()
})
}
// Capitalize first letter of a string
-export function capitalize (s) {
+export function capitalize(s) {
return s.charAt(0).toUpperCase() + s.slice(1)
}
// Calculate proportional width and height values when necessary
-export function proportionalSize (element, width, height, box) {
+export function proportionalSize(element, width, height, box) {
if (width == null || height == null) {
box = box || element.bbox()
if (width == null) {
- width = box.width / box.height * height
+ width = (box.width / box.height) * height
} else if (height == null) {
- height = box.height / box.width * width
+ height = (box.height / box.width) * width
}
}
* This function adds support for string origins.
* It searches for an origin in o.origin o.ox and o.originX.
* This way, origin: {x: 'center', y: 50} can be passed as well as ox: 'center', oy: 50
-**/
-export function getOrigin (o, element) {
+ **/
+export function getOrigin(o, element) {
const origin = o.origin
// First check if origin is in ox or originX
- let ox = o.ox != null
- ? o.ox
- : o.originX != null
- ? o.originX
- : 'center'
- let oy = o.oy != null
- ? o.oy
- : o.originY != null
- ? o.originY
- : 'center'
+ let ox = o.ox != null ? o.ox : o.originX != null ? o.originX : 'center'
+ let oy = o.oy != null ? o.oy : o.originY != null ? o.originY : 'center'
// Then check if origin was used and overwrite in that case
if (origin != null) {
- [ ox, oy ] = Array.isArray(origin)
+ ;[ox, oy] = Array.isArray(origin)
? origin
: typeof origin === 'object'
- ? [ origin.x, origin.y ]
- : [ origin, origin ]
+ ? [origin.x, origin.y]
+ : [origin, origin]
}
// Make sure to only call bbox when actually needed
ox = ox.includes('left')
? x
: ox.includes('right')
- ? x + width
- : x + width / 2
+ ? x + width
+ : x + width / 2
}
if (condY) {
oy = oy.includes('top')
? y
: oy.includes('bottom')
- ? y + height
- : y + height / 2
+ ? y + height
+ : y + height / 2
}
}
// Return the origin as it is if it wasn't a string
- return [ ox, oy ]
+ return [ox, oy]
}
document: typeof document === 'undefined' ? null : document
}
-export function registerWindow (win = null, doc = null) {
+export function registerWindow(win = null, doc = null) {
globals.window = win
globals.document = doc
}
const save = {}
-export function saveWindow () {
+export function saveWindow() {
save.window = globals.window
save.document = globals.document
}
-export function restoreWindow () {
+export function restoreWindow() {
globals.window = save.window
globals.document = save.document
}
-export function withWindow (win, fn) {
+export function withWindow(win, fn) {
saveWindow()
registerWindow(win, win.document)
fn(win, win.document)
restoreWindow()
}
-export function getWindow () {
+export function getWindow() {
return globals.window
}
-// Type definitions for @svgdotjs version 3.x\r
-// Project: @svgdotjs/svg.js\r
-\r
-// trick to keep reference to Array build-in type\r
-declare class BuiltInArray<T> extends Array<T> { }\r
-\r
-// trick to have nice attribute list for CSS\r
-declare type CSSStyleName = Exclude<keyof CSSStyleDeclaration, "parentRule" | "length">\r
-\r
-declare module "@svgdotjs/svg.js" {\r
-\r
- function SVG(): Svg;\r
- function SVG(selector: QuerySelector): Element;\r
- function SVG<T>(el: T): SVGTypeMapping<T>\r
- function SVG(domElement: HTMLElement): Element;\r
-\r
- function eid(name: string): string;\r
- function get(id: string): Element;\r
-\r
- function create(name: string): any;\r
- function extend(parent: object, obj: object): void;\r
- function invent(config: object): any;\r
- function adopt(node: HTMLElement): Element;\r
- function prepare(element: HTMLElement): void;\r
- function getClass(name: string): Element;\r
-\r
- function on(el: Node | Window, events: string, cb: EventListener, binbind?: any, options?: AddEventListenerOptions): void;\r
- function on(el: Node | Window, events: Event[], cb: EventListener, binbind?: any, options?: AddEventListenerOptions): void;\r
-\r
- function off(el: Node | Window, events?: string, cb?: EventListener | number, options?: AddEventListenerOptions): void;\r
- function off(el: Node | Window, events?: Event[], cb?: EventListener | number, options?: AddEventListenerOptions): void;\r
-\r
- function dispatch(node: Node | Window, event: Event, data?: object, options?: object): Event\r
-\r
- function find(query: QuerySelector): List<Element>\r
- function findOne(query: QuerySelector): Element | null\r
-\r
- function getWindow(): Window;\r
- function registerWindow(win: Window, doc: Document): void;\r
- function restoreWindow(): void;\r
- function saveWindow(): void;\r
- function withWindow(win: Window, fn: (win: Window, doc: Document) => void): void;\r
-\r
- let utils: {\r
- map(array: any[], block: Function): any;\r
- filter(array: any[], block: Function): any;\r
- radians(d: number): number;\r
- degrees(r: number): number;\r
- camelCase(s: string): string;\r
- unCamelCase(s: string): string;\r
- capitalize(s: string): string;\r
- // proportionalSize\r
- // getOrigin\r
- }\r
-\r
- let defaults: {\r
- attrs: {\r
- 'fill-opacity': number;\r
- 'stroke-opacity': number;\r
- 'stroke-width': number;\r
- 'stroke-linejoin': string;\r
- 'stroke-linecap': string;\r
- 'fill': string;\r
- 'stroke': string;\r
- 'opacity': number;\r
- 'x': number;\r
- 'y': number;\r
- 'cx': number;\r
- 'cy': number;\r
- 'width': number;\r
- 'height': number;\r
- 'r': number;\r
- 'rx': number;\r
- 'ry': number;\r
- 'offset': number;\r
- 'stop-opacity': number;\r
- 'stop-color': string;\r
- 'font-size': number;\r
- 'font-family': string;\r
- 'text-anchor': string;\r
- },\r
- timeline: {\r
- duration: number;\r
- ease: string;\r
- delay: number;\r
- }\r
-\r
- }\r
-\r
- // let easing: {\r
- // '-'(pos: number): number;\r
- // '<>'(pos: number): number;\r
- // '>'(pos: number): number;\r
- // '<'(pos: number): number;\r
- // bezier(x1: number, y1: number, x2: number, y2: number): (t: number) => number;\r
- // steps(steps: number, stepPosition?: "jump-start"|"jump-end"|"jump-none"|"jump-both"|"start"|"end"): (t: number, beforeFlag?: boolean) => number;\r
- // }\r
-\r
- let regex: {\r
- delimiter: RegExp;\r
- dots: RegExp;\r
- hex: RegExp;\r
- hyphen: RegExp;\r
- isBlank: RegExp;\r
- isHex: RegExp;\r
- isImage: RegExp;\r
- isNumber: RegExp;\r
- isPathLetter: RegExp;\r
- isRgb: RegExp;\r
- numberAndUnit: RegExp;\r
- numbersWithDots: RegExp;\r
- pathLetters: RegExp;\r
- reference: RegExp;\r
- rgb: RegExp;\r
- transforms: RegExp;\r
- whitespace: RegExp;\r
- }\r
-\r
- let namespaces: {\r
- ns: string;\r
- xmlns: string;\r
- xlink: string;\r
- svgjs: string;\r
- }\r
-\r
- interface LinkedHTMLElement extends HTMLElement {\r
- instance: Element;\r
- }\r
-\r
- // ************ Standard object/option/properties declaration ************\r
-\r
- type AttrNumberValue = number | "auto";\r
-\r
- /**\r
- * The SVG core attributes are all the common attributes that can be specified on any SVG element.\r
- * More information see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Core\r
- */\r
- interface CoreAttr {\r
- id?: string\r
- lang?: string\r
- tabindex?: number\r
- "xml:lang"?: string\r
- }\r
-\r
- /**\r
- * The SVG styling attributes are all the attributes that can be specified on any SVG element to apply CSS styling effects.\r
- * More information see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Styling\r
- */\r
- interface StylingAttr {\r
- /**\r
- * a valid HTML class name\r
- */\r
- class?: string\r
- /**\r
- * SVG css style string format. It all can be find here https://www.w3.org/TR/SVG/styling.html#StyleAttribute\r
- */\r
- style?: string\r
- }\r
-\r
- /**\r
- * A global attribute that can be use with any svg element\r
- */\r
- interface GlobalAttr extends CoreAttr, StylingAttr { }\r
-\r
- // TODO: implement SVG Presentation Attributes. See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation\r
-\r
- interface PathBaseAttr {\r
- pathLength?: number\r
- }\r
-\r
- interface RadiusAxisAttr {\r
- rx?: AttrNumberValue\r
- ry?: AttrNumberValue\r
- }\r
-\r
- /**\r
- * SVG Rectangle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect\r
- */\r
- interface RectAttr extends RadiusAxisAttr, PathBaseAttr, GlobalAttr {\r
- x?: number\r
- y?: number\r
- width: AttrNumberValue\r
- height: AttrNumberValue\r
- }\r
-\r
- /**\r
- * SVG Line attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line\r
- */\r
- interface LineAttr extends PathBaseAttr, GlobalAttr {\r
- x1?: number\r
- y1?: number\r
- x2?: number\r
- y2?: number\r
- }\r
-\r
- /**\r
- * SVG Circle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle\r
- */\r
- interface CircleAttr extends PathBaseAttr, GlobalAttr {\r
- cx?: number | string\r
- cy?: number | string\r
- r?: number | string\r
- }\r
-\r
- /**\r
- * SVG Ellipse attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse\r
- */\r
- interface EllipseAttr extends PathBaseAttr, GlobalAttr {\r
- cx?: number | string\r
- cy?: number | string\r
- rx?: number | string\r
- ry?: number | string\r
- }\r
-\r
- /**\r
- * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path\r
- */\r
- interface PathAttr extends PathBaseAttr, GlobalAttr {\r
- d?: string\r
- }\r
-\r
- /**\r
- * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon\r
- * or https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline\r
- */\r
- interface PolyAttr extends PathBaseAttr, GlobalAttr {\r
- points?: string\r
- }\r
-\r
- /**\r
- * SVG Text attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text\r
- */\r
- interface TextAttr extends GlobalAttr {\r
- x?: number | string\r
- y?: number | string\r
- dx?: number | string\r
- dy?: number | string\r
- lengthAdjust?: "spacing" | "spacingAndGlyphs"\r
- textLength?: number | string\r
- // see https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList\r
- // or https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#List-of-Ts\r
- // TODO: tbd\r
- // rotate?: string\r
- }\r
-\r
- /**\r
- * SVG TextPath attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath\r
- */\r
- interface TextPathAttr extends GlobalAttr {\r
- href?: string\r
- lengthAdjust?: "spacing" | "spacingAndGlyphs"\r
- method?: "align" | "stretch"\r
- side?: "left" | "right"\r
- spacing?: "auto" | "exact"\r
- startOffset?: number | string\r
- textLength?: number | string\r
- // See https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath\r
- // TODO: tbd as there is no reference to see the detail of how it would look like\r
- // path?: string\r
- }\r
-\r
- /**\r
- * A generic Dom Box object.\r
- * Notice: DOMRect is still in experiment state and document is not complete (Draft)\r
- * See https://developer.mozilla.org/en-US/docs/Web/API/DOMRect\r
- */\r
- interface DOMRect {\r
- x?: number\r
- y?: number\r
- width?: number\r
- height?: number\r
- top?: number\r
- right?: number\r
- bottom?: number\r
- left?: number\r
- }\r
-\r
- // ************ SVG.JS generic Conditional Types declaration ************\r
-\r
- type SVGTypeMapping<T> =\r
- T extends HTMLElement ? Dom :\r
- T extends SVGSVGElement ? Svg :\r
- T extends SVGRectElement ? Rect :\r
- T extends SVGCircleElement ? Circle :\r
- T extends SVGPathElement ? Path :\r
- T extends SVGTextElement ? Text :\r
- T extends SVGTextPathElement ? TextPath :\r
- T extends SVGGElement ? G :\r
- T extends SVGLineElement ? Line :\r
- T extends SVGPolylineElement ? Polyline :\r
- T extends SVGPolygonElement ? Polygon :\r
- T extends SVGGradientElement ? Gradient :\r
- T extends SVGImageElement ? Image :\r
- T extends SVGEllipseElement ? Ellipse :\r
- T extends SVGMaskElement ? Mask :\r
- T extends SVGMarkerElement ? Marker :\r
- T extends SVGClipPathElement ? ClipPath :\r
- T extends SVGTSpanElement ? Tspan :\r
- T extends SVGSymbolElement ? Symbol :\r
- T extends SVGUseElement ? Use : Element\r
-\r
- // element type as string\r
- type SvgType = "svg"\r
- type ClipPathType = "clipPath"\r
- type TextType = "text"\r
- type GType = "g"\r
- type AType = "a"\r
-\r
- type ParentElement = SvgType | GType | AType\r
-\r
- type AttrTypeMapping<T> =\r
- T extends Rect ? RectAttr : GlobalAttr\r
-\r
- type ElementAlias = Dom | Svg | Rect | Line | Polygon | Polyline | Ellipse | ClipPath | Use |\r
- Text | Path | TextPath | Circle | G | Gradient | Image | Element\r
-\r
- type ElementTypeAlias = typeof Dom | typeof Svg | typeof Rect | typeof Line | typeof Polygon |\r
- typeof Polyline | typeof Ellipse | typeof ClipPath | typeof Use | typeof Text | typeof Path |\r
- typeof TextPath | typeof Circle | typeof G | typeof Gradient | typeof Image | typeof Element\r
-\r
- type AttributeReference = "href" | "marker-start" | "marker-mid" | "marker-end" | "mask" |\r
- "clip-path" | "filter" | "fill"\r
-\r
- // ************* SVG.JS Type Declaration *************\r
- // ********** Locate in directory src/types **********\r
-\r
- // SVGArray.js\r
- // Notice: below class is defined the name as `Array` rather than `SVGArray`.\r
- // The purpose of giving the name as `Array` is to allow it to be aligned with SVG.JS export type\r
- // as SVG.JS export it as `Array` (to be precise `SVG.Array`) so reading through JS documentation\r
- // should be more straightforward.\r
- /**\r
- * Type alias to native array.\r
- *\r
- * **Caution**: If argument is a string, generic type must be a number or array of number and\r
- * the string is format as a concatenate of number separate by comma.\r
- * This is expensive to build runtime type check for such as case so please use it carefully.\r
- */\r
- type ArrayAlias<T> = BuiltInArray<T> | T[] | string\r
-\r
- class Array<T> extends BuiltInArray<T> {\r
- constructor(array?: ArrayAlias<T>);\r
-\r
- /**\r
- * Return array of generic T however it's flatten array by 1 level as it using `apply` function.\r
- * For example: if T is a `number[]` which is the number of 2 dimension `Array<number[]>` the result will be `number[]`\r
- */\r
- toArray(): any[]\r
- /**\r
- * return a concatenated string of each element separated by space\r
- */\r
- toString(): string\r
- valueOf(): T[]\r
- clone(): Array<T>\r
- toSet(): Set<T>\r
- parse(a?: ArrayAlias<T>): T[]\r
- to(a: any): Morphable;\r
- }\r
-\r
- // point.js\r
- class Point {\r
- x: number;\r
- y: number;\r
- constructor();\r
- constructor(position: CoordinateXY);\r
- constructor(point: Point);\r
- constructor(x: number, y?: number);\r
- clone(): Point;\r
- transform(matrix: Matrix): this;\r
- transformO(matrix: Matrix): this;\r
- toArray(): ArrayXY;\r
- }\r
-\r
- // pointArray.js\r
- class PointArray extends Array<ArrayXY> {\r
- constructor();\r
- constructor(array?: ArrayAlias<ArrayXY> | number[]);\r
-\r
- toLine(): LineAttr;\r
- transform(m: Matrix | MatrixLike): PointArray\r
- move(x: number, y: number): this;\r
- size(width: number, height: number): this;\r
- bbox(): Box;\r
- to(a: any): Morphable;\r
- toString(): string;\r
- }\r
-\r
- // SVGNumber.js\r
- type NumberUnit = [number, string]\r
-\r
- class Number {\r
- constructor();\r
- constructor(value: Number);\r
- constructor(value: string);\r
- constructor(value: number, unit?: any);\r
- constructor(n: NumberUnit);\r
-\r
- value: number\r
- unit: any\r
-\r
- toString(): string;\r
- toJSON(): object; // same as toString\r
- toArray(): NumberUnit\r
- valueOf(): number;\r
- plus(number: NumberAlias): Number;\r
- minus(number: NumberAlias): Number;\r
- times(number: NumberAlias): Number;\r
- divide(number: NumberAlias): Number;\r
- convert(unit: string): Number;\r
- to(a: any): Morphable\r
- }\r
-\r
- type NumberAlias = Number | number | string;\r
-\r
- // PathArray.js\r
-\r
- type LineCommand = ['M' | 'm' | 'L' | 'l', number, number] | ['H' | 'h' | 'V' | 'v', number] | ['Z' | 'z']\r
-\r
- type CurveCommand =\r
- // Bezier Curves\r
- ['C' | 'c', number, number, number, number, number, number] |\r
- ['S' | 's' | 'Q' | 'q', number, number, number, number] | ['T' | 't', number, number] |\r
- // Arcs\r
- ['A' | 'a', number, number, number, number, number, number, number]\r
-\r
- type PathCommand = LineCommand | CurveCommand\r
-\r
- type PathArrayAlias = PathArray | PathCommand[] | (string | number)[] | string;\r
-\r
- class PathArray extends Array<PathCommand> {\r
- constructor();\r
- constructor(d: ArrayAlias<PathCommand> | PathArrayAlias);\r
-\r
- move(x: number, y: number): this;\r
- size(width: number, height: number): this;\r
- equalCommands(other: PathArray): boolean\r
- morph(pa: PathArray): this\r
- parse(array?: ArrayAlias<PathCommand> | PathArrayAlias): PathCommand[];\r
- bbox(): Box;\r
- to(a: any): Morphable\r
- }\r
-\r
- // Matrix.js\r
- interface TransformData {\r
- origin?: number[];\r
- scaleX?: number;\r
- scaleY?: number;\r
- shear?: number;\r
- rotate?: number;\r
- translateX?: number;\r
- translateY?: number;\r
- originX?: number;\r
- originY?: number;\r
- }\r
-\r
- interface MatrixLike {\r
- a?: number;\r
- b?: number;\r
- c?: number;\r
- d?: number;\r
- e?: number;\r
- f?: number;\r
- }\r
-\r
- interface MatrixExtract extends TransformData, MatrixLike { }\r
-\r
- type FlipType = 'both' | 'x' | 'y' | boolean\r
- type ArrayXY = [number, number]\r
- type CoordinateXY = ArrayXY | { x: number, y: number }\r
-\r
- interface MatrixTransformParam {\r
- rotate?: number\r
- flip?: FlipType\r
- skew?: ArrayXY | number\r
- skewX?: number\r
- skewY?: number\r
- scale?: ArrayXY | number\r
- scaleX?: number\r
- scaleY?: number\r
- shear?: number\r
- theta?: number\r
- origin?: CoordinateXY | string\r
- around?: CoordinateXY\r
- ox?: number\r
- originX?: number\r
- oy?: number\r
- originY?: number\r
- position?: CoordinateXY\r
- px?: number\r
- positionX?: number\r
- py?: number\r
- positionY?: number\r
- translate?: CoordinateXY\r
- tx?: number\r
- translateX?: number\r
- ty?: number\r
- translateY?: number\r
- relative?: CoordinateXY\r
- rx?: number\r
- relativeX?: number\r
- ry?: number\r
- relativeY?: number\r
- }\r
-\r
- type MatrixAlias = MatrixLike | TransformData | MatrixTransformParam | number[] | Element | string;\r
-\r
- class Matrix implements MatrixLike {\r
- constructor();\r
- constructor(source: MatrixAlias);\r
- constructor(a: number, b: number, c: number, d: number, e: number, f: number);\r
-\r
- a: number;\r
- b: number;\r
- c: number;\r
- d: number;\r
- e: number;\r
- f: number;\r
-\r
- // *** To Be use by Test Only in restrict mode ***\r
- [key: string]: any\r
-\r
- clone(): Matrix;\r
- transform(o: MatrixLike | MatrixTransformParam): Matrix\r
- compose(o: MatrixExtract): Matrix\r
- decompose(cx?: number, cy?: number): MatrixExtract\r
- multiply(m: MatrixAlias | Matrix): Matrix;\r
- multiplyO(m: MatrixAlias | Matrix): this;\r
- lmultiply(m: MatrixAlias | Matrix): Matrix;\r
- lmultiplyO(m: MatrixAlias | Matrix): this;\r
- inverse(): Matrix;\r
- inverseO(): this;\r
- translate(x?: number, y?: number): Matrix;\r
- translateO(x?: number, y?: number): this;\r
- scale(x: number, y?: number, cx?: number, cy?: number): Matrix;\r
- scaleO(x: number, y?: number, cx?: number, cy?: number): this;\r
- rotate(r: number, cx?: number, cy?: number): Matrix;\r
- rotateO(r: number, cx?: number, cy?: number): this;\r
- flip(a: NumberAlias, offset?: number): Matrix;\r
- flipO(a: NumberAlias, offset?: number): this;\r
- flip(offset?: number): Matrix;\r
- shear(a: number, cx?: number, cy?: number): Matrix;\r
- shearO(a: number, cx?: number, cy?: number): this;\r
- skew(y?: number, cx?: number, cy?: number): Matrix;\r
- skewO(y?: number, cx?: number, cy?: number): this;\r
- skew(x: number, y?: number, cx?: number, cy?: number): Matrix;\r
- skewX(x: number, cx?: number, cy?: number): Matrix;\r
- skewY(y: number, cx?: number, cy?: number): Matrix;\r
- around(cx?: number, cy?: number, matrix?: Matrix): Matrix;\r
- aroundO(cx?: number, cy?: number, matrix?: Matrix): this;\r
- equals(m: Matrix): boolean\r
- toString(): string;\r
- toArray(): number[];\r
- valueOf(): MatrixLike;\r
- to(a: any): Morphable;\r
- }\r
-\r
- type ListEachCallback<T> = (el: T, index: number, list: List<T>) => any;\r
-\r
- // List.js\r
- class List<T> extends BuiltInArray<T> {\r
- each(fn: ListEachCallback<T>): List<any>;\r
- each(name: string, ...args: any[]): List<any>;\r
- toArray(): T[];\r
- }\r
-\r
- class Eventobject {\r
- [key: string]: Eventobject;\r
- }\r
-\r
- // EventTarget.js\r
- class EventTarget {\r
- events: Eventobject\r
-\r
- addEventListener(): void\r
- dispatch(event: Event | string, data?: object): Event\r
- dispatchEvent(event: Event): boolean\r
- fire(event: Event | string, data?: object): this\r
- getEventHolder(): this | Node\r
- getEventTarget(): this | Node\r
-\r
- on(events: string | Event[], cb: EventListener, binbind?: any, options?: AddEventListenerOptions): this;\r
- off(events?: string | Event[], cb?: EventListener | number, options?: AddEventListenerOptions): this;\r
-\r
- removeEventListener(): void\r
- }\r
-\r
- // Color.js\r
- interface ColorLike {\r
- r: number;\r
- g: number;\r
- b: number;\r
-\r
- x: number;\r
- y: number;\r
- z: number;\r
-\r
- h: number;\r
- s: number;\r
- l: number;\r
- a: number;\r
- c: number;\r
-\r
- m: number;\r
- k: number;\r
-\r
- space: string;\r
- }\r
-\r
- type ColorAlias = string | ColorLike;\r
-\r
- class Color implements ColorLike {\r
- r: number;\r
- g: number;\r
- b: number;\r
-\r
- x: number;\r
- y: number;\r
- z: number;\r
-\r
- h: number;\r
- s: number;\r
- l: number;\r
- a: number;\r
- c: number;\r
-\r
- m: number;\r
- k: number;\r
-\r
- space: string;\r
- constructor()\r
- constructor(color: ColorAlias, space?: string);\r
- constructor(a: number, b: number, c: number, space?: string)\r
- constructor(a: number, b: number, c: number, d: number, space?: string)\r
- constructor(a: number[], space?: string)\r
-\r
- rgb(): Color\r
- lab(): Color\r
- xyz(): Color\r
- lch(): Color\r
- hsl(): Color\r
- cmyk(): Color\r
- toHex(): string\r
- toString(): string\r
- toRgb(): string\r
- toArray(): any[]\r
-\r
- to(a: any): Morphable\r
- fromArray(a: any): this\r
-\r
- static random(mode: 'sine', time?: number): Color\r
- static random(mode?: string): Color\r
- }\r
-\r
- // Box.js\r
- interface BoxLike {\r
- height: number;\r
- width: number;\r
- y: number;\r
- x: number;\r
- cx?: number;\r
- cy?: number;\r
- w?: number;\r
- h?: number;\r
- x2?: number;\r
- y2?: number;\r
- }\r
-\r
- class Box implements BoxLike {\r
- height: number;\r
- width: number;\r
- y: number;\r
- x: number;\r
- cx: number;\r
- cy: number;\r
- w: number;\r
- h: number;\r
- x2: number;\r
- y2: number;\r
-\r
- constructor();\r
- constructor(source: string);\r
- constructor(source: number[]);\r
- constructor(source: DOMRect);\r
- constructor(x: number, y: number, width: number, height: number);\r
-\r
- merge(box: BoxLike): Box;\r
- transform(m: Matrix): Box\r
- addOffset(): this;\r
- toString(): string;\r
- toArray(): number[];\r
- isNulled(): boolean;\r
- to(v: MorphValueLike): Morphable;\r
- }\r
-\r
- // Morphable.js\r
- type MorphValueLike = string | number | objectBag | NonMorphable | MatrixExtract | Array<any> | any[]\r
-\r
- class Morphable {\r
- constructor();\r
- constructor(st: Stepper);\r
-\r
- from(): MorphValueLike\r
- from(v: MorphValueLike): this\r
- to(): MorphValueLike\r
- to(v: MorphValueLike): this\r
- type(): any\r
- type(t: any): this\r
- stepper(): Stepper\r
- stepper(st: Stepper): this\r
- done(): boolean\r
- at(pos: number): any\r
- }\r
-\r
- class objectBag {\r
- constructor();\r
- constructor(a: object);\r
- valueOf(): object\r
- toArray(): object[]\r
-\r
- to(a: object): Morphable\r
- fromArray(a: any[]): this\r
- }\r
-\r
- class NonMorphable {\r
- constructor(a: object)\r
- valueOf(): object\r
- toArray(): object[]\r
-\r
- to(a: object): Morphable\r
- fromArray(a: object): this\r
- }\r
-\r
- class TransformBag {\r
- constructor()\r
- constructor(a: number[])\r
- constructor(a: TransformData)\r
- defaults: TransformData\r
- toArray(): number[]\r
- to(t: TransformData): Morphable\r
- fromArray(t: number[]): this\r
- }\r
-\r
- interface Stepper {\r
- done(c?: object): boolean\r
- }\r
-\r
- class Ease implements Stepper {\r
- constructor()\r
- constructor(fn: string)\r
- constructor(fn: Function)\r
-\r
- step(from: number, to: number, pos: number): number\r
- done(): boolean\r
- }\r
-\r
- class Controller implements Stepper {\r
- constructor(fn?: Function)\r
- step(current: number, target: number, dt: number, c: number): number\r
- done(c?: object): boolean\r
- }\r
-\r
- // Queue.js\r
- interface QueueParam {\r
- value: any\r
- next?: any\r
- prev?: any\r
- }\r
-\r
- class Queue {\r
- constructor();\r
-\r
- push(value: any): QueueParam\r
- shift(): any\r
- first(): number\r
- last(): number\r
- remove(item: QueueParam): void\r
- }\r
-\r
- // Timeline.js\r
- interface ScheduledRunnerInfo {\r
- start: number\r
- duration: number\r
- end: number\r
- runner: Runner\r
- }\r
-\r
- class Timeline extends EventTarget {\r
- constructor()\r
- constructor(fn: Function)\r
-\r
- active(): boolean\r
- schedule(runner: Runner, delay?: number, when?: string): this\r
- schedule(): ScheduledRunnerInfo[]\r
- unschedule(runner: Runner): this\r
- getEndTime(): number\r
- updateTime(): this\r
- persist(dtOrForever?: number | boolean): this\r
- play(): this\r
- pause(): this\r
- stop(): this\r
- finish(): this\r
- speed(speed: number): this\r
- reverse(yes: boolean): this\r
- seek(dt: number): this\r
- time(): number\r
- time(time: number): this\r
- source(): Function\r
- source(fn: Function): this\r
- }\r
-\r
- // Runner.js\r
- interface TimesParam {\r
- duration: number\r
- delay: number\r
- when: number | string\r
- swing: boolean\r
- wait: number\r
- times: number\r
- }\r
-\r
- type TimeLike = number | TimesParam | Stepper\r
-\r
- type EasingCallback = (...any: any) => number\r
- type EasingLiteral = "<>" | "-" | "<" | ">"\r
-\r
- class Runner {\r
- constructor();\r
- constructor(options: Function);\r
- constructor(options: number);\r
- constructor(options: Controller);\r
-\r
- static sanitise: (duration?: TimeLike, delay?: number, when?: string) => object\r
-\r
- element(): Element\r
- element(el: Element): this\r
- timeline(): Timeline\r
- timeline(timeline: Timeline): this\r
- animate(duration: TimeLike, delay?: number, when?: string): this\r
- schedule(delay: number, when?: string): this\r
- schedule(timeline: Timeline, delay?: number, when?: string): this\r
- unschedule(): this\r
- loop(times?: number, swing?: boolean, wait?: number): this\r
- loop(times: TimesParam): this\r
- delay(delay: number): this\r
-\r
-\r
-\r
- during(fn: Function): this\r
- queue(initFn: Function, runFn: Function, retargetFn?: boolean | Function, isTransform?: boolean): this\r
- after(fn: EventListener): this\r
- time(): number\r
- time(time: number): this\r
- duration(): number\r
- loops(): number\r
- loops(p: number): this\r
- persist(dtOrForever?: number | boolean): this\r
- position(): number\r
- position(p: number): this\r
- progress(): number\r
- progress(p: number): this\r
- step(deta?: number): this\r
- reset(): this\r
- finish(): this\r
- reverse(r?: boolean): this\r
- ease(fn: EasingCallback): this\r
- ease(kind: EasingLiteral): this\r
- active(): boolean\r
- active(a: boolean): this\r
- addTransform(m: Matrix): this\r
- clearTransform(): this\r
- clearTransformsFromQueue(): void\r
-\r
- // extends prototypes\r
- attr(a: string | object, v?: string): this\r
- css(s: string | object, v?: string): this\r
- styleAttr(type: string, name: string | object, val?: string): this\r
- zoom(level: NumberAlias, point?: Point): this\r
- transform(transforms: MatrixTransformParam, relative?: boolean, affine?: boolean): this\r
- x(x: number): this\r
- y(y: number): this\r
- dx(dx: number): this\r
- dy(dy: number): this\r
- cx(x: number): this\r
- cy(y: number): this\r
- dmove(dx: number, dy: number): this\r
- move(x: number, y: number): this\r
- center(x: number, y: number): this\r
- size(width: number, height: number): this\r
- width(width: number): this\r
- height(height: number): this\r
- plot(a: object): this\r
- plot(a: number, b: number, c: number, d: number): this\r
- leading(value: number): this\r
- viewbox(x: number, y: number, width: number, height: number): this\r
- update(offset: number, color: number, opacity: number): this\r
- update(o: StopProperties): this\r
- rx(): number\r
- rx(rx: number): this\r
- ry(): number\r
- ry(ry: number): this\r
- from(x: NumberAlias, y: NumberAlias): this\r
- to(x: NumberAlias, y: NumberAlias): this\r
- }\r
-\r
- // Animator.js\r
- let Animator: {\r
- nextDraw: any\r
- frames: Queue\r
- timeouts: Queue\r
- immediates: Queue\r
-\r
- timer(): boolean\r
- frame(fn: Function): object\r
- timeout(fn: Function, delay?: number): object\r
- immediate(fn: Function): object\r
- cancelFrame(o: object): void\r
- clearTimeout(o: object): void\r
- cancelImmediate(o: object): void\r
- }\r
-\r
- /**\r
- * Just fancy type alias to refer to css query selector.\r
- */\r
- type QuerySelector = string\r
-\r
- class Dom extends EventTarget {\r
- node: HTMLElement | SVGElement;\r
- type: string;\r
-\r
- constructor(node?: HTMLElement, attr?: object);\r
- constructor(att: object);\r
- add(element: Element, i?: number): this;\r
- addTo(parent: Dom | HTMLElement | string, i?: number): this\r
- children(): List<Element>;\r
- clear(): this;\r
- clone(deep?: boolean, assignNewIds?: boolean): this;\r
- each(block: (index: number, children: Element[]) => void, deep?: boolean): this;\r
- element(element: string, inherit?: object): this;\r
- first(): Element;\r
- get(i: number): Element;\r
- getEventHolder(): LinkedHTMLElement;\r
- getEventTarget(): LinkedHTMLElement;\r
- has(element: Element): boolean;\r
- id(): string\r
- id(id: string): this\r
- index(element: Element): number;\r
- last(): Element;\r
- matches(selector: string): boolean;\r
- /**\r
- * Finds the closest ancestor which matches the string or is of passed type. If nothing is passed, the parent is returned\r
- * @param type can be either string, svg.js object or undefined.\r
- */\r
- parent(type?: ElementTypeAlias | QuerySelector): Dom | null;\r
- put(element: Element, i?: number): Element;\r
- /**\r
- * Put the element into the given parent element and returns the parent element\r
- * @param parent The parent in which the current element is inserted\r
- */\r
- putIn(parent: ElementAlias | Node | QuerySelector): Dom;\r
-\r
- remove(): this;\r
- removeElement(element: Element): this;\r
- replace<T extends Dom>(element: T): T;\r
- round(precision?: number, map?: string[]): this\r
- svg(): string;\r
- svg(a: string, outer: true): Element;\r
- svg(a: string, outer?: false): this;\r
- svg(a: boolean, outer?: boolean): string;\r
- svg(a: null | Function, outer?: boolean): string;\r
-\r
- toString(): string;\r
- words(text: string): this;\r
- writeDataToDom(): this;\r
-\r
- // prototype extend Attribute in attr.js\r
- /**\r
- * Get the attribute object of SVG Element. The return object will be vary based on\r
- * the instance itself. For example, G element will only return GlobalAttr where Rect\r
- * will return RectAttr instead.\r
- */\r
- attr(): any;\r
- /**\r
- * Add or update the attribute from the SVG Element. To remove the attribute from the element set value to null\r
- * @param name name of attribute\r
- * @param value value of attribute can be string or number or null\r
- * @param namespace optional string that define namespace\r
- */\r
- attr(name: string, value: any, namespace?: string): this;\r
- attr(name: string): any;\r
- attr(obj: object): this;\r
- attr(obj: string[]): object;\r
-\r
- // prototype extend Selector in selector.js\r
- find(query: string): List<Element>\r
- findOne(query: string): Dom | null\r
-\r
- // prototype method register in data.js\r
- data(a: string): object | string | number\r
- data(a: string, v: object, substain?: boolean): this\r
- data(a: object): this\r
-\r
- // prototype method register in arrange.js\r
- siblings(): List<Element>\r
- position(): number\r
- next(): Element\r
- prev(): Element\r
- forward(): this\r
- backward(): this\r
- front(): this\r
- back(): this\r
- before(el: Element): Element\r
- after(el: Element): Element\r
- insertBefore(el: Element): this\r
- insertAfter(el: Element): this\r
-\r
- // prototype method register in class.js\r
- classes(): string[]\r
- hasClass(name: string): boolean\r
- addClass(name: string): this\r
- removeClass(name: string): this\r
- toggleClass(name: string): this\r
-\r
- // prototype method register in css.js\r
- css(): Partial<CSSStyleDeclaration>\r
- css<T extends CSSStyleName>(style: T): CSSStyleDeclaration[T]\r
- css<T extends CSSStyleName[]>(style: T): Partial<CSSStyleDeclaration>\r
- css<T extends CSSStyleName>(style: T, val: CSSStyleDeclaration[T]): this\r
- css(style: Partial<CSSStyleDeclaration>): this\r
- show(): this\r
- hide(): this\r
- visible(): boolean\r
-\r
- // memory.js\r
- remember(name: string, value: any): this;\r
- remember(name: string): any;\r
- remember(obj: object): this;\r
- forget(...keys: string[]): this;\r
- forget(): this;\r
- memory(): object;\r
-\r
- addEventListener(): void\r
- dispatch(event: Event | string, data?: object): Event\r
- dispatchEvent(event: Event): boolean\r
- fire(event: Event | string, data?: object): this\r
- getEventHolder(): this | Node\r
- getEventTarget(): this | Node\r
-\r
- // on(events: string | Event[], cb: EventListener, binbind?: any, options?: AddEventListenerOptions): this;\r
- // off(events?: string | Event[], cb?: EventListener | number): this;\r
- removeEventListener(): void\r
- }\r
-\r
- // clip.js\r
- class ClipPath extends Container {\r
- constructor();\r
- constructor(node?: SVGClipPathElement);\r
- constructor(attr: object);\r
- node: SVGClipPathElement;\r
-\r
- targets(): List<Element>;\r
- remove(): this;\r
- }\r
-\r
- // container.js\r
- interface ViewBoxLike {\r
- x: number;\r
- y: number;\r
- width: number;\r
- height: number;\r
- }\r
-\r
- class Container extends Element {\r
- circle(size?: NumberAlias): Circle;\r
- circle(size: number, unit: number): Circle;\r
- clip(): ClipPath;\r
- ellipse(width?: number, height?: number): Ellipse;\r
- flatten(parent: Dom, depth?: number): this;\r
- foreignObject(width: number, height: number): ForeignObject\r
- gradient(type: string, block?: (stop: Gradient) => void): Gradient;\r
- group(): G;\r
-\r
- image(): Image;\r
- image(href?: string, callback?: (e: Event) => void): Image;\r
- line(points?: PointArrayAlias): Line;\r
- line(x1: number, y1: number, x2: number, y2: number): Line;\r
- link(url: string): A;\r
- marker(width?: number, height?: number, block?: (marker: Marker) => void): Marker\r
- mask(): Mask;\r
- nested(): Svg;\r
- path(): Path;\r
- path(d: PathArrayAlias): Path;\r
- pattern(width?: number, height?: number, block?: (pattern: Pattern) => void): Pattern\r
- plain(text: string): Text;\r
- polygon(points?: PointArrayAlias): Polygon;\r
- polyline(points?: PointArrayAlias): Polyline;\r
- rect(width?: number, height?: number): Rect;\r
- style(): Style;\r
- text(block: (tspan: Tspan) => void): Text;\r
- text(text: string): Text;\r
- ungroup(parent: Dom, depth?: number): this;\r
- use(element: Element | string, file?: string): Use;\r
- viewbox(): Box;\r
- viewbox(viewbox: ViewBoxLike | string): this;\r
- viewbox(x: number, y: number, width: number, height: number): this;\r
- textPath(text: string | Text, path: string | Path): TextPath\r
- symbol(): Symbol\r
- zoom(): number\r
- zoom(level: NumberAlias, point?: Point): this;\r
- }\r
-\r
- class Defs extends Container {\r
- constructor(node?: SVGDefsElement);\r
- node: SVGDefsElement;\r
- marker(width?: number, height?: number, block?: (marker: Marker) => void): Marker\r
- }\r
-\r
- class Svg extends Container {\r
- constructor(svgElement?: SVGSVGElement);\r
- constructor(id: string);\r
- node: SVGSVGElement;\r
- namespace(): this;\r
- defs(): Defs;\r
- remove(): this;\r
- isRoot(): boolean;\r
- }\r
-\r
- interface Sugar {\r
- fill(): any\r
- fill(fill: FillData): this;\r
- fill(color: string): this;\r
- fill(pattern: Element): this;\r
- fill(image: Image): this;\r
- stroke(): any;\r
- stroke(stroke: StrokeData): this;\r
- stroke(color: string): this;\r
- matrix(a?: number, b?: number, c?: number, d?: number, e?: number, f?: number): this;\r
- matrix(mat: MatrixAlias, b?: number, c?: number, d?: number, e?: number, f?: number): this;\r
- rotate(degrees: number, cx?: number, cy?: number): this;\r
- skew(skewX?: number, skewY?: number, cx?: number, cy?: number): this;\r
- scale(scaleX?: number, scaleY?: number, cx?: number, cy?: number): this;\r
- translate(x: number, y: number): this;\r
- shear(lam: Matrix, cx: number, cy: number): this\r
- relative(x: number, y: number): this\r
- flip(direction?: string, around?: number): this\r
- flip(around: number): this\r
- opacity(): number\r
- opacity(value: number): this\r
- font(a: string): string\r
- font(a: string, v: string | number): this\r
- font(a: object): this\r
- }\r
-\r
- // Symbol.js\r
- class Symbol extends Container {\r
- constructor(svgElement?: SVGSymbolElement);\r
- constructor(attr: object)\r
- node: SVGSymbolElement;\r
- }\r
-\r
- class Element extends Dom implements Sugar {\r
- constructor(node?: SVGElement);\r
- constructor(attr: object);\r
- node: SVGElement;\r
- type: string;\r
- dom: any\r
-\r
- addClass(name: string): this;\r
- after(element: Element): Element;\r
- animate(duration?: TimeLike, delay?: number, when?: string): Runner;\r
- delay(by: number, when?: string): Runner\r
- attr(): any;\r
- attr(name: string, value: any, namespace?: string): this;\r
- attr(name: string): any;\r
- attr(obj: string[]): object;\r
- attr(obj: object): this;\r
- back(): this;\r
- backward(): this;\r
- bbox(): Box;\r
- before(element: Element): Element;\r
- center(x: number, y: number): this;\r
- classes(): string[];\r
- click(cb: Function | null): this;\r
- clipper(): ClipPath;\r
- clipWith(element: Element): this;\r
- clone(deep?: boolean, assignNewIds?: boolean): this;\r
- ctm(): Matrix;\r
- cx(): number;\r
- cx(x: number): this;\r
- cy(): number;\r
- cy(y: number): this;\r
- data(name: string, value: any, sustain?: boolean): this;\r
- data(name: string): any;\r
- data(val: object): this;\r
- dblclick(cb: Function | null): this;\r
- defs(): Defs;\r
- dmove(x: NumberAlias, y: NumberAlias): this;\r
- dx(x: NumberAlias): this;\r
- dy(y: NumberAlias): this;\r
- event(): Event | CustomEvent;\r
- fill(): any;\r
- fill(color: string): this;\r
- fill(color: Color | ColorLike): this;\r
- fill(color: FillData): this;\r
- fill(pattern: Element): this;\r
- fire(event: Event): this;\r
- fire(event: string, data?: any): this;\r
- flip(a: string, offset?: number): this;\r
- flip(offset?: number): this;\r
- font(a: object): this\r
- font(a: string, v: string | number): this\r
- font(a: string): string\r
- forget(...keys: string[]): this;\r
- forget(): this;\r
- forward(): this;\r
- front(): this;\r
- hasClass(name: string): boolean;\r
- height(): NumberAlias;\r
- height(height: NumberAlias): this;\r
- hide(): this;\r
- hide(): this;\r
- id(): string;\r
- id(id: string): this;\r
- inside(x: number, y: number): boolean;\r
- is(cls: any): boolean;\r
- linkTo(url: (link: A) => void): A;\r
- linkTo(url: string): A;\r
- masker(): Mask\r
- maskWith(element: Element): this;\r
- maskWith(mask: Mask): this;\r
- matches(selector: string): boolean;\r
- matrix(): Matrix;\r
- matrix(a?: number, b?: number, c?: number, d?: number, e?: number, f?: number): this;\r
- matrix(mat: MatrixAlias, b?: number, c?: number, d?: number, e?: number, f?: number): this;\r
- matrixify(): Matrix;\r
- memory(): object;\r
- mousedown(cb: Function | null): this;\r
- mousemove(cb: Function | null): this;\r
- mouseout(cb: Function | null): this;\r
- mouseover(cb: Function | null): this;\r
- mouseup(cb: Function | null): this;\r
- mouseenter(cb: Function | null): this;\r
- mouseleave(cb: Function | null): this;\r
- move(x: NumberAlias, y: NumberAlias): this;\r
- native(): LinkedHTMLElement;\r
- next(): Element;\r
- // off(events?: string | Event[], cb?: EventListener | number): this;\r
- // on(event: string, cb: Function, context?: object): this;\r
- opacity(): number;\r
- opacity(o: number): this;\r
- relative(x: number, y: number): this\r
- shear(lam: Matrix, cx: number, cy: number): this\r
- toRoot(): Svg;\r
- /**\r
- * By default parents will return a list of elements up until the root svg.\r
- */\r
- parents(): List<Element>\r
- /**\r
- * List the parent by hierarchy until the given parent type or matcher. If the given value is null\r
- * then the result is only provided the list up until Svg root element which mean no Dom parent element is included.\r
- * @param util a parent type\r
- */\r
- parents<T extends Dom>(util: QuerySelector | T | null): List<Element>\r
- /**\r
- * Get reference svg element based on the given attribute.\r
- * @param attr a svg attribute\r
- */\r
- reference<R extends Dom>(attr: AttributeReference): R | null\r
-\r
- point(): Point;\r
- point(position: CoordinateXY): Point;\r
- point(point: Point): Point;\r
- point(x: number, y: number): Point;\r
- position(): number;\r
- prev(): Element;\r
- rbox(element?: Element): Box;\r
- reference(type: string): Element;\r
- remember(name: string, value: any): this;\r
- remember(name: string): any;\r
- remember(obj: object): this;\r
- remove(): this;\r
- removeClass(name: string): this;\r
- root(): Svg;\r
- rotate(d: number, cx?: number, cy?: number): this;\r
- scale(x?: number, y?: number, cx?: number, cy?: number): this;\r
- screenCTM(): Matrix;\r
- setData(data: object): this;\r
- show(): this;\r
- show(): this;\r
- size(width?: NumberAlias, height?: NumberAlias): this;\r
- skew(x?: number, y?: number, cx?: number, cy?: number): this;\r
- stop(jumpToEnd: boolean, clearQueue: boolean): Animation;\r
- stop(offset?: NumberAlias | string, color?: NumberAlias, opacity?: NumberAlias): Stop;\r
- stop(val: { offset?: NumberAlias | string, color?: NumberAlias, opacity?: NumberAlias }): Stop;\r
- stroke(): any;\r
- stroke(color: string): this;\r
- stroke(stroke: StrokeData): this;\r
- timeline(): Timeline\r
- timeline(tl: Timeline): this\r
- toggleClass(name: string): this;\r
- toParent(parent: Dom): this;\r
- toParent(parent: Dom, i: number): this;\r
- toSvg(): this;\r
- touchcancel(cb: Function | null): this;\r
- touchend(cb: Function | null): this;\r
- touchleave(cb: Function | null): this;\r
- touchmove(cb: Function | null): this;\r
- touchstart(cb: Function | null): this;\r
- transform(): MatrixExtract;\r
- transform(t: MatrixAlias, relative?: boolean): this;\r
- translate(x: number, y: number): this;\r
- unclip(): this;\r
- unmask(): this;\r
- untransform(): this;\r
- visible(): boolean;\r
- width(): NumberAlias;\r
- width(width: NumberAlias): this;\r
- x(): NumberAlias;\r
- x(x: NumberAlias): this;\r
- y(): NumberAlias;\r
- y(y: NumberAlias): this;\r
- }\r
-\r
- // ellipse.js\r
- interface CircleMethods extends Shape {\r
- rx(rx: number): this;\r
- rx(): this;\r
- ry(ry: number): this;\r
- ry(): this;\r
- radius(x: number, y?: number): this;\r
- }\r
- class Circle extends Shape implements CircleMethods {\r
- constructor(node?: SVGCircleElement);\r
- constructor(attr: CircleAttr)\r
-\r
- node: SVGCircleElement;\r
-\r
- rx(rx: number): this;\r
- rx(): this;\r
- ry(ry: number): this;\r
- ry(): this;\r
- radius(x: number, y?: number): this;\r
- }\r
- class Ellipse extends Shape implements CircleMethods {\r
- node: SVGEllipseElement;\r
- constructor(attr: EllipseAttr)\r
- constructor(node?: SVGEllipseElement);\r
-\r
- rx(rx: number): this;\r
- rx(): this;\r
- ry(ry: number): this;\r
- ry(): this;\r
- radius(x: number, y?: number): this;\r
- }\r
-\r
- interface StopProperties {\r
- color?: ColorAlias;\r
- offset?: number | string;\r
- opacity?: number;\r
- }\r
-\r
- // gradient.js\r
- class Stop extends Element {\r
- update(offset?: number, color?: ColorAlias, opacity?: number): this;\r
- update(opts: StopProperties): this;\r
- }\r
- class Gradient extends Container {\r
- constructor(node?: SVGGradientElement);\r
- constructor(attr: object);\r
- constructor(type: string);\r
- node: SVGGradientElement;\r
-\r
- at(offset?: number, color?: ColorAlias, opacity?: number): Stop;\r
- at(opts: StopProperties): Stop;\r
- url(): string;\r
- toString(): string;\r
- targets(): List<Element>\r
- bbox(): Box\r
-\r
- // gradiented.js\r
- from(x: number, y: number): this;\r
- to(x: number, y: number): this;\r
-\r
- // TODO: check with main.js\r
- radius(x: number, y?: number): this;\r
- targets(): List<Element>\r
- bbox(): Box\r
- update(block?: (gradient: Gradient) => void): this;\r
- }\r
-\r
- // group.js\r
- class G extends Container {\r
- constructor(node?: SVGGElement);\r
- constructor(attr: object);\r
- node: SVGGElement;\r
- gbox(): Box;\r
- }\r
-\r
- // hyperlink.js\r
- class A extends Container {\r
- constructor(node?: SVGAElement);\r
- constructor(attr: object);\r
- node: SVGAElement;\r
- to(url: string): this;\r
- to(): string;\r
- target(target: string): this;\r
- target(): string;\r
- }\r
-\r
-\r
- // ForeignObject.js\r
- class ForeignObject extends Element {\r
- constructor(node?: SVGForeignObjectElement, attrs?: object);\r
- constructor(attrs?: object);\r
- add(element: Dom, i?: number): this;\r
- }\r
-\r
- // image.js\r
- class Image extends Shape {\r
- constructor(node?: SVGImageElement);\r
- constructor(attr: object);\r
- node: SVGImageElement;\r
- load(url?: string, callback?: (event: Event) => void): this;\r
- }\r
-\r
- // line.js\r
- type PointArrayAlias = number[] | ArrayXY[] | PointArray | string;\r
-\r
- class Line extends Shape {\r
- constructor(attr: LineAttr)\r
- constructor(node?: SVGLineElement);\r
-\r
- node: SVGLineElement;\r
-\r
- array(): PointArray;\r
- plot(): PointArray\r
- plot(points?: PointArrayAlias): this;\r
- plot(x1: number, y1: number, x2: number, y2: number): this;\r
- move(x: number, y: number): this;\r
- size(width?: number, height?: number): this;\r
- marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;\r
- marker(position: string, marker: Marker): Marker;\r
- }\r
-\r
- // marker.js\r
- // TODO: check register method marker\r
- class Marker extends Container {\r
- constructor();\r
-\r
- node: SVGMarkerElement;\r
-\r
- ref(x: string | number, y: string | number): this;\r
- update(block: (marker: Marker) => void): this;\r
- toString(): string;\r
- orient(orientation: 'auto' | 'auto-start-reverse' | number | Number): this;\r
- orient(): string;\r
- }\r
- // mask.js\r
- class Mask extends Container {\r
- constructor(node?: SVGMaskElement);\r
- constructor(attr: object);\r
- node: SVGMaskElement;\r
- remove(): this\r
- targets(): List<Element>;\r
- }\r
-\r
- // path.js\r
- class Path extends Shape {\r
- constructor(attr: PathAttr)\r
- constructor(node?: SVGPathElement);\r
-\r
- node: SVGPathElement;\r
-\r
- morphArray: PathArray;\r
- array(): PathArray;\r
- plot(): PathArray;\r
- plot(d: PathArrayAlias): this;\r
- marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): this;\r
- marker(position: string, marker: Marker): this;\r
-\r
- // sugar.js\r
- length(): number;\r
- pointAt(length: number): { x: number, y: number };\r
- text(text: string): TextPath\r
- text(text: Text): TextPath\r
- targets(): List<Element>\r
-\r
- }\r
-\r
-\r
- // pattern.js\r
- class Pattern extends Container {\r
- url(): string;\r
- url(...rest: any[]): never;\r
- update(block: (pattern: Pattern) => void): this;\r
- toString(): string;\r
- }\r
-\r
- // poly.js\r
- interface poly {\r
- array(): PointArray;\r
- plot(): PointArray\r
- plot(p: PointArrayAlias): this;\r
- clear(): this;\r
- move(x: number, y: number): this;\r
- size(width: number, height?: number): this;\r
- }\r
-\r
- // pointed.js\r
- interface pointed {\r
- x(): number\r
- x(x: number): this\r
- y(): number\r
- y(y: number): this\r
- height(): number\r
- height(h: number): this\r
- width(): number\r
- width(w: number): this\r
- }\r
-\r
- class Polyline extends Shape implements poly, pointed {\r
- constructor(node?: SVGPolylineElement);\r
- constructor(attr: PolyAttr);\r
-\r
- node: SVGPolylineElement;\r
-\r
- array(): PointArray;\r
- plot(): PointArray\r
- plot(p: PointArrayAlias): this;\r
- x(): number;\r
- x(x: number): this\r
- y(): number;\r
- y(y: number): this\r
- height(): number\r
- height(h: number): this\r
- width(): number\r
- width(w: number): this\r
- move(x: number, y: number): this;\r
- size(width: number, height?: number): this;\r
- marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;\r
- marker(position: string, marker: Marker): Marker;\r
- }\r
-\r
- class Polygon extends Shape implements poly, pointed {\r
- constructor(node?: SVGPolygonElement);\r
- constructor(attr: PolyAttr)\r
-\r
- node: SVGPolygonElement;\r
- array(): PointArray;\r
- plot(): PointArray;\r
- plot(p: PointArrayAlias): this;\r
- x(): number;\r
- x(x: number): this\r
- y(): number;\r
- y(y: number): this\r
- height(): number\r
- height(h: number): this\r
- width(): number\r
- width(w: number): this\r
- move(x: number, y: number): this;\r
- size(width: number, height?: number): this;\r
- marker(position: string, width?: number, height?: number, block?: (marker: Marker) => void): Marker;\r
- marker(position: string, marker: Marker): Marker;\r
- }\r
-\r
- class Rect extends Shape {\r
- constructor(node?: SVGRectElement);\r
- constructor(attr: RectAttr)\r
- node: SVGRectElement;\r
- radius(x: number, y?: number): this;\r
- }\r
-\r
- // shape.js\r
- class Shape extends Element {\r
- }\r
-\r
- // sugar.js\r
- interface StrokeData {\r
- color?: string;\r
- width?: number;\r
- opacity?: number;\r
- linecap?: string;\r
- linejoin?: string;\r
- miterlimit?: number;\r
- dasharray?: string;\r
- dashoffset?: number;\r
- }\r
-\r
- interface FillData {\r
- color?: string\r
- opacity?: number\r
- rule?: string\r
- }\r
-\r
- interface FontData {\r
- family?: string;\r
- size?: NumberAlias;\r
- anchor?: string;\r
- leading?: NumberAlias;\r
- weight?: string;\r
- style?: string\r
- }\r
- // textable.js\r
- interface Textable {\r
- plain(text: string): this;\r
- length(): number;\r
- }\r
-\r
- // text.js\r
- class Text extends Shape implements Textable {\r
- constructor(node?: SVGElement);\r
- constructor(attr: TextAttr)\r
-\r
- clone(): this;\r
- text(): string;\r
- text(text: string): this;\r
- text(block: (text: this) => void): this;\r
- leading(): Number;\r
- leading(leading: NumberAlias): this;\r
- rebuild(enabled: boolean): this;\r
- build(enabled: boolean): this;\r
- clear(): this;\r
- plain(text: string): this;\r
- length(): number;\r
- get(i: number): Tspan;\r
- path(): TextPath\r
- path(d: PathArrayAlias | Path): TextPath;\r
- track(): Element;\r
- ax(): string\r
- ax(x: string): this\r
- ay(): string\r
- ay(y: string): this\r
- amove(x: number, y: number): this\r
- textPath(): TextPath\r
-\r
- // main.js, from extend/copy prototypes from Tspan\r
- tspan(text: string): Tspan;\r
- tspan(block: (tspan: Tspan) => void): this;\r
- }\r
-\r
- class Tspan extends Text implements Textable {\r
- constructor(node?: SVGElement);\r
- constructor(attr: TextAttr);\r
- dx(): number;\r
- dx(x: NumberAlias): this;\r
- dy(): number;\r
- dy(y: NumberAlias): this;\r
- newLine(): this;\r
- tspan(text: string): Tspan;\r
- tspan(block: (tspan: Tspan) => void): this;\r
- length(): number;\r
- text(): string;\r
- text(text: string): this;\r
- text(block: (text: this) => void): this;\r
- plain(text: string): this;\r
- }\r
-\r
- // textpath.js\r
- class TextPath extends Text {\r
- constructor();\r
- constructor(attr: TextPathAttr)\r
-\r
- array(): Array<any>\r
- plot(): PathArray\r
- plot(d: string): this\r
- track(): Path\r
- }\r
-\r
- // style.js\r
- class Style extends Element {\r
- constructor(node: SVGElement, attr?: StylingAttr);\r
- addText(text: string): this;\r
- font(a: object): this\r
- font(a: string, v: string | number): this\r
- font(a: string): string\r
- rule(selector: string, obj: any): this;\r
- }\r
-\r
- // use.js\r
- class Use extends Shape {\r
- use(element: string, file?: string): this;\r
- }\r
-\r
- // viewbox.js\r
- type ViewBoxAlias = ViewBoxLike | number[] | string | Element;\r
-\r
- interface ViewBox {\r
- x: number;\r
- y: number;\r
- width: number;\r
- height: number;\r
- toString(): string;\r
- at(pos: number): ViewBox;\r
- }\r
-}\r
+// Type definitions for @svgdotjs version 3.x
+// Project: @svgdotjs/svg.js
+
+// trick to keep reference to Array build-in type
+declare class BuiltInArray<T> extends Array<T> {}
+
+// trick to have nice attribute list for CSS
+declare type CSSStyleName = Exclude<
+ keyof CSSStyleDeclaration,
+ 'parentRule' | 'length'
+>
+
+declare module '@svgdotjs/svg.js' {
+ function SVG(): Svg
+ function SVG(selector: QuerySelector): Element
+ function SVG<T>(el: T): SVGTypeMapping<T>
+ function SVG(domElement: HTMLElement): Element
+
+ function eid(name: string): string
+ function get(id: string): Element
+
+ function create(name: string): any
+ function extend(parent: object, obj: object): void
+ function invent(config: object): any
+ function adopt(node: HTMLElement): Element
+ function prepare(element: HTMLElement): void
+ function getClass(name: string): Element
+
+ function on(
+ el: Node | Window,
+ events: string,
+ cb: EventListener,
+ binbind?: any,
+ options?: AddEventListenerOptions
+ ): void
+ function on(
+ el: Node | Window,
+ events: Event[],
+ cb: EventListener,
+ binbind?: any,
+ options?: AddEventListenerOptions
+ ): void
+
+ function off(
+ el: Node | Window,
+ events?: string,
+ cb?: EventListener | number,
+ options?: AddEventListenerOptions
+ ): void
+ function off(
+ el: Node | Window,
+ events?: Event[],
+ cb?: EventListener | number,
+ options?: AddEventListenerOptions
+ ): void
+
+ function dispatch(
+ node: Node | Window,
+ event: Event,
+ data?: object,
+ options?: object
+ ): Event
+
+ function find(query: QuerySelector): List<Element>
+ function findOne(query: QuerySelector): Element | null
+
+ function getWindow(): Window
+ function registerWindow(win: Window, doc: Document): void
+ function restoreWindow(): void
+ function saveWindow(): void
+ function withWindow(
+ win: Window,
+ fn: (win: Window, doc: Document) => void
+ ): void
+
+ let utils: {
+ map(array: any[], block: Function): any
+ filter(array: any[], block: Function): any
+ radians(d: number): number
+ degrees(r: number): number
+ camelCase(s: string): string
+ unCamelCase(s: string): string
+ capitalize(s: string): string
+ // proportionalSize
+ // getOrigin
+ }
+
+ let defaults: {
+ attrs: {
+ 'fill-opacity': number
+ 'stroke-opacity': number
+ 'stroke-width': number
+ 'stroke-linejoin': string
+ 'stroke-linecap': string
+ fill: string
+ stroke: string
+ opacity: number
+ x: number
+ y: number
+ cx: number
+ cy: number
+ width: number
+ height: number
+ r: number
+ rx: number
+ ry: number
+ offset: number
+ 'stop-opacity': number
+ 'stop-color': string
+ 'font-size': number
+ 'font-family': string
+ 'text-anchor': string
+ }
+ timeline: {
+ duration: number
+ ease: string
+ delay: number
+ }
+ }
+
+ // let easing: {
+ // '-'(pos: number): number;
+ // '<>'(pos: number): number;
+ // '>'(pos: number): number;
+ // '<'(pos: number): number;
+ // bezier(x1: number, y1: number, x2: number, y2: number): (t: number) => number;
+ // steps(steps: number, stepPosition?: "jump-start"|"jump-end"|"jump-none"|"jump-both"|"start"|"end"): (t: number, beforeFlag?: boolean) => number;
+ // }
+
+ let regex: {
+ delimiter: RegExp
+ dots: RegExp
+ hex: RegExp
+ hyphen: RegExp
+ isBlank: RegExp
+ isHex: RegExp
+ isImage: RegExp
+ isNumber: RegExp
+ isPathLetter: RegExp
+ isRgb: RegExp
+ numberAndUnit: RegExp
+ numbersWithDots: RegExp
+ pathLetters: RegExp
+ reference: RegExp
+ rgb: RegExp
+ transforms: RegExp
+ whitespace: RegExp
+ }
+
+ let namespaces: {
+ ns: string
+ xmlns: string
+ xlink: string
+ svgjs: string
+ }
+
+ interface LinkedHTMLElement extends HTMLElement {
+ instance: Element
+ }
+
+ // ************ Standard object/option/properties declaration ************
+
+ type AttrNumberValue = number | 'auto'
+
+ /**
+ * The SVG core attributes are all the common attributes that can be specified on any SVG element.
+ * More information see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Core
+ */
+ interface CoreAttr {
+ id?: string
+ lang?: string
+ tabindex?: number
+ 'xml:lang'?: string
+ }
+
+ /**
+ * The SVG styling attributes are all the attributes that can be specified on any SVG element to apply CSS styling effects.
+ * More information see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Styling
+ */
+ interface StylingAttr {
+ /**
+ * a valid HTML class name
+ */
+ class?: string
+ /**
+ * SVG css style string format. It all can be find here https://www.w3.org/TR/SVG/styling.html#StyleAttribute
+ */
+ style?: string
+ }
+
+ /**
+ * A global attribute that can be use with any svg element
+ */
+ interface GlobalAttr extends CoreAttr, StylingAttr {}
+
+ // TODO: implement SVG Presentation Attributes. See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation
+
+ interface PathBaseAttr {
+ pathLength?: number
+ }
+
+ interface RadiusAxisAttr {
+ rx?: AttrNumberValue
+ ry?: AttrNumberValue
+ }
+
+ /**
+ * SVG Rectangle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect
+ */
+ interface RectAttr extends RadiusAxisAttr, PathBaseAttr, GlobalAttr {
+ x?: number
+ y?: number
+ width: AttrNumberValue
+ height: AttrNumberValue
+ }
+
+ /**
+ * SVG Line attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line
+ */
+ interface LineAttr extends PathBaseAttr, GlobalAttr {
+ x1?: number
+ y1?: number
+ x2?: number
+ y2?: number
+ }
+
+ /**
+ * SVG Circle attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle
+ */
+ interface CircleAttr extends PathBaseAttr, GlobalAttr {
+ cx?: number | string
+ cy?: number | string
+ r?: number | string
+ }
+
+ /**
+ * SVG Ellipse attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse
+ */
+ interface EllipseAttr extends PathBaseAttr, GlobalAttr {
+ cx?: number | string
+ cy?: number | string
+ rx?: number | string
+ ry?: number | string
+ }
+
+ /**
+ * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path
+ */
+ interface PathAttr extends PathBaseAttr, GlobalAttr {
+ d?: string
+ }
+
+ /**
+ * SVG Path attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon
+ * or https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline
+ */
+ interface PolyAttr extends PathBaseAttr, GlobalAttr {
+ points?: string
+ }
+
+ /**
+ * SVG Text attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text
+ */
+ interface TextAttr extends GlobalAttr {
+ x?: number | string
+ y?: number | string
+ dx?: number | string
+ dy?: number | string
+ lengthAdjust?: 'spacing' | 'spacingAndGlyphs'
+ textLength?: number | string
+ // see https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList
+ // or https://developer.mozilla.org/en-US/docs/Web/SVG/Content_type#List-of-Ts
+ // TODO: tbd
+ // rotate?: string
+ }
+
+ /**
+ * SVG TextPath attribute, more information see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath
+ */
+ interface TextPathAttr extends GlobalAttr {
+ href?: string
+ lengthAdjust?: 'spacing' | 'spacingAndGlyphs'
+ method?: 'align' | 'stretch'
+ side?: 'left' | 'right'
+ spacing?: 'auto' | 'exact'
+ startOffset?: number | string
+ textLength?: number | string
+ // See https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath
+ // TODO: tbd as there is no reference to see the detail of how it would look like
+ // path?: string
+ }
+
+ /**
+ * A generic Dom Box object.
+ * Notice: DOMRect is still in experiment state and document is not complete (Draft)
+ * See https://developer.mozilla.org/en-US/docs/Web/API/DOMRect
+ */
+ interface DOMRect {
+ x?: number
+ y?: number
+ width?: number
+ height?: number
+ top?: number
+ right?: number
+ bottom?: number
+ left?: number
+ }
+
+ // ************ SVG.JS generic Conditional Types declaration ************
+
+ type SVGTypeMapping<T> = T extends HTMLElement
+ ? Dom
+ : T extends SVGSVGElement
+ ? Svg
+ : T extends SVGRectElement
+ ? Rect
+ : T extends SVGCircleElement
+ ? Circle
+ : T extends SVGPathElement
+ ? Path
+ : T extends SVGTextElement
+ ? Text
+ : T extends SVGTextPathElement
+ ? TextPath
+ : T extends SVGGElement
+ ? G
+ : T extends SVGLineElement
+ ? Line
+ : T extends SVGPolylineElement
+ ? Polyline
+ : T extends SVGPolygonElement
+ ? Polygon
+ : T extends SVGGradientElement
+ ? Gradient
+ : T extends SVGImageElement
+ ? Image
+ : T extends SVGEllipseElement
+ ? Ellipse
+ : T extends SVGMaskElement
+ ? Mask
+ : T extends SVGMarkerElement
+ ? Marker
+ : T extends SVGClipPathElement
+ ? ClipPath
+ : T extends SVGTSpanElement
+ ? Tspan
+ : T extends SVGSymbolElement
+ ? Symbol
+ : T extends SVGUseElement
+ ? Use
+ : Element
+
+ // element type as string
+ type SvgType = 'svg'
+ type ClipPathType = 'clipPath'
+ type TextType = 'text'
+ type GType = 'g'
+ type AType = 'a'
+
+ type ParentElement = SvgType | GType | AType
+
+ type AttrTypeMapping<T> = T extends Rect ? RectAttr : GlobalAttr
+
+ type ElementAlias =
+ | Dom
+ | Svg
+ | Rect
+ | Line
+ | Polygon
+ | Polyline
+ | Ellipse
+ | ClipPath
+ | Use
+ | Text
+ | Path
+ | TextPath
+ | Circle
+ | G
+ | Gradient
+ | Image
+ | Element
+
+ type ElementTypeAlias =
+ | typeof Dom
+ | typeof Svg
+ | typeof Rect
+ | typeof Line
+ | typeof Polygon
+ | typeof Polyline
+ | typeof Ellipse
+ | typeof ClipPath
+ | typeof Use
+ | typeof Text
+ | typeof Path
+ | typeof TextPath
+ | typeof Circle
+ | typeof G
+ | typeof Gradient
+ | typeof Image
+ | typeof Element
+
+ type AttributeReference =
+ | 'href'
+ | 'marker-start'
+ | 'marker-mid'
+ | 'marker-end'
+ | 'mask'
+ | 'clip-path'
+ | 'filter'
+ | 'fill'
+
+ // ************* SVG.JS Type Declaration *************
+ // ********** Locate in directory src/types **********
+
+ // SVGArray.js
+ // Notice: below class is defined the name as `Array` rather than `SVGArray`.
+ // The purpose of giving the name as `Array` is to allow it to be aligned with SVG.JS export type
+ // as SVG.JS export it as `Array` (to be precise `SVG.Array`) so reading through JS documentation
+ // should be more straightforward.
+ /**
+ * Type alias to native array.
+ *
+ * **Caution**: If argument is a string, generic type must be a number or array of number and
+ * the string is format as a concatenate of number separate by comma.
+ * This is expensive to build runtime type check for such as case so please use it carefully.
+ */
+ type ArrayAlias<T> = BuiltInArray<T> | T[] | string
+
+ class Array<T> extends BuiltInArray<T> {
+ constructor(array?: ArrayAlias<T>)
+
+ /**
+ * Return array of generic T however it's flatten array by 1 level as it using `apply` function.
+ * For example: if T is a `number[]` which is the number of 2 dimension `Array<number[]>` the result will be `number[]`
+ */
+ toArray(): any[]
+ /**
+ * return a concatenated string of each element separated by space
+ */
+ toString(): string
+ valueOf(): T[]
+ clone(): Array<T>
+ toSet(): Set<T>
+ parse(a?: ArrayAlias<T>): T[]
+ to(a: any): Morphable
+ }
+
+ // point.js
+ class Point {
+ x: number
+ y: number
+ constructor()
+ constructor(position: CoordinateXY)
+ constructor(point: Point)
+ constructor(x: number, y?: number)
+ clone(): Point
+ transform(matrix: Matrix): this
+ transformO(matrix: Matrix): this
+ toArray(): ArrayXY
+ }
+
+ // pointArray.js
+ class PointArray extends Array<ArrayXY> {
+ constructor()
+ constructor(array?: ArrayAlias<ArrayXY> | number[])
+
+ toLine(): LineAttr
+ transform(m: Matrix | MatrixLike): PointArray
+ move(x: number, y: number): this
+ size(width: number, height: number): this
+ bbox(): Box
+ to(a: any): Morphable
+ toString(): string
+ }
+
+ // SVGNumber.js
+ type NumberUnit = [number, string]
+
+ class Number {
+ constructor()
+ constructor(value: Number)
+ constructor(value: string)
+ constructor(value: number, unit?: any)
+ constructor(n: NumberUnit)
+
+ value: number
+ unit: any
+
+ toString(): string
+ toJSON(): object // same as toString
+ toArray(): NumberUnit
+ valueOf(): number
+ plus(number: NumberAlias): Number
+ minus(number: NumberAlias): Number
+ times(number: NumberAlias): Number
+ divide(number: NumberAlias): Number
+ convert(unit: string): Number
+ to(a: any): Morphable
+ }
+
+ type NumberAlias = Number | number | string
+
+ // PathArray.js
+
+ type LineCommand =
+ | ['M' | 'm' | 'L' | 'l', number, number]
+ | ['H' | 'h' | 'V' | 'v', number]
+ | ['Z' | 'z']
+
+ type CurveCommand =
+ // Bezier Curves
+ | ['C' | 'c', number, number, number, number, number, number]
+ | ['S' | 's' | 'Q' | 'q', number, number, number, number]
+ | ['T' | 't', number, number]
+ // Arcs
+ | ['A' | 'a', number, number, number, number, number, number, number]
+
+ type PathCommand = LineCommand | CurveCommand
+
+ type PathArrayAlias = PathArray | PathCommand[] | (string | number)[] | string
+
+ class PathArray extends Array<PathCommand> {
+ constructor()
+ constructor(d: ArrayAlias<PathCommand> | PathArrayAlias)
+
+ move(x: number, y: number): this
+ size(width: number, height: number): this
+ equalCommands(other: PathArray): boolean
+ morph(pa: PathArray): this
+ parse(array?: ArrayAlias<PathCommand> | PathArrayAlias): PathCommand[]
+ bbox(): Box
+ to(a: any): Morphable
+ }
+
+ // Matrix.js
+ interface TransformData {
+ origin?: number[]
+ scaleX?: number
+ scaleY?: number
+ shear?: number
+ rotate?: number
+ translateX?: number
+ translateY?: number
+ originX?: number
+ originY?: number
+ }
+
+ interface MatrixLike {
+ a?: number
+ b?: number
+ c?: number
+ d?: number
+ e?: number
+ f?: number
+ }
+
+ interface MatrixExtract extends TransformData, MatrixLike {}
+
+ type FlipType = 'both' | 'x' | 'y' | boolean
+ type ArrayXY = [number, number]
+ type CoordinateXY = ArrayXY | { x: number; y: number }
+
+ interface MatrixTransformParam {
+ rotate?: number
+ flip?: FlipType
+ skew?: ArrayXY | number
+ skewX?: number
+ skewY?: number
+ scale?: ArrayXY | number
+ scaleX?: number
+ scaleY?: number
+ shear?: number
+ theta?: number
+ origin?: CoordinateXY | string
+ around?: CoordinateXY
+ ox?: number
+ originX?: number
+ oy?: number
+ originY?: number
+ position?: CoordinateXY
+ px?: number
+ positionX?: number
+ py?: number
+ positionY?: number
+ translate?: CoordinateXY
+ tx?: number
+ translateX?: number
+ ty?: number
+ translateY?: number
+ relative?: CoordinateXY
+ rx?: number
+ relativeX?: number
+ ry?: number
+ relativeY?: number
+ }
+
+ type MatrixAlias =
+ | MatrixLike
+ | TransformData
+ | MatrixTransformParam
+ | number[]
+ | Element
+ | string
+
+ class Matrix implements MatrixLike {
+ constructor()
+ constructor(source: MatrixAlias)
+ constructor(
+ a: number,
+ b: number,
+ c: number,
+ d: number,
+ e: number,
+ f: number
+ )
+
+ a: number
+ b: number
+ c: number
+ d: number
+ e: number
+ f: number;
+
+ // *** To Be use by Test Only in restrict mode ***
+ [key: string]: any
+
+ clone(): Matrix
+ transform(o: MatrixLike | MatrixTransformParam): Matrix
+ compose(o: MatrixExtract): Matrix
+ decompose(cx?: number, cy?: number): MatrixExtract
+ multiply(m: MatrixAlias | Matrix): Matrix
+ multiplyO(m: MatrixAlias | Matrix): this
+ lmultiply(m: MatrixAlias | Matrix): Matrix
+ lmultiplyO(m: MatrixAlias | Matrix): this
+ inverse(): Matrix
+ inverseO(): this
+ translate(x?: number, y?: number): Matrix
+ translateO(x?: number, y?: number): this
+ scale(x: number, y?: number, cx?: number, cy?: number): Matrix
+ scaleO(x: number, y?: number, cx?: number, cy?: number): this
+ rotate(r: number, cx?: number, cy?: number): Matrix
+ rotateO(r: number, cx?: number, cy?: number): this
+ flip(a: NumberAlias, offset?: number): Matrix
+ flipO(a: NumberAlias, offset?: number): this
+ flip(offset?: number): Matrix
+ shear(a: number, cx?: number, cy?: number): Matrix
+ shearO(a: number, cx?: number, cy?: number): this
+ skew(y?: number, cx?: number, cy?: number): Matrix
+ skewO(y?: number, cx?: number, cy?: number): this
+ skew(x: number, y?: number, cx?: number, cy?: number): Matrix
+ skewX(x: number, cx?: number, cy?: number): Matrix
+ skewY(y: number, cx?: number, cy?: number): Matrix
+ around(cx?: number, cy?: number, matrix?: Matrix): Matrix
+ aroundO(cx?: number, cy?: number, matrix?: Matrix): this
+ equals(m: Matrix): boolean
+ toString(): string
+ toArray(): number[]
+ valueOf(): MatrixLike
+ to(a: any): Morphable
+ }
+
+ type ListEachCallback<T> = (el: T, index: number, list: List<T>) => any
+
+ // List.js
+ class List<T> extends BuiltInArray<T> {
+ each(fn: ListEachCallback<T>): List<any>
+ each(name: string, ...args: any[]): List<any>
+ toArray(): T[]
+ }
+
+ class Eventobject {
+ [key: string]: Eventobject
+ }
+
+ // EventTarget.js
+ class EventTarget {
+ events: Eventobject
+
+ addEventListener(): void
+ dispatch(event: Event | string, data?: object): Event
+ dispatchEvent(event: Event): boolean
+ fire(event: Event | string, data?: object): this
+ getEventHolder(): this | Node
+ getEventTarget(): this | Node
+
+ on(
+ events: string | Event[],
+ cb: EventListener,
+ binbind?: any,
+ options?: AddEventListenerOptions
+ ): this
+ off(
+ events?: string | Event[],
+ cb?: EventListener | number,
+ options?: AddEventListenerOptions
+ ): this
+
+ removeEventListener(): void
+ }
+
+ // Color.js
+ interface ColorLike {
+ r: number
+ g: number
+ b: number
+
+ x: number
+ y: number
+ z: number
+
+ h: number
+ s: number
+ l: number
+ a: number
+ c: number
+
+ m: number
+ k: number
+
+ space: string
+ }
+
+ type ColorAlias = string | ColorLike
+
+ class Color implements ColorLike {
+ r: number
+ g: number
+ b: number
+
+ x: number
+ y: number
+ z: number
+
+ h: number
+ s: number
+ l: number
+ a: number
+ c: number
+
+ m: number
+ k: number
+
+ space: string
+ constructor()
+ constructor(color: ColorAlias, space?: string)
+ constructor(a: number, b: number, c: number, space?: string)
+ constructor(a: number, b: number, c: number, d: number, space?: string)
+ constructor(a: number[], space?: string)
+
+ rgb(): Color
+ lab(): Color
+ xyz(): Color
+ lch(): Color
+ hsl(): Color
+ cmyk(): Color
+ toHex(): string
+ toString(): string
+ toRgb(): string
+ toArray(): any[]
+
+ to(a: any): Morphable
+ fromArray(a: any): this
+
+ static random(mode: 'sine', time?: number): Color
+ static random(mode?: string): Color
+ }
+
+ // Box.js
+ interface BoxLike {
+ height: number
+ width: number
+ y: number
+ x: number
+ cx?: number
+ cy?: number
+ w?: number
+ h?: number
+ x2?: number
+ y2?: number
+ }
+
+ class Box implements BoxLike {
+ height: number
+ width: number
+ y: number
+ x: number
+ cx: number
+ cy: number
+ w: number
+ h: number
+ x2: number
+ y2: number
+
+ constructor()
+ constructor(source: string)
+ constructor(source: number[])
+ constructor(source: DOMRect)
+ constructor(x: number, y: number, width: number, height: number)
+
+ merge(box: BoxLike): Box
+ transform(m: Matrix): Box
+ addOffset(): this
+ toString(): string
+ toArray(): number[]
+ isNulled(): boolean
+ to(v: MorphValueLike): Morphable
+ }
+
+ // Morphable.js
+ type MorphValueLike =
+ | string
+ | number
+ | objectBag
+ | NonMorphable
+ | MatrixExtract
+ | Array<any>
+ | any[]
+
+ class Morphable {
+ constructor()
+ constructor(st: Stepper)
+
+ from(): MorphValueLike
+ from(v: MorphValueLike): this
+ to(): MorphValueLike
+ to(v: MorphValueLike): this
+ type(): any
+ type(t: any): this
+ stepper(): Stepper
+ stepper(st: Stepper): this
+ done(): boolean
+ at(pos: number): any
+ }
+
+ class objectBag {
+ constructor()
+ constructor(a: object)
+ valueOf(): object
+ toArray(): object[]
+
+ to(a: object): Morphable
+ fromArray(a: any[]): this
+ }
+
+ class NonMorphable {
+ constructor(a: object)
+ valueOf(): object
+ toArray(): object[]
+
+ to(a: object): Morphable
+ fromArray(a: object): this
+ }
+
+ class TransformBag {
+ constructor()
+ constructor(a: number[])
+ constructor(a: TransformData)
+ defaults: TransformData
+ toArray(): number[]
+ to(t: TransformData): Morphable
+ fromArray(t: number[]): this
+ }
+
+ interface Stepper {
+ done(c?: object): boolean
+ }
+
+ class Ease implements Stepper {
+ constructor()
+ constructor(fn: string)
+ constructor(fn: Function)
+
+ step(from: number, to: number, pos: number): number
+ done(): boolean
+ }
+
+ class Controller implements Stepper {
+ constructor(fn?: Function)
+ step(current: number, target: number, dt: number, c: number): number
+ done(c?: object): boolean
+ }
+
+ // Queue.js
+ interface QueueParam {
+ value: any
+ next?: any
+ prev?: any
+ }
+
+ class Queue {
+ constructor()
+
+ push(value: any): QueueParam
+ shift(): any
+ first(): number
+ last(): number
+ remove(item: QueueParam): void
+ }
+
+ // Timeline.js
+ interface ScheduledRunnerInfo {
+ start: number
+ duration: number
+ end: number
+ runner: Runner
+ }
+
+ class Timeline extends EventTarget {
+ constructor()
+ constructor(fn: Function)
+
+ active(): boolean
+ schedule(runner: Runner, delay?: number, when?: string): this
+ schedule(): ScheduledRunnerInfo[]
+ unschedule(runner: Runner): this
+ getEndTime(): number
+ updateTime(): this
+ persist(dtOrForever?: number | boolean): this
+ play(): this
+ pause(): this
+ stop(): this
+ finish(): this
+ speed(speed: number): this
+ reverse(yes: boolean): this
+ seek(dt: number): this
+ time(): number
+ time(time: number): this
+ source(): Function
+ source(fn: Function): this
+ }
+
+ // Runner.js
+ interface TimesParam {
+ duration: number
+ delay: number
+ when: number | string
+ swing: boolean
+ wait: number
+ times: number
+ }
+
+ type TimeLike = number | TimesParam | Stepper
+
+ type EasingCallback = (...any: any) => number
+ type EasingLiteral = '<>' | '-' | '<' | '>'
+
+ class Runner {
+ constructor()
+ constructor(options: Function)
+ constructor(options: number)
+ constructor(options: Controller)
+
+ static sanitise: (
+ duration?: TimeLike,
+ delay?: number,
+ when?: string
+ ) => object
+
+ element(): Element
+ element(el: Element): this
+ timeline(): Timeline
+ timeline(timeline: Timeline): this
+ animate(duration: TimeLike, delay?: number, when?: string): this
+ schedule(delay: number, when?: string): this
+ schedule(timeline: Timeline, delay?: number, when?: string): this
+ unschedule(): this
+ loop(times?: number, swing?: boolean, wait?: number): this
+ loop(times: TimesParam): this
+ delay(delay: number): this
+
+ during(fn: Function): this
+ queue(
+ initFn: Function,
+ runFn: Function,
+ retargetFn?: boolean | Function,
+ isTransform?: boolean
+ ): this
+ after(fn: EventListener): this
+ time(): number
+ time(time: number): this
+ duration(): number
+ loops(): number
+ loops(p: number): this
+ persist(dtOrForever?: number | boolean): this
+ position(): number
+ position(p: number): this
+ progress(): number
+ progress(p: number): this
+ step(deta?: number): this
+ reset(): this
+ finish(): this
+ reverse(r?: boolean): this
+ ease(fn: EasingCallback): this
+ ease(kind: EasingLiteral): this
+ active(): boolean
+ active(a: boolean): this
+ addTransform(m: Matrix): this
+ clearTransform(): this
+ clearTransformsFromQueue(): void
+
+ // extends prototypes
+ attr(a: string | object, v?: string): this
+ css(s: string | object, v?: string): this
+ styleAttr(type: string, name: string | object, val?: string): this
+ zoom(level: NumberAlias, point?: Point): this
+ transform(
+ transforms: MatrixTransformParam,
+ relative?: boolean,
+ affine?: boolean
+ ): this
+ x(x: number): this
+ y(y: number): this
+ dx(dx: number): this
+ dy(dy: number): this
+ cx(x: number): this
+ cy(y: number): this
+ dmove(dx: number, dy: number): this
+ move(x: number, y: number): this
+ center(x: number, y: number): this
+ size(width: number, height: number): this
+ width(width: number): this
+ height(height: number): this
+ plot(a: object): this
+ plot(a: number, b: number, c: number, d: number): this
+ leading(value: number): this
+ viewbox(x: number, y: number, width: number, height: number): this
+ update(offset: number, color: number, opacity: number): this
+ update(o: StopProperties): this
+ rx(): number
+ rx(rx: number): this
+ ry(): number
+ ry(ry: number): this
+ from(x: NumberAlias, y: NumberAlias): this
+ to(x: NumberAlias, y: NumberAlias): this
+ }
+
+ // Animator.js
+ let Animator: {
+ nextDraw: any
+ frames: Queue
+ timeouts: Queue
+ immediates: Queue
+
+ timer(): boolean
+ frame(fn: Function): object
+ timeout(fn: Function, delay?: number): object
+ immediate(fn: Function): object
+ cancelFrame(o: object): void
+ clearTimeout(o: object): void
+ cancelImmediate(o: object): void
+ }
+
+ /**
+ * Just fancy type alias to refer to css query selector.
+ */
+ type QuerySelector = string
+
+ class Dom extends EventTarget {
+ node: HTMLElement | SVGElement
+ type: string
+
+ constructor(node?: HTMLElement, attr?: object)
+ constructor(att: object)
+ add(element: Element, i?: number): this
+ addTo(parent: Dom | HTMLElement | string, i?: number): this
+ children(): List<Element>
+ clear(): this
+ clone(deep?: boolean, assignNewIds?: boolean): this
+ each(
+ block: (index: number, children: Element[]) => void,
+ deep?: boolean
+ ): this
+ element(element: string, inherit?: object): this
+ first(): Element
+ get(i: number): Element
+ getEventHolder(): LinkedHTMLElement
+ getEventTarget(): LinkedHTMLElement
+ has(element: Element): boolean
+ id(): string
+ id(id: string): this
+ index(element: Element): number
+ last(): Element
+ matches(selector: string): boolean
+ /**
+ * Finds the closest ancestor which matches the string or is of passed type. If nothing is passed, the parent is returned
+ * @param type can be either string, svg.js object or undefined.
+ */
+ parent(type?: ElementTypeAlias | QuerySelector): Dom | null
+ put(element: Element, i?: number): Element
+ /**
+ * Put the element into the given parent element and returns the parent element
+ * @param parent The parent in which the current element is inserted
+ */
+ putIn(parent: ElementAlias | Node | QuerySelector): Dom
+
+ remove(): this
+ removeElement(element: Element): this
+ replace<T extends Dom>(element: T): T
+ round(precision?: number, map?: string[]): this
+ svg(): string
+ svg(a: string, outer: true): Element
+ svg(a: string, outer?: false): this
+ svg(a: boolean, outer?: boolean): string
+ svg(a: null | Function, outer?: boolean): string
+
+ toString(): string
+ words(text: string): this
+ writeDataToDom(): this
+
+ // prototype extend Attribute in attr.js
+ /**
+ * Get the attribute object of SVG Element. The return object will be vary based on
+ * the instance itself. For example, G element will only return GlobalAttr where Rect
+ * will return RectAttr instead.
+ */
+ attr(): any
+ /**
+ * Add or update the attribute from the SVG Element. To remove the attribute from the element set value to null
+ * @param name name of attribute
+ * @param value value of attribute can be string or number or null
+ * @param namespace optional string that define namespace
+ */
+ attr(name: string, value: any, namespace?: string): this
+ attr(name: string): any
+ attr(obj: object): this
+ attr(obj: string[]): object
+
+ // prototype extend Selector in selector.js
+ find(query: string): List<Element>
+ findOne(query: string): Dom | null
+
+ // prototype method register in data.js
+ data(a: string): object | string | number
+ data(a: string, v: object, substain?: boolean): this
+ data(a: object): this
+
+ // prototype method register in arrange.js
+ siblings(): List<Element>
+ position(): number
+ next(): Element
+ prev(): Element
+ forward(): this
+ backward(): this
+ front(): this
+ back(): this
+ before(el: Element): Element
+ after(el: Element): Element
+ insertBefore(el: Element): this
+ insertAfter(el: Element): this
+
+ // prototype method register in class.js
+ classes(): string[]
+ hasClass(name: string): boolean
+ addClass(name: string): this
+ removeClass(name: string): this
+ toggleClass(name: string): this
+
+ // prototype method register in css.js
+ css(): Partial<CSSStyleDeclaration>
+ css<T extends CSSStyleName>(style: T): CSSStyleDeclaration[T]
+ css<T extends CSSStyleName[]>(style: T): Partial<CSSStyleDeclaration>
+ css<T extends CSSStyleName>(style: T, val: CSSStyleDeclaration[T]): this
+ css(style: Partial<CSSStyleDeclaration>): this
+ show(): this
+ hide(): this
+ visible(): boolean
+
+ // memory.js
+ remember(name: string, value: any): this
+ remember(name: string): any
+ remember(obj: object): this
+ forget(...keys: string[]): this
+ forget(): this
+ memory(): object
+
+ addEventListener(): void
+ dispatch(event: Event | string, data?: object): Event
+ dispatchEvent(event: Event): boolean
+ fire(event: Event | string, data?: object): this
+ getEventHolder(): this | Node
+ getEventTarget(): this | Node
+
+ // on(events: string | Event[], cb: EventListener, binbind?: any, options?: AddEventListenerOptions): this;
+ // off(events?: string | Event[], cb?: EventListener | number): this;
+ removeEventListener(): void
+ }
+
+ // clip.js
+ class ClipPath extends Container {
+ constructor()
+ constructor(node?: SVGClipPathElement)
+ constructor(attr: object)
+ node: SVGClipPathElement
+
+ targets(): List<Element>
+ remove(): this
+ }
+
+ // container.js
+ interface ViewBoxLike {
+ x: number
+ y: number
+ width: number
+ height: number
+ }
+
+ class Container extends Element {
+ circle(size?: NumberAlias): Circle
+ circle(size: number, unit: number): Circle
+ clip(): ClipPath
+ ellipse(width?: number, height?: number): Ellipse
+ flatten(parent: Dom, depth?: number): this
+ foreignObject(width: number, height: number): ForeignObject
+ gradient(type: string, block?: (stop: Gradient) => void): Gradient
+ group(): G
+
+ image(): Image
+ image(href?: string, callback?: (e: Event) => void): Image
+ line(points?: PointArrayAlias): Line
+ line(x1: number, y1: number, x2: number, y2: number): Line
+ link(url: string): A
+ marker(
+ width?: number,
+ height?: number,
+ block?: (marker: Marker) => void
+ ): Marker
+ mask(): Mask
+ nested(): Svg
+ path(): Path
+ path(d: PathArrayAlias): Path
+ pattern(
+ width?: number,
+ height?: number,
+ block?: (pattern: Pattern) => void
+ ): Pattern
+ plain(text: string): Text
+ polygon(points?: PointArrayAlias): Polygon
+ polyline(points?: PointArrayAlias): Polyline
+ rect(width?: number, height?: number): Rect
+ style(): Style
+ text(block: (tspan: Tspan) => void): Text
+ text(text: string): Text
+ ungroup(parent: Dom, depth?: number): this
+ use(element: Element | string, file?: string): Use
+ viewbox(): Box
+ viewbox(viewbox: ViewBoxLike | string): this
+ viewbox(x: number, y: number, width: number, height: number): this
+ textPath(text: string | Text, path: string | Path): TextPath
+ symbol(): Symbol
+ zoom(): number
+ zoom(level: NumberAlias, point?: Point): this
+ }
+
+ class Defs extends Container {
+ constructor(node?: SVGDefsElement)
+ node: SVGDefsElement
+ marker(
+ width?: number,
+ height?: number,
+ block?: (marker: Marker) => void
+ ): Marker
+ }
+
+ class Svg extends Container {
+ constructor(svgElement?: SVGSVGElement)
+ constructor(id: string)
+ node: SVGSVGElement
+ namespace(): this
+ defs(): Defs
+ remove(): this
+ isRoot(): boolean
+ }
+
+ interface Sugar {
+ fill(): any
+ fill(fill: FillData): this
+ fill(color: string): this
+ fill(pattern: Element): this
+ fill(image: Image): this
+ stroke(): any
+ stroke(stroke: StrokeData): this
+ stroke(color: string): this
+ matrix(
+ a?: number,
+ b?: number,
+ c?: number,
+ d?: number,
+ e?: number,
+ f?: number
+ ): this
+ matrix(
+ mat: MatrixAlias,
+ b?: number,
+ c?: number,
+ d?: number,
+ e?: number,
+ f?: number
+ ): this
+ rotate(degrees: number, cx?: number, cy?: number): this
+ skew(skewX?: number, skewY?: number, cx?: number, cy?: number): this
+ scale(scaleX?: number, scaleY?: number, cx?: number, cy?: number): this
+ translate(x: number, y: number): this
+ shear(lam: Matrix, cx: number, cy: number): this
+ relative(x: number, y: number): this
+ flip(direction?: string, around?: number): this
+ flip(around: number): this
+ opacity(): number
+ opacity(value: number): this
+ font(a: string): string
+ font(a: string, v: string | number): this
+ font(a: object): this
+ }
+
+ // Symbol.js
+ class Symbol extends Container {
+ constructor(svgElement?: SVGSymbolElement)
+ constructor(attr: object)
+ node: SVGSymbolElement
+ }
+
+ class Element extends Dom implements Sugar {
+ constructor(node?: SVGElement)
+ constructor(attr: object)
+ node: SVGElement
+ type: string
+ dom: any
+
+ addClass(name: string): this
+ after(element: Element): Element
+ animate(duration?: TimeLike, delay?: number, when?: string): Runner
+ delay(by: number, when?: string): Runner
+ attr(): any
+ attr(name: string, value: any, namespace?: string): this
+ attr(name: string): any
+ attr(obj: string[]): object
+ attr(obj: object): this
+ back(): this
+ backward(): this
+ bbox(): Box
+ before(element: Element): Element
+ center(x: number, y: number): this
+ classes(): string[]
+ click(cb: Function | null): this
+ clipper(): ClipPath
+ clipWith(element: Element): this
+ clone(deep?: boolean, assignNewIds?: boolean): this
+ ctm(): Matrix
+ cx(): number
+ cx(x: number): this
+ cy(): number
+ cy(y: number): this
+ data(name: string, value: any, sustain?: boolean): this
+ data(name: string): any
+ data(val: object): this
+ dblclick(cb: Function | null): this
+ defs(): Defs
+ dmove(x: NumberAlias, y: NumberAlias): this
+ dx(x: NumberAlias): this
+ dy(y: NumberAlias): this
+ event(): Event | CustomEvent
+ fill(): any
+ fill(color: string): this
+ fill(color: Color | ColorLike): this
+ fill(color: FillData): this
+ fill(pattern: Element): this
+ fire(event: Event): this
+ fire(event: string, data?: any): this
+ flip(a: string, offset?: number): this
+ flip(offset?: number): this
+ font(a: object): this
+ font(a: string, v: string | number): this
+ font(a: string): string
+ forget(...keys: string[]): this
+ forget(): this
+ forward(): this
+ front(): this
+ hasClass(name: string): boolean
+ height(): NumberAlias
+ height(height: NumberAlias): this
+ hide(): this
+ hide(): this
+ id(): string
+ id(id: string): this
+ inside(x: number, y: number): boolean
+ is(cls: any): boolean
+ linkTo(url: (link: A) => void): A
+ linkTo(url: string): A
+ masker(): Mask
+ maskWith(element: Element): this
+ maskWith(mask: Mask): this
+ matches(selector: string): boolean
+ matrix(): Matrix
+ matrix(
+ a?: number,
+ b?: number,
+ c?: number,
+ d?: number,
+ e?: number,
+ f?: number
+ ): this
+ matrix(
+ mat: MatrixAlias,
+ b?: number,
+ c?: number,
+ d?: number,
+ e?: number,
+ f?: number
+ ): this
+ matrixify(): Matrix
+ memory(): object
+ mousedown(cb: Function | null): this
+ mousemove(cb: Function | null): this
+ mouseout(cb: Function | null): this
+ mouseover(cb: Function | null): this
+ mouseup(cb: Function | null): this
+ mouseenter(cb: Function | null): this
+ mouseleave(cb: Function | null): this
+ move(x: NumberAlias, y: NumberAlias): this
+ native(): LinkedHTMLElement
+ next(): Element
+ // off(events?: string | Event[], cb?: EventListener | number): this;
+ // on(event: string, cb: Function, context?: object): this;
+ opacity(): number
+ opacity(o: number): this
+ relative(x: number, y: number): this
+ shear(lam: Matrix, cx: number, cy: number): this
+ toRoot(): Svg
+ /**
+ * By default parents will return a list of elements up until the root svg.
+ */
+ parents(): List<Element>
+ /**
+ * List the parent by hierarchy until the given parent type or matcher. If the given value is null
+ * then the result is only provided the list up until Svg root element which mean no Dom parent element is included.
+ * @param util a parent type
+ */
+ parents<T extends Dom>(util: QuerySelector | T | null): List<Element>
+ /**
+ * Get reference svg element based on the given attribute.
+ * @param attr a svg attribute
+ */
+ reference<R extends Dom>(attr: AttributeReference): R | null
+
+ point(): Point
+ point(position: CoordinateXY): Point
+ point(point: Point): Point
+ point(x: number, y: number): Point
+ position(): number
+ prev(): Element
+ rbox(element?: Element): Box
+ reference(type: string): Element
+ remember(name: string, value: any): this
+ remember(name: string): any
+ remember(obj: object): this
+ remove(): this
+ removeClass(name: string): this
+ root(): Svg
+ rotate(d: number, cx?: number, cy?: number): this
+ scale(x?: number, y?: number, cx?: number, cy?: number): this
+ screenCTM(): Matrix
+ setData(data: object): this
+ show(): this
+ show(): this
+ size(width?: NumberAlias, height?: NumberAlias): this
+ skew(x?: number, y?: number, cx?: number, cy?: number): this
+ stop(jumpToEnd: boolean, clearQueue: boolean): Animation
+ stop(
+ offset?: NumberAlias | string,
+ color?: NumberAlias,
+ opacity?: NumberAlias
+ ): Stop
+ stop(val: {
+ offset?: NumberAlias | string
+ color?: NumberAlias
+ opacity?: NumberAlias
+ }): Stop
+ stroke(): any
+ stroke(color: string): this
+ stroke(stroke: StrokeData): this
+ timeline(): Timeline
+ timeline(tl: Timeline): this
+ toggleClass(name: string): this
+ toParent(parent: Dom): this
+ toParent(parent: Dom, i: number): this
+ toSvg(): this
+ touchcancel(cb: Function | null): this
+ touchend(cb: Function | null): this
+ touchleave(cb: Function | null): this
+ touchmove(cb: Function | null): this
+ touchstart(cb: Function | null): this
+ transform(): MatrixExtract
+ transform(t: MatrixAlias, relative?: boolean): this
+ translate(x: number, y: number): this
+ unclip(): this
+ unmask(): this
+ untransform(): this
+ visible(): boolean
+ width(): NumberAlias
+ width(width: NumberAlias): this
+ x(): NumberAlias
+ x(x: NumberAlias): this
+ y(): NumberAlias
+ y(y: NumberAlias): this
+ }
+
+ // ellipse.js
+ interface CircleMethods extends Shape {
+ rx(rx: number): this
+ rx(): this
+ ry(ry: number): this
+ ry(): this
+ radius(x: number, y?: number): this
+ }
+ class Circle extends Shape implements CircleMethods {
+ constructor(node?: SVGCircleElement)
+ constructor(attr: CircleAttr)
+
+ node: SVGCircleElement
+
+ rx(rx: number): this
+ rx(): this
+ ry(ry: number): this
+ ry(): this
+ radius(x: number, y?: number): this
+ }
+ class Ellipse extends Shape implements CircleMethods {
+ node: SVGEllipseElement
+ constructor(attr: EllipseAttr)
+ constructor(node?: SVGEllipseElement)
+
+ rx(rx: number): this
+ rx(): this
+ ry(ry: number): this
+ ry(): this
+ radius(x: number, y?: number): this
+ }
+
+ interface StopProperties {
+ color?: ColorAlias
+ offset?: number | string
+ opacity?: number
+ }
+
+ // gradient.js
+ class Stop extends Element {
+ update(offset?: number, color?: ColorAlias, opacity?: number): this
+ update(opts: StopProperties): this
+ }
+ class Gradient extends Container {
+ constructor(node?: SVGGradientElement)
+ constructor(attr: object)
+ constructor(type: string)
+ node: SVGGradientElement
+
+ at(offset?: number, color?: ColorAlias, opacity?: number): Stop
+ at(opts: StopProperties): Stop
+ url(): string
+ toString(): string
+ targets(): List<Element>
+ bbox(): Box
+
+ // gradiented.js
+ from(x: number, y: number): this
+ to(x: number, y: number): this
+
+ // TODO: check with main.js
+ radius(x: number, y?: number): this
+ targets(): List<Element>
+ bbox(): Box
+ update(block?: (gradient: Gradient) => void): this
+ }
+
+ // group.js
+ class G extends Container {
+ constructor(node?: SVGGElement)
+ constructor(attr: object)
+ node: SVGGElement
+ gbox(): Box
+ }
+
+ // hyperlink.js
+ class A extends Container {
+ constructor(node?: SVGAElement)
+ constructor(attr: object)
+ node: SVGAElement
+ to(url: string): this
+ to(): string
+ target(target: string): this
+ target(): string
+ }
+
+ // ForeignObject.js
+ class ForeignObject extends Element {
+ constructor(node?: SVGForeignObjectElement, attrs?: object)
+ constructor(attrs?: object)
+ add(element: Dom, i?: number): this
+ }
+
+ // image.js
+ class Image extends Shape {
+ constructor(node?: SVGImageElement)
+ constructor(attr: object)
+ node: SVGImageElement
+ load(url?: string, callback?: (event: Event) => void): this
+ }
+
+ // line.js
+ type PointArrayAlias = number[] | ArrayXY[] | PointArray | string
+
+ class Line extends Shape {
+ constructor(attr: LineAttr)
+ constructor(node?: SVGLineElement)
+
+ node: SVGLineElement
+
+ array(): PointArray
+ plot(): PointArray
+ plot(points?: PointArrayAlias): this
+ plot(x1: number, y1: number, x2: number, y2: number): this
+ move(x: number, y: number): this
+ size(width?: number, height?: number): this
+ marker(
+ position: string,
+ width?: number,
+ height?: number,
+ block?: (marker: Marker) => void
+ ): Marker
+ marker(position: string, marker: Marker): Marker
+ }
+
+ // marker.js
+ // TODO: check register method marker
+ class Marker extends Container {
+ constructor()
+
+ node: SVGMarkerElement
+
+ ref(x: string | number, y: string | number): this
+ update(block: (marker: Marker) => void): this
+ toString(): string
+ orient(orientation: 'auto' | 'auto-start-reverse' | number | Number): this
+ orient(): string
+ }
+ // mask.js
+ class Mask extends Container {
+ constructor(node?: SVGMaskElement)
+ constructor(attr: object)
+ node: SVGMaskElement
+ remove(): this
+ targets(): List<Element>
+ }
+
+ // path.js
+ class Path extends Shape {
+ constructor(attr: PathAttr)
+ constructor(node?: SVGPathElement)
+
+ node: SVGPathElement
+
+ morphArray: PathArray
+ array(): PathArray
+ plot(): PathArray
+ plot(d: PathArrayAlias): this
+ marker(
+ position: string,
+ width?: number,
+ height?: number,
+ block?: (marker: Marker) => void
+ ): this
+ marker(position: string, marker: Marker): this
+
+ // sugar.js
+ length(): number
+ pointAt(length: number): { x: number; y: number }
+ text(text: string): TextPath
+ text(text: Text): TextPath
+ targets(): List<Element>
+ }
+
+ // pattern.js
+ class Pattern extends Container {
+ url(): string
+ url(...rest: any[]): never
+ update(block: (pattern: Pattern) => void): this
+ toString(): string
+ }
+
+ // poly.js
+ interface poly {
+ array(): PointArray
+ plot(): PointArray
+ plot(p: PointArrayAlias): this
+ clear(): this
+ move(x: number, y: number): this
+ size(width: number, height?: number): this
+ }
+
+ // pointed.js
+ interface pointed {
+ x(): number
+ x(x: number): this
+ y(): number
+ y(y: number): this
+ height(): number
+ height(h: number): this
+ width(): number
+ width(w: number): this
+ }
+
+ class Polyline extends Shape implements poly, pointed {
+ constructor(node?: SVGPolylineElement)
+ constructor(attr: PolyAttr)
+
+ node: SVGPolylineElement
+
+ array(): PointArray
+ plot(): PointArray
+ plot(p: PointArrayAlias): this
+ x(): number
+ x(x: number): this
+ y(): number
+ y(y: number): this
+ height(): number
+ height(h: number): this
+ width(): number
+ width(w: number): this
+ move(x: number, y: number): this
+ size(width: number, height?: number): this
+ marker(
+ position: string,
+ width?: number,
+ height?: number,
+ block?: (marker: Marker) => void
+ ): Marker
+ marker(position: string, marker: Marker): Marker
+ }
+
+ class Polygon extends Shape implements poly, pointed {
+ constructor(node?: SVGPolygonElement)
+ constructor(attr: PolyAttr)
+
+ node: SVGPolygonElement
+ array(): PointArray
+ plot(): PointArray
+ plot(p: PointArrayAlias): this
+ x(): number
+ x(x: number): this
+ y(): number
+ y(y: number): this
+ height(): number
+ height(h: number): this
+ width(): number
+ width(w: number): this
+ move(x: number, y: number): this
+ size(width: number, height?: number): this
+ marker(
+ position: string,
+ width?: number,
+ height?: number,
+ block?: (marker: Marker) => void
+ ): Marker
+ marker(position: string, marker: Marker): Marker
+ }
+
+ class Rect extends Shape {
+ constructor(node?: SVGRectElement)
+ constructor(attr: RectAttr)
+ node: SVGRectElement
+ radius(x: number, y?: number): this
+ }
+
+ // shape.js
+ class Shape extends Element {}
+
+ // sugar.js
+ interface StrokeData {
+ color?: string
+ width?: number
+ opacity?: number
+ linecap?: string
+ linejoin?: string
+ miterlimit?: number
+ dasharray?: string
+ dashoffset?: number
+ }
+
+ interface FillData {
+ color?: string
+ opacity?: number
+ rule?: string
+ }
+
+ interface FontData {
+ family?: string
+ size?: NumberAlias
+ anchor?: string
+ leading?: NumberAlias
+ weight?: string
+ style?: string
+ }
+ // textable.js
+ interface Textable {
+ plain(text: string): this
+ length(): number
+ }
+
+ // text.js
+ class Text extends Shape implements Textable {
+ constructor(node?: SVGElement)
+ constructor(attr: TextAttr)
+
+ clone(): this
+ text(): string
+ text(text: string): this
+ text(block: (text: this) => void): this
+ leading(): Number
+ leading(leading: NumberAlias): this
+ rebuild(enabled: boolean): this
+ build(enabled: boolean): this
+ clear(): this
+ plain(text: string): this
+ length(): number
+ get(i: number): Tspan
+ path(): TextPath
+ path(d: PathArrayAlias | Path): TextPath
+ track(): Element
+ ax(): string
+ ax(x: string): this
+ ay(): string
+ ay(y: string): this
+ amove(x: number, y: number): this
+ textPath(): TextPath
+
+ // main.js, from extend/copy prototypes from Tspan
+ tspan(text: string): Tspan
+ tspan(block: (tspan: Tspan) => void): this
+ }
+
+ class Tspan extends Text implements Textable {
+ constructor(node?: SVGElement)
+ constructor(attr: TextAttr)
+ dx(): number
+ dx(x: NumberAlias): this
+ dy(): number
+ dy(y: NumberAlias): this
+ newLine(): this
+ tspan(text: string): Tspan
+ tspan(block: (tspan: Tspan) => void): this
+ length(): number
+ text(): string
+ text(text: string): this
+ text(block: (text: this) => void): this
+ plain(text: string): this
+ }
+
+ // textpath.js
+ class TextPath extends Text {
+ constructor()
+ constructor(attr: TextPathAttr)
+
+ array(): Array<any>
+ plot(): PathArray
+ plot(d: string): this
+ track(): Path
+ }
+
+ // style.js
+ class Style extends Element {
+ constructor(node: SVGElement, attr?: StylingAttr)
+ addText(text: string): this
+ font(a: object): this
+ font(a: string, v: string | number): this
+ font(a: string): string
+ rule(selector: string, obj: any): this
+ }
+
+ // use.js
+ class Use extends Shape {
+ use(element: string, file?: string): this
+ }
+
+ // viewbox.js
+ type ViewBoxAlias = ViewBoxLike | number[] | string | Element
+
+ interface ViewBox {
+ x: number
+ y: number
+ width: number
+ height: number
+ toString(): string
+ at(pos: number): ViewBox
+ }
+}