diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..d6707ca0 --- /dev/null +++ b/lerna.json @@ -0,0 +1,6 @@ +{ + "packages": [ + "packages/*" + ], + "version": "0.0.0" +} diff --git a/package-lock.json b/package-lock.json index 618eb0bd..261a9fea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ }, "devDependencies": { "@tonaljs/tonal": "^4.6.5", + "lerna": "^4.0.0", "mocha": "^9.1.4", "ramda": "^0.28.0", "snowpack": "^3.8.8" @@ -146,12 +147,1186 @@ "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", "dev": true }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "node_modules/@lerna/add": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz", + "integrity": "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==", + "dev": true, + "dependencies": { + "@lerna/bootstrap": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "npm-package-arg": "^8.1.0", + "p-map": "^4.0.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/bootstrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz", + "integrity": "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/has-npm-version": "4.0.0", + "@lerna/npm-install": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "read-package-tree": "^5.3.1", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/changed": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz", + "integrity": "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==", + "dev": true, + "dependencies": { + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/check-working-tree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz", + "integrity": "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==", + "dev": true, + "dependencies": { + "@lerna/collect-uncommitted": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/validation-error": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/child-process": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz", + "integrity": "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/clean": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz", + "integrity": "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/cli": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz", + "integrity": "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==", + "dev": true, + "dependencies": { + "@lerna/global-options": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^16.2.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/collect-uncommitted": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz", + "integrity": "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "chalk": "^4.1.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/collect-updates": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz", + "integrity": "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/command": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz", + "integrity": "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/project": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/write-log-file": "4.0.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/conventional-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz", + "integrity": "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==", + "dev": true, + "dependencies": { + "@lerna/validation-error": "4.0.0", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-core": "^4.2.2", + "conventional-recommended-bump": "^6.1.0", + "fs-extra": "^9.1.0", + "get-stream": "^6.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/conventional-commits/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/create": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz", + "integrity": "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "init-package-json": "^2.0.2", + "npm-package-arg": "^8.1.0", + "p-reduce": "^2.1.0", + "pacote": "^11.2.6", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^8.4.0", + "yargs-parser": "20.2.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/create-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz", + "integrity": "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==", + "dev": true, + "dependencies": { + "cmd-shim": "^4.1.0", + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/create/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/describe-ref": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz", + "integrity": "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz", + "integrity": "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/exec": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz", + "integrity": "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/filter-options": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz", + "integrity": "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==", + "dev": true, + "dependencies": { + "@lerna/collect-updates": "4.0.0", + "@lerna/filter-packages": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/filter-packages": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz", + "integrity": "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==", + "dev": true, + "dependencies": { + "@lerna/validation-error": "4.0.0", + "multimatch": "^5.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/get-npm-exec-opts": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz", + "integrity": "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/get-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz", + "integrity": "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/github-client": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz", + "integrity": "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^18.1.0", + "git-url-parse": "^11.4.4", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/gitlab-client": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz", + "integrity": "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "npmlog": "^4.1.2", + "whatwg-url": "^8.4.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/global-options": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz", + "integrity": "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==", + "dev": true, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/has-npm-version": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz", + "integrity": "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz", + "integrity": "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz", + "integrity": "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/output": "4.0.0", + "envinfo": "^7.7.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/init": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz", + "integrity": "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz", + "integrity": "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "p-map": "^4.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/list": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz", + "integrity": "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/listable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz", + "integrity": "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==", + "dev": true, + "dependencies": { + "@lerna/query-graph": "4.0.0", + "chalk": "^4.1.0", + "columnify": "^1.5.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/log-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz", + "integrity": "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==", + "dev": true, + "dependencies": { + "byte-size": "^7.0.0", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-conf": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz", + "integrity": "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-conf/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/npm-dist-tag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz", + "integrity": "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==", + "dev": true, + "dependencies": { + "@lerna/otplease": "4.0.0", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "dependencies": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/npm-dist-tag/node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@lerna/npm-install": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz", + "integrity": "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "fs-extra": "^9.1.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-publish": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz", + "integrity": "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==", + "dev": true, + "dependencies": { + "@lerna/otplease": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmpublish": "^4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "read-package-json": "^3.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/npm-publish/node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@lerna/npm-run-script": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz", + "integrity": "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/otplease": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz", + "integrity": "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==", + "dev": true, + "dependencies": { + "@lerna/prompt": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/output": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz", + "integrity": "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/pack-directory": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz", + "integrity": "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==", + "dev": true, + "dependencies": { + "@lerna/get-packed": "4.0.0", + "@lerna/package": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "npm-packlist": "^2.1.4", + "npmlog": "^4.1.2", + "tar": "^6.1.0", + "temp-write": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/package": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz", + "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", + "dev": true, + "dependencies": { + "load-json-file": "^6.2.0", + "npm-package-arg": "^8.1.0", + "write-pkg": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/package-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz", + "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", + "dev": true, + "dependencies": { + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/prerelease-id-from-version": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz", + "integrity": "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==", + "dev": true, + "dependencies": { + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/profiler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz", + "integrity": "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "upath": "^2.0.1" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/project": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz", + "integrity": "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==", + "dev": true, + "dependencies": { + "@lerna/package": "4.0.0", + "@lerna/validation-error": "4.0.0", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "load-json-file": "^6.2.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "resolve-from": "^5.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/prompt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz", + "integrity": "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==", + "dev": true, + "dependencies": { + "inquirer": "^7.3.3", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/publish": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz", + "integrity": "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/log-packed": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/npm-dist-tag": "4.0.0", + "@lerna/npm-publish": "4.0.0", + "@lerna/otplease": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/pack-directory": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/version": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmaccess": "^4.0.1", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/publish/node_modules/make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@lerna/publish/node_modules/npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "dependencies": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@lerna/publish/node_modules/socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@lerna/pulse-till-done": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz", + "integrity": "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/query-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz", + "integrity": "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==", + "dev": true, + "dependencies": { + "@lerna/package-graph": "4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/resolve-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz", + "integrity": "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^2.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/rimraf-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz", + "integrity": "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==", + "dev": true, + "dependencies": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/run": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz", + "integrity": "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==", + "dev": true, + "dependencies": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-run-script": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/timer": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/run-lifecycle": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz", + "integrity": "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==", + "dev": true, + "dependencies": { + "@lerna/npm-conf": "4.0.0", + "npm-lifecycle": "^3.1.5", + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/run-topologically": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz", + "integrity": "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==", + "dev": true, + "dependencies": { + "@lerna/query-graph": "4.0.0", + "p-queue": "^6.6.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/symlink-binary": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz", + "integrity": "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==", + "dev": true, + "dependencies": { + "@lerna/create-symlink": "4.0.0", + "@lerna/package": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/symlink-dependencies": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz", + "integrity": "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==", + "dev": true, + "dependencies": { + "@lerna/create-symlink": "4.0.0", + "@lerna/resolve-symlink": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/timer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz", + "integrity": "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==", + "dev": true, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/validation-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz", + "integrity": "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/version": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz", + "integrity": "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/conventional-commits": "4.0.0", + "@lerna/github-client": "4.0.0", + "@lerna/gitlab-client": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "chalk": "^4.1.0", + "dedent": "^0.7.0", + "load-json-file": "^6.2.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4", + "slash": "^3.0.0", + "temp-write": "^4.0.0", + "write-json-file": "^4.3.0" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/@lerna/write-log-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz", + "integrity": "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==", + "dev": true, + "dependencies": { + "npmlog": "^4.1.2", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">= 10.18.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/arborist": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", @@ -198,6 +1373,12 @@ "node": ">= 10" } }, + "node_modules/@npmcli/ci-detect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", + "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", + "dev": true + }, "node_modules/@npmcli/fs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", @@ -324,6 +1505,144 @@ "read-package-json-fast": "^2.0.1" } }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "node_modules/@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "dependencies": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^11.2.0" + } + }, "node_modules/@rollup/plugin-commonjs": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", @@ -713,12 +2032,30 @@ "@types/node": "*" } }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, "node_modules/@types/node": { "version": "17.0.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==", "dev": true }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -755,6 +2092,12 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, "node_modules/address": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", @@ -828,6 +2171,21 @@ "node": ">=6" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -887,6 +2245,39 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -927,6 +2318,15 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/automation-events": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.13.tgz", @@ -969,6 +2369,12 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -1047,6 +2453,12 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/bufferutil": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", @@ -1078,6 +2490,24 @@ "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, + "node_modules/byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -1158,6 +2588,19 @@ "node": ">=6" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1179,6 +2622,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys/node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1213,6 +2691,12 @@ "node": ">=8" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "node_modules/cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", @@ -1286,6 +2770,12 @@ "node": ">=10" } }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "node_modules/cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -1301,6 +2791,18 @@ "node": ">=6" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cli-spinners": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", @@ -1313,6 +2815,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -1347,6 +2858,41 @@ "node": ">=8" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -1395,6 +2941,19 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1419,6 +2978,28 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/compare-func/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -1437,12 +3018,185 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "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=", "dev": true }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -1519,6 +3273,15 @@ "node": ">=4" } }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1531,6 +3294,15 @@ "node": ">=0.10" } }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -1575,6 +3347,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -1602,6 +3414,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "node_modules/deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -1625,6 +3443,15 @@ "node": ">=4" } }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -1643,6 +3470,18 @@ "node": ">=8" } }, + "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==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1667,6 +3506,21 @@ "node": ">= 0.6" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-port": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", @@ -1718,6 +3572,18 @@ "node": ">=0.3.1" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dom-serializer": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", @@ -1773,6 +3639,27 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1826,6 +3713,18 @@ "node": ">=6" } }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", @@ -1841,12 +3740,63 @@ "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "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", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-module-lexer": { "version": "0.3.26", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", "dev": true }, + "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, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.9.7", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", @@ -1962,6 +3912,32 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -1977,18 +3953,67 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fdir": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-5.2.0.tgz", "integrity": "sha512-skyI2Laxtj9GYzmktPgY6DT8uswXq+VoxH26SskykvEhTSbi7tRM/787uZt/p8maxrQCJdzC90zX1btbxiJ6lw==", "dev": true }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2001,6 +4026,15 @@ "node": ">=8" } }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -2078,6 +4112,21 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -2171,6 +4220,60 @@ "node": "6.* || 8.* || >= 10.*" } }, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -2183,6 +4286,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -2192,6 +4311,91 @@ "assert-plus": "^1.0.0" } }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-up": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", + "dev": true, + "dependencies": { + "is-ssh": "^1.3.0", + "parse-url": "^6.0.0" + } + }, + "node_modules/git-url-parse": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz", + "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==", + "dev": true, + "dependencies": { + "git-up": "^4.0.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -2224,6 +4428,26 @@ "node": ">= 6" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/got": { "version": "11.8.3", "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", @@ -2264,6 +4488,36 @@ "node": ">=4.x" } }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -2287,6 +4541,15 @@ "node": ">=6" } }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2299,6 +4562,15 @@ "node": ">= 0.4.0" } }, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2308,6 +4580,33 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -2473,6 +4772,15 @@ "postcss": "^8.1.0" } }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/ignore-walk": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", @@ -2507,6 +4815,25 @@ "node": ">=4" } }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2547,6 +4874,106 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/init-package-json": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", + "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", + "dev": true, + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/init-package-json/node_modules/read-package-json": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "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/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -2559,6 +4986,18 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "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, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2571,6 +5010,46 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/is-core-module": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", @@ -2583,6 +5062,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -2643,6 +5137,18 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2652,6 +5158,30 @@ "node": ">=0.12.0" } }, + "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==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -2679,6 +5209,40 @@ "@types/estree": "*" } }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ssh": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz", + "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", + "dev": true, + "dependencies": { + "protocols": "^1.1.0" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -2691,6 +5255,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2718,6 +5324,18 @@ "assert": "^1.4.1" } }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -2754,6 +5372,15 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -2789,6 +5416,12 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "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", @@ -2822,6 +5455,18 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2840,6 +5485,22 @@ "node": "*" } }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -2876,6 +5537,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", @@ -2885,12 +5555,105 @@ "node": ">=6" } }, + "node_modules/lerna": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz", + "integrity": "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==", + "dev": true, + "dependencies": { + "@lerna/add": "4.0.0", + "@lerna/bootstrap": "4.0.0", + "@lerna/changed": "4.0.0", + "@lerna/clean": "4.0.0", + "@lerna/cli": "4.0.0", + "@lerna/create": "4.0.0", + "@lerna/diff": "4.0.0", + "@lerna/exec": "4.0.0", + "@lerna/import": "4.0.0", + "@lerna/info": "4.0.0", + "@lerna/init": "4.0.0", + "@lerna/link": "4.0.0", + "@lerna/list": "4.0.0", + "@lerna/publish": "4.0.0", + "@lerna/run": "4.0.0", + "@lerna/version": "4.0.0", + "import-local": "^3.0.2", + "npmlog": "^4.1.2" + }, + "bin": { + "lerna": "cli.js" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/libnpmaccess": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz", + "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "dev": true, + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/libnpmaccess/node_modules/aproba": { + "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/libnpmpublish": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz", + "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", + "dev": true, + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, "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/load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/loader-utils": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", @@ -2915,12 +5678,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -3029,12 +5829,199 @@ "node": ">= 10" } }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/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/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/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/meow/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/meow/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/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/meriyah": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-3.1.6.tgz", @@ -3044,6 +6031,19 @@ "node": ">=10.4.0" } }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", @@ -3083,6 +6083,15 @@ "node": ">=4" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -3095,6 +6104,35 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", @@ -3264,12 +6302,55 @@ "url": "https://opencollective.com/mochajs" } }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "node_modules/nanoid": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", @@ -3291,6 +6372,54 @@ "node": ">= 0.6" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "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-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-gyp": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", @@ -3341,6 +6470,21 @@ "node": ">=6" } }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3383,6 +6527,172 @@ "node": ">=10" } }, + "node_modules/npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "dependencies": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "node_modules/npm-lifecycle/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/npm-lifecycle/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/npm-lifecycle/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/npm-lifecycle/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/npm-lifecycle/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/npm-lifecycle/node_modules/node-gyp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz", + "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm-lifecycle/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/npm-lifecycle/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-lifecycle/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/npm-lifecycle/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-lifecycle/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/npm-lifecycle/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-lifecycle/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/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", @@ -3512,6 +6822,59 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3562,6 +6925,25 @@ "node": ">=0.10.0" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -3625,6 +7007,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", @@ -3641,6 +7044,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -3662,6 +7074,21 @@ "node": ">=6" } }, + "node_modules/p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "dependencies": { + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pacote": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", @@ -3736,6 +7163,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dev": true, + "dependencies": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + } + }, + "node_modules/parse-path/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/parse-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz", + "integrity": "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==", + "dev": true, + "dependencies": { + "is-ssh": "^1.3.0", + "normalize-url": "^6.1.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + } + }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -4064,6 +7530,27 @@ "node": ">=10" } }, + "node_modules/promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "dev": true, + "dependencies": { + "read": "1" + } + }, + "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=", + "dev": true + }, + "node_modules/protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -4089,6 +7576,16 @@ "node": ">=6" } }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", @@ -4098,6 +7595,44 @@ "node": ">=0.6" } }, + "node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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", @@ -4154,12 +7689,39 @@ "react": "17.0.2" } }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/read-cmd-shim": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", "dev": true }, + "node_modules/read-package-json": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", + "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, "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", @@ -4173,6 +7735,236 @@ "node": ">=10" } }, + "node_modules/read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "deprecated": "The functionality that this package provided is now in @npmcli/arborist", + "dev": true, + "dependencies": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "node_modules/read-package-tree/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-package-tree/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-package-tree/node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "node_modules/read-package-tree/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/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==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/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=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -4218,6 +8010,19 @@ "node": ">=8.10.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -4287,6 +8092,18 @@ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -4305,6 +8122,19 @@ "lowercase-keys": "^2.0.0" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -4314,6 +8144,16 @@ "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/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -4368,6 +8208,56 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4433,6 +8323,18 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4454,6 +8356,20 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", @@ -4492,6 +8408,15 @@ "node": ">=8" } }, + "node_modules/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4599,6 +8524,21 @@ "node": ">= 10" } }, + "node_modules/sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -4623,6 +8563,82 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "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.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -4670,6 +8686,15 @@ "tslib": "^2.3.1" } }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -4726,6 +8751,32 @@ "node": ">=0.10.0" } }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4738,6 +8789,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", @@ -4756,6 +8816,18 @@ "node": ">=6" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4768,6 +8840,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -4812,6 +8901,81 @@ "node": ">= 10" } }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/temp-write": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz", + "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4846,12 +9010,33 @@ "node": ">=0.8" } }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/treeverse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", "dev": true }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -4875,6 +9060,24 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -4884,6 +9087,49 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/uglify-js": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/umask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -4902,6 +9148,21 @@ "imurmurhash": "^0.1.4" } }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/untildify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", @@ -4914,6 +9175,16 @@ "node": ">=0.10.0" } }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4951,6 +9222,15 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "node_modules/util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, "node_modules/util/node_modules/inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", @@ -4967,6 +9247,16 @@ "uuid": "bin/uuid" } }, + "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", @@ -5014,6 +9304,38 @@ "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", "dev": true }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5029,6 +9351,22 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "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", @@ -5038,6 +9376,12 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "node_modules/workerpool": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", @@ -5102,6 +9446,138 @@ "typedarray-to-buffer": "^3.1.5" } }, + "node_modules/write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "dependencies": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "dependencies": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/write-pkg/node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/write-pkg/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/write-pkg/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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-pkg/node_modules/type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/write-pkg/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-pkg/node_modules/write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "dependencies": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/ws": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", @@ -5123,6 +9599,15 @@ } } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -5324,12 +9809,967 @@ "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", "dev": true }, + "@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true + }, "@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "@lerna/add": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz", + "integrity": "sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==", + "dev": true, + "requires": { + "@lerna/bootstrap": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "npm-package-arg": "^8.1.0", + "p-map": "^4.0.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + } + }, + "@lerna/bootstrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz", + "integrity": "sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/has-npm-version": "4.0.0", + "@lerna/npm-install": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "get-port": "^5.1.1", + "multimatch": "^5.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1", + "read-package-tree": "^5.3.1", + "semver": "^7.3.4" + } + }, + "@lerna/changed": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz", + "integrity": "sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==", + "dev": true, + "requires": { + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + } + }, + "@lerna/check-working-tree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz", + "integrity": "sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==", + "dev": true, + "requires": { + "@lerna/collect-uncommitted": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/validation-error": "4.0.0" + } + }, + "@lerna/child-process": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz", + "integrity": "sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "execa": "^5.0.0", + "strong-log-transformer": "^2.1.0" + } + }, + "@lerna/clean": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz", + "integrity": "sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/rimraf-dir": "4.0.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0", + "p-waterfall": "^2.1.1" + } + }, + "@lerna/cli": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz", + "integrity": "sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==", + "dev": true, + "requires": { + "@lerna/global-options": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^16.2.0" + } + }, + "@lerna/collect-uncommitted": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz", + "integrity": "sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "chalk": "^4.1.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/collect-updates": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz", + "integrity": "sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^3.0.0" + } + }, + "@lerna/command": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz", + "integrity": "sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/project": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/write-log-file": "4.0.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^5.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/conventional-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz", + "integrity": "sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==", + "dev": true, + "requires": { + "@lerna/validation-error": "4.0.0", + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-core": "^4.2.2", + "conventional-recommended-bump": "^6.1.0", + "fs-extra": "^9.1.0", + "get-stream": "^6.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "@lerna/create": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz", + "integrity": "sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "init-package-json": "^2.0.2", + "npm-package-arg": "^8.1.0", + "p-reduce": "^2.1.0", + "pacote": "^11.2.6", + "pify": "^5.0.0", + "semver": "^7.3.4", + "slash": "^3.0.0", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^8.4.0", + "yargs-parser": "20.2.4" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "@lerna/create-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz", + "integrity": "sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==", + "dev": true, + "requires": { + "cmd-shim": "^4.1.0", + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/describe-ref": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz", + "integrity": "sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz", + "integrity": "sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/exec": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz", + "integrity": "sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + } + }, + "@lerna/filter-options": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz", + "integrity": "sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==", + "dev": true, + "requires": { + "@lerna/collect-updates": "4.0.0", + "@lerna/filter-packages": "4.0.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/filter-packages": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz", + "integrity": "sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==", + "dev": true, + "requires": { + "@lerna/validation-error": "4.0.0", + "multimatch": "^5.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/get-npm-exec-opts": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz", + "integrity": "sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/get-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz", + "integrity": "sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "@lerna/github-client": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz", + "integrity": "sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^18.1.0", + "git-url-parse": "^11.4.4", + "npmlog": "^4.1.2" + } + }, + "@lerna/gitlab-client": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz", + "integrity": "sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "npmlog": "^4.1.2", + "whatwg-url": "^8.4.0" + } + }, + "@lerna/global-options": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz", + "integrity": "sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==", + "dev": true + }, + "@lerna/has-npm-version": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz", + "integrity": "sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "semver": "^7.3.4" + } + }, + "@lerna/import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz", + "integrity": "sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/validation-error": "4.0.0", + "dedent": "^0.7.0", + "fs-extra": "^9.1.0", + "p-map-series": "^2.1.0" + } + }, + "@lerna/info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz", + "integrity": "sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/output": "4.0.0", + "envinfo": "^7.7.4" + } + }, + "@lerna/init": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz", + "integrity": "sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/command": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "write-json-file": "^4.3.0" + } + }, + "@lerna/link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz", + "integrity": "sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/package-graph": "4.0.0", + "@lerna/symlink-dependencies": "4.0.0", + "p-map": "^4.0.0", + "slash": "^3.0.0" + } + }, + "@lerna/list": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz", + "integrity": "sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/listable": "4.0.0", + "@lerna/output": "4.0.0" + } + }, + "@lerna/listable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz", + "integrity": "sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==", + "dev": true, + "requires": { + "@lerna/query-graph": "4.0.0", + "chalk": "^4.1.0", + "columnify": "^1.5.4" + } + }, + "@lerna/log-packed": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz", + "integrity": "sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==", + "dev": true, + "requires": { + "byte-size": "^7.0.0", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + } + }, + "@lerna/npm-conf": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz", + "integrity": "sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "pify": "^5.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "@lerna/npm-dist-tag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz", + "integrity": "sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==", + "dev": true, + "requires": { + "@lerna/otplease": "4.0.0", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + } + }, + "npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + } + } + } + }, + "@lerna/npm-install": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz", + "integrity": "sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "fs-extra": "^9.1.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.3", + "write-pkg": "^4.0.0" + } + }, + "@lerna/npm-publish": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz", + "integrity": "sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==", + "dev": true, + "requires": { + "@lerna/otplease": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmpublish": "^4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "pify": "^5.0.0", + "read-package-json": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "@lerna/npm-run-script": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz", + "integrity": "sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "@lerna/get-npm-exec-opts": "4.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/otplease": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz", + "integrity": "sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==", + "dev": true, + "requires": { + "@lerna/prompt": "4.0.0" + } + }, + "@lerna/output": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz", + "integrity": "sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/pack-directory": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz", + "integrity": "sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==", + "dev": true, + "requires": { + "@lerna/get-packed": "4.0.0", + "@lerna/package": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "npm-packlist": "^2.1.4", + "npmlog": "^4.1.2", + "tar": "^6.1.0", + "temp-write": "^4.0.0" + } + }, + "@lerna/package": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz", + "integrity": "sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==", + "dev": true, + "requires": { + "load-json-file": "^6.2.0", + "npm-package-arg": "^8.1.0", + "write-pkg": "^4.0.0" + } + }, + "@lerna/package-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz", + "integrity": "sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==", + "dev": true, + "requires": { + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/validation-error": "4.0.0", + "npm-package-arg": "^8.1.0", + "npmlog": "^4.1.2", + "semver": "^7.3.4" + } + }, + "@lerna/prerelease-id-from-version": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz", + "integrity": "sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==", + "dev": true, + "requires": { + "semver": "^7.3.4" + } + }, + "@lerna/profiler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz", + "integrity": "sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "upath": "^2.0.1" + } + }, + "@lerna/project": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz", + "integrity": "sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==", + "dev": true, + "requires": { + "@lerna/package": "4.0.0", + "@lerna/validation-error": "4.0.0", + "cosmiconfig": "^7.0.0", + "dedent": "^0.7.0", + "dot-prop": "^6.0.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.2", + "load-json-file": "^6.2.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "resolve-from": "^5.0.0", + "write-json-file": "^4.3.0" + } + }, + "@lerna/prompt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz", + "integrity": "sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==", + "dev": true, + "requires": { + "inquirer": "^7.3.3", + "npmlog": "^4.1.2" + } + }, + "@lerna/publish": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz", + "integrity": "sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/describe-ref": "4.0.0", + "@lerna/log-packed": "4.0.0", + "@lerna/npm-conf": "4.0.0", + "@lerna/npm-dist-tag": "4.0.0", + "@lerna/npm-publish": "4.0.0", + "@lerna/otplease": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/pack-directory": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/pulse-till-done": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "@lerna/version": "4.0.0", + "fs-extra": "^9.1.0", + "libnpmaccess": "^4.0.1", + "npm-package-arg": "^8.1.0", + "npm-registry-fetch": "^9.0.0", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "pacote": "^11.2.6", + "semver": "^7.3.4" + }, + "dependencies": { + "make-fetch-happen": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" + } + }, + "npm-registry-fetch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "socks-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", + "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "4", + "socks": "^2.3.3" + } + } + } + }, + "@lerna/pulse-till-done": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz", + "integrity": "sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/query-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz", + "integrity": "sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==", + "dev": true, + "requires": { + "@lerna/package-graph": "4.0.0" + } + }, + "@lerna/resolve-symlink": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz", + "integrity": "sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==", + "dev": true, + "requires": { + "fs-extra": "^9.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^2.0.0" + } + }, + "@lerna/rimraf-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz", + "integrity": "sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==", + "dev": true, + "requires": { + "@lerna/child-process": "4.0.0", + "npmlog": "^4.1.2", + "path-exists": "^4.0.0", + "rimraf": "^3.0.2" + } + }, + "@lerna/run": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz", + "integrity": "sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==", + "dev": true, + "requires": { + "@lerna/command": "4.0.0", + "@lerna/filter-options": "4.0.0", + "@lerna/npm-run-script": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/profiler": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/timer": "4.0.0", + "@lerna/validation-error": "4.0.0", + "p-map": "^4.0.0" + } + }, + "@lerna/run-lifecycle": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz", + "integrity": "sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==", + "dev": true, + "requires": { + "@lerna/npm-conf": "4.0.0", + "npm-lifecycle": "^3.1.5", + "npmlog": "^4.1.2" + } + }, + "@lerna/run-topologically": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz", + "integrity": "sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==", + "dev": true, + "requires": { + "@lerna/query-graph": "4.0.0", + "p-queue": "^6.6.2" + } + }, + "@lerna/symlink-binary": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz", + "integrity": "sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==", + "dev": true, + "requires": { + "@lerna/create-symlink": "4.0.0", + "@lerna/package": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0" + } + }, + "@lerna/symlink-dependencies": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz", + "integrity": "sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==", + "dev": true, + "requires": { + "@lerna/create-symlink": "4.0.0", + "@lerna/resolve-symlink": "4.0.0", + "@lerna/symlink-binary": "4.0.0", + "fs-extra": "^9.1.0", + "p-map": "^4.0.0", + "p-map-series": "^2.1.0" + } + }, + "@lerna/timer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz", + "integrity": "sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==", + "dev": true + }, + "@lerna/validation-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz", + "integrity": "sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/version": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz", + "integrity": "sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "4.0.0", + "@lerna/child-process": "4.0.0", + "@lerna/collect-updates": "4.0.0", + "@lerna/command": "4.0.0", + "@lerna/conventional-commits": "4.0.0", + "@lerna/github-client": "4.0.0", + "@lerna/gitlab-client": "4.0.0", + "@lerna/output": "4.0.0", + "@lerna/prerelease-id-from-version": "4.0.0", + "@lerna/prompt": "4.0.0", + "@lerna/run-lifecycle": "4.0.0", + "@lerna/run-topologically": "4.0.0", + "@lerna/validation-error": "4.0.0", + "chalk": "^4.1.0", + "dedent": "^0.7.0", + "load-json-file": "^6.2.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^4.0.0", + "p-pipe": "^3.1.0", + "p-reduce": "^2.1.0", + "p-waterfall": "^2.1.1", + "semver": "^7.3.4", + "slash": "^3.0.0", + "temp-write": "^4.0.0", + "write-json-file": "^4.3.0" + } + }, + "@lerna/write-log-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz", + "integrity": "sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2", + "write-file-atomic": "^3.0.3" + } + }, + "@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, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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 + }, + "@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, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@npmcli/arborist": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", @@ -5370,6 +10810,12 @@ "walk-up-path": "^1.0.0" } }, + "@npmcli/ci-detect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", + "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", + "dev": true + }, "@npmcli/fs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", @@ -5481,6 +10927,136 @@ "read-package-json-fast": "^2.0.1" } }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, "@rollup/plugin-commonjs": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", @@ -5833,12 +11409,30 @@ "@types/node": "*" } }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, "@types/node": { "version": "17.0.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==", "dev": true }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -5875,6 +11469,12 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, "address": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", @@ -5929,6 +11529,15 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -5976,6 +11585,30 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -6013,6 +11646,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "automation-events": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.13.tgz", @@ -6049,6 +11688,12 @@ "tweetnacl": "^0.14.3" } }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -6115,6 +11760,12 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "bufferutil": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", @@ -6136,6 +11787,18 @@ "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true + }, + "byte-size": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", + "dev": true + }, "cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -6200,6 +11863,16 @@ "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -6212,6 +11885,31 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + } + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -6239,6 +11937,12 @@ } } }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", @@ -6289,6 +11993,12 @@ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -6301,12 +12011,27 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, "cli-spinners": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -6337,6 +12062,34 @@ } } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -6376,6 +12129,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -6397,6 +12160,27 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + }, + "dependencies": { + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + } + } + }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -6412,12 +12196,150 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "requires": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "requires": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + } + }, "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -6473,6 +12395,12 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -6482,6 +12410,12 @@ "assert-plus": "^1.0.0" } }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -6511,6 +12445,36 @@ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -6528,6 +12492,12 @@ } } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -6545,6 +12515,15 @@ "untildify": "^2.0.0" } }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, "defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -6557,6 +12536,15 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6575,6 +12563,18 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, "detect-port": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", @@ -6618,6 +12618,15 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "dom-serializer": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", @@ -6655,6 +12664,21 @@ "domhandler": "^4.2.0" } }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6702,6 +12726,12 @@ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, "err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", @@ -6717,12 +12747,51 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "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", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "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" + } + }, "es-module-lexer": { "version": "0.3.26", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", "dev": true }, + "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, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "esbuild": { "version": "0.9.7", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", @@ -6818,6 +12887,28 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -6830,18 +12921,57 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fdir": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-5.2.0.tgz", "integrity": "sha512-skyI2Laxtj9GYzmktPgY6DT8uswXq+VoxH26SskykvEhTSbi7tRM/787uZt/p8maxrQCJdzC90zX1btbxiJ6lw==", "dev": true }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -6851,6 +12981,12 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "dev": true + }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -6900,6 +13036,18 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==" }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -6976,12 +13124,63 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "requires": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -6991,6 +13190,75 @@ "assert-plus": "^1.0.0" } }, + "git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + } + }, + "git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "requires": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "git-up": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^6.0.0" + } + }, + "git-url-parse": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz", + "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==", + "dev": true, + "requires": { + "git-up": "^4.0.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -7014,6 +13282,20 @@ "is-glob": "^4.0.1" } }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, "got": { "version": "11.8.3", "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", @@ -7045,6 +13327,27 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -7061,6 +13364,12 @@ "har-schema": "^2.0.0" } }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -7070,12 +13379,33 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -7201,6 +13531,12 @@ "dev": true, "requires": {} }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, "ignore-walk": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", @@ -7228,6 +13564,16 @@ } } }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -7262,6 +13608,92 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "init-package-json": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", + "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", + "dev": true, + "requires": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "read-package-json": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", + "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + } + } + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -7274,6 +13706,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -7283,6 +13724,31 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-core-module": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", @@ -7292,6 +13758,15 @@ "has": "^1.0.3" } }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -7334,12 +13809,33 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "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==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -7361,12 +13857,64 @@ "@types/estree": "*" } }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "is-ssh": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz", + "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", + "dev": true, + "requires": { + "protocols": "^1.1.0" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -7388,6 +13936,15 @@ "assert": "^1.4.1" } }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -7415,6 +13972,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -7447,6 +14010,12 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "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", @@ -7477,6 +14046,16 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -7489,6 +14068,16 @@ "integrity": "sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ==", "dev": true }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -7522,18 +14111,103 @@ "json-buffer": "3.0.1" } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", "dev": true }, + "lerna": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz", + "integrity": "sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==", + "dev": true, + "requires": { + "@lerna/add": "4.0.0", + "@lerna/bootstrap": "4.0.0", + "@lerna/changed": "4.0.0", + "@lerna/clean": "4.0.0", + "@lerna/cli": "4.0.0", + "@lerna/create": "4.0.0", + "@lerna/diff": "4.0.0", + "@lerna/exec": "4.0.0", + "@lerna/import": "4.0.0", + "@lerna/info": "4.0.0", + "@lerna/init": "4.0.0", + "@lerna/link": "4.0.0", + "@lerna/list": "4.0.0", + "@lerna/publish": "4.0.0", + "@lerna/run": "4.0.0", + "@lerna/version": "4.0.0", + "import-local": "^3.0.2", + "npmlog": "^4.1.2" + } + }, + "libnpmaccess": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz", + "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "dev": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "dependencies": { + "aproba": { + "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 + } + } + }, + "libnpmpublish": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz", + "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", + "dev": true, + "requires": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + } + }, "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 }, + "load-json-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^5.0.0", + "strip-bom": "^4.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, "loader-utils": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", @@ -7549,12 +14223,49 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -7638,18 +14349,167 @@ "ssri": "^8.0.0" } }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "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, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, "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 }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "meriyah": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-3.1.6.tgz", "integrity": "sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg==", "dev": true }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", @@ -7677,6 +14537,12 @@ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -7686,6 +14552,31 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "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=", + "dev": true + } + } + }, "minipass": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", @@ -7812,12 +14703,45 @@ "yargs-unparser": "2.0.0" } }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + } + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "nanoid": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", @@ -7830,6 +14754,45 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, "node-gyp": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", @@ -7863,6 +14826,18 @@ "abbrev": "1" } }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7893,6 +14868,147 @@ "semver": "^7.1.1" } }, + "npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "node-gyp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz", + "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, "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", @@ -7995,6 +15111,41 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.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==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8030,6 +15181,22 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -8069,6 +15236,18 @@ "aggregate-error": "^3.0.0" } }, + "p-map-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", + "dev": true + }, + "p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true + }, "p-queue": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", @@ -8079,6 +15258,12 @@ "p-timeout": "^3.2.0" } }, + "p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true + }, "p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -8094,6 +15279,15 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "p-waterfall": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", + "dev": true, + "requires": { + "p-reduce": "^2.0.0" + } + }, "pacote": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", @@ -8153,6 +15347,41 @@ "lines-and-columns": "^1.1.6" } }, + "parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + }, + "dependencies": { + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "parse-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz", + "integrity": "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^6.1.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + } + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -8399,6 +15628,27 @@ "retry": "^0.12.0" } }, + "promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "dev": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -8421,12 +15671,36 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "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 + }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -8467,12 +15741,33 @@ "scheduler": "^0.20.2" } }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, "read-cmd-shim": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", "dev": true }, + "read-package-json": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz", + "integrity": "sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, "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", @@ -8483,6 +15778,196 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -8527,6 +16012,16 @@ "picomatch": "^2.2.1" } }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -8583,6 +16078,15 @@ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -8598,12 +16102,28 @@ "lowercase-keys": "^2.0.0" } }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -8640,6 +16160,38 @@ "@rollup/plugin-inject": "^4.0.0" } }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -8685,6 +16237,15 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8700,6 +16261,17 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", @@ -8732,6 +16304,12 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -8819,6 +16397,15 @@ "socks": "^2.6.1" } }, + "sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dev": true, + "requires": { + "is-plain-obj": "^2.0.0" + } + }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -8837,6 +16424,75 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "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 + }, + "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, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -8873,6 +16529,12 @@ "tslib": "^2.3.1" } }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -8924,6 +16586,26 @@ } } }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8933,6 +16615,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", @@ -8945,12 +16633,32 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -8980,6 +16688,68 @@ "yallist": "^4.0.0" } }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "temp-write": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz", + "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.3.2" + } + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9008,12 +16778,27 @@ "punycode": "^2.1.1" } }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, "treeverse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", "dev": true }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -9034,6 +16819,18 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -9043,6 +16840,37 @@ "is-typedarray": "^1.0.0" } }, + "uglify-js": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true + }, + "umask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -9061,6 +16889,18 @@ "imurmurhash": "^0.1.4" } }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, "untildify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", @@ -9070,6 +16910,12 @@ "os-homedir": "^1.0.0" } }, + "upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -9111,12 +16957,31 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "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", @@ -9157,6 +17022,32 @@ "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", "dev": true }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -9166,6 +17057,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -9175,6 +17079,12 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "workerpool": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", @@ -9229,6 +17139,107 @@ "typedarray-to-buffer": "^3.1.5" } }, + "write-json-file": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", + "dev": true, + "requires": { + "detect-indent": "^6.0.0", + "graceful-fs": "^4.1.15", + "is-plain-obj": "^2.0.0", + "make-dir": "^3.0.0", + "sort-keys": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "write-pkg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "type-fest": "^0.4.1", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "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=", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + } + } + } + }, "ws": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", @@ -9236,6 +17247,12 @@ "dev": true, "requires": {} }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index c6e6706c..2f4e86f0 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "homepage": "https://strudel.tidalcycles.org", "devDependencies": { "@tonaljs/tonal": "^4.6.5", + "lerna": "^4.0.0", "mocha": "^9.1.4", "ramda": "^0.28.0", "snowpack": "^3.8.8" diff --git a/repl/src/euclid.mjs b/packages/core/euclid.mjs similarity index 83% rename from repl/src/euclid.mjs rename to packages/core/euclid.mjs index 07d611f6..e9864ec5 100644 --- a/repl/src/euclid.mjs +++ b/packages/core/euclid.mjs @@ -1,7 +1,7 @@ -import { Pattern, timeCat } from '../../strudel.mjs'; +import { Pattern, timeCat } from './strudel.mjs'; import bjork from 'bjork'; -import { rotate } from '../../util.mjs'; -import Fraction from '../../fraction.mjs'; +import { rotate } from '../../packages/core/util.mjs'; +import Fraction from './fraction.mjs'; const euclid = (pulses, steps, rotation = 0) => { const b = bjork(steps, pulses); diff --git a/fraction.mjs b/packages/core/fraction.mjs similarity index 100% rename from fraction.mjs rename to packages/core/fraction.mjs diff --git a/repl/src/gist.js b/packages/core/gist.js similarity index 100% rename from repl/src/gist.js rename to packages/core/gist.js diff --git a/repl/public/.nojekyll b/packages/core/index.mjs similarity index 100% rename from repl/public/.nojekyll rename to packages/core/index.mjs diff --git a/packages/core/package-lock.json b/packages/core/package-lock.json new file mode 100644 index 00000000..a9062289 --- /dev/null +++ b/packages/core/package-lock.json @@ -0,0 +1,1654 @@ +{ + "name": "@strudel/core", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@strudel/core", + "version": "0.0.1", + "license": "GPL-3.0-or-later", + "dependencies": { + "bjork": "^0.0.1", + "fraction.js": "^4.2.0", + "ramda": "^0.28.0" + }, + "devDependencies": { + "mocha": "^9.2.2" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bjork": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/bjork/-/bjork-0.0.1.tgz", + "integrity": "sha1-br1a3pkWSwvgMIeI1kaRQ9XJrZw=" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/minimatch": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/ramda": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", + "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "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/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-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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" + } + } + }, + "dependencies": { + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "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 + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bjork": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/bjork/-/bjork-0.0.1.tgz", + "integrity": "sha1-br1a3pkWSwvgMIeI1kaRQ9XJrZw=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "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, + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "ramda": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", + "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "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 + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "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 + } + } +} diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 00000000..ab77bef4 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,35 @@ +{ + "name": "@strudel/core", + "version": "0.0.1", + "description": "Port of Tidal Cycles to JavaScript", + "main": "strudel.mjs", + "type": "module", + "scripts": { + "test": "mocha --colors" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "keywords": [ + "tidalcycles", + "strudel", + "pattern", + "livecoding", + "algorave" + ], + "author": "Alex McLean (https://slab.org)", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://strudel.tidalcycles.org", + "dependencies": { + "bjork": "^0.0.1", + "fraction.js": "^4.2.0", + "ramda": "^0.28.0" + }, + "devDependencies": { + "mocha": "^9.2.2" + } +} diff --git a/strudel.mjs b/packages/core/strudel.mjs similarity index 99% rename from strudel.mjs rename to packages/core/strudel.mjs index 38e3afcf..24816fa0 100644 --- a/strudel.mjs +++ b/packages/core/strudel.mjs @@ -423,6 +423,10 @@ class Pattern { return self.query(new State(new TimeSpan(Fraction(0), Fraction(1)))) } + get _firstCycleValues() { + return this.firstCycle().map(hap => hap.value) + } + _sortEventsByPart() { return this._withEvents(events => events.sort((a,b) => a.part.begin.sub(b.part.begin).or(a.part.end.sub(b.part.end)).or(a.whole.begin.sub(b.whole.begin).or(a.whole.end.sub(b.whole.end))))) } diff --git a/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs similarity index 98% rename from test/pattern.test.mjs rename to packages/core/test/pattern.test.mjs index 9d98d0bd..6e68d47e 100644 --- a/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -2,7 +2,36 @@ import Fraction from 'fraction.js' import { strict as assert } from 'assert'; -import {TimeSpan, Hap, State, Pattern, pure, stack, fastcat, slowcat, cat, sequence, polyrhythm, silence, fast, timeCat,add,sub,mul,div,saw,saw2,isaw,isaw2,sine,sine2,square,square2,tri,tri2} from "../strudel.mjs"; +import { + TimeSpan, + Hap, + State, + Pattern, + pure, + stack, + fastcat, + slowcat, + cat, + sequence, + polyrhythm, + silence, + fast, + timeCat, + add, + sub, + mul, + div, + saw, + saw2, + isaw, + isaw2, + sine, + sine2, + square, + square2, + tri, + tri2, +} from '../strudel.mjs'; //import { Time } from 'tone'; import pkg from 'tone'; const { Time } = pkg; diff --git a/test/util.test.mjs b/packages/core/test/util.test.mjs similarity index 100% rename from test/util.test.mjs rename to packages/core/test/util.test.mjs diff --git a/test/value.test.mjs b/packages/core/test/value.test.mjs similarity index 100% rename from test/value.test.mjs rename to packages/core/test/value.test.mjs diff --git a/util.mjs b/packages/core/util.mjs similarity index 100% rename from util.mjs rename to packages/core/util.mjs diff --git a/value.mjs b/packages/core/value.mjs similarity index 100% rename from value.mjs rename to packages/core/value.mjs diff --git a/packages/eval/.gitignore b/packages/eval/.gitignore new file mode 100644 index 00000000..f306ea4e --- /dev/null +++ b/packages/eval/.gitignore @@ -0,0 +1,3 @@ +shift-parser +shift-reducer +shift-traverser \ No newline at end of file diff --git a/repl/src/evaluate.ts b/packages/eval/evaluate.mjs similarity index 62% rename from repl/src/evaluate.ts rename to packages/eval/evaluate.mjs index f40dbda0..9c55a967 100644 --- a/repl/src/evaluate.ts +++ b/packages/eval/evaluate.mjs @@ -1,25 +1,25 @@ -import * as strudel from '../../strudel.mjs'; -import './tone'; -import './midi'; -import './voicings'; -import './tonal.mjs'; -import './xen.mjs'; -import './tune.mjs'; -import './euclid.mjs'; -import euclid from './euclid.mjs'; -import './pianoroll.mjs'; -import './draw.mjs'; -import * as uiHelpers from './ui.mjs'; -import * as drawHelpers from './draw.mjs'; -import gist from './gist.js'; -import shapeshifter from './shapeshifter'; -import { mini } from './parse'; +import * as strudel from '../core/strudel.mjs'; +import '../tone/tone.mjs'; +import '../midi/midi.mjs'; +import '../tonal/voicings.mjs'; +import '../../packages/tonal/tonal.mjs'; +import '../../packages/xen/xen.mjs'; +import '../../packages/xen/tune.mjs'; +import '../core/euclid.mjs'; +import euclid from '../core/euclid.mjs'; +import '../repl-react/pianoroll.mjs'; +import '../repl-react/draw.mjs'; +import * as uiHelpers from '../repl-react/ui.mjs'; +import * as drawHelpers from '../repl-react/draw.mjs'; +import gist from '../core/gist.js'; +import shapeshifter from './shapeshifter.mjs'; +import { mini } from '../mini/mini.mjs'; import * as Tone from 'tone'; -import * as toneHelpers from './tone'; -import * as voicingHelpers from './voicings'; +import * as toneHelpers from '../tone/tone.mjs'; +import * as voicingHelpers from '../tonal/voicings.mjs'; // this will add all methods from definedMethod to strudel + connect all the partial application stuff -const bootstrapped: any = { ...strudel, ...strudel.Pattern.prototype.bootstrap() }; +const bootstrapped = { ...strudel, ...strudel.Pattern.prototype.bootstrap() }; // console.log('bootstrapped',bootstrapped.transpose(2).transpose); function hackLiteral(literal, names, func) { @@ -43,7 +43,7 @@ Object.assign(globalThis, Tone, bootstrapped, toneHelpers, voicingHelpers, drawH mini, }); -export const evaluate: any = async (code: string) => { +export const evaluate = async (code) => { const shapeshifted = shapeshifter(code); // transform syntactically correct js code to semantically usable code drawHelpers.cleanup(); uiHelpers.cleanup(); diff --git a/packages/eval/package-lock.json b/packages/eval/package-lock.json new file mode 100644 index 00000000..71f6b87c --- /dev/null +++ b/packages/eval/package-lock.json @@ -0,0 +1,304 @@ +{ + "name": "@strudel/eval", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@strudel/eval", + "version": "0.0.1", + "license": "GPL-3.0-or-later", + "devDependencies": { + "shift-ast": "^6.1.0", + "shift-codegen": "^7.0.3", + "shift-parser": "^7.0.3", + "shift-traverser": "^1.0.0" + } + }, + "node_modules/estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/multimap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", + "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shift-ast": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/shift-ast/-/shift-ast-6.1.0.tgz", + "integrity": "sha512-Vj4XUIJIFPIh6VcBGJ1hjH/kM88XGer94Pr7Rvxa+idEylDsrwtLw268HoxGo5xReL6T3DdRl/9/Pr1XihZ/8Q==", + "dev": true + }, + "node_modules/shift-codegen": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/shift-codegen/-/shift-codegen-7.0.3.tgz", + "integrity": "sha512-dfCVVdBF0qZ6pkajQ3bjxRdNEltyxEITVe7tBJkQt2eCI3znUkSxq0VSe/tTWq1LKHeAS4HuOiqYEuHMFkSq9w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "object-assign": "^4.1.0", + "shift-reducer": "6.0.0" + } + }, + "node_modules/shift-parser": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/shift-parser/-/shift-parser-7.0.3.tgz", + "integrity": "sha512-uYX2ORyZfKZrUc4iKKkO9KOhzUSxCrSBk7QK6ZmShId+BOo1gh1IwecVy97ynyOTpmhPWUttjC8BzsnQl65Zew==", + "dev": true, + "dependencies": { + "multimap": "^1.0.2", + "shift-ast": "6.0.0", + "shift-reducer": "6.0.0", + "shift-regexp-acceptor": "2.0.3" + } + }, + "node_modules/shift-parser/node_modules/shift-ast": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/shift-ast/-/shift-ast-6.0.0.tgz", + "integrity": "sha512-XXxDcEBWVBzqWXfNYJlLyJ1/9kMvOXVRXiqPjkOrTCC5qRsBvEMJMRLLFhU3tn8ue56Y7IZyBE6bexFum5QLUw==", + "dev": true + }, + "node_modules/shift-reducer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/shift-reducer/-/shift-reducer-6.0.0.tgz", + "integrity": "sha512-2rJraRP8drIOjvaE/sALa+0tGJmMVUzlmS3wIJerJbaYuCjpFAiF0WjkTOFVtz1144Nm/ECmqeG+7yRhuMVsMg==", + "dev": true, + "dependencies": { + "shift-ast": "6.0.0" + } + }, + "node_modules/shift-reducer/node_modules/shift-ast": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/shift-ast/-/shift-ast-6.0.0.tgz", + "integrity": "sha512-XXxDcEBWVBzqWXfNYJlLyJ1/9kMvOXVRXiqPjkOrTCC5qRsBvEMJMRLLFhU3tn8ue56Y7IZyBE6bexFum5QLUw==", + "dev": true + }, + "node_modules/shift-regexp-acceptor": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/shift-regexp-acceptor/-/shift-regexp-acceptor-2.0.3.tgz", + "integrity": "sha512-sxL7e5JNUFxm+gutFRXktX2D6KVgDAHNuDsk5XHB9Z+N5yXooZG6pdZ1GEbo3Jz6lF7ETYLBC4WAjIFm2RKTmA==", + "dev": true, + "dependencies": { + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2", + "unicode-property-aliases-ecmascript": "1.0.4" + } + }, + "node_modules/shift-spec": { + "version": "2018.0.0", + "resolved": "https://registry.npmjs.org/shift-spec/-/shift-spec-2018.0.0.tgz", + "integrity": "sha512-/aiPOkj7dbe+CV2VZhIMTHQToZmgniofpRG7Yr7x2/0sO6CSVC++py1Wzf+s+rWSTDHKcLvziVAxjRRV4i4EoQ==", + "dev": true + }, + "node_modules/shift-traverser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shift-traverser/-/shift-traverser-1.0.0.tgz", + "integrity": "sha512-DMY3512wJbdC+IC+nhLH3/Stgr2BbxbNcg7qyZ6+e5qNnNs8TBQJWdMsRgHlX1JXwF4C0ONKS8VUxsPT0Tf7aw==", + "dev": true, + "dependencies": { + "estraverse": "4.2.0", + "shift-spec": "2018.0.0" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "dev": true, + "engines": { + "node": ">=4" + } + } + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "multimap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", + "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "shift-ast": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/shift-ast/-/shift-ast-6.1.0.tgz", + "integrity": "sha512-Vj4XUIJIFPIh6VcBGJ1hjH/kM88XGer94Pr7Rvxa+idEylDsrwtLw268HoxGo5xReL6T3DdRl/9/Pr1XihZ/8Q==", + "dev": true + }, + "shift-codegen": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/shift-codegen/-/shift-codegen-7.0.3.tgz", + "integrity": "sha512-dfCVVdBF0qZ6pkajQ3bjxRdNEltyxEITVe7tBJkQt2eCI3znUkSxq0VSe/tTWq1LKHeAS4HuOiqYEuHMFkSq9w==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "object-assign": "^4.1.0", + "shift-reducer": "6.0.0" + } + }, + "shift-parser": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/shift-parser/-/shift-parser-7.0.3.tgz", + "integrity": "sha512-uYX2ORyZfKZrUc4iKKkO9KOhzUSxCrSBk7QK6ZmShId+BOo1gh1IwecVy97ynyOTpmhPWUttjC8BzsnQl65Zew==", + "dev": true, + "requires": { + "multimap": "^1.0.2", + "shift-ast": "6.0.0", + "shift-reducer": "6.0.0", + "shift-regexp-acceptor": "2.0.3" + }, + "dependencies": { + "shift-ast": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/shift-ast/-/shift-ast-6.0.0.tgz", + "integrity": "sha512-XXxDcEBWVBzqWXfNYJlLyJ1/9kMvOXVRXiqPjkOrTCC5qRsBvEMJMRLLFhU3tn8ue56Y7IZyBE6bexFum5QLUw==", + "dev": true + } + } + }, + "shift-reducer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/shift-reducer/-/shift-reducer-6.0.0.tgz", + "integrity": "sha512-2rJraRP8drIOjvaE/sALa+0tGJmMVUzlmS3wIJerJbaYuCjpFAiF0WjkTOFVtz1144Nm/ECmqeG+7yRhuMVsMg==", + "dev": true, + "requires": { + "shift-ast": "6.0.0" + }, + "dependencies": { + "shift-ast": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/shift-ast/-/shift-ast-6.0.0.tgz", + "integrity": "sha512-XXxDcEBWVBzqWXfNYJlLyJ1/9kMvOXVRXiqPjkOrTCC5qRsBvEMJMRLLFhU3tn8ue56Y7IZyBE6bexFum5QLUw==", + "dev": true + } + } + }, + "shift-regexp-acceptor": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/shift-regexp-acceptor/-/shift-regexp-acceptor-2.0.3.tgz", + "integrity": "sha512-sxL7e5JNUFxm+gutFRXktX2D6KVgDAHNuDsk5XHB9Z+N5yXooZG6pdZ1GEbo3Jz6lF7ETYLBC4WAjIFm2RKTmA==", + "dev": true, + "requires": { + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2", + "unicode-property-aliases-ecmascript": "1.0.4" + } + }, + "shift-spec": { + "version": "2018.0.0", + "resolved": "https://registry.npmjs.org/shift-spec/-/shift-spec-2018.0.0.tgz", + "integrity": "sha512-/aiPOkj7dbe+CV2VZhIMTHQToZmgniofpRG7Yr7x2/0sO6CSVC++py1Wzf+s+rWSTDHKcLvziVAxjRRV4i4EoQ==", + "dev": true + }, + "shift-traverser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shift-traverser/-/shift-traverser-1.0.0.tgz", + "integrity": "sha512-DMY3512wJbdC+IC+nhLH3/Stgr2BbxbNcg7qyZ6+e5qNnNs8TBQJWdMsRgHlX1JXwF4C0ONKS8VUxsPT0Tf7aw==", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "shift-spec": "2018.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "dev": true + } + } +} diff --git a/packages/eval/package.json b/packages/eval/package.json new file mode 100644 index 00000000..659082f1 --- /dev/null +++ b/packages/eval/package.json @@ -0,0 +1,36 @@ +{ + "name": "@strudel/eval", + "version": "0.0.1", + "description": "Code evaluator for strudel", + "main": "evaluate.mjs", + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha --colors" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "type": "module", + "keywords": [ + "tidalcycles", + "strudel", + "pattern", + "livecoding", + "algorave" + ], + "author": "Felix Roos ", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://github.com/tidalcycles/strudel#readme", + "devDependencies": { + "shift-ast": "^6.1.0", + "shift-codegen": "^7.0.3", + "shift-parser": "^7.0.3", + "shift-traverser": "^1.0.0" + } +} diff --git a/repl/src/shapeshifter.js b/packages/eval/shapeshifter.mjs similarity index 95% rename from repl/src/shapeshifter.js rename to packages/eval/shapeshifter.mjs index a6d7eae4..78bef6d9 100644 --- a/repl/src/shapeshifter.js +++ b/packages/eval/shapeshifter.mjs @@ -1,5 +1,7 @@ -import { parseScriptWithLocation } from './shift-parser/index.js'; // npm module does not work in the browser -import traverser from './shift-traverser'; // npm module does not work in the browser +/* import { parseScriptWithLocation } from './shift-parser/index.js'; // npm module does not work in the browser +import traverser from './shift-traverser/index.js'; // npm module does not work in the browser */ +import { parseScriptWithLocation } from 'shift-parser'; +import traverser from 'shift-traverser'; const { replace } = traverser; import { LiteralStringExpression, @@ -10,8 +12,10 @@ import { ArrayExpression, LiteralNumericExpression, } from 'shift-ast'; -import codegen from 'shift-codegen'; -import * as strudel from '../../strudel.mjs'; +import shiftCodegen from 'shift-codegen'; +const codegen = shiftCodegen.default; +console.log('codegen', codegen); +import * as strudel from '../core/strudel.mjs'; const { Pattern } = strudel; diff --git a/packages/eval/test/evaluate.test.mjs b/packages/eval/test/evaluate.test.mjs new file mode 100644 index 00000000..60432738 --- /dev/null +++ b/packages/eval/test/evaluate.test.mjs @@ -0,0 +1,9 @@ +/* import { strict as assert } from 'assert'; +import evaluate from '../evaluate.mjs'; + +describe('evaluate', () => { + it('Should evaluate simple double quote string', () => { + assert.deepStrictEqual(evaluate('"c3"'), pure('c3')); + }); +}); + */ \ No newline at end of file diff --git a/packages/eval/test/shapeshifter.test.mjs b/packages/eval/test/shapeshifter.test.mjs new file mode 100644 index 00000000..0b8812f0 --- /dev/null +++ b/packages/eval/test/shapeshifter.test.mjs @@ -0,0 +1,8 @@ +import { strict as assert } from 'assert'; +import shapeshifter from '../shapeshifter.mjs'; + +describe('shapeshifter', () => { + it('Should shift simple double quote string', () => { + assert.equal(shapeshifter('"c3"'), '(async()=>{return mini("c3").withMiniLocation([1,0,15],[1,4,19])})()'); + }); +}); diff --git a/repl/src/midi.ts b/packages/midi/midi.mjs similarity index 55% rename from repl/src/midi.ts rename to packages/midi/midi.mjs index 798b5c11..d54ece89 100644 --- a/repl/src/midi.ts +++ b/packages/midi/midi.mjs @@ -1,11 +1,10 @@ -import { useEffect, useState } from 'react'; import { isNote } from 'tone'; import _WebMidi from 'webmidi'; -import { Pattern as _Pattern } from '../../strudel.mjs'; +import { Pattern as _Pattern } from '../core/strudel.mjs'; import * as Tone from 'tone'; -const WebMidi: any = _WebMidi; -const Pattern = _Pattern as any; +const WebMidi = _WebMidi; +const Pattern = _Pattern; export default function enableWebMidi() { return new Promise((resolve, reject) => { @@ -14,7 +13,7 @@ export default function enableWebMidi() { resolve(WebMidi); return; } - WebMidi.enable((err: any) => { + WebMidi.enable((err) => { if (err) { reject(err); } @@ -22,9 +21,11 @@ export default function enableWebMidi() { }); }); } -const outputByName = (name: string) => WebMidi.getOutputByName(name); +// const outputByName = (name: string) => WebMidi.getOutputByName(name); +const outputByName = (name) => WebMidi.getOutputByName(name); -Pattern.prototype.midi = function (output: string | number, channel = 1) { +// Pattern.prototype.midi = function (output: string | number, channel = 1) { +Pattern.prototype.midi = function (output, channel = 1) { if (output?.constructor?.name === 'Pattern') { throw new Error( `.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${ @@ -32,8 +33,9 @@ Pattern.prototype.midi = function (output: string | number, channel = 1) { }')` ); } - return this._withEvent((event: any) => { - const onTrigger = (time: number, event: any) => { + return this._withEvent((event) => { + // const onTrigger = (time: number, event: any) => { + const onTrigger = (time, event) => { let note = event.value; const velocity = event.context?.velocity ?? 0.9; if (!isNote(note)) { @@ -56,7 +58,7 @@ Pattern.prototype.midi = function (output: string | number, channel = 1) { if (!device) { throw new Error( `🔌 MIDI device '${output ? output : ''}' not found. Use one of ${WebMidi.outputs - .map((o: any) => `'${o.name}'`) + .map((o) => `'${o.name}'`) .join(' | ')}` ); } @@ -74,35 +76,3 @@ Pattern.prototype.midi = function (output: string | number, channel = 1) { return event.setContext({ ...event.context, onTrigger }); }); }; - -export function useWebMidi(props?: any) { - const { ready, connected, disconnected } = props; - const [loading, setLoading] = useState(true); - const [outputs, setOutputs] = useState(WebMidi?.outputs || []); - useEffect(() => { - enableWebMidi() - .then(() => { - // Reacting when a new device becomes available - WebMidi.addListener('connected', (e: any) => { - setOutputs([...WebMidi.outputs]); - connected?.(WebMidi, e); - }); - // Reacting when a device becomes unavailable - WebMidi.addListener('disconnected', (e: any) => { - setOutputs([...WebMidi.outputs]); - disconnected?.(WebMidi, e); - }); - ready?.(WebMidi); - setLoading(false); - }) - .catch((err: Error) => { - if (err) { - //throw new Error("Web Midi could not be enabled..."); - console.warn('Web Midi could not be enabled..'); - return; - } - }); - }, [ready, connected, disconnected, outputs]); - const outputByName = (name: string) => WebMidi.getOutputByName(name); - return { loading, outputs, outputByName }; -} diff --git a/repl/krill-parser.js b/packages/mini/krill-parser.js similarity index 100% rename from repl/krill-parser.js rename to packages/mini/krill-parser.js diff --git a/repl/krill.pegjs b/packages/mini/krill.pegjs similarity index 100% rename from repl/krill.pegjs rename to packages/mini/krill.pegjs diff --git a/repl/src/parse.ts b/packages/mini/mini.mjs similarity index 91% rename from repl/src/parse.ts rename to packages/mini/mini.mjs index 509a6e61..243b0753 100644 --- a/repl/src/parse.ts +++ b/packages/mini/mini.mjs @@ -1,11 +1,10 @@ -import * as krill from '../krill-parser'; -import * as strudel from '../../strudel.mjs'; -import { Scale, Note, Interval } from '@tonaljs/tonal'; -import { addMiniLocations } from './shapeshifter'; +import * as krill from './krill-parser.js'; +import * as strudel from '../core/strudel.mjs'; +import { addMiniLocations } from '../eval/shapeshifter.mjs'; const { pure, Pattern, Fraction, stack, slowcat, sequence, timeCat, silence } = strudel; -const applyOptions = (parent: any) => (pat: any, i: number) => { +const applyOptions = (parent) => (pat, i) => { const ast = parent.source_[i]; const options = ast.options_; const operator = options?.operator; @@ -68,7 +67,7 @@ function resolveReplications(ast) { }); } -export function patternifyAST(ast: any): any { +export function patternifyAST(ast) { switch (ast.type_) { case 'pattern': resolveReplications(ast); @@ -111,7 +110,7 @@ export function patternifyAST(ast: any): any { return patternifyAST(ast.source_); case 'stretch': return patternifyAST(ast.source_).slow(ast.arguments_.amount); - case 'scale': + /* case 'scale': let [tonic, scale] = Scale.tokenize(ast.arguments_.scale); const intervals = Scale.get(scale).intervals; const pattern = patternifyAST(ast.source_); @@ -129,7 +128,7 @@ export function patternifyAST(ast: any): any { const index = mod(step, intervals.length); // % with negative numbers. e.g. -1 % 3 = 2 const interval = Interval.add(intervals[index], Interval.fromSemitones(octaves * 12)); return Note.transpose(tonic, interval || '1P'); - }); + }); */ /* case 'struct': // TODO: return silence; */ @@ -140,7 +139,7 @@ export function patternifyAST(ast: any): any { } // mini notation only (wraps in "") -export const mini = (...strings: string[]) => { +export const mini = (...strings) => { const pats = strings.map((str) => { const ast = krill.parse(`"${str}"`); return patternifyAST(ast); @@ -149,7 +148,7 @@ export const mini = (...strings: string[]) => { }; // includes haskell style (raw krill parsing) -export const h = (string: string) => { +export const h = (string) => { const ast = krill.parse(string); // console.log('ast', ast); return patternifyAST(ast); @@ -161,14 +160,14 @@ Pattern.prototype.define('m', mini, { composable: true }); Pattern.prototype.define('h', h, { composable: true }); // TODO: move this to strudel? -export function reify(thing: any) { +export function reify(thing) { if (thing?.constructor?.name === 'Pattern') { return thing; } return pure(thing); } -export function minify(thing: any) { +export function minify(thing) { if (typeof thing === 'string') { return mini(thing); } diff --git a/packages/mini/package.json b/packages/mini/package.json new file mode 100644 index 00000000..b3b7197f --- /dev/null +++ b/packages/mini/package.json @@ -0,0 +1,27 @@ +{ + "name": "@strudel/mini", + "version": "0.0.1", + "description": "Mini notation for strudel", + "main": "mini.mjs", + "type": "module", + "scripts": { + "test": "mocha --colors" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "keywords": [ + "tidalcycles", + "strudel", + "pattern", + "livecoding", + "algorave" + ], + "author": "Felix Roos ", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://github.com/tidalcycles/strudel#readme" +} diff --git a/packages/mini/test/mini.test.mjs b/packages/mini/test/mini.test.mjs new file mode 100644 index 00000000..b7a24702 --- /dev/null +++ b/packages/mini/test/mini.test.mjs @@ -0,0 +1,12 @@ +import { strict as assert } from 'assert'; +import { mini } from '../mini.mjs'; + +describe('mini', () => { + it('Should parse mini notation', () => { + const min = (v) => mini(v)._firstCycleValues; + + assert.deepStrictEqual(min('c3'), ['c3']); + assert.deepStrictEqual(min('c3 d3'), ['c3', 'd3']); + assert.deepStrictEqual(min(''), ['c3']); + }); +}); diff --git a/repl/.gitignore b/packages/repl-react/.gitignore similarity index 100% rename from repl/.gitignore rename to packages/repl-react/.gitignore diff --git a/repl/src/App.tsx b/packages/repl-react/App.jsx similarity index 91% rename from repl/src/App.tsx rename to packages/repl-react/App.jsx index c8e77932..0a3c9240 100644 --- a/repl/src/App.tsx +++ b/packages/repl-react/App.jsx @@ -1,13 +1,13 @@ import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'; import CodeMirror, { markEvent, markParens } from './CodeMirror'; import cx from './cx'; -import { evaluate } from './evaluate'; -import logo from './logo.svg'; -import { useWebMidi } from './midi'; +import { evaluate } from '../eval/evaluate.mjs'; +// import logo from './logo.svg'; import playStatic from './static.mjs'; -import { defaultSynth } from './tone'; -import * as tunes from './tunes'; -import useRepl from './useRepl'; +import { defaultSynth } from '../tone/tone.mjs'; +import * as tunes from '../tunes/tunes'; +import useRepl from '../../repl/src/useRepl'; +import { useWebMidi } from './useWebMidi'; // TODO: use https://www.npmjs.com/package/@monaco-editor/react @@ -21,14 +21,14 @@ try { function getRandomTune() { const allTunes = Object.values(tunes); - const randomItem = (arr: any[]) => arr[Math.floor(Math.random() * arr.length)]; + const randomItem = (arr) => arr[Math.floor(Math.random() * arr.length)]; return randomItem(allTunes); } const randomTune = getRandomTune(); function App() { - const [editor, setEditor] = useState(); + const [editor, setEditor] = useState(); const { setCode, setPattern, error, code, cycle, dirty, log, togglePlay, activateCode, pattern, pushLog, pending } = useRepl({ tune: decoded || randomTune, @@ -36,7 +36,7 @@ function App() { onDraw: useCallback(markEvent(editor), [editor]), }); const [uiHidden, setUiHidden] = useState(false); - const logBox = useRef(); + const logBox = useRef(); // scroll log box to bottom when log changes useLayoutEffect(() => { logBox.current.scrollTop = logBox.current?.scrollHeight; @@ -45,7 +45,7 @@ function App() { // set active pattern on ctrl+enter useLayoutEffect(() => { // TODO: make sure this is only fired when editor has focus - const handleKeyPress = async (e: any) => { + const handleKeyPress = async (e) => { if (e.ctrlKey || e.altKey) { switch (e.code) { case 'Enter': @@ -82,7 +82,7 @@ function App() { )} >
- logo + {/* logo */}

Strudel REPL

@@ -149,7 +149,7 @@ function App() { cursorBlinkRate: 0, }} onCursor={markParens} - onChange={(_: any, __: any, value: any) => setCode(value)} + onChange={(_, __, value) => setCode(value)} /> {!cycle.started ? `press ctrl+enter to play\n` : dirty ? `ctrl+enter to update\n` : 'no changes\n'} diff --git a/repl/src/CodeMirror.tsx b/packages/repl-react/CodeMirror.jsx similarity index 98% rename from repl/src/CodeMirror.tsx rename to packages/repl-react/CodeMirror.jsx index e93a8c09..b4aa511b 100644 --- a/repl/src/CodeMirror.tsx +++ b/packages/repl-react/CodeMirror.jsx @@ -6,7 +6,7 @@ import 'codemirror/mode/pegjs/pegjs.js'; import 'codemirror/lib/codemirror.css'; import 'codemirror/theme/material.css'; -export default function CodeMirror({ value, onChange, onCursor, options, editorDidMount }: any) { +export default function CodeMirror({ value, onChange, onCursor, options, editorDidMount }) { options = options || { mode: 'javascript', theme: 'material', diff --git a/repl/README.md b/packages/repl-react/README.md similarity index 100% rename from repl/README.md rename to packages/repl-react/README.md diff --git a/packages/repl-react/cx.js b/packages/repl-react/cx.js new file mode 100644 index 00000000..fdd3ae90 --- /dev/null +++ b/packages/repl-react/cx.js @@ -0,0 +1,3 @@ +export default function cx(...classes) { // : Array + return classes.filter(Boolean).join(' '); +} diff --git a/repl/src/draw.mjs b/packages/repl-react/draw.mjs similarity index 97% rename from repl/src/draw.mjs rename to packages/repl-react/draw.mjs index 6135405b..64098887 100644 --- a/repl/src/draw.mjs +++ b/packages/repl-react/draw.mjs @@ -1,5 +1,5 @@ import * as Tone from 'tone'; -import { Pattern } from '../../strudel.mjs'; +import { Pattern } from '../core/strudel.mjs'; export const getDrawContext = (id = 'test-canvas') => { let canvas = document.querySelector('#' + id); diff --git a/repl/src/index.tsx b/packages/repl-react/index.jsx similarity index 100% rename from repl/src/index.tsx rename to packages/repl-react/index.jsx diff --git a/repl/src/logo.svg b/packages/repl-react/logo.svg similarity index 100% rename from repl/src/logo.svg rename to packages/repl-react/logo.svg diff --git a/repl/package-lock.json b/packages/repl-react/package-lock.json similarity index 100% rename from repl/package-lock.json rename to packages/repl-react/package-lock.json diff --git a/repl/package.json b/packages/repl-react/package.json similarity index 100% rename from repl/package.json rename to packages/repl-react/package.json diff --git a/repl/src/pianoroll.mjs b/packages/repl-react/pianoroll.mjs similarity index 96% rename from repl/src/pianoroll.mjs rename to packages/repl-react/pianoroll.mjs index a169dae6..9d1fcf1a 100644 --- a/repl/src/pianoroll.mjs +++ b/packages/repl-react/pianoroll.mjs @@ -1,4 +1,4 @@ -import { Pattern } from '../../strudel.mjs'; +import { Pattern } from '../core/strudel.mjs'; Pattern.prototype.pianoroll = function ({ timeframe = 10, diff --git a/repl/postcss.config.js b/packages/repl-react/postcss.config.js similarity index 100% rename from repl/postcss.config.js rename to packages/repl-react/postcss.config.js diff --git a/packages/repl-react/public/.nojekyll b/packages/repl-react/public/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/repl/public/CNAME b/packages/repl-react/public/CNAME similarity index 100% rename from repl/public/CNAME rename to packages/repl-react/public/CNAME diff --git a/repl/public/favicon.ico b/packages/repl-react/public/favicon.ico similarity index 100% rename from repl/public/favicon.ico rename to packages/repl-react/public/favicon.ico diff --git a/repl/public/global.css b/packages/repl-react/public/global.css similarity index 100% rename from repl/public/global.css rename to packages/repl-react/public/global.css diff --git a/repl/public/hot.js b/packages/repl-react/public/hot.js similarity index 88% rename from repl/public/hot.js rename to packages/repl-react/public/hot.js index eeaed770..c2630266 100644 --- a/repl/public/hot.js +++ b/packages/repl-react/public/hot.js @@ -2,9 +2,9 @@ // just export a pattern from export default // enable hot mode by pressing "toggle hot mode" on the top right of the repl -import { mini, h } from '../src/parse'; -import { sequence, pure, reify, slowcat, fastcat, cat, stack, silence } from '../../strudel.mjs'; -import { gain, filter } from '../src/tone'; +import { mini, h } from '../../mini/mini.mjs'; +import { sequence, pure, reify, slowcat, fastcat, cat, stack, silence } from '../../packages/core/strudel.mjs'; +import { gain, filter } from '../../tone/tone.mjs'; export default stack( sequence( diff --git a/repl/public/index.html b/packages/repl-react/public/index.html similarity index 100% rename from repl/public/index.html rename to packages/repl-react/public/index.html diff --git a/repl/snowpack.config.mjs b/packages/repl-react/snowpack.config.mjs similarity index 100% rename from repl/snowpack.config.mjs rename to packages/repl-react/snowpack.config.mjs diff --git a/repl/src/static.mjs b/packages/repl-react/static.mjs similarity index 92% rename from repl/src/static.mjs rename to packages/repl-react/static.mjs index fd5cd726..0cf05a20 100644 --- a/repl/src/static.mjs +++ b/packages/repl-react/static.mjs @@ -1,7 +1,7 @@ import * as Tone from 'tone'; -import { State, TimeSpan } from '../../strudel.mjs'; -import { getPlayableNoteValue } from '../../util.mjs'; -import { evaluate } from './evaluate'; +import { State, TimeSpan } from '../core/strudel.mjs'; +import { getPlayableNoteValue } from '../../packages/core/util.mjs'; +import { evaluate } from '../eval/evaluate.mjs'; // this is a test to play back events with as less runtime code as possible.. // the code asks for the number of seconds to prequery diff --git a/repl/tailwind.config.js b/packages/repl-react/tailwind.config.js similarity index 100% rename from repl/tailwind.config.js rename to packages/repl-react/tailwind.config.js diff --git a/repl/src/ui.mjs b/packages/repl-react/ui.mjs similarity index 100% rename from repl/src/ui.mjs rename to packages/repl-react/ui.mjs diff --git a/repl/src/useCycle.ts b/packages/repl-react/useCycle.ts similarity index 94% rename from repl/src/useCycle.ts rename to packages/repl-react/useCycle.ts index 2d156b71..7b2a783a 100644 --- a/repl/src/useCycle.ts +++ b/packages/repl-react/useCycle.ts @@ -1,8 +1,7 @@ import { useEffect, useState } from 'react'; import type { ToneEventCallback } from 'tone'; import * as Tone from 'tone'; -import { TimeSpan, State } from '../../strudel.mjs'; -import type { Hap } from './types'; +import { Hap, State, TimeSpan } from '../core/strudel.mjs'; export declare interface UseCycleProps { onEvent: ToneEventCallback; @@ -15,7 +14,7 @@ export declare interface UseCycleProps { function useCycle(props: UseCycleProps) { // onX must use useCallback! const { onEvent, onQuery, onSchedule, ready = true, onDraw } = props; - const [started, setStarted] = useState(false); + const [started, setStarted] = useState(false); const cycleDuration = 1; const activeCycle = () => Math.floor(Tone.getTransport().seconds / cycleDuration); diff --git a/repl/src/usePostMessage.ts b/packages/repl-react/usePostMessage.ts similarity index 100% rename from repl/src/usePostMessage.ts rename to packages/repl-react/usePostMessage.ts diff --git a/repl/src/useRepl.ts b/packages/repl-react/useRepl.ts similarity index 93% rename from repl/src/useRepl.ts rename to packages/repl-react/useRepl.ts index ad6f36da..a9dc1fb4 100644 --- a/repl/src/useRepl.ts +++ b/packages/repl-react/useRepl.ts @@ -1,7 +1,6 @@ import { useCallback, useState, useMemo } from 'react'; -import { getPlayableNoteValue } from '../../util.mjs'; -import { evaluate } from './evaluate'; -import type { Pattern } from './types'; +import { evaluate } from '../../packages/eval/evaluate.mjs'; +import { getPlayableNoteValue } from '../core/util.mjs'; import useCycle from './useCycle'; import usePostMessage from './usePostMessage'; @@ -13,13 +12,13 @@ let s4 = () => { function useRepl({ tune, defaultSynth, autolink = true, onEvent, onDraw }: any) { const id = useMemo(() => s4(), []); - const [code, setCode] = useState(tune); - const [activeCode, setActiveCode] = useState(); + const [code, setCode] = useState(tune); + const [activeCode, setActiveCode] = useState(); const [log, setLog] = useState(''); - const [error, setError] = useState(); + const [error, setError] = useState(); const [pending, setPending] = useState(false); const [hash, setHash] = useState(''); - const [pattern, setPattern] = useState(); + const [pattern, setPattern] = useState(); const dirty = code !== activeCode || error; const generateHash = () => encodeURIComponent(btoa(code)); const activateCode = async (_code = code) => { diff --git a/packages/repl-react/useWebMidi.js b/packages/repl-react/useWebMidi.js new file mode 100644 index 00000000..35f14c96 --- /dev/null +++ b/packages/repl-react/useWebMidi.js @@ -0,0 +1,33 @@ +import { useEffect, useState } from 'react'; + +export function useWebMidi(props) { + const { ready, connected, disconnected } = props; + const [loading, setLoading] = useState(true); + const [outputs, setOutputs] = useState(WebMidi?.outputs || []); + useEffect(() => { + enableWebMidi() + .then(() => { + // Reacting when a new device becomes available + WebMidi.addListener('connected', (e) => { + setOutputs([...WebMidi.outputs]); + connected?.(WebMidi, e); + }); + // Reacting when a device becomes unavailable + WebMidi.addListener('disconnected', (e) => { + setOutputs([...WebMidi.outputs]); + disconnected?.(WebMidi, e); + }); + ready?.(WebMidi); + setLoading(false); + }) + .catch((err) => { + if (err) { + //throw new Error("Web Midi could not be enabled..."); + console.warn('Web Midi could not be enabled..'); + return; + } + }); + }, [ready, connected, disconnected, outputs]); + const outputByName = (name) => WebMidi.getOutputByName(name); + return { loading, outputs, outputByName }; +} diff --git a/packages/tonal/package.json b/packages/tonal/package.json new file mode 100644 index 00000000..57d1d877 --- /dev/null +++ b/packages/tonal/package.json @@ -0,0 +1,27 @@ +{ + "name": "@strudel/tonal", + "version": "0.0.1", + "description": "Tonal functions for strudel", + "main": "tonal.mjs", + "type": "module", + "scripts": { + "test": "mocha --colors" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "keywords": [ + "tidalcycles", + "strudel", + "pattern", + "livecoding", + "algorave" + ], + "author": "Felix Roos ", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://github.com/tidalcycles/strudel#readme" +} diff --git a/packages/tonal/test/tonal.test.mjs b/packages/tonal/test/tonal.test.mjs new file mode 100644 index 00000000..06628b5c --- /dev/null +++ b/packages/tonal/test/tonal.test.mjs @@ -0,0 +1,9 @@ +import { strict as assert } from 'assert'; +import '../tonal.mjs'; // need to import this to add prototypes +import { pure } from '../../core/strudel.mjs'; + +describe('tonal', () => { + it('Should run tonal functions ', () => { + assert.deepStrictEqual(pure('c3').scale('C major').scaleTranspose(1)._firstCycleValues, ['D3']); + }); +}); diff --git a/repl/src/tonal.mjs b/packages/tonal/tonal.mjs similarity index 96% rename from repl/src/tonal.mjs rename to packages/tonal/tonal.mjs index 30cc126c..c1e0a440 100644 --- a/repl/src/tonal.mjs +++ b/packages/tonal/tonal.mjs @@ -1,6 +1,6 @@ import { Note, Interval, Scale } from '@tonaljs/tonal'; -import { Pattern as _Pattern } from '../../strudel.mjs'; -import { mod, tokenizeNote } from '../../util.mjs'; +import { Pattern as _Pattern } from '../core/strudel.mjs'; +import { mod, tokenizeNote } from '../../packages/core/util.mjs'; const Pattern = _Pattern; // as any; diff --git a/repl/src/voicings.ts b/packages/tonal/voicings.mjs similarity index 90% rename from repl/src/voicings.ts rename to packages/tonal/voicings.mjs index 4901e436..7951a8c8 100644 --- a/repl/src/voicings.ts +++ b/packages/tonal/voicings.mjs @@ -1,4 +1,4 @@ -import { Pattern as _Pattern, stack, Hap, reify } from '../../strudel.mjs'; +import { Pattern as _Pattern, stack, Hap, reify } from '../core/strudel.mjs'; import _voicings from 'chord-voicings'; const { dictionaryVoicing, minTopNoteDiff, lefthand } = _voicings; @@ -11,7 +11,7 @@ const getVoicing = (chord, lastVoicing, range = ['F3', 'A4']) => lastVoicing, }); -const Pattern = _Pattern as any; +const Pattern = _Pattern; Pattern.prototype.fmapNested = function (func) { return new Pattern((span) => @@ -19,9 +19,9 @@ Pattern.prototype.fmapNested = function (func) { .map((event) => reify(func(event)) .query(span) - .map((hap) => new Hap(event.whole, event.part, hap.value, hap.context)) + .map((hap) => new Hap(event.whole, event.part, hap.value, hap.context)), ) - .flat() + .flat(), ); }; diff --git a/packages/tone/package-lock.json b/packages/tone/package-lock.json new file mode 100644 index 00000000..c84f01f8 --- /dev/null +++ b/packages/tone/package-lock.json @@ -0,0 +1,603 @@ +{ + "name": "@strudel/tone", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@strudel/tone", + "version": "0.0.1", + "license": "GPL-3.0-or-later", + "dependencies": { + "@tonejs/piano": "^0.2.1", + "chord-voicings": "^0.0.1", + "tone": "^14.7.77" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@tonaljs/abc-notation": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/abc-notation/-/abc-notation-4.6.5.tgz", + "integrity": "sha512-1S0Jnx0NfDLgyhkQOMEHqOacELL6RUdPcWWUP+nAnsOsb9owvB9RKYLSzp5odd16FVUR7U8c/JLc2yxIRvSeJw==", + "dependencies": { + "@tonaljs/core": "^4.6.5" + } + }, + "node_modules/@tonaljs/array": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/array/-/array-4.6.5.tgz", + "integrity": "sha512-7A3DbBQ+qIQ134FqE518b4tJ8V2a15Sn303JjHzgnqZqKrNh/s3wqwkL60F7LKcd09tcp+vIKQP/MYt4xMcRAA==", + "dependencies": { + "@tonaljs/core": "^4.6.5" + } + }, + "node_modules/@tonaljs/chord": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/chord/-/chord-4.6.5.tgz", + "integrity": "sha512-Pjdel4aDVv4kcx9PW6Qozt5BB9nAt13AOExfzKztpgPmlBSy0SKHse7Jp1cA4MGAuLHU8dzVssTFYpCskEFw3w==", + "dependencies": { + "@tonaljs/chord-detect": "^4.6.5", + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5" + } + }, + "node_modules/@tonaljs/chord-detect": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/chord-detect/-/chord-detect-4.6.5.tgz", + "integrity": "sha512-4xu53UP4kNTfdTNpAAVijhXcQ+ypJqmeMnsST08ZXSjoYfJUhmf5rWDWfz36KOTtNdCA6AbYgdtTYV/Xw0nd/w==", + "dependencies": { + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5" + } + }, + "node_modules/@tonaljs/chord-type": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/chord-type/-/chord-type-4.6.5.tgz", + "integrity": "sha512-Ol4DDopqpZCF9odosO2i8I+plud3Ul7VWJGNvL+PPCf4Qnwuz87q3aJQDLNoRUz4VyW0u66mq3LyVh6A8kb6Ug==", + "dependencies": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5" + } + }, + "node_modules/@tonaljs/collection": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@tonaljs/collection/-/collection-4.6.2.tgz", + "integrity": "sha512-bfPCotLJNB/tG1NrdbsQPLDKZB5jlMs7uPQ6RYKiNkaena3345ZKkbCGl5pj6YTXeDm/oblXiSbFAn7SlLRZdQ==" + }, + "node_modules/@tonaljs/core": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/core/-/core-4.6.5.tgz", + "integrity": "sha512-t7Vx0+L3j/ubQj2AhI1H45D/K745np4DwJjJjXNi5FlGD+TL2wyw50dCwkHKGHsrLDqup1qqP6yN7LBpC6UwNg==" + }, + "node_modules/@tonaljs/duration-value": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@tonaljs/duration-value/-/duration-value-4.6.2.tgz", + "integrity": "sha512-zrXT0L/qsDQ6251Mlqz54vcUbYUB9xb6uJhlxUzc6VauXOt8UOfrdTULubRTXTaBwWt1h8J5n9pXTQmNGzNI9A==" + }, + "node_modules/@tonaljs/interval": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/interval/-/interval-4.6.5.tgz", + "integrity": "sha512-7EDWhqZ7Nnh9oD4ahRYJHLc799ACGxYL4hDHwMKD16B2MgXqPvDeDvwQ31qUuO0ruGz8tMb3FDlgg0Hplowcbw==", + "dependencies": { + "@tonaljs/core": "^4.6.5" + } + }, + "node_modules/@tonaljs/key": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/key/-/key-4.6.5.tgz", + "integrity": "sha512-ZdZWb5IStx6CLRmdEjawR66CqNpoW3EVUua2nVZBMdgnNebWxt4nvgH/ZNvGlCQGFZkUZzRhCfTwqsS6e3OmSA==", + "dependencies": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/note": "^4.6.5", + "@tonaljs/roman-numeral": "^4.6.5" + } + }, + "node_modules/@tonaljs/midi": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/midi/-/midi-4.6.5.tgz", + "integrity": "sha512-fJEZtNvV3M6yW1w+Tep60Rbv5PvuKszQcQzaJS1Loq5mHOKAzdmRfuJSpEpZBiaKEZ1WAMh1QKXYyOd+imyGQg==", + "dependencies": { + "@tonaljs/core": "^4.6.5" + } + }, + "node_modules/@tonaljs/mode": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/mode/-/mode-4.6.5.tgz", + "integrity": "sha512-54iaON1rJ6q8fV5iuei8RGDxYhKBGGxZz3rjAxGSqdTUwBRVOdPqtzOkofThf9gRGYOMhzPp1BMbxbV+UCAPsA==", + "dependencies": { + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/interval": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5" + } + }, + "node_modules/@tonaljs/note": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/note/-/note-4.6.5.tgz", + "integrity": "sha512-Y0/eTzcReXzfcSLLG4k/dLLayqbvh/XYIkybG/QMDyR0BREuJq0Sw+NavbzhTtO0dadIQb/qfe0GFq4k2xS+NQ==", + "dependencies": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/midi": "^4.6.5" + } + }, + "node_modules/@tonaljs/pcset": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/pcset/-/pcset-4.6.5.tgz", + "integrity": "sha512-oWAKflP3cREnUfScqsBzg2LLKNevxSnpDtrq8CPtwOAsrAa8PjQG07NQfhqIiFMjPUdgkDiER3qVA1n8dDwAJA==", + "dependencies": { + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5" + } + }, + "node_modules/@tonaljs/progression": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/progression/-/progression-4.6.5.tgz", + "integrity": "sha512-ijYEgMFQG4izHYUw5cRtBRNBuoYzmpGvb/tRiykhJNI6XIjekZEMiMsOMfb1u5q+EGvnVNXRmrluMRDIz2rmRw==", + "dependencies": { + "@tonaljs/chord": "^4.6.5", + "@tonaljs/core": "^4.6.5", + "@tonaljs/roman-numeral": "^4.6.5" + } + }, + "node_modules/@tonaljs/range": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/range/-/range-4.6.5.tgz", + "integrity": "sha512-99cOvVJ3l4X0UJuTSa6qE87JriREnnWIsi3xo1/n7RoqFxnfi8YPh4SfJJyysvHcT18X4EfcTNde9ancMBVu6A==", + "dependencies": { + "@tonaljs/collection": "^4.6.2", + "@tonaljs/midi": "^4.6.5" + } + }, + "node_modules/@tonaljs/roman-numeral": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/roman-numeral/-/roman-numeral-4.6.5.tgz", + "integrity": "sha512-bWYQNZWKmYDDcmbQQNwcWAHfTWanpzmvI0wplrMnGd4x0op5etwUEv+Yzjg0B1ef+E+zcU02Sl0WwRJhaDK3hg==", + "dependencies": { + "@tonaljs/core": "^4.6.5" + } + }, + "node_modules/@tonaljs/scale": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/scale/-/scale-4.6.5.tgz", + "integrity": "sha512-isYDamelOBtcd5bEnJ8QV0Js7jKRwZ0FlFVE/+bUN3wsyo9u6KLL5gMyfH9RKdx74m8lE13JXYTXgKqe+AOa4A==", + "dependencies": { + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/note": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5" + } + }, + "node_modules/@tonaljs/scale-type": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/scale-type/-/scale-type-4.6.5.tgz", + "integrity": "sha512-rwcDOYf2UifjLJhmuQ8f8bJSeOCMDQJ1lB7lzlqdFxes03OeQhdOEfrT0nPtW8BhBEvq4GMM2NA6CLxX8MTwOQ==", + "dependencies": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5" + } + }, + "node_modules/@tonaljs/time-signature": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@tonaljs/time-signature/-/time-signature-4.6.2.tgz", + "integrity": "sha512-OlZY4gdLd21WpMeAI1nS9E9zWcYU6oAzh6ptAUndqmVnFIrIWIWKCkWapdFx8dWdqrX8jqya3m4T33wmeo7w5Q==" + }, + "node_modules/@tonaljs/tonal": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/tonal/-/tonal-4.6.5.tgz", + "integrity": "sha512-lmsWinI9dy7nQyzCEgDVeVAwJtsk4ey05cJZd6oa4QVuSFD+CR8ebaEiwT4/Na+W0kHrKicT3h0uYc2PJIvx5Q==", + "dependencies": { + "@tonaljs/abc-notation": "^4.6.5", + "@tonaljs/array": "^4.6.5", + "@tonaljs/chord": "^4.6.5", + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/duration-value": "^4.6.2", + "@tonaljs/interval": "^4.6.5", + "@tonaljs/key": "^4.6.5", + "@tonaljs/midi": "^4.6.5", + "@tonaljs/mode": "^4.6.5", + "@tonaljs/note": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/progression": "^4.6.5", + "@tonaljs/range": "^4.6.5", + "@tonaljs/roman-numeral": "^4.6.5", + "@tonaljs/scale": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5", + "@tonaljs/time-signature": "^4.6.2" + } + }, + "node_modules/@tonejs/piano": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@tonejs/piano/-/piano-0.2.1.tgz", + "integrity": "sha512-JIwZ91RSFR7Rt16o7cA7O7G30wenFl0lY5yhTsuwZmn48MO9KV+X7kyXE98Bqvs/dCBVg9PoAJ1GKMabPOW4yQ==", + "dependencies": { + "tslib": "^1.11.1" + }, + "peerDependencies": { + "tone": "^14.6.1", + "webmidi": "^2.5.1" + } + }, + "node_modules/automation-events": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.14.tgz", + "integrity": "sha512-CB2Me0yW8sz7gSGwMiSfgfs1Oqlgs53k+eVESN6axvRyMAD3zlSp2nqndD2TQAtW3yOtSEJWNGsw0r48+f1wtw==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.20.1" + } + }, + "node_modules/automation-events/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/chord-voicings": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/chord-voicings/-/chord-voicings-0.0.1.tgz", + "integrity": "sha512-SutgB/4ynkkuiK6qdQ/k3QvCFcH0Vj8Ch4t6LbRyRQbVzP/TOztiCk3kvXd516UZ6fqk7ijDRELEFcKN+6V8sA==", + "dependencies": { + "@tonaljs/tonal": "^4.6.5" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/standardized-audio-context": { + "version": "25.3.21", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.21.tgz", + "integrity": "sha512-CZEnayJJjNefeU+z1QGDhaid1LAAYxWYa2ipNk75ropwec9rq6fmclyhXb1wGtDsZ402irX3HLt1U/PwP9+1fA==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "automation-events": "^4.0.14", + "tslib": "^2.3.1" + } + }, + "node_modules/standardized-audio-context/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tone": { + "version": "14.7.77", + "resolved": "https://registry.npmjs.org/tone/-/tone-14.7.77.tgz", + "integrity": "sha512-tCfK73IkLHyzoKUvGq47gyDyxiKLFvKiVCOobynGgBB9Dl0NkxTM2p+eRJXyCYrjJwy9Y0XCMqD3uOYsYt2Fdg==", + "dependencies": { + "standardized-audio-context": "^25.1.8", + "tslib": "^2.0.1" + } + }, + "node_modules/tone/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/webmidi": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/webmidi/-/webmidi-2.5.3.tgz", + "integrity": "sha512-PyMGvKcDGpvbQUfnmBORQJciyG3VAZ4aHlGy1iRZ3uEs4kG4HCvI7KRthUpM1vuHDPL98lidRIUaoRomkJtWtg==", + "peer": true, + "engines": { + "node": ">0.6.x" + } + } + }, + "dependencies": { + "@babel/runtime": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@tonaljs/abc-notation": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/abc-notation/-/abc-notation-4.6.5.tgz", + "integrity": "sha512-1S0Jnx0NfDLgyhkQOMEHqOacELL6RUdPcWWUP+nAnsOsb9owvB9RKYLSzp5odd16FVUR7U8c/JLc2yxIRvSeJw==", + "requires": { + "@tonaljs/core": "^4.6.5" + } + }, + "@tonaljs/array": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/array/-/array-4.6.5.tgz", + "integrity": "sha512-7A3DbBQ+qIQ134FqE518b4tJ8V2a15Sn303JjHzgnqZqKrNh/s3wqwkL60F7LKcd09tcp+vIKQP/MYt4xMcRAA==", + "requires": { + "@tonaljs/core": "^4.6.5" + } + }, + "@tonaljs/chord": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/chord/-/chord-4.6.5.tgz", + "integrity": "sha512-Pjdel4aDVv4kcx9PW6Qozt5BB9nAt13AOExfzKztpgPmlBSy0SKHse7Jp1cA4MGAuLHU8dzVssTFYpCskEFw3w==", + "requires": { + "@tonaljs/chord-detect": "^4.6.5", + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5" + } + }, + "@tonaljs/chord-detect": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/chord-detect/-/chord-detect-4.6.5.tgz", + "integrity": "sha512-4xu53UP4kNTfdTNpAAVijhXcQ+ypJqmeMnsST08ZXSjoYfJUhmf5rWDWfz36KOTtNdCA6AbYgdtTYV/Xw0nd/w==", + "requires": { + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5" + } + }, + "@tonaljs/chord-type": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/chord-type/-/chord-type-4.6.5.tgz", + "integrity": "sha512-Ol4DDopqpZCF9odosO2i8I+plud3Ul7VWJGNvL+PPCf4Qnwuz87q3aJQDLNoRUz4VyW0u66mq3LyVh6A8kb6Ug==", + "requires": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5" + } + }, + "@tonaljs/collection": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@tonaljs/collection/-/collection-4.6.2.tgz", + "integrity": "sha512-bfPCotLJNB/tG1NrdbsQPLDKZB5jlMs7uPQ6RYKiNkaena3345ZKkbCGl5pj6YTXeDm/oblXiSbFAn7SlLRZdQ==" + }, + "@tonaljs/core": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/core/-/core-4.6.5.tgz", + "integrity": "sha512-t7Vx0+L3j/ubQj2AhI1H45D/K745np4DwJjJjXNi5FlGD+TL2wyw50dCwkHKGHsrLDqup1qqP6yN7LBpC6UwNg==" + }, + "@tonaljs/duration-value": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@tonaljs/duration-value/-/duration-value-4.6.2.tgz", + "integrity": "sha512-zrXT0L/qsDQ6251Mlqz54vcUbYUB9xb6uJhlxUzc6VauXOt8UOfrdTULubRTXTaBwWt1h8J5n9pXTQmNGzNI9A==" + }, + "@tonaljs/interval": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/interval/-/interval-4.6.5.tgz", + "integrity": "sha512-7EDWhqZ7Nnh9oD4ahRYJHLc799ACGxYL4hDHwMKD16B2MgXqPvDeDvwQ31qUuO0ruGz8tMb3FDlgg0Hplowcbw==", + "requires": { + "@tonaljs/core": "^4.6.5" + } + }, + "@tonaljs/key": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/key/-/key-4.6.5.tgz", + "integrity": "sha512-ZdZWb5IStx6CLRmdEjawR66CqNpoW3EVUua2nVZBMdgnNebWxt4nvgH/ZNvGlCQGFZkUZzRhCfTwqsS6e3OmSA==", + "requires": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/note": "^4.6.5", + "@tonaljs/roman-numeral": "^4.6.5" + } + }, + "@tonaljs/midi": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/midi/-/midi-4.6.5.tgz", + "integrity": "sha512-fJEZtNvV3M6yW1w+Tep60Rbv5PvuKszQcQzaJS1Loq5mHOKAzdmRfuJSpEpZBiaKEZ1WAMh1QKXYyOd+imyGQg==", + "requires": { + "@tonaljs/core": "^4.6.5" + } + }, + "@tonaljs/mode": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/mode/-/mode-4.6.5.tgz", + "integrity": "sha512-54iaON1rJ6q8fV5iuei8RGDxYhKBGGxZz3rjAxGSqdTUwBRVOdPqtzOkofThf9gRGYOMhzPp1BMbxbV+UCAPsA==", + "requires": { + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/interval": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5" + } + }, + "@tonaljs/note": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/note/-/note-4.6.5.tgz", + "integrity": "sha512-Y0/eTzcReXzfcSLLG4k/dLLayqbvh/XYIkybG/QMDyR0BREuJq0Sw+NavbzhTtO0dadIQb/qfe0GFq4k2xS+NQ==", + "requires": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/midi": "^4.6.5" + } + }, + "@tonaljs/pcset": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/pcset/-/pcset-4.6.5.tgz", + "integrity": "sha512-oWAKflP3cREnUfScqsBzg2LLKNevxSnpDtrq8CPtwOAsrAa8PjQG07NQfhqIiFMjPUdgkDiER3qVA1n8dDwAJA==", + "requires": { + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5" + } + }, + "@tonaljs/progression": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/progression/-/progression-4.6.5.tgz", + "integrity": "sha512-ijYEgMFQG4izHYUw5cRtBRNBuoYzmpGvb/tRiykhJNI6XIjekZEMiMsOMfb1u5q+EGvnVNXRmrluMRDIz2rmRw==", + "requires": { + "@tonaljs/chord": "^4.6.5", + "@tonaljs/core": "^4.6.5", + "@tonaljs/roman-numeral": "^4.6.5" + } + }, + "@tonaljs/range": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/range/-/range-4.6.5.tgz", + "integrity": "sha512-99cOvVJ3l4X0UJuTSa6qE87JriREnnWIsi3xo1/n7RoqFxnfi8YPh4SfJJyysvHcT18X4EfcTNde9ancMBVu6A==", + "requires": { + "@tonaljs/collection": "^4.6.2", + "@tonaljs/midi": "^4.6.5" + } + }, + "@tonaljs/roman-numeral": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/roman-numeral/-/roman-numeral-4.6.5.tgz", + "integrity": "sha512-bWYQNZWKmYDDcmbQQNwcWAHfTWanpzmvI0wplrMnGd4x0op5etwUEv+Yzjg0B1ef+E+zcU02Sl0WwRJhaDK3hg==", + "requires": { + "@tonaljs/core": "^4.6.5" + } + }, + "@tonaljs/scale": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/scale/-/scale-4.6.5.tgz", + "integrity": "sha512-isYDamelOBtcd5bEnJ8QV0Js7jKRwZ0FlFVE/+bUN3wsyo9u6KLL5gMyfH9RKdx74m8lE13JXYTXgKqe+AOa4A==", + "requires": { + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/note": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5" + } + }, + "@tonaljs/scale-type": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/scale-type/-/scale-type-4.6.5.tgz", + "integrity": "sha512-rwcDOYf2UifjLJhmuQ8f8bJSeOCMDQJ1lB7lzlqdFxes03OeQhdOEfrT0nPtW8BhBEvq4GMM2NA6CLxX8MTwOQ==", + "requires": { + "@tonaljs/core": "^4.6.5", + "@tonaljs/pcset": "^4.6.5" + } + }, + "@tonaljs/time-signature": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@tonaljs/time-signature/-/time-signature-4.6.2.tgz", + "integrity": "sha512-OlZY4gdLd21WpMeAI1nS9E9zWcYU6oAzh6ptAUndqmVnFIrIWIWKCkWapdFx8dWdqrX8jqya3m4T33wmeo7w5Q==" + }, + "@tonaljs/tonal": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@tonaljs/tonal/-/tonal-4.6.5.tgz", + "integrity": "sha512-lmsWinI9dy7nQyzCEgDVeVAwJtsk4ey05cJZd6oa4QVuSFD+CR8ebaEiwT4/Na+W0kHrKicT3h0uYc2PJIvx5Q==", + "requires": { + "@tonaljs/abc-notation": "^4.6.5", + "@tonaljs/array": "^4.6.5", + "@tonaljs/chord": "^4.6.5", + "@tonaljs/chord-type": "^4.6.5", + "@tonaljs/collection": "^4.6.2", + "@tonaljs/core": "^4.6.5", + "@tonaljs/duration-value": "^4.6.2", + "@tonaljs/interval": "^4.6.5", + "@tonaljs/key": "^4.6.5", + "@tonaljs/midi": "^4.6.5", + "@tonaljs/mode": "^4.6.5", + "@tonaljs/note": "^4.6.5", + "@tonaljs/pcset": "^4.6.5", + "@tonaljs/progression": "^4.6.5", + "@tonaljs/range": "^4.6.5", + "@tonaljs/roman-numeral": "^4.6.5", + "@tonaljs/scale": "^4.6.5", + "@tonaljs/scale-type": "^4.6.5", + "@tonaljs/time-signature": "^4.6.2" + } + }, + "@tonejs/piano": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@tonejs/piano/-/piano-0.2.1.tgz", + "integrity": "sha512-JIwZ91RSFR7Rt16o7cA7O7G30wenFl0lY5yhTsuwZmn48MO9KV+X7kyXE98Bqvs/dCBVg9PoAJ1GKMabPOW4yQ==", + "requires": { + "tslib": "^1.11.1" + } + }, + "automation-events": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-4.0.14.tgz", + "integrity": "sha512-CB2Me0yW8sz7gSGwMiSfgfs1Oqlgs53k+eVESN6axvRyMAD3zlSp2nqndD2TQAtW3yOtSEJWNGsw0r48+f1wtw==", + "requires": { + "@babel/runtime": "^7.17.2", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "chord-voicings": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/chord-voicings/-/chord-voicings-0.0.1.tgz", + "integrity": "sha512-SutgB/4ynkkuiK6qdQ/k3QvCFcH0Vj8Ch4t6LbRyRQbVzP/TOztiCk3kvXd516UZ6fqk7ijDRELEFcKN+6V8sA==", + "requires": { + "@tonaljs/tonal": "^4.6.5" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "standardized-audio-context": { + "version": "25.3.21", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.21.tgz", + "integrity": "sha512-CZEnayJJjNefeU+z1QGDhaid1LAAYxWYa2ipNk75ropwec9rq6fmclyhXb1wGtDsZ402irX3HLt1U/PwP9+1fA==", + "requires": { + "@babel/runtime": "^7.17.2", + "automation-events": "^4.0.14", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "tone": { + "version": "14.7.77", + "resolved": "https://registry.npmjs.org/tone/-/tone-14.7.77.tgz", + "integrity": "sha512-tCfK73IkLHyzoKUvGq47gyDyxiKLFvKiVCOobynGgBB9Dl0NkxTM2p+eRJXyCYrjJwy9Y0XCMqD3uOYsYt2Fdg==", + "requires": { + "standardized-audio-context": "^25.1.8", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "webmidi": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/webmidi/-/webmidi-2.5.3.tgz", + "integrity": "sha512-PyMGvKcDGpvbQUfnmBORQJciyG3VAZ4aHlGy1iRZ3uEs4kG4HCvI7KRthUpM1vuHDPL98lidRIUaoRomkJtWtg==", + "peer": true + } + } +} diff --git a/packages/tone/package.json b/packages/tone/package.json new file mode 100644 index 00000000..1d66b39e --- /dev/null +++ b/packages/tone/package.json @@ -0,0 +1,32 @@ +{ + "name": "@strudel/tone", + "version": "0.0.1", + "description": "Tone.js API for strudel", + "main": "tone.mjs", + "type": "module", + "scripts": { + "test": "mocha --colors" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "keywords": [ + "tidalcycles", + "strudel", + "pattern", + "livecoding", + "algorave" + ], + "author": "Felix Roos ", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://github.com/tidalcycles/strudel#readme", + "dependencies": { + "@tonejs/piano": "^0.2.1", + "chord-voicings": "^0.0.1", + "tone": "^14.7.77" + } +} diff --git a/packages/tone/test/tone.test.mjs b/packages/tone/test/tone.test.mjs new file mode 100644 index 00000000..fe0507ce --- /dev/null +++ b/packages/tone/test/tone.test.mjs @@ -0,0 +1,12 @@ +import { strict as assert } from 'assert'; +import '../tone.mjs'; +import { pure } from '../../core/strudel.mjs'; +import Tone from 'tone'; + +describe('tone', () => { + it('Should have working tone function', () => { + const s = synth().chain(out()); + assert.deepStrictEqual(s, new Tone.Synth().chain(out())); + assert.deepStrictEqual(pure('c3').tone(s)._firstCycleValues, ['c3']); + }); +}); diff --git a/repl/src/tone.ts b/packages/tone/tone.mjs similarity index 82% rename from repl/src/tone.ts rename to packages/tone/tone.mjs index 0d71a0a1..c0625105 100644 --- a/repl/src/tone.ts +++ b/packages/tone/tone.mjs @@ -1,5 +1,6 @@ -import { Pattern as _Pattern } from '../../strudel.mjs'; -import { +import { Pattern as _Pattern } from '../core/strudel.mjs'; +import Tone from 'tone'; +const { AutoFilter, Destination, Filter, @@ -18,9 +19,10 @@ import { Sampler, getDestination, Players, -} from 'tone'; -import { Piano } from '@tonejs/piano'; -import { getPlayableNoteValue } from '../../util.mjs'; +} = Tone; +/* import tonePiano from '@tonejs/piano'; +const { Piano } = tonePiano; */ +import { getPlayableNoteValue } from '../../packages/core/util.mjs'; // "balanced" | "interactive" | "playback"; // Tone.setContext(new Tone.Context({ latencyHint: 'playback', lookAhead: 1 })); @@ -35,7 +37,7 @@ defaultSynth.set({ // what about // https://www.charlie-roberts.com/gibberish/playground/ -const Pattern = _Pattern as any; +const Pattern = _Pattern; // with this function, you can play the pattern with any tone synth Pattern.prototype.tone = function (instrument) { @@ -98,17 +100,17 @@ export const sampler = (options, baseUrl) => export const players = (options, baseUrl = '') => { options = !baseUrl ? options - : Object.fromEntries(Object.entries(options).map(([key, value]: any) => [key, baseUrl + value])); + : Object.fromEntries(Object.entries(options).map(([key, value]) => [key, baseUrl + value])); return new Promise((resolve) => { const s = new Players(options, () => resolve(s)); }); }; export const synth = (options) => new Synth(options); -export const piano = async (options = { velocities: 1 }) => { +/* export const piano = async (options = { velocities: 1 }) => { const p = new Piano(options); await p.load(); return p; -}; +}; */ // effect helpers export const vol = (v) => new Gain(v); @@ -128,29 +130,30 @@ You are entering experimental zone const chainable = function (instr) { const _chain = instr.chain.bind(instr); - let chained: any = []; + let chained = []; instr.chain = (...args) => { chained = chained.concat(args); instr.disconnect(); // disconnect from destination / previous chain return _chain(...chained, getDestination()); }; // shortcuts: chaining multiple won't work forn now.. like filter(1000).gain(0.5). use chain + native Tone calls instead - instr.filter = (freq = 1000, type: BiquadFilterType = 'lowpass') => + // instr.filter = (freq = 1000, type: BiquadFilterType = 'lowpass') => + instr.filter = (freq = 1000, type = 'lowpass') => instr.chain( - new Filter(freq, type) // .Q.setValueAtTime(q, time); + new Filter(freq, type), // .Q.setValueAtTime(q, time); ); - instr.gain = (gain: number = 0.9) => instr.chain(new Gain(gain)); + instr.gain = (gain = 0.9) => instr.chain(new Gain(gain)); return instr; }; // helpers export const poly = (type) => { - const s: any = new PolySynth(Synth, { oscillator: { type } }).toDestination(); + const s = new PolySynth(Synth, { oscillator: { type } }).toDestination(); return chainable(s); }; -Pattern.prototype._poly = function (type: any = 'triangle') { - const instrumentConfig: any = { +Pattern.prototype._poly = function (type = 'triangle') { + const instrumentConfig = { oscillator: { type }, envelope: { attack: 0.01, decay: 0.01, sustain: 0.6, release: 0.01 }, }; @@ -159,7 +162,7 @@ Pattern.prototype._poly = function (type: any = 'triangle') { // this.instrument = new PolySynth(Synth, instrumentConfig).toDestination(); this.instrument = poly(type); } - return this._withEvent((event: any) => { + return this._withEvent((event) => { const onTrigger = (time, event) => { this.instrument.set(instrumentConfig); this.instrument.triggerAttackRelease(event.value, event.duration, time); @@ -178,7 +181,7 @@ You are entering danger zone // everything below is nice in theory, but not healthy for the JS heap, as nodes get recreated on every call -const getTrigger = (getChain: any, value: any) => (time: number, event: any) => { +const getTrigger = (getChain, value) => (time, event) => { const chain = getChain(); // make sure this returns a node that is connected toDestination // time if (!isNote(value)) { throw new Error('not a note: ' + value); @@ -190,9 +193,9 @@ const getTrigger = (getChain: any, value: any) => (time: number, event: any) => }, event.duration * 2000); }; -Pattern.prototype._synth = function (type: any = 'triangle') { - return this._withEvent((event: any) => { - const instrumentConfig: any = { +Pattern.prototype._synth = function (type = 'triangle') { + return this._withEvent((event) => { + const instrumentConfig = { oscillator: { type }, envelope: { attack: 0.01, decay: 0.01, sustain: 0.6, release: 0.01 }, }; @@ -207,7 +210,7 @@ Pattern.prototype._synth = function (type: any = 'triangle') { }; Pattern.prototype.adsr = function (attack = 0.01, decay = 0.01, sustain = 0.6, release = 0.01) { - return this._withEvent((event: any) => { + return this._withEvent((event) => { if (!event.context.getInstrument) { throw new Error('cannot chain adsr: need instrument first (like synth)'); } @@ -222,14 +225,14 @@ Pattern.prototype.adsr = function (attack = 0.01, decay = 0.01, sustain = 0.6, r }); }; -Pattern.prototype.chain = function (...effectGetters: any) { - return this._withEvent((event: any) => { +Pattern.prototype.chain = function (...effectGetters) { + return this._withEvent((event) => { if (!event.context?.getInstrument) { throw new Error('cannot chain: need instrument first (like synth)'); } const chain = (event.context.chain || []).concat(effectGetters); const getChain = () => { - const effects = chain.map((getEffect: any) => getEffect()); + const effects = chain.map((getEffect) => getEffect()); return event.context.getInstrument().chain(...effects, getDestination()); }; const onTrigger = getTrigger(getChain, event.value); @@ -243,22 +246,26 @@ export const autofilter = new AutoFilter(freq).start(); export const filter = - (freq = 1, q = 1, type: BiquadFilterType = 'lowpass') => - () => - new Filter(freq, type); // .Q.setValueAtTime(q, time); + // (freq = 1, q = 1, type: BiquadFilterType = 'lowpass') => + + + (freq = 1, q = 1, type = 'lowpass') => + () => + new Filter(freq, type); // .Q.setValueAtTime(q, time); export const gain = - (gain: number = 0.9) => + (gain = 0.9) => () => new Gain(gain); -Pattern.prototype._gain = function (g: number) { +Pattern.prototype._gain = function (g) { return this.chain(gain(g)); }; -Pattern.prototype._filter = function (freq: number, q: number, type: BiquadFilterType = 'lowpass') { +// Pattern.prototype._filter = function (freq: number, q: number, type: BiquadFilterType = 'lowpass') { +Pattern.prototype._filter = function (freq, q, type = 'lowpass') { return this.chain(filter(freq, q, type)); }; -Pattern.prototype._autofilter = function (g: number) { +Pattern.prototype._autofilter = function (g) { return this.chain(autofilter(g)); }; diff --git a/packages/tunes/oldtunes.ts b/packages/tunes/oldtunes.ts new file mode 100644 index 00000000..6ac25dda --- /dev/null +++ b/packages/tunes/oldtunes.ts @@ -0,0 +1,164 @@ +export const timeCatMini = `stack( + "c3@3 [eb3, g3, [c4 d4]/2]", + "c2 g2", + "[eb4@5 [f4 eb4 d4]@3] [eb4 c4]/2".slow(8) +)`; + +export const timeCat = `stack( + timeCat([3, c3], [1, stack(eb3, g3, cat(c4, d4).slow(2))]), + cat(c2, g2), + sequence( + timeCat([5, eb4], [3, cat(f4, eb4, d4)]), + cat(eb4, c4).slow(2) + ).slow(4) +)`; + +export const shapeShifted = `stack( + sequence( + e5, [b4, c5], d5, [c5, b4], + a4, [a4, c5], e5, [d5, c5], + b4, [r, c5], d5, e5, + c5, a4, a4, r, + [r, d5], [r, f5], a5, [g5, f5], + e5, [r, c5], e5, [d5, c5], + b4, [b4, c5], d5, e5, + c5, a4, a4, r, + ).rev(), + sequence( + e2, e3, e2, e3, e2, e3, e2, e3, + a2, a3, a2, a3, a2, a3, a2, a3, + gs2, gs3, gs2, gs3, e2, e3, e2, e3, + a2, a3, a2, a3, a2, a3, b1, c2, + d2, d3, d2, d3, d2, d3, d2, d3, + c2, c3, c2, c3, c2, c3, c2, c3, + b1, b2, b1, b2, e2, e3, e2, e3, + a1, a2, a1, a2, a1, a2, a1, a2, + ).rev() +).slow(16)`; + +export const tetrisWithFunctions = `stack(sequence( + 'e5', sequence('b4', 'c5'), 'd5', sequence('c5', 'b4'), + 'a4', sequence('a4', 'c5'), 'e5', sequence('d5', 'c5'), + 'b4', sequence(silence, 'c5'), 'd5', 'e5', + 'c5', 'a4', 'a4', silence, + sequence(silence, 'd5'), sequence(silence, 'f5'), 'a5', sequence('g5', 'f5'), + 'e5', sequence(silence, 'c5'), 'e5', sequence('d5', 'c5'), + 'b4', sequence('b4', 'c5'), 'd5', 'e5', + 'c5', 'a4', 'a4', silence), + sequence( + 'e2', 'e3', 'e2', 'e3', 'e2', 'e3', 'e2', 'e3', + 'a2', 'a3', 'a2', 'a3', 'a2', 'a3', 'a2', 'a3', + 'g#2', 'g#3', 'g#2', 'g#3', 'e2', 'e3', 'e2', 'e3', + 'a2', 'a3', 'a2', 'a3', 'a2', 'a3', 'b1', 'c2', + 'd2', 'd3', 'd2', 'd3', 'd2', 'd3', 'd2', 'd3', + 'c2', 'c3', 'c2', 'c3', 'c2', 'c3', 'c2', 'c3', + 'b1', 'b2', 'b1', 'b2', 'e2', 'e3', 'e2', 'e3', + 'a1', 'a2', 'a1', 'a2', 'a1', 'a2', 'a1', 'a2', + ) +).slow(16)`; + +export const tetris = `stack( + cat( + "e5 [b4 c5] d5 [c5 b4]", + "a4 [a4 c5] e5 [d5 c5]", + "b4 [~ c5] d5 e5", + "c5 a4 a4 ~", + "[~ d5] [~ f5] a5 [g5 f5]", + "e5 [~ c5] e5 [d5 c5]", + "b4 [b4 c5] d5 e5", + "c5 a4 a4 ~" + ), + cat( + "e2 e3 e2 e3 e2 e3 e2 e3", + "a2 a3 a2 a3 a2 a3 a2 a3", + "g#2 g#3 g#2 g#3 e2 e3 e2 e3", + "a2 a3 a2 a3 a2 a3 b1 c2", + "d2 d3 d2 d3 d2 d3 d2 d3", + "c2 c3 c2 c3 c2 c3 c2 c3", + "b1 b2 b1 b2 e2 e3 e2 e3", + "a1 a2 a1 a2 a1 a2 a1 a2", + ) +).slow(16)`; + +export const tetrisMini = `\`[[e5 [b4 c5] d5 [c5 b4]] +[a4 [a4 c5] e5 [d5 c5]] +[b4 [~ c5] d5 e5] +[c5 a4 a4 ~] +[[~ d5] [~ f5] a5 [g5 f5]] +[e5 [~ c5] e5 [d5 c5]] +[b4 [b4 c5] d5 e5] +[c5 a4 a4 ~]], +[[e2 e3]*4] +[[a2 a3]*4] +[[g#2 g#3]*2 [e2 e3]*2] +[a2 a3 a2 a3 a2 a3 b1 c2] +[[d2 d3]*4] +[[c2 c3]*4] +[[b1 b2]*2 [e2 e3]*2] +[[a1 a2]*4]\`.slow(16) +`; + +export const whirlyStrudel = `sequence(e4, [b2, b3], c4) +.every(4, fast(2)) +.every(3, slow(1.5)) +.fast(slowcat(1.25, 1, 1.5)) +.every(2, _ => sequence(e4, r, e3, d4, r))`; + +export const giantSteps = `stack( + // melody + cat( + "[F#5 D5] [B4 G4] Bb4 [B4 A4]", + "[D5 Bb4] [G4 Eb4] F#4 [G4 F4]", + "Bb4 [B4 A4] D5 [D#5 C#5]", + "F#5 [G5 F5] Bb5 [F#5 F#5]", + ), + // chords + cat( + "[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]", + "[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]", + "Eb^7 [Am7 D7] G^7 [C#m7 F#7]", + "B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]" + ).voicings(['E3', 'G4']), + // bass + cat( + "[B2 D2] [G2 Bb2] [Eb2 Bb3] [A2 D2]", + "[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]", + "[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]", + "[B2 F#2] [F2 Bb2] [Eb2 Bb3] [C#2 F#2]" + ) +).slow(20);`; + +export const transposedChordsHacked = `stack( + "c2 eb2 g2", + "Cm7".voicings(['g2','c4']).slow(2) +).transpose( + slowcat(1, 2, 3, 2).slow(2) +).transpose(5)`; + +export const scaleTranspose = `stack(f2, f3, c4, ab4) +.scale(sequence('F minor', 'F harmonic minor').slow(4)) +.scaleTranspose(sequence(0, -1, -2, -3).slow(4)) +.transpose(sequence(0, 1).slow(16))`; + +export const struct = `stack( + "c2 g2 a2 [e2@2 eb2] d2 a2 g2 [d2 ~ db2]", + "[C^7 A7] [Dm7 G7]".struct("[x@2 x] [~@2 x] [~ x@2]@2 [x ~@2] ~ [~@2 x@4]@2") + .voicings(['G3','A4']) +).slow(4)`; + +export const magicSofa = `stack( + " " + .every(2, fast(2)) + .voicings(), + " " +).slow(1).transpose.slowcat(0, 2, 3, 4)`; + + +export const primalEnemy = `()=>{ + const f = fast("<1 <2 [4 8]>>"); + return stack( + "c3,g3,c4".struct("[x ~]*2").apply(f).transpose("<0 <3 [5 [7 [9 [11 13]]]]>>"), + "c2 [c2 ~]*2".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())), + "c1*2".tone(membrane().chain(vol(0.8),out())) + ).slow(1) +}`; diff --git a/repl/src/tunes.ts b/packages/tunes/tunes.ts similarity index 100% rename from repl/src/tunes.ts rename to packages/tunes/tunes.ts diff --git a/repl/src/tutorial/MiniRepl.tsx b/packages/tutorial/MiniRepl.tsx similarity index 97% rename from repl/src/tutorial/MiniRepl.tsx rename to packages/tutorial/MiniRepl.tsx index 3f9f5c92..0dcbe4c3 100644 --- a/repl/src/tutorial/MiniRepl.tsx +++ b/packages/tutorial/MiniRepl.tsx @@ -1,8 +1,8 @@ import React, { useCallback, useMemo, useState } from 'react'; import * as Tone from 'tone'; import useRepl from '../useRepl'; -import CodeMirror, { markEvent } from '../CodeMirror'; -import cx from '../cx'; +import CodeMirror, { markEvent } from '../repl-react/CodeMirror'; +import cx from '../repl-react/cx'; const defaultSynth = new Tone.PolySynth().chain(new Tone.Gain(0.5), Tone.Destination).set({ oscillator: { type: 'triangle' }, diff --git a/repl/src/tutorial/Tutorial.js b/packages/tutorial/Tutorial.js similarity index 100% rename from repl/src/tutorial/Tutorial.js rename to packages/tutorial/Tutorial.js diff --git a/repl/src/tutorial/index.html b/packages/tutorial/index.html similarity index 100% rename from repl/src/tutorial/index.html rename to packages/tutorial/index.html diff --git a/repl/src/tutorial/style.css b/packages/tutorial/style.css similarity index 100% rename from repl/src/tutorial/style.css rename to packages/tutorial/style.css diff --git a/repl/src/tutorial/tutorial.mdx b/packages/tutorial/tutorial.mdx similarity index 100% rename from repl/src/tutorial/tutorial.mdx rename to packages/tutorial/tutorial.mdx diff --git a/repl/src/tune.mjs b/packages/xen/tune.mjs similarity index 92% rename from repl/src/tune.mjs rename to packages/xen/tune.mjs index 74a4c991..675b473a 100644 --- a/repl/src/tune.mjs +++ b/packages/xen/tune.mjs @@ -1,5 +1,5 @@ import Tune from './tunejs.js'; -import { Pattern } from '../../strudel.mjs'; +import { Pattern } from '../core/strudel.mjs'; Pattern.prototype._tune = function (scale, tonic = 220) { const tune = new Tune(); diff --git a/repl/src/tunejs.js b/packages/xen/tunejs.js similarity index 100% rename from repl/src/tunejs.js rename to packages/xen/tunejs.js diff --git a/repl/src/xen.mjs b/packages/xen/xen.mjs similarity index 95% rename from repl/src/xen.mjs rename to packages/xen/xen.mjs index fc89bd60..6eb193d0 100644 --- a/repl/src/xen.mjs +++ b/packages/xen/xen.mjs @@ -1,5 +1,5 @@ -import { Pattern } from '../../strudel.mjs'; -import { mod } from '../../util.mjs'; +import { Pattern } from '../core/strudel.mjs'; +import { mod } from '../../packages/core/util.mjs'; function edo(name) { if (!/^[1-9]+[0-9]*edo$/.test(name)) { diff --git a/repl/src/cx.ts b/repl/src/cx.ts deleted file mode 100644 index 4694356f..00000000 --- a/repl/src/cx.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default function cx(...classes: Array) { - return classes.filter(Boolean).join(' '); -} diff --git a/repl/src/parse.d.ts b/repl/src/parse.d.ts deleted file mode 100644 index be24374b..00000000 --- a/repl/src/parse.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* -TODO: -export interface Arguments { - alignment: string; -} - -export interface ElementStub { - type_: string; - source_: string; - options_?: any; -} - -export interface PatternStub { - type_: string; // pattern - arguments_: Arguments; - source_: ElementStub[]; -} - */ diff --git a/repl/src/shift-parser/early-error-state.js b/repl/src/shift-parser/early-error-state.js deleted file mode 100644 index 38533747..00000000 --- a/repl/src/shift-parser/early-error-state.js +++ /dev/null @@ -1,409 +0,0 @@ -/** - * Copyright 2014 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import MultiMap from 'multimap'; - -function addEach(thisMap, ...otherMaps) { - otherMaps.forEach(otherMap => { - otherMap.forEachEntry((v, k) => { - thisMap.set.apply(thisMap, [k].concat(v)); - }); - }); - return thisMap; -} - -let identity; // initialised below EarlyErrorState - -export class EarlyErrorState { - - constructor() { - this.errors = []; - // errors that are only errors in strict mode code - this.strictErrors = []; - - // Label values used in LabeledStatement nodes; cleared at function boundaries - this.usedLabelNames = []; - - // BreakStatement nodes; cleared at iteration; switch; and function boundaries - this.freeBreakStatements = []; - // ContinueStatement nodes; cleared at - this.freeContinueStatements = []; - - // labeled BreakStatement nodes; cleared at LabeledStatement with same Label and function boundaries - this.freeLabeledBreakStatements = []; - // labeled ContinueStatement nodes; cleared at labeled iteration statement with same Label and function boundaries - this.freeLabeledContinueStatements = []; - - // NewTargetExpression nodes; cleared at function (besides arrow expression) boundaries - this.newTargetExpressions = []; - - // BindingIdentifier nodes; cleared at containing declaration node - this.boundNames = new MultiMap; - // BindingIdentifiers that were found to be in a lexical binding position - this.lexicallyDeclaredNames = new MultiMap; - // BindingIdentifiers that were the name of a FunctionDeclaration - this.functionDeclarationNames = new MultiMap; - // BindingIdentifiers that were found to be in a variable binding position - this.varDeclaredNames = new MultiMap; - // BindingIdentifiers that were found to be in a variable binding position - this.forOfVarDeclaredNames = []; - - // Names that this module exports - this.exportedNames = new MultiMap; - // Locally declared names that are referenced in export declarations - this.exportedBindings = new MultiMap; - - // CallExpressions with Super callee - this.superCallExpressions = []; - // SuperCall expressions in the context of a Method named "constructor" - this.superCallExpressionsInConstructorMethod = []; - // MemberExpressions with Super object - this.superPropertyExpressions = []; - - // YieldExpression and YieldGeneratorExpression nodes; cleared at function boundaries - this.yieldExpressions = []; - // AwaitExpression nodes; cleared at function boundaries - this.awaitExpressions = []; - } - - - addFreeBreakStatement(s) { - this.freeBreakStatements.push(s); - return this; - } - - addFreeLabeledBreakStatement(s) { - this.freeLabeledBreakStatements.push(s); - return this; - } - - clearFreeBreakStatements() { - this.freeBreakStatements = []; - return this; - } - - addFreeContinueStatement(s) { - this.freeContinueStatements.push(s); - return this; - } - - addFreeLabeledContinueStatement(s) { - this.freeLabeledContinueStatements.push(s); - return this; - } - - clearFreeContinueStatements() { - this.freeContinueStatements = []; - return this; - } - - enforceFreeBreakStatementErrors(createError) { - [].push.apply(this.errors, this.freeBreakStatements.map(createError)); - this.freeBreakStatements = []; - return this; - } - - enforceFreeLabeledBreakStatementErrors(createError) { - [].push.apply(this.errors, this.freeLabeledBreakStatements.map(createError)); - this.freeLabeledBreakStatements = []; - return this; - } - - enforceFreeContinueStatementErrors(createError) { - [].push.apply(this.errors, this.freeContinueStatements.map(createError)); - this.freeContinueStatements = []; - return this; - } - - enforceFreeLabeledContinueStatementErrors(createError) { - [].push.apply(this.errors, this.freeLabeledContinueStatements.map(createError)); - this.freeLabeledContinueStatements = []; - return this; - } - - - observeIterationLabel(label) { - this.usedLabelNames.push(label); - this.freeLabeledBreakStatements = this.freeLabeledBreakStatements.filter(s => s.label !== label); - this.freeLabeledContinueStatements = this.freeLabeledContinueStatements.filter(s => s.label !== label); - return this; - } - - observeNonIterationLabel(label) { - this.usedLabelNames.push(label); - this.freeLabeledBreakStatements = this.freeLabeledBreakStatements.filter(s => s.label !== label); - return this; - } - - clearUsedLabelNames() { - this.usedLabelNames = []; - return this; - } - - - observeSuperCallExpression(node) { - this.superCallExpressions.push(node); - return this; - } - - observeConstructorMethod() { - this.superCallExpressionsInConstructorMethod = this.superCallExpressions; - this.superCallExpressions = []; - return this; - } - - clearSuperCallExpressionsInConstructorMethod() { - this.superCallExpressionsInConstructorMethod = []; - return this; - } - - enforceSuperCallExpressions(createError) { - [].push.apply(this.errors, this.superCallExpressions.map(createError)); - [].push.apply(this.errors, this.superCallExpressionsInConstructorMethod.map(createError)); - this.superCallExpressions = []; - this.superCallExpressionsInConstructorMethod = []; - return this; - } - - enforceSuperCallExpressionsInConstructorMethod(createError) { - [].push.apply(this.errors, this.superCallExpressionsInConstructorMethod.map(createError)); - this.superCallExpressionsInConstructorMethod = []; - return this; - } - - - observeSuperPropertyExpression(node) { - this.superPropertyExpressions.push(node); - return this; - } - - clearSuperPropertyExpressions() { - this.superPropertyExpressions = []; - return this; - } - - enforceSuperPropertyExpressions(createError) { - [].push.apply(this.errors, this.superPropertyExpressions.map(createError)); - this.superPropertyExpressions = []; - return this; - } - - - observeNewTargetExpression(node) { - this.newTargetExpressions.push(node); - return this; - } - - clearNewTargetExpressions() { - this.newTargetExpressions = []; - return this; - } - - - bindName(name, node) { - this.boundNames.set(name, node); - return this; - } - - clearBoundNames() { - this.boundNames = new MultiMap; - return this; - } - - observeLexicalDeclaration() { - addEach(this.lexicallyDeclaredNames, this.boundNames); - this.boundNames = new MultiMap; - return this; - } - - observeLexicalBoundary() { - this.previousLexicallyDeclaredNames = this.lexicallyDeclaredNames; - this.lexicallyDeclaredNames = new MultiMap; - this.functionDeclarationNames = new MultiMap; - return this; - } - - enforceDuplicateLexicallyDeclaredNames(createError) { - this.lexicallyDeclaredNames.forEachEntry(nodes => { - if (nodes.length > 1) { - nodes.slice(1).forEach(dupeNode => { - this.addError(createError(dupeNode)); - }); - } - }); - return this; - } - - enforceConflictingLexicallyDeclaredNames(otherNames, createError) { - this.lexicallyDeclaredNames.forEachEntry((nodes, bindingName) => { - if (otherNames.has(bindingName)) { - nodes.forEach(conflictingNode => { - this.addError(createError(conflictingNode)); - }); - } - }); - return this; - } - - observeFunctionDeclaration() { - this.observeVarBoundary(); - addEach(this.functionDeclarationNames, this.boundNames); - this.boundNames = new MultiMap; - return this; - } - - functionDeclarationNamesAreLexical() { - addEach(this.lexicallyDeclaredNames, this.functionDeclarationNames); - this.functionDeclarationNames = new MultiMap; - return this; - } - - observeVarDeclaration() { - addEach(this.varDeclaredNames, this.boundNames); - this.boundNames = new MultiMap; - return this; - } - - recordForOfVars() { - this.varDeclaredNames.forEach(bindingIdentifier => { - this.forOfVarDeclaredNames.push(bindingIdentifier); - }); - return this; - } - - observeVarBoundary() { - this.lexicallyDeclaredNames = new MultiMap; - this.functionDeclarationNames = new MultiMap; - this.varDeclaredNames = new MultiMap; - this.forOfVarDeclaredNames = []; - return this; - } - - - exportName(name, node) { - this.exportedNames.set(name, node); - return this; - } - - exportDeclaredNames() { - addEach(this.exportedNames, this.lexicallyDeclaredNames, this.varDeclaredNames); - addEach(this.exportedBindings, this.lexicallyDeclaredNames, this.varDeclaredNames); - return this; - } - - exportBinding(name, node) { - this.exportedBindings.set(name, node); - return this; - } - - clearExportedBindings() { - this.exportedBindings = new MultiMap; - return this; - } - - - observeYieldExpression(node) { - this.yieldExpressions.push(node); - return this; - } - - clearYieldExpressions() { - this.yieldExpressions = []; - return this; - } - - observeAwaitExpression(node) { - this.awaitExpressions.push(node); - return this; - } - - clearAwaitExpressions() { - this.awaitExpressions = []; - return this; - } - - - addError(e) { - this.errors.push(e); - return this; - } - - addStrictError(e) { - this.strictErrors.push(e); - return this; - } - - enforceStrictErrors() { - [].push.apply(this.errors, this.strictErrors); - this.strictErrors = []; - return this; - } - - - // MONOID IMPLEMENTATION - - static empty() { - return identity; - } - - concat(s) { - if (this === identity) return s; - if (s === identity) return this; - [].push.apply(this.errors, s.errors); - [].push.apply(this.strictErrors, s.strictErrors); - [].push.apply(this.usedLabelNames, s.usedLabelNames); - [].push.apply(this.freeBreakStatements, s.freeBreakStatements); - [].push.apply(this.freeContinueStatements, s.freeContinueStatements); - [].push.apply(this.freeLabeledBreakStatements, s.freeLabeledBreakStatements); - [].push.apply(this.freeLabeledContinueStatements, s.freeLabeledContinueStatements); - [].push.apply(this.newTargetExpressions, s.newTargetExpressions); - addEach(this.boundNames, s.boundNames); - addEach(this.lexicallyDeclaredNames, s.lexicallyDeclaredNames); - addEach(this.functionDeclarationNames, s.functionDeclarationNames); - addEach(this.varDeclaredNames, s.varDeclaredNames); - [].push.apply(this.forOfVarDeclaredNames, s.forOfVarDeclaredNames); - addEach(this.exportedNames, s.exportedNames); - addEach(this.exportedBindings, s.exportedBindings); - [].push.apply(this.superCallExpressions, s.superCallExpressions); - [].push.apply(this.superCallExpressionsInConstructorMethod, s.superCallExpressionsInConstructorMethod); - [].push.apply(this.superPropertyExpressions, s.superPropertyExpressions); - [].push.apply(this.yieldExpressions, s.yieldExpressions); - [].push.apply(this.awaitExpressions, s.awaitExpressions); - return this; - } - -} - -identity = new EarlyErrorState; -Object.getOwnPropertyNames(EarlyErrorState.prototype).forEach(methodName => { - if (methodName === 'constructor') return; - Object.defineProperty(identity, methodName, { - value() { - return EarlyErrorState.prototype[methodName].apply(new EarlyErrorState, arguments); - }, - enumerable: false, - writable: true, - configurable: true, - }); -}); - -export class EarlyError extends Error { - constructor(node, message) { - super(message); - this.node = node; - this.message = message; - } -} diff --git a/repl/src/shift-parser/early-errors.js b/repl/src/shift-parser/early-errors.js deleted file mode 100644 index 02bc56e1..00000000 --- a/repl/src/shift-parser/early-errors.js +++ /dev/null @@ -1,772 +0,0 @@ -/** - * Copyright 2014 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import reduce, { MonoidalReducer } from '../shift-reducer'; -import { isStrictModeReservedWord } from './utils'; -import { ErrorMessages } from './errors'; - -import { EarlyErrorState, EarlyError } from './early-error-state'; - -function isStrictFunctionBody({ directives }) { - return directives.some(directive => directive.rawValue === 'use strict'); -} - -function isLabelledFunction(node) { - return node.type === 'LabeledStatement' && - (node.body.type === 'FunctionDeclaration' || isLabelledFunction(node.body)); -} - -function isIterationStatement(node) { - switch (node.type) { - case 'LabeledStatement': - return isIterationStatement(node.body); - case 'DoWhileStatement': - case 'ForInStatement': - case 'ForOfStatement': - case 'ForStatement': - case 'WhileStatement': - return true; - } - return false; -} - -function isSpecialMethod(methodDefinition) { - if (methodDefinition.name.type !== 'StaticPropertyName' || methodDefinition.name.value !== 'constructor') { - return false; - } - switch (methodDefinition.type) { - case 'Getter': - case 'Setter': - return true; - case 'Method': - return methodDefinition.isGenerator || methodDefinition.isAsync; - } - /* istanbul ignore next */ - throw new Error('not reached'); -} - - -function enforceDuplicateConstructorMethods(node, s) { - let ctors = node.elements.filter(e => - !e.isStatic && - e.method.type === 'Method' && - !e.method.isGenerator && - e.method.name.type === 'StaticPropertyName' && - e.method.name.value === 'constructor' - ); - if (ctors.length > 1) { - ctors.slice(1).forEach(ctor => { - s = s.addError(new EarlyError(ctor, 'Duplicate constructor method in class')); - }); - } - return s; -} - -const SUPERCALL_ERROR = node => new EarlyError(node, ErrorMessages.ILLEGAL_SUPER_CALL); -const SUPERPROPERTY_ERROR = node => new EarlyError(node, 'Member access on super must be in a method'); -const DUPLICATE_BINDING = node => new EarlyError(node, `Duplicate binding ${JSON.stringify(node.name)}`); -const FREE_CONTINUE = node => new EarlyError(node, 'Continue statement must be nested within an iteration statement'); -const UNBOUND_CONTINUE = node => new EarlyError(node, `Continue statement must be nested within an iteration statement with label ${JSON.stringify(node.label)}`); -const FREE_BREAK = node => new EarlyError(node, 'Break statement must be nested within an iteration statement or a switch statement'); -const UNBOUND_BREAK = node => new EarlyError(node, `Break statement must be nested within a statement with label ${JSON.stringify(node.label)}`); - -export class EarlyErrorChecker extends MonoidalReducer { - constructor() { - super(EarlyErrorState); - } - - reduceAssignmentExpression() { - return super.reduceAssignmentExpression(...arguments).clearBoundNames(); - } - - reduceAssignmentTargetIdentifier(node) { - let s = this.identity; - if (node.name === 'eval' || node.name === 'arguments' || isStrictModeReservedWord(node.name)) { - s = s.addStrictError(new EarlyError(node, `The identifier ${JSON.stringify(node.name)} must not be in binding position in strict mode`)); - } - return s; - } - - reduceArrowExpression(node, { params, body }) { - let isSimpleParameterList = node.params.rest == null && node.params.items.every(i => i.type === 'BindingIdentifier'); - params = params.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - if (node.body.type === 'FunctionBody') { - body = body.enforceConflictingLexicallyDeclaredNames(params.lexicallyDeclaredNames, DUPLICATE_BINDING); - if (isStrictFunctionBody(node.body)) { - params = params.enforceStrictErrors(); - body = body.enforceStrictErrors(); - } - } - params.yieldExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Arrow parameters must not contain yield expressions')); - }); - params.awaitExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Arrow parameters must not contain await expressions')); - }); - let s = super.reduceArrowExpression(node, { params, body }); - if (!isSimpleParameterList && node.body.type === 'FunctionBody' && isStrictFunctionBody(node.body)) { - s = s.addError(new EarlyError(node, 'Functions with non-simple parameter lists may not contain a "use strict" directive')); - } - s = s.clearYieldExpressions(); - s = s.clearAwaitExpressions(); - s = s.observeVarBoundary(); - return s; - } - - reduceAwaitExpression(node, { expression }) { - return expression.observeAwaitExpression(node); - } - - reduceBindingIdentifier(node) { - let s = this.identity; - if (node.name === 'eval' || node.name === 'arguments' || isStrictModeReservedWord(node.name)) { - s = s.addStrictError(new EarlyError(node, `The identifier ${JSON.stringify(node.name)} must not be in binding position in strict mode`)); - } - s = s.bindName(node.name, node); - return s; - } - - reduceBlock() { - let s = super.reduceBlock(...arguments); - s = s.functionDeclarationNamesAreLexical(); - s = s.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - s = s.enforceConflictingLexicallyDeclaredNames(s.varDeclaredNames, DUPLICATE_BINDING); - s = s.observeLexicalBoundary(); - return s; - } - - reduceBreakStatement(node) { - let s = super.reduceBreakStatement(...arguments); - s = node.label == null - ? s.addFreeBreakStatement(node) - : s.addFreeLabeledBreakStatement(node); - return s; - } - - reduceCallExpression(node) { - let s = super.reduceCallExpression(...arguments); - if (node.callee.type === 'Super') { - s = s.observeSuperCallExpression(node); - } - return s; - } - - reduceCatchClause(node, { binding, body }) { - binding = binding.observeLexicalDeclaration(); - binding = binding.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - binding = binding.enforceConflictingLexicallyDeclaredNames(body.previousLexicallyDeclaredNames, DUPLICATE_BINDING); - binding.lexicallyDeclaredNames.forEachEntry((nodes, bindingName) => { - if (body.varDeclaredNames.has(bindingName)) { - body.varDeclaredNames.get(bindingName).forEach(conflictingNode => { - if (body.forOfVarDeclaredNames.indexOf(conflictingNode) >= 0) { - binding = binding.addError(DUPLICATE_BINDING(conflictingNode)); - } - }); - } - }); - let s = super.reduceCatchClause(node, { binding, body }); - s = s.observeLexicalBoundary(); - return s; - } - - reduceClassDeclaration(node, { name, super: _super, elements }) { - let s = name.enforceStrictErrors(); - let sElements = this.append(...elements); - sElements = sElements.enforceStrictErrors(); - if (node.super != null) { - _super = _super.enforceStrictErrors(); - s = this.append(s, _super); - sElements = sElements.clearSuperCallExpressionsInConstructorMethod(); - } - s = this.append(s, sElements); - s = enforceDuplicateConstructorMethods(node, s); - s = s.observeLexicalDeclaration(); - return s; - } - - reduceClassElement(node) { - let s = super.reduceClassElement(...arguments); - if (!node.isStatic && isSpecialMethod(node.method)) { - s = s.addError(new EarlyError(node, ErrorMessages.ILLEGAL_CONSTRUCTORS)); - } - if (node.isStatic && node.method.name.type === 'StaticPropertyName' && node.method.name.value === 'prototype') { - s = s.addError(new EarlyError(node, 'Static class methods cannot be named "prototype"')); - } - return s; - } - - reduceClassExpression(node, { name, super: _super, elements }) { - let s = node.name == null ? this.identity : name.enforceStrictErrors(); - let sElements = this.append(...elements); - sElements = sElements.enforceStrictErrors(); - if (node.super != null) { - _super = _super.enforceStrictErrors(); - s = this.append(s, _super); - sElements = sElements.clearSuperCallExpressionsInConstructorMethod(); - } - s = this.append(s, sElements); - s = enforceDuplicateConstructorMethods(node, s); - s = s.clearBoundNames(); - return s; - } - - reduceCompoundAssignmentExpression() { - return super.reduceCompoundAssignmentExpression(...arguments).clearBoundNames(); - } - - reduceComputedMemberExpression(node) { - let s = super.reduceComputedMemberExpression(...arguments); - if (node.object.type === 'Super') { - s = s.observeSuperPropertyExpression(node); - } - return s; - } - - reduceContinueStatement(node) { - let s = super.reduceContinueStatement(...arguments); - s = node.label == null - ? s.addFreeContinueStatement(node) - : s.addFreeLabeledContinueStatement(node); - return s; - } - - reduceDoWhileStatement(node) { - let s = super.reduceDoWhileStatement(...arguments); - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a do-while statement must not be a labeled function declaration')); - } - s = s.clearFreeContinueStatements(); - s = s.clearFreeBreakStatements(); - return s; - } - - reduceExport() { - let s = super.reduceExport(...arguments); - s = s.functionDeclarationNamesAreLexical(); - s = s.exportDeclaredNames(); - return s; - } - - reduceExportFrom() { - let s = super.reduceExportFrom(...arguments); - s = s.clearExportedBindings(); - return s; - } - - reduceExportFromSpecifier(node) { - let s = super.reduceExportFromSpecifier(...arguments); - s = s.exportName(node.exportedName || node.name, node); - s = s.exportBinding(node.name, node); - return s; - } - - reduceExportLocalSpecifier(node) { - let s = super.reduceExportLocalSpecifier(...arguments); - s = s.exportName(node.exportedName || node.name.name, node); - s = s.exportBinding(node.name.name, node); - return s; - } - - reduceExportDefault(node) { - let s = super.reduceExportDefault(...arguments); - s = s.functionDeclarationNamesAreLexical(); - s = s.exportName('default', node); - return s; - } - - reduceFormalParameters() { - let s = super.reduceFormalParameters(...arguments); - s = s.observeLexicalDeclaration(); - return s; - } - - reduceForStatement(node, { init, test, update, body }) { - if (init != null) { - init = init.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - init = init.enforceConflictingLexicallyDeclaredNames(body.varDeclaredNames, DUPLICATE_BINDING); - } - let s = super.reduceForStatement(node, { init, test, update, body }); - if (node.init != null && node.init.type === 'VariableDeclaration' && node.init.kind === 'const') { - node.init.declarators.forEach(declarator => { - if (declarator.init == null) { - s = s.addError(new EarlyError(declarator, 'Constant lexical declarations must have an initialiser')); - } - }); - } - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a for statement must not be a labeled function declaration')); - } - s = s.clearFreeContinueStatements(); - s = s.clearFreeBreakStatements(); - s = s.observeLexicalBoundary(); - return s; - } - - reduceForInStatement(node, { left, right, body }) { - left = left.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - left = left.enforceConflictingLexicallyDeclaredNames(body.varDeclaredNames, DUPLICATE_BINDING); - let s = super.reduceForInStatement(node, { left, right, body }); - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a for-in statement must not be a labeled function declaration')); - } - s = s.clearFreeContinueStatements(); - s = s.clearFreeBreakStatements(); - s = s.observeLexicalBoundary(); - return s; - } - - reduceForOfStatement(node, { left, right, body }) { - left = left.recordForOfVars(); - left = left.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - left = left.enforceConflictingLexicallyDeclaredNames(body.varDeclaredNames, DUPLICATE_BINDING); - let s = super.reduceForOfStatement(node, { left, right, body }); - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a for-of statement must not be a labeled function declaration')); - } - s = s.clearFreeContinueStatements(); - s = s.clearFreeBreakStatements(); - s = s.observeLexicalBoundary(); - return s; - } - - reduceForAwaitStatement(node, { left, right, body }) { - left = left.recordForOfVars(); - left = left.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - left = left.enforceConflictingLexicallyDeclaredNames(body.varDeclaredNames, DUPLICATE_BINDING); - let s = super.reduceForOfStatement(node, { left, right, body }); - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a for-await statement must not be a labeled function declaration')); - } - s = s.clearFreeContinueStatements(); - s = s.clearFreeBreakStatements(); - s = s.observeLexicalBoundary(); - return s; - } - - reduceFunctionBody(node) { - let s = super.reduceFunctionBody(...arguments); - s = s.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - s = s.enforceConflictingLexicallyDeclaredNames(s.varDeclaredNames, DUPLICATE_BINDING); - s = s.enforceFreeContinueStatementErrors(FREE_CONTINUE); - s = s.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE); - s = s.enforceFreeBreakStatementErrors(FREE_BREAK); - s = s.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK); - s = s.clearUsedLabelNames(); - s = s.clearYieldExpressions(); - s = s.clearAwaitExpressions(); - if (isStrictFunctionBody(node)) { - s = s.enforceStrictErrors(); - } - return s; - } - - reduceFunctionDeclaration(node, { name, params, body }) { - let isSimpleParameterList = node.params.rest == null && node.params.items.every(i => i.type === 'BindingIdentifier'); - let addError = !isSimpleParameterList || node.isGenerator ? 'addError' : 'addStrictError'; - params.lexicallyDeclaredNames.forEachEntry(nodes => { - if (nodes.length > 1) { - nodes.slice(1).forEach(dupeNode => { - params = params[addError](DUPLICATE_BINDING(dupeNode)); - }); - } - }); - body = body.enforceConflictingLexicallyDeclaredNames(params.lexicallyDeclaredNames, DUPLICATE_BINDING); - body = body.enforceSuperCallExpressions(SUPERCALL_ERROR); - body = body.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR); - params = params.enforceSuperCallExpressions(SUPERCALL_ERROR); - params = params.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR); - if (node.isGenerator) { - params.yieldExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Generator parameters must not contain yield expressions')); - }); - } - if (node.isAsync) { - params.awaitExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Async function parameters must not contain await expressions')); - }); - } - params = params.clearNewTargetExpressions(); - body = body.clearNewTargetExpressions(); - if (isStrictFunctionBody(node.body)) { - params = params.enforceStrictErrors(); - body = body.enforceStrictErrors(); - } - let s = super.reduceFunctionDeclaration(node, { name, params, body }); - if (!isSimpleParameterList && isStrictFunctionBody(node.body)) { - s = s.addError(new EarlyError(node, 'Functions with non-simple parameter lists may not contain a "use strict" directive')); - } - s = s.clearYieldExpressions(); - s = s.clearAwaitExpressions(); - s = s.observeFunctionDeclaration(); - return s; - } - - reduceFunctionExpression(node, { name, params, body }) { - let isSimpleParameterList = node.params.rest == null && node.params.items.every(i => i.type === 'BindingIdentifier'); - let addError = !isSimpleParameterList || node.isGenerator ? 'addError' : 'addStrictError'; - params.lexicallyDeclaredNames.forEachEntry((nodes, bindingName) => { - if (nodes.length > 1) { - nodes.slice(1).forEach(dupeNode => { - params = params[addError](new EarlyError(dupeNode, `Duplicate binding ${JSON.stringify(bindingName)}`)); - }); - } - }); - body = body.enforceConflictingLexicallyDeclaredNames(params.lexicallyDeclaredNames, DUPLICATE_BINDING); - body = body.enforceSuperCallExpressions(SUPERCALL_ERROR); - body = body.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR); - params = params.enforceSuperCallExpressions(SUPERCALL_ERROR); - params = params.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR); - if (node.isGenerator) { - params.yieldExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Generator parameters must not contain yield expressions')); - }); - } - if (node.isAsync) { - params.awaitExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Async function parameters must not contain await expressions')); - }); - } - params = params.clearNewTargetExpressions(); - body = body.clearNewTargetExpressions(); - if (isStrictFunctionBody(node.body)) { - params = params.enforceStrictErrors(); - body = body.enforceStrictErrors(); - } - let s = super.reduceFunctionExpression(node, { name, params, body }); - if (!isSimpleParameterList && isStrictFunctionBody(node.body)) { - s = s.addError(new EarlyError(node, 'Functions with non-simple parameter lists may not contain a "use strict" directive')); - } - s = s.clearBoundNames(); - s = s.clearYieldExpressions(); - s = s.clearAwaitExpressions(); - s = s.observeVarBoundary(); - return s; - } - - reduceGetter(node, { name, body }) { - body = body.enforceSuperCallExpressions(SUPERCALL_ERROR); - body = body.clearSuperPropertyExpressions(); - body = body.clearNewTargetExpressions(); - if (isStrictFunctionBody(node.body)) { - body = body.enforceStrictErrors(); - } - let s = super.reduceGetter(node, { name, body }); - s = s.observeVarBoundary(); - return s; - } - - reduceIdentifierExpression(node) { - let s = this.identity; - if (isStrictModeReservedWord(node.name)) { - s = s.addStrictError(new EarlyError(node, `The identifier ${JSON.stringify(node.name)} must not be in expression position in strict mode`)); - } - return s; - } - - reduceIfStatement(node, { test, consequent, alternate }) { - if (isLabelledFunction(node.consequent)) { - consequent = consequent.addError(new EarlyError(node.consequent, 'The consequent of an if statement must not be a labeled function declaration')); - } - if (node.alternate != null && isLabelledFunction(node.alternate)) { - alternate = alternate.addError(new EarlyError(node.alternate, 'The alternate of an if statement must not be a labeled function declaration')); - } - if (node.consequent.type === 'FunctionDeclaration') { - consequent = consequent.addStrictError(new EarlyError(node.consequent, 'FunctionDeclarations in IfStatements are disallowed in strict mode')); - consequent = consequent.observeLexicalBoundary(); - } - if (node.alternate != null && node.alternate.type === 'FunctionDeclaration') { - alternate = alternate.addStrictError(new EarlyError(node.alternate, 'FunctionDeclarations in IfStatements are disallowed in strict mode')); - alternate = alternate.observeLexicalBoundary(); - } - return super.reduceIfStatement(node, { test, consequent, alternate }); - } - - reduceImport() { - let s = super.reduceImport(...arguments); - s = s.observeLexicalDeclaration(); - return s; - } - - reduceImportNamespace() { - let s = super.reduceImportNamespace(...arguments); - s = s.observeLexicalDeclaration(); - return s; - } - - reduceLabeledStatement(node) { - let s = super.reduceLabeledStatement(...arguments); - if (node.label === 'yield' || isStrictModeReservedWord(node.label)) { - s = s.addStrictError(new EarlyError(node, `The identifier ${JSON.stringify(node.label)} must not be in label position in strict mode`)); - } - if (s.usedLabelNames.indexOf(node.label) >= 0) { - s = s.addError(new EarlyError(node, `Label ${JSON.stringify(node.label)} has already been declared`)); - } - if (node.body.type === 'FunctionDeclaration') { - s = s.addStrictError(new EarlyError(node, 'Labeled FunctionDeclarations are disallowed in strict mode')); - } - s = isIterationStatement(node.body) - ? s.observeIterationLabel(node.label) - : s.observeNonIterationLabel(node.label); - return s; - } - - reduceLiteralRegExpExpression() { - let s = this.identity; - // NOTE: the RegExp pattern acceptor is disabled until we have more confidence in its correctness (more tests) - // if (!PatternAcceptor.test(node.pattern, node.flags.indexOf("u") >= 0)) { - // s = s.addError(new EarlyError(node, "Invalid regular expression pattern")); - // } - return s; - } - - reduceMethod(node, { name, params, body }) { - let isSimpleParameterList = node.params.rest == null && node.params.items.every(i => i.type === 'BindingIdentifier'); - params = params.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - body = body.enforceConflictingLexicallyDeclaredNames(params.lexicallyDeclaredNames, DUPLICATE_BINDING); - if (node.name.type === 'StaticPropertyName' && node.name.value === 'constructor') { - body = body.observeConstructorMethod(); - params = params.observeConstructorMethod(); - } else { - body = body.enforceSuperCallExpressions(SUPERCALL_ERROR); - params = params.enforceSuperCallExpressions(SUPERCALL_ERROR); - } - if (node.isGenerator) { - params.yieldExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Generator parameters must not contain yield expressions')); - }); - } - if (node.isAsync) { - params.awaitExpressions.forEach(n => { - params = params.addError(new EarlyError(n, 'Async function parameters must not contain await expressions')); - }); - } - body = body.clearSuperPropertyExpressions(); - params = params.clearSuperPropertyExpressions(); - params = params.clearNewTargetExpressions(); - body = body.clearNewTargetExpressions(); - if (isStrictFunctionBody(node.body)) { - params = params.enforceStrictErrors(); - body = body.enforceStrictErrors(); - } - let s = super.reduceMethod(node, { name, params, body }); - if (!isSimpleParameterList && isStrictFunctionBody(node.body)) { - s = s.addError(new EarlyError(node, 'Functions with non-simple parameter lists may not contain a "use strict" directive')); - } - s = s.clearYieldExpressions(); - s = s.clearAwaitExpressions(); - s = s.observeVarBoundary(); - return s; - } - - reduceModule() { - let s = super.reduceModule(...arguments); - s = s.functionDeclarationNamesAreLexical(); - s = s.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - s = s.enforceConflictingLexicallyDeclaredNames(s.varDeclaredNames, DUPLICATE_BINDING); - s.exportedNames.forEachEntry((nodes, bindingName) => { - if (nodes.length > 1) { - nodes.slice(1).forEach(dupeNode => { - s = s.addError(new EarlyError(dupeNode, `Duplicate export ${JSON.stringify(bindingName)}`)); - }); - } - }); - s.exportedBindings.forEachEntry((nodes, bindingName) => { - if (!s.lexicallyDeclaredNames.has(bindingName) && !s.varDeclaredNames.has(bindingName)) { - nodes.forEach(undeclaredNode => { - s = s.addError(new EarlyError(undeclaredNode, `Exported binding ${JSON.stringify(bindingName)} is not declared`)); - }); - } - }); - s.newTargetExpressions.forEach(node => { - s = s.addError(new EarlyError(node, 'new.target must be within function (but not arrow expression) code')); - }); - s = s.enforceFreeContinueStatementErrors(FREE_CONTINUE); - s = s.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE); - s = s.enforceFreeBreakStatementErrors(FREE_BREAK); - s = s.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK); - s = s.enforceSuperCallExpressions(SUPERCALL_ERROR); - s = s.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR); - s = s.enforceStrictErrors(); - return s; - } - - reduceNewTargetExpression(node) { - return this.identity.observeNewTargetExpression(node); - } - - reduceObjectExpression(node) { - let s = super.reduceObjectExpression(...arguments); - s = s.enforceSuperCallExpressionsInConstructorMethod(SUPERCALL_ERROR); - let protos = node.properties.filter(p => p.type === 'DataProperty' && p.name.type === 'StaticPropertyName' && p.name.value === '__proto__'); - protos.slice(1).forEach(n => { - s = s.addError(new EarlyError(n, 'Duplicate __proto__ property in object literal not allowed')); - }); - return s; - } - - reduceUpdateExpression() { - let s = super.reduceUpdateExpression(...arguments); - s = s.clearBoundNames(); - return s; - } - - reduceUnaryExpression(node) { - let s = super.reduceUnaryExpression(...arguments); - if (node.operator === 'delete' && node.operand.type === 'IdentifierExpression') { - s = s.addStrictError(new EarlyError(node, 'Identifier expressions must not be deleted in strict mode')); - } - return s; - } - - reduceScript(node) { - let s = super.reduceScript(...arguments); - s = s.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - s = s.enforceConflictingLexicallyDeclaredNames(s.varDeclaredNames, DUPLICATE_BINDING); - s.newTargetExpressions.forEach(n => { - s = s.addError(new EarlyError(n, 'new.target must be within function (but not arrow expression) code')); - }); - s = s.enforceFreeContinueStatementErrors(FREE_CONTINUE); - s = s.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE); - s = s.enforceFreeBreakStatementErrors(FREE_BREAK); - s = s.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK); - s = s.enforceSuperCallExpressions(SUPERCALL_ERROR); - s = s.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR); - if (isStrictFunctionBody(node)) { - s = s.enforceStrictErrors(); - } - return s; - } - - reduceSetter(node, { name, param, body }) { - let isSimpleParameterList = node.param.type === 'BindingIdentifier'; - param = param.observeLexicalDeclaration(); - param = param.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - body = body.enforceConflictingLexicallyDeclaredNames(param.lexicallyDeclaredNames, DUPLICATE_BINDING); - param = param.enforceSuperCallExpressions(SUPERCALL_ERROR); - body = body.enforceSuperCallExpressions(SUPERCALL_ERROR); - param = param.clearSuperPropertyExpressions(); - body = body.clearSuperPropertyExpressions(); - param = param.clearNewTargetExpressions(); - body = body.clearNewTargetExpressions(); - if (isStrictFunctionBody(node.body)) { - param = param.enforceStrictErrors(); - body = body.enforceStrictErrors(); - } - let s = super.reduceSetter(node, { name, param, body }); - if (!isSimpleParameterList && isStrictFunctionBody(node.body)) { - s = s.addError(new EarlyError(node, 'Functions with non-simple parameter lists may not contain a "use strict" directive')); - } - s = s.observeVarBoundary(); - return s; - } - - reduceStaticMemberExpression(node) { - let s = super.reduceStaticMemberExpression(...arguments); - if (node.object.type === 'Super') { - s = s.observeSuperPropertyExpression(node); - } - return s; - } - - reduceSwitchStatement(node, { discriminant, cases }) { - let sCases = this.append(...cases); - sCases = sCases.functionDeclarationNamesAreLexical(); - sCases = sCases.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - sCases = sCases.enforceConflictingLexicallyDeclaredNames(sCases.varDeclaredNames, DUPLICATE_BINDING); - sCases = sCases.observeLexicalBoundary(); - let s = this.append(discriminant, sCases); - s = s.clearFreeBreakStatements(); - return s; - } - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - let sCases = this.append(defaultCase, ...preDefaultCases, ...postDefaultCases); - sCases = sCases.functionDeclarationNamesAreLexical(); - sCases = sCases.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING); - sCases = sCases.enforceConflictingLexicallyDeclaredNames(sCases.varDeclaredNames, DUPLICATE_BINDING); - sCases = sCases.observeLexicalBoundary(); - let s = this.append(discriminant, sCases); - s = s.clearFreeBreakStatements(); - return s; - } - - reduceVariableDeclaration(node) { - let s = super.reduceVariableDeclaration(...arguments); - switch (node.kind) { - case 'const': - case 'let': { - s = s.observeLexicalDeclaration(); - if (s.lexicallyDeclaredNames.has('let')) { - s.lexicallyDeclaredNames.get('let').forEach(n => { - s = s.addError(new EarlyError(n, 'Lexical declarations must not have a binding named "let"')); - }); - } - break; - } - case 'var': - s = s.observeVarDeclaration(); - break; - } - return s; - } - - reduceVariableDeclarationStatement(node) { - let s = super.reduceVariableDeclarationStatement(...arguments); - if (node.declaration.kind === 'const') { - node.declaration.declarators.forEach(declarator => { - if (declarator.init == null) { - s = s.addError(new EarlyError(declarator, 'Constant lexical declarations must have an initialiser')); - } - }); - } - return s; - } - - reduceWhileStatement(node) { - let s = super.reduceWhileStatement(...arguments); - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a while statement must not be a labeled function declaration')); - } - s = s.clearFreeContinueStatements().clearFreeBreakStatements(); - return s; - } - - reduceWithStatement(node) { - let s = super.reduceWithStatement(...arguments); - if (isLabelledFunction(node.body)) { - s = s.addError(new EarlyError(node.body, 'The body of a with statement must not be a labeled function declaration')); - } - s = s.addStrictError(new EarlyError(node, 'Strict mode code must not include a with statement')); - return s; - } - - reduceYieldExpression(node) { - let s = super.reduceYieldExpression(...arguments); - s = s.observeYieldExpression(node); - return s; - } - - reduceYieldGeneratorExpression(node) { - let s = super.reduceYieldGeneratorExpression(...arguments); - s = s.observeYieldExpression(node); - return s; - } - - - static check(node) { - return reduce(new EarlyErrorChecker, node).errors; - } -} diff --git a/repl/src/shift-parser/errors.js b/repl/src/shift-parser/errors.js deleted file mode 100644 index 11d84b01..00000000 --- a/repl/src/shift-parser/errors.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Copyright 2014 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const ErrorMessages = { - UNEXPECTED_TOKEN(id) { - return `Unexpected token ${JSON.stringify(id)}`; - }, - UNEXPECTED_ILLEGAL_TOKEN(id) { - return `Unexpected ${JSON.stringify(id)}`; - }, - UNEXPECTED_ESCAPED_KEYWORD: 'Unexpected escaped keyword', - UNEXPECTED_NUMBER: 'Unexpected number', - UNEXPECTED_STRING: 'Unexpected string', - UNEXPECTED_IDENTIFIER: 'Unexpected identifier', - UNEXPECTED_RESERVED_WORD: 'Unexpected reserved word', - UNEXPECTED_TEMPLATE: 'Unexpected template', - UNEXPECTED_EOS: 'Unexpected end of input', - UNEXPECTED_LINE_TERMINATOR: 'Unexpected line terminator', - UNEXPECTED_COMMA_AFTER_REST: 'Unexpected comma after rest', - UNEXPECTED_REST_PARAMETERS_INITIALIZATION: 'Rest parameter may not have a default initializer', - NEWLINE_AFTER_THROW: 'Illegal newline after throw', - UNTERMINATED_REGEXP: 'Invalid regular expression: missing /', - INVALID_LAST_REST_PARAMETER: 'Rest parameter must be last formal parameter', - INVALID_REST_PARAMETERS_INITIALIZATION: 'Rest parameter may not have a default initializer', - INVALID_REGEXP_FLAGS: 'Invalid regular expression flags', - INVALID_REGEX: 'Invalid regular expression', - INVALID_LHS_IN_ASSIGNMENT: 'Invalid left-hand side in assignment', - INVALID_LHS_IN_BINDING: 'Invalid left-hand side in binding', // todo collapse messages? - INVALID_LHS_IN_FOR_IN: 'Invalid left-hand side in for-in', - INVALID_LHS_IN_FOR_OF: 'Invalid left-hand side in for-of', - INVALID_LHS_IN_FOR_AWAIT: 'Invalid left-hand side in for-await', - INVALID_UPDATE_OPERAND: 'Increment/decrement target must be an identifier or member expression', - INVALID_EXPONENTIATION_LHS: 'Unary expressions as the left operand of an exponentation expression ' + - 'must be disambiguated with parentheses', - MULTIPLE_DEFAULTS_IN_SWITCH: 'More than one default clause in switch statement', - NO_CATCH_OR_FINALLY: 'Missing catch or finally after try', - ILLEGAL_RETURN: 'Illegal return statement', - ILLEGAL_ARROW_FUNCTION_PARAMS: 'Illegal arrow function parameter list', - INVALID_ASYNC_PARAMS: 'Async function parameters must not contain await expressions', - INVALID_VAR_INIT_FOR_IN: 'Invalid variable declaration in for-in statement', - INVALID_VAR_INIT_FOR_OF: 'Invalid variable declaration in for-of statement', - INVALID_VAR_INIT_FOR_AWAIT: 'Invalid variable declaration in for-await statement', - UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT: 'Binding pattern appears without initializer in for statement init', - ILLEGAL_PROPERTY: 'Illegal property initializer', - INVALID_ID_BINDING_STRICT_MODE(id) { - return `The identifier ${JSON.stringify(id)} must not be in binding position in strict mode`; - }, - INVALID_ID_IN_LABEL_STRICT_MODE(id) { - return `The identifier ${JSON.stringify(id)} must not be in label position in strict mode`; - }, - INVALID_ID_IN_EXPRESSION_STRICT_MODE(id) { - return `The identifier ${JSON.stringify(id)} must not be in expression position in strict mode`; - }, - INVALID_CALL_TO_SUPER: 'Calls to super must be in the "constructor" method of a class expression ' + - 'or class declaration that has a superclass', - INVALID_DELETE_STRICT_MODE: 'Identifier expressions must not be deleted in strict mode', - DUPLICATE_BINDING(id) { - return `Duplicate binding ${JSON.stringify(id)}`; - }, - ILLEGAL_ID_IN_LEXICAL_DECLARATION(id) { - return `Lexical declarations must not have a binding named ${JSON.stringify(id)}`; - }, - UNITIALIZED_CONST: 'Constant lexical declarations must have an initialiser', - ILLEGAL_LABEL_IN_BODY(stmt) { - return `The body of a ${stmt} statement must not be a labeled function declaration`; - }, - ILLEGEAL_LABEL_IN_IF: 'The consequent of an if statement must not be a labeled function declaration', - ILLEGAL_LABEL_IN_ELSE: 'The alternate of an if statement must not be a labeled function declaration', - ILLEGAL_CONTINUE_WITHOUT_ITERATION_WITH_ID(id) { - return `Continue statement must be nested within an iteration statement with label ${JSON.stringify(id)}`; - }, - ILLEGAL_CONTINUE_WITHOUT_ITERATION: 'Continue statement must be nested within an iteration statement', - ILLEGAL_BREAK_WITHOUT_ITERATION_OR_SWITCH: - 'Break statement must be nested within an iteration statement or a switch statement', - ILLEGAL_WITH_STRICT_MODE: 'Strict mode code must not include a with statement', - ILLEGAL_ACCESS_SUPER_MEMBER: 'Member access on super must be in a method', - ILLEGAL_SUPER_CALL: 'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass', - DUPLICATE_LABEL_DECLARATION(label) { - return `Label ${JSON.stringify(label)} has already been declared`; - }, - ILLEGAL_BREAK_WITHIN_LABEL(label) { - return `Break statement must be nested within a statement with label ${JSON.stringify(label)}`; - }, - ILLEGAL_YIELD_EXPRESSIONS(paramType) { - return `${paramType} parameters must not contain yield expressions`; - }, - ILLEGAL_YIELD_IDENTIFIER: '"yield" may not be used as an identifier in this context', - ILLEGAL_AWAIT_IDENTIFIER: '"await" may not be used as an identifier in this context', - DUPLICATE_CONSTRUCTOR: 'Duplicate constructor method in class', - ILLEGAL_CONSTRUCTORS: 'Constructors cannot be async, generators, getters or setters', - ILLEGAL_STATIC_CLASS_NAME: 'Static class methods cannot be named "prototype"', - NEW_TARGET_ERROR: 'new.target must be within function (but not arrow expression) code', - DUPLICATE_EXPORT(id) { - return `Duplicate export ${JSON.stringify(id)}`; - }, - UNDECLARED_BINDING(id) { - return `Exported binding ${JSON.stringify(id)} is not declared`; - }, - DUPLICATE_PROPTO_PROP: 'Duplicate __proto__ property in object literal not allowed', - ILLEGAL_LABEL_FUNC_DECLARATION: 'Labeled FunctionDeclarations are disallowed in strict mode', - ILLEGAL_FUNC_DECL_IF: 'FunctionDeclarations in IfStatements are disallowed in strict mode', - ILLEGAL_USE_STRICT: 'Functions with non-simple parameter lists may not contain a "use strict" directive', - ILLEGAL_EXPORTED_NAME: 'Names of variables used in an export specifier from the current module must be identifiers', - NO_OCTALS_IN_TEMPLATES: 'Template literals may not contain octal escape sequences', - NO_AWAIT_IN_ASYNC_PARAMS: 'Async arrow parameters may not contain "await"', -}; diff --git a/repl/src/shift-parser/index.js b/repl/src/shift-parser/index.js deleted file mode 100644 index a372a939..00000000 --- a/repl/src/shift-parser/index.js +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Copyright 2016 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { GenericParser } from './parser'; -import { JsError } from './tokenizer'; -import { EarlyErrorChecker } from './early-errors'; -import { isLineTerminator } from './utils'; - -class ParserWithLocation extends GenericParser { - constructor(source) { - super(source); - this.locations = new WeakMap; - this.comments = []; - } - - startNode() { - return this.getLocation(); - } - - finishNode(node, start) { - if (node.type === 'Script' || node.type === 'Module') { - this.locations.set(node, { - start: { line: 1, column: 0, offset: 0 }, - end: this.getLocation(), - }); - return node; - } - if (node.type === 'TemplateExpression') { - // Adjust TemplateElements to not include surrounding backticks or braces - for (let i = 0; i < node.elements.length; i += 2) { - const endAdjustment = i < node.elements.length - 1 ? 2 : 1; // discard '${' or '`' respectively - const element = node.elements[i]; - const location = this.locations.get(element); - this.locations.set(element, { - start: { line: location.start.line, column: location.start.column + 1, offset: location.start.offset + 1 }, // discard '}' or '`' - end: { line: location.end.line, column: location.end.column - endAdjustment, offset: location.end.offset - endAdjustment }, - }); - } - } - this.locations.set(node, { - start, - end: this.getLastTokenEndLocation(), - }); - return node; - } - - copyNode(src, dest) { - this.locations.set(dest, this.locations.get(src)); // todo check undefined - return dest; - } - - skipSingleLineComment(offset) { - // We're actually extending the *tokenizer*, here. - const start = { - line: this.line + 1, - column: this.index - this.lineStart, - offset: this.index, - }; - const c = this.source[this.index]; - const type = c === '/' ? 'SingleLine' : c === '<' ? 'HTMLOpen' : 'HTMLClose'; - - super.skipSingleLineComment(offset); - - const end = { - line: this.line + 1, - column: this.index - this.lineStart, - offset: this.index, - }; - const trailingLineTerminatorCharacters = this.source[this.index - 2] === '\r' ? 2 : isLineTerminator(this.source.charCodeAt(this.index - 1)) ? 1 : 0; - const text = this.source.substring(start.offset + offset, end.offset - trailingLineTerminatorCharacters); - - this.comments.push({ text, type, start, end }); - } - - skipMultiLineComment() { - const start = { - line: this.line + 1, - column: this.index - this.lineStart, - offset: this.index, - }; - const type = 'MultiLine'; - - const retval = super.skipMultiLineComment(); - - const end = { - line: this.line + 1, - column: this.index - this.lineStart, - offset: this.index, - }; - const text = this.source.substring(start.offset + 2, end.offset - 2); - - this.comments.push({ text, type, start, end }); - - return retval; - } -} - -function generateInterface(parsingFunctionName) { - return function parse(code, { earlyErrors = true } = {}) { - let parser = new GenericParser(code); - let tree = parser[parsingFunctionName](); - if (earlyErrors) { - let errors = EarlyErrorChecker.check(tree); - // for now, just throw the first error; we will handle multiple errors later - if (errors.length > 0) { - throw new JsError(0, 1, 0, errors[0].message); - } - } - return tree; - }; -} - -function generateInterfaceWithLocation(parsingFunctionName) { - return function parse(code, { earlyErrors = true } = {}) { - let parser = new ParserWithLocation(code); - let tree = parser[parsingFunctionName](); - if (earlyErrors) { - let errors = EarlyErrorChecker.check(tree); - // for now, just throw the first error; we will handle multiple errors later - if (errors.length > 0) { - let { node, message } = errors[0]; - let { offset, line, column } = parser.locations.get(node).start; - throw new JsError(offset, line, column, message); - } - } - return { tree, locations: parser.locations, comments: parser.comments }; - }; -} - -export const parseModule = generateInterface('parseModule'); -export const parseScript = generateInterface('parseScript'); -export const parseModuleWithLocation = generateInterfaceWithLocation('parseModule'); -export const parseScriptWithLocation = generateInterfaceWithLocation('parseScript'); -export default parseScript; -export { EarlyErrorChecker, GenericParser, ParserWithLocation }; -export { default as Tokenizer, TokenClass, TokenType } from './tokenizer'; diff --git a/repl/src/shift-parser/parser.js b/repl/src/shift-parser/parser.js deleted file mode 100644 index 71da79c9..00000000 --- a/repl/src/shift-parser/parser.js +++ /dev/null @@ -1,2641 +0,0 @@ -/** - * Copyright 2014 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ErrorMessages } from './errors'; - -import acceptRegex from 'shift-regexp-acceptor'; - -import Tokenizer, { TokenClass, TokenType } from './tokenizer'; - -import * as AST from 'shift-ast'; - -// Empty parameter list for ArrowExpression -const ARROW_EXPRESSION_PARAMS = 'CoverParenthesizedExpressionAndArrowParameterList'; -const EXPORT_UNKNOWN_SPECIFIER = 'ExportNameOfUnknownType'; - -const Precedence = { - Sequence: 0, - Yield: 1, - Assignment: 1, - Conditional: 2, - ArrowFunction: 2, - LogicalOR: 3, - LogicalAND: 4, - BitwiseOR: 5, - BitwiseXOR: 6, - BitwiseAND: 7, - Equality: 8, - Relational: 9, - BitwiseSHIFT: 10, - Additive: 11, - Multiplicative: 12, - Unary: 13, - Postfix: 14, - Call: 15, - New: 16, - TaggedTemplate: 17, - Member: 18, - Primary: 19, -}; - -const BinaryPrecedence = { - '||': Precedence.LogicalOR, - '&&': Precedence.LogicalAND, - '|': Precedence.BitwiseOR, - '^': Precedence.BitwiseXOR, - '&': Precedence.BitwiseAND, - '==': Precedence.Equality, - '!=': Precedence.Equality, - '===': Precedence.Equality, - '!==': Precedence.Equality, - '<': Precedence.Relational, - '>': Precedence.Relational, - '<=': Precedence.Relational, - '>=': Precedence.Relational, - 'in': Precedence.Relational, - 'instanceof': Precedence.Relational, - '<<': Precedence.BitwiseSHIFT, - '>>': Precedence.BitwiseSHIFT, - '>>>': Precedence.BitwiseSHIFT, - '+': Precedence.Additive, - '-': Precedence.Additive, - '*': Precedence.Multiplicative, - '%': Precedence.Multiplicative, - '/': Precedence.Multiplicative, -}; - -function isValidSimpleAssignmentTarget(node) { - if (node == null) return false; - switch (node.type) { - case 'IdentifierExpression': - case 'ComputedMemberExpression': - case 'StaticMemberExpression': - return true; - } - return false; -} - -function isPrefixOperator(token) { - switch (token.type) { - case TokenType.INC: - case TokenType.DEC: - case TokenType.ADD: - case TokenType.SUB: - case TokenType.BIT_NOT: - case TokenType.NOT: - case TokenType.DELETE: - case TokenType.VOID: - case TokenType.TYPEOF: - return true; - } - return false; -} - -function isUpdateOperator(token) { - return token.type === TokenType.INC || token.type === TokenType.DEC; -} - -export class GenericParser extends Tokenizer { - constructor(source) { - super(source); - this.allowIn = true; - this.inFunctionBody = false; - this.inParameter = false; - this.allowYieldExpression = false; - this.allowAwaitExpression = false; - this.firstAwaitLocation = null; // for forbidding `await` in async arrow params. - this.module = false; - this.moduleIsTheGoalSymbol = false; - this.strict = false; - - // Cover grammar - this.isBindingElement = true; - this.isAssignmentTarget = true; - this.firstExprError = null; - } - - match(subType) { - return this.lookahead.type === subType; - } - - matchIdentifier() { - switch (this.lookahead.type) { - case TokenType.IDENTIFIER: - case TokenType.LET: - case TokenType.YIELD: - case TokenType.ASYNC: - return true; - case TokenType.AWAIT: - if (!this.moduleIsTheGoalSymbol) { - if (this.firstAwaitLocation === null) { - this.firstAwaitLocation = this.getLocation(); - } - return true; - } - return false; - case TokenType.ESCAPED_KEYWORD: - if (this.lookahead.value === 'await' && !this.moduleIsTheGoalSymbol) { - if (this.firstAwaitLocation === null) { - this.firstAwaitLocation = this.getLocation(); - } - return true; - } - return this.lookahead.value === 'let' - || this.lookahead.value === 'yield' - || this.lookahead.value === 'async'; - } - return false; - } - - eat(tokenType) { - if (this.lookahead.type === tokenType) { - return this.lex(); - } - return null; - } - - expect(tokenType) { - if (this.lookahead.type === tokenType) { - return this.lex(); - } - throw this.createUnexpected(this.lookahead); - } - - matchContextualKeyword(keyword) { - return this.lookahead.type === TokenType.IDENTIFIER && !this.lookahead.escaped && this.lookahead.value === keyword; - } - - expectContextualKeyword(keyword) { - if (this.lookahead.type === TokenType.IDENTIFIER && !this.lookahead.escaped && this.lookahead.value === keyword) { - return this.lex(); - } - throw this.createUnexpected(this.lookahead); - } - - eatContextualKeyword(keyword) { - if (this.lookahead.type === TokenType.IDENTIFIER && !this.lookahead.escaped && this.lookahead.value === keyword) { - return this.lex(); - } - return null; - } - - consumeSemicolon() { - if (this.eat(TokenType.SEMICOLON)) return; - if (this.hasLineTerminatorBeforeNext) return; - if (!this.eof() && !this.match(TokenType.RBRACE)) { - throw this.createUnexpected(this.lookahead); - } - } - - // this is a no-op, reserved for future use - startNode(node) { - return node; - } - - copyNode(src, dest) { - return dest; - } - - finishNode(node /* , startState */) { - return node; - } - - parseModule() { - this.moduleIsTheGoalSymbol = this.module = this.strict = true; - this.lookahead = this.advance(); - - let startState = this.startNode(); - let { directives, statements } = this.parseBody(); - if (!this.match(TokenType.EOS)) { - throw this.createUnexpected(this.lookahead); - } - return this.finishNode(new AST.Module({ directives, items: statements }), startState); - } - - parseScript() { - this.lookahead = this.advance(); - - let startState = this.startNode(); - let { directives, statements } = this.parseBody(); - if (!this.match(TokenType.EOS)) { - throw this.createUnexpected(this.lookahead); - } - return this.finishNode(new AST.Script({ directives, statements }), startState); - } - - parseFunctionBody() { - let oldInFunctionBody = this.inFunctionBody; - let oldModule = this.module; - let oldStrict = this.strict; - this.inFunctionBody = true; - this.module = false; - - let startState = this.startNode(); - this.expect(TokenType.LBRACE); - let body = new AST.FunctionBody(this.parseBody()); - this.expect(TokenType.RBRACE); - body = this.finishNode(body, startState); - - this.inFunctionBody = oldInFunctionBody; - this.module = oldModule; - this.strict = oldStrict; - - return body; - } - - parseBody() { - let directives = [], statements = [], parsingDirectives = true, directiveOctal = null; - - while (true) { - if (this.eof() || this.match(TokenType.RBRACE)) break; - let token = this.lookahead; - let text = token.slice.text; - let isStringLiteral = token.type === TokenType.STRING; - let isModule = this.module; - let directiveLocation = this.getLocation(); - let directiveStartState = this.startNode(); - let stmt = isModule ? this.parseModuleItem() : this.parseStatementListItem(); - if (parsingDirectives) { - if (isStringLiteral && stmt.type === 'ExpressionStatement' && stmt.expression.type === 'LiteralStringExpression') { - if (!directiveOctal && token.octal) { - directiveOctal = this.createErrorWithLocation(directiveLocation, 'Unexpected legacy octal escape sequence: \\' + token.octal); - } - let rawValue = text.slice(1, -1); - if (rawValue === 'use strict') { - this.strict = true; - } - directives.push(this.finishNode(new AST.Directive({ rawValue }), directiveStartState)); - } else { - parsingDirectives = false; - if (directiveOctal && this.strict) { - throw directiveOctal; - } - statements.push(stmt); - } - } else { - statements.push(stmt); - } - } - if (directiveOctal && this.strict) { - throw directiveOctal; - } - - return { directives, statements }; - } - - parseImportSpecifier() { - let startState = this.startNode(), name; - if (this.matchIdentifier()) { - name = this.parseIdentifier(); - if (!this.eatContextualKeyword('as')) { - return this.finishNode(new AST.ImportSpecifier({ - name: null, - binding: this.finishNode(new AST.BindingIdentifier({ name }), startState), - }), startState); - } - } else if (this.lookahead.type.klass.isIdentifierName) { - name = this.parseIdentifierName(); - this.expectContextualKeyword('as'); - } - - return this.finishNode(new AST.ImportSpecifier({ name, binding: this.parseBindingIdentifier() }), startState); - } - - parseNameSpaceBinding() { - this.expect(TokenType.MUL); - this.expectContextualKeyword('as'); - return this.parseBindingIdentifier(); - } - - parseNamedImports() { - let result = []; - this.expect(TokenType.LBRACE); - while (!this.eat(TokenType.RBRACE)) { - result.push(this.parseImportSpecifier()); - if (!this.eat(TokenType.COMMA)) { - this.expect(TokenType.RBRACE); - break; - } - } - return result; - } - - parseFromClause() { - this.expectContextualKeyword('from'); - let value = this.expect(TokenType.STRING).str; - return value; - } - - parseImportDeclaration() { - let startState = this.startNode(), defaultBinding = null, moduleSpecifier; - this.expect(TokenType.IMPORT); - if (this.match(TokenType.STRING)) { - moduleSpecifier = this.lex().str; - this.consumeSemicolon(); - return this.finishNode(new AST.Import({ defaultBinding: null, namedImports: [], moduleSpecifier }), startState); - } - if (this.matchIdentifier()) { - defaultBinding = this.parseBindingIdentifier(); - if (!this.eat(TokenType.COMMA)) { - let decl = new AST.Import({ defaultBinding, namedImports: [], moduleSpecifier: this.parseFromClause() }); - this.consumeSemicolon(); - return this.finishNode(decl, startState); - } - } - if (this.match(TokenType.MUL)) { - let decl = new AST.ImportNamespace({ - defaultBinding, - namespaceBinding: this.parseNameSpaceBinding(), - moduleSpecifier: this.parseFromClause(), - }); - this.consumeSemicolon(); - return this.finishNode(decl, startState); - } else if (this.match(TokenType.LBRACE)) { - let decl = new AST.Import({ - defaultBinding, - namedImports: this.parseNamedImports(), - moduleSpecifier: this.parseFromClause(), - }); - this.consumeSemicolon(); - return this.finishNode(decl, startState); - } - throw this.createUnexpected(this.lookahead); - } - - parseExportSpecifier() { - let startState = this.startNode(); - let name = this.finishNode({ type: EXPORT_UNKNOWN_SPECIFIER, isIdentifier: this.matchIdentifier(), value: this.parseIdentifierName() }, startState); - if (this.eatContextualKeyword('as')) { - let exportedName = this.parseIdentifierName(); - return this.finishNode({ name, exportedName }, startState); - } - return this.finishNode({ name, exportedName: null }, startState); - } - - parseExportClause() { - this.expect(TokenType.LBRACE); - let result = []; - while (!this.eat(TokenType.RBRACE)) { - result.push(this.parseExportSpecifier()); - if (!this.eat(TokenType.COMMA)) { - this.expect(TokenType.RBRACE); - break; - } - } - return result; - } - - parseExportDeclaration() { - let startState = this.startNode(), decl; - this.expect(TokenType.EXPORT); - switch (this.lookahead.type) { - case TokenType.MUL: - this.lex(); - // export * FromClause ; - decl = new AST.ExportAllFrom({ moduleSpecifier: this.parseFromClause() }); - this.consumeSemicolon(); - break; - case TokenType.LBRACE: { - // export ExportClause FromClause ; - // export ExportClause ; - let namedExports = this.parseExportClause(); - let moduleSpecifier = null; - if (this.matchContextualKeyword('from')) { - moduleSpecifier = this.parseFromClause(); - decl = new AST.ExportFrom({ namedExports: namedExports.map(e => this.copyNode(e, new AST.ExportFromSpecifier({ name: e.name.value, exportedName: e.exportedName }))), moduleSpecifier }); - } else { - namedExports.forEach(({ name }) => { - if (!name.isIdentifier) { - throw this.createError(ErrorMessages.ILLEGAL_EXPORTED_NAME); - } - }); - decl = new AST.ExportLocals({ namedExports: namedExports.map(e => this.copyNode(e, new AST.ExportLocalSpecifier({ name: this.copyNode(e.name, new AST.IdentifierExpression({ name: e.name.value })), exportedName: e.exportedName }))) }); - } - this.consumeSemicolon(); - break; - } - case TokenType.CLASS: - // export ClassDeclaration - decl = new AST.Export({ declaration: this.parseClass({ isExpr: false, inDefault: false }) }); - break; - case TokenType.FUNCTION: - // export HoistableDeclaration - decl = new AST.Export({ declaration: this.parseFunction({ isExpr: false, inDefault: false, allowGenerator: true, isAsync: false }) }); - break; - case TokenType.ASYNC: { - let preAsyncStartState = this.startNode(); - this.lex(); - decl = new AST.Export({ declaration: this.parseFunction({ isExpr: false, inDefault: false, allowGenerator: true, isAsync: true, startState: preAsyncStartState }) }); - break; - } - case TokenType.DEFAULT: - this.lex(); - switch (this.lookahead.type) { - case TokenType.FUNCTION: - // export default HoistableDeclaration[Default] - decl = new AST.ExportDefault({ - body: this.parseFunction({ isExpr: false, inDefault: true, allowGenerator: true, isAsync: false }), - }); - break; - case TokenType.CLASS: - // export default ClassDeclaration[Default] - decl = new AST.ExportDefault({ body: this.parseClass({ isExpr: false, inDefault: true }) }); - break; - case TokenType.ASYNC: { - let preAsyncStartState = this.startNode(); - let lexerState = this.saveLexerState(); - this.lex(); - if (!this.hasLineTerminatorBeforeNext && this.match(TokenType.FUNCTION)) { - decl = new AST.ExportDefault({ - body: this.parseFunction({ isExpr: false, inDefault: true, allowGenerator: false, isAsync: true, startState: preAsyncStartState }), - }); - break; - } - this.restoreLexerState(lexerState); - } - // else fall through - default: - // export default [lookahead ∉ {function, async [no LineTerminatorHere] function, class}] AssignmentExpression[In] ; - decl = new AST.ExportDefault({ body: this.parseAssignmentExpression() }); - this.consumeSemicolon(); - break; - } - break; - case TokenType.VAR: - case TokenType.LET: - case TokenType.CONST: - // export LexicalDeclaration - decl = new AST.Export({ declaration: this.parseVariableDeclaration(true) }); - this.consumeSemicolon(); - break; - default: - throw this.createUnexpected(this.lookahead); - } - return this.finishNode(decl, startState); - } - - parseModuleItem() { - switch (this.lookahead.type) { - case TokenType.IMPORT: - return this.parseImportDeclaration(); - case TokenType.EXPORT: - return this.parseExportDeclaration(); - default: - return this.parseStatementListItem(); - } - } - - lookaheadLexicalDeclaration() { - if (this.match(TokenType.LET) || this.match(TokenType.CONST)) { - let lexerState = this.saveLexerState(); - this.lex(); - if ( - this.matchIdentifier() || - this.match(TokenType.LBRACE) || - this.match(TokenType.LBRACK) - ) { - this.restoreLexerState(lexerState); - return true; - } - this.restoreLexerState(lexerState); - } - return false; - } - - parseStatementListItem() { - if (this.eof()) throw this.createUnexpected(this.lookahead); - - switch (this.lookahead.type) { - case TokenType.FUNCTION: - return this.parseFunction({ isExpr: false, inDefault: false, allowGenerator: true, isAsync: false }); - case TokenType.CLASS: - return this.parseClass({ isExpr: false, inDefault: false }); - case TokenType.ASYNC: { - let preAsyncStartState = this.getLocation(); - let lexerState = this.saveLexerState(); - this.lex(); - if (!this.hasLineTerminatorBeforeNext && this.match(TokenType.FUNCTION)) { - return this.parseFunction({ isExpr: false, inDefault: false, allowGenerator: true, isAsync: true, startState: preAsyncStartState }); - } - this.restoreLexerState(lexerState); - return this.parseStatement(); - } - default: - if (this.lookaheadLexicalDeclaration()) { - let startState = this.startNode(); - return this.finishNode(this.parseVariableDeclarationStatement(), startState); - } - return this.parseStatement(); - } - } - - parseStatement() { - let startState = this.startNode(); - let stmt = this.isolateCoverGrammar(this.parseStatementHelper); - return this.finishNode(stmt, startState); - } - - parseStatementHelper() { - if (this.eof()) { - throw this.createUnexpected(this.lookahead); - } - - switch (this.lookahead.type) { - case TokenType.SEMICOLON: - return this.parseEmptyStatement(); - case TokenType.LBRACE: - return this.parseBlockStatement(); - case TokenType.LPAREN: - return this.parseExpressionStatement(); - case TokenType.BREAK: - return this.parseBreakStatement(); - case TokenType.CONTINUE: - return this.parseContinueStatement(); - case TokenType.DEBUGGER: - return this.parseDebuggerStatement(); - case TokenType.DO: - return this.parseDoWhileStatement(); - case TokenType.FOR: - return this.parseForStatement(); - case TokenType.IF: - return this.parseIfStatement(); - case TokenType.RETURN: - return this.parseReturnStatement(); - case TokenType.SWITCH: - return this.parseSwitchStatement(); - case TokenType.THROW: - return this.parseThrowStatement(); - case TokenType.TRY: - return this.parseTryStatement(); - case TokenType.VAR: - return this.parseVariableDeclarationStatement(); - case TokenType.WHILE: - return this.parseWhileStatement(); - case TokenType.WITH: - return this.parseWithStatement(); - case TokenType.FUNCTION: - case TokenType.CLASS: - throw this.createUnexpected(this.lookahead); - - default: { - let lexerState = this.saveLexerState(); - if (this.eat(TokenType.LET)) { - if (this.match(TokenType.LBRACK)) { - this.restoreLexerState(lexerState); - throw this.createUnexpected(this.lookahead); - } - this.restoreLexerState(lexerState); - } else if (this.eat(TokenType.ASYNC)) { - if (!this.hasLineTerminatorBeforeNext && this.match(TokenType.FUNCTION)) { - throw this.createUnexpected(this.lookahead); - } - this.restoreLexerState(lexerState); - } - let expr = this.parseExpression(); - // 12.12 Labelled Statements; - if (expr.type === 'IdentifierExpression' && this.eat(TokenType.COLON)) { - let labeledBody = this.match(TokenType.FUNCTION) - ? this.parseFunction({ isExpr: false, inDefault: false, allowGenerator: false, isAsync: false }) - : this.parseStatement(); - return new AST.LabeledStatement({ label: expr.name, body: labeledBody }); - } - this.consumeSemicolon(); - return new AST.ExpressionStatement({ expression: expr }); - } - } - } - - parseEmptyStatement() { - this.lex(); - return new AST.EmptyStatement; - } - - parseBlockStatement() { - return new AST.BlockStatement({ block: this.parseBlock() }); - } - - parseExpressionStatement() { - let expr = this.parseExpression(); - this.consumeSemicolon(); - return new AST.ExpressionStatement({ expression: expr }); - } - - parseBreakStatement() { - this.lex(); - - // Catch the very common case first: immediately a semicolon (U+003B). - if (this.eat(TokenType.SEMICOLON) || this.hasLineTerminatorBeforeNext) { - return new AST.BreakStatement({ label: null }); - } - - let label = null; - if (this.matchIdentifier()) { - label = this.parseIdentifier(); - } - - this.consumeSemicolon(); - - return new AST.BreakStatement({ label }); - } - - parseContinueStatement() { - this.lex(); - - // Catch the very common case first: immediately a semicolon (U+003B). - if (this.eat(TokenType.SEMICOLON) || this.hasLineTerminatorBeforeNext) { - return new AST.ContinueStatement({ label: null }); - } - - let label = null; - if (this.matchIdentifier()) { - label = this.parseIdentifier(); - } - - this.consumeSemicolon(); - - return new AST.ContinueStatement({ label }); - } - - - parseDebuggerStatement() { - this.lex(); - this.consumeSemicolon(); - return new AST.DebuggerStatement; - } - - parseDoWhileStatement() { - this.lex(); - let body = this.parseStatement(); - this.expect(TokenType.WHILE); - this.expect(TokenType.LPAREN); - let test = this.parseExpression(); - this.expect(TokenType.RPAREN); - this.eat(TokenType.SEMICOLON); - return new AST.DoWhileStatement({ body, test }); - } - - parseForStatement() { - this.lex(); - let isAwait = this.allowAwaitExpression && this.eat(TokenType.AWAIT); - this.expect(TokenType.LPAREN); - let test = null; - let right = null; - if (isAwait && this.match(TokenType.SEMICOLON)) { - throw this.createUnexpected(this.lookahead); - } - if (this.eat(TokenType.SEMICOLON)) { - if (!this.match(TokenType.SEMICOLON)) { - test = this.parseExpression(); - } - this.expect(TokenType.SEMICOLON); - if (!this.match(TokenType.RPAREN)) { - right = this.parseExpression(); - } - return new AST.ForStatement({ init: null, test, update: right, body: this.getIteratorStatementEpilogue() }); - } - let startsWithLet = this.match(TokenType.LET); - let isForDecl = this.lookaheadLexicalDeclaration(); - let leftStartState = this.startNode(); - if (this.match(TokenType.VAR) || isForDecl) { - let previousAllowIn = this.allowIn; - this.allowIn = false; - let init = this.parseVariableDeclaration(false); - this.allowIn = previousAllowIn; - - if (init.declarators.length === 1 && (this.match(TokenType.IN) || this.matchContextualKeyword('of'))) { - let ctor; - let decl = init.declarators[0]; - - if (this.match(TokenType.IN)) { - if (isAwait) { - throw this.createUnexpected(this.lookahead); - } - if (decl.init !== null && (this.strict || init.kind !== 'var' || decl.binding.type !== 'BindingIdentifier')) { - throw this.createError(ErrorMessages.INVALID_VAR_INIT_FOR_IN); - } - ctor = AST.ForInStatement; - this.lex(); - right = this.parseExpression(); - } else { - if (decl.init !== null) { - throw this.createError(isAwait ? ErrorMessages.INVALID_VAR_INIT_FOR_AWAIT : ErrorMessages.INVALID_VAR_INIT_FOR_OF); - } - if (isAwait) { - ctor = AST.ForAwaitStatement; - } else { - ctor = AST.ForOfStatement; - } - this.lex(); - right = this.parseAssignmentExpression(); - } - - let body = this.getIteratorStatementEpilogue(); - - return new ctor({ left: init, right, body }); - } else if (isAwait) { - throw this.createUnexpected(this.lookahead); - } - this.expect(TokenType.SEMICOLON); - if (init.declarators.some(decl => decl.binding.type !== 'BindingIdentifier' && decl.init === null)) { - throw this.createError(ErrorMessages.UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT); - } - if (!this.match(TokenType.SEMICOLON)) { - test = this.parseExpression(); - } - this.expect(TokenType.SEMICOLON); - if (!this.match(TokenType.RPAREN)) { - right = this.parseExpression(); - } - return new AST.ForStatement({ init, test, update: right, body: this.getIteratorStatementEpilogue() }); - - } - let previousAllowIn = this.allowIn; - this.allowIn = false; - let expr = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - this.allowIn = previousAllowIn; - - if (this.isAssignmentTarget && expr.type !== 'AssignmentExpression' && (this.match(TokenType.IN) || this.matchContextualKeyword('of'))) { - if (expr.type === 'ObjectAssignmentTarget' || expr.type === 'ArrayAssignmentTarget') { - this.firstExprError = null; - } - if (startsWithLet && this.matchContextualKeyword('of')) { - throw this.createError(isAwait ? ErrorMessages.INVALID_LHS_IN_FOR_AWAIT : ErrorMessages.INVALID_LHS_IN_FOR_OF); - } - let ctor; - if (this.match(TokenType.IN)) { - if (isAwait) { - throw this.createUnexpected(this.lookahead); - } - ctor = AST.ForInStatement; - this.lex(); - right = this.parseExpression(); - } else { - if (isAwait) { - ctor = AST.ForAwaitStatement; - } else { - ctor = AST.ForOfStatement; - } - this.lex(); - right = this.parseAssignmentExpression(); - } - - return new ctor({ left: this.transformDestructuring(expr), right, body: this.getIteratorStatementEpilogue() }); - } else if (isAwait) { - throw this.createError(ErrorMessages.INVALID_LHS_IN_FOR_AWAIT); - } - if (this.firstExprError) { - throw this.firstExprError; - } - while (this.eat(TokenType.COMMA)) { - let rhs = this.parseAssignmentExpression(); - expr = this.finishNode(new AST.BinaryExpression({ left: expr, operator: ',', right: rhs }), leftStartState); - } - if (this.match(TokenType.IN)) { - throw this.createError(ErrorMessages.INVALID_LHS_IN_FOR_IN); - } - if (this.matchContextualKeyword('of')) { - throw this.createError(ErrorMessages.INVALID_LHS_IN_FOR_OF); - } - this.expect(TokenType.SEMICOLON); - if (!this.match(TokenType.SEMICOLON)) { - test = this.parseExpression(); - } - this.expect(TokenType.SEMICOLON); - if (!this.match(TokenType.RPAREN)) { - right = this.parseExpression(); - } - return new AST.ForStatement({ init: expr, test, update: right, body: this.getIteratorStatementEpilogue() }); - } - - getIteratorStatementEpilogue() { - this.expect(TokenType.RPAREN); - let body = this.parseStatement(); - return body; - } - - parseIfStatementChild() { - return this.match(TokenType.FUNCTION) - ? this.parseFunction({ isExpr: false, inDefault: false, allowGenerator: false, isAsync: false }) - : this.parseStatement(); - } - - parseIfStatement() { - this.lex(); - this.expect(TokenType.LPAREN); - let test = this.parseExpression(); - this.expect(TokenType.RPAREN); - let consequent = this.parseIfStatementChild(); - let alternate = null; - if (this.eat(TokenType.ELSE)) { - alternate = this.parseIfStatementChild(); - } - return new AST.IfStatement({ test, consequent, alternate }); - } - - parseReturnStatement() { - if (!this.inFunctionBody) { - throw this.createError(ErrorMessages.ILLEGAL_RETURN); - } - - this.lex(); - - // Catch the very common case first: immediately a semicolon (U+003B). - if (this.eat(TokenType.SEMICOLON) || this.hasLineTerminatorBeforeNext) { - return new AST.ReturnStatement({ expression: null }); - } - - let expression = null; - if (!this.match(TokenType.RBRACE) && !this.eof()) { - expression = this.parseExpression(); - } - - this.consumeSemicolon(); - return new AST.ReturnStatement({ expression }); - } - - parseSwitchStatement() { - this.lex(); - this.expect(TokenType.LPAREN); - let discriminant = this.parseExpression(); - this.expect(TokenType.RPAREN); - this.expect(TokenType.LBRACE); - - if (this.eat(TokenType.RBRACE)) { - return new AST.SwitchStatement({ discriminant, cases: [] }); - } - - let cases = this.parseSwitchCases(); - if (this.match(TokenType.DEFAULT)) { - let defaultCase = this.parseSwitchDefault(); - let postDefaultCases = this.parseSwitchCases(); - if (this.match(TokenType.DEFAULT)) { - throw this.createError(ErrorMessages.MULTIPLE_DEFAULTS_IN_SWITCH); - } - this.expect(TokenType.RBRACE); - return new AST.SwitchStatementWithDefault({ - discriminant, - preDefaultCases: cases, - defaultCase, - postDefaultCases, - }); - } - this.expect(TokenType.RBRACE); - return new AST.SwitchStatement({ discriminant, cases }); - } - - parseSwitchCases() { - let result = []; - while (!(this.eof() || this.match(TokenType.RBRACE) || this.match(TokenType.DEFAULT))) { - result.push(this.parseSwitchCase()); - } - return result; - } - - parseSwitchCase() { - let startState = this.startNode(); - this.expect(TokenType.CASE); - return this.finishNode(new AST.SwitchCase({ - test: this.parseExpression(), - consequent: this.parseSwitchCaseBody(), - }), startState); - } - - parseSwitchDefault() { - let startState = this.startNode(); - this.expect(TokenType.DEFAULT); - return this.finishNode(new AST.SwitchDefault({ consequent: this.parseSwitchCaseBody() }), startState); - } - - parseSwitchCaseBody() { - this.expect(TokenType.COLON); - return this.parseStatementListInSwitchCaseBody(); - } - - parseStatementListInSwitchCaseBody() { - let result = []; - while (!(this.eof() || this.match(TokenType.RBRACE) || this.match(TokenType.DEFAULT) || this.match(TokenType.CASE))) { - result.push(this.parseStatementListItem()); - } - return result; - } - - parseThrowStatement() { - let token = this.lex(); - if (this.hasLineTerminatorBeforeNext) { - throw this.createErrorWithLocation(token, ErrorMessages.NEWLINE_AFTER_THROW); - } - let expression = this.parseExpression(); - this.consumeSemicolon(); - return new AST.ThrowStatement({ expression }); - } - - parseTryStatement() { - this.lex(); - let body = this.parseBlock(); - - if (this.match(TokenType.CATCH)) { - let catchClause = this.parseCatchClause(); - if (this.eat(TokenType.FINALLY)) { - let finalizer = this.parseBlock(); - return new AST.TryFinallyStatement({ body, catchClause, finalizer }); - } - return new AST.TryCatchStatement({ body, catchClause }); - } - - if (this.eat(TokenType.FINALLY)) { - let finalizer = this.parseBlock(); - return new AST.TryFinallyStatement({ body, catchClause: null, finalizer }); - } - throw this.createError(ErrorMessages.NO_CATCH_OR_FINALLY); - } - - parseVariableDeclarationStatement() { - let declaration = this.parseVariableDeclaration(true); - this.consumeSemicolon(); - return new AST.VariableDeclarationStatement({ declaration }); - } - - parseWhileStatement() { - this.lex(); - this.expect(TokenType.LPAREN); - let test = this.parseExpression(); - let body = this.getIteratorStatementEpilogue(); - return new AST.WhileStatement({ test, body }); - } - - parseWithStatement() { - this.lex(); - this.expect(TokenType.LPAREN); - let object = this.parseExpression(); - this.expect(TokenType.RPAREN); - let body = this.parseStatement(); - return new AST.WithStatement({ object, body }); - } - - parseCatchClause() { - let startState = this.startNode(); - - this.lex(); - this.expect(TokenType.LPAREN); - if (this.match(TokenType.RPAREN) || this.match(TokenType.LPAREN)) { - throw this.createUnexpected(this.lookahead); - } - let binding = this.parseBindingTarget(); - this.expect(TokenType.RPAREN); - let body = this.parseBlock(); - - return this.finishNode(new AST.CatchClause({ binding, body }), startState); - } - - parseBlock() { - let startState = this.startNode(); - this.expect(TokenType.LBRACE); - let body = []; - while (!this.match(TokenType.RBRACE)) { - body.push(this.parseStatementListItem()); - } - this.expect(TokenType.RBRACE); - return this.finishNode(new AST.Block({ statements: body }), startState); - } - - parseVariableDeclaration(bindingPatternsMustHaveInit) { - let startState = this.startNode(); - let token = this.lex(); - - // preceded by this.match(TokenSubType.VAR) || this.match(TokenSubType.LET); - let kind = token.type === TokenType.VAR ? 'var' : token.type === TokenType.CONST ? 'const' : 'let'; - let declarators = this.parseVariableDeclaratorList(bindingPatternsMustHaveInit); - return this.finishNode(new AST.VariableDeclaration({ kind, declarators }), startState); - } - - parseVariableDeclaratorList(bindingPatternsMustHaveInit) { - let result = []; - do { - result.push(this.parseVariableDeclarator(bindingPatternsMustHaveInit)); - } while (this.eat(TokenType.COMMA)); - return result; - } - - parseVariableDeclarator(bindingPatternsMustHaveInit) { - let startState = this.startNode(); - - if (this.match(TokenType.LPAREN)) { - throw this.createUnexpected(this.lookahead); - } - - let previousAllowIn = this.allowIn; - this.allowIn = true; - let binding = this.parseBindingTarget(); - this.allowIn = previousAllowIn; - - if (bindingPatternsMustHaveInit && binding.type !== 'BindingIdentifier' && !this.match(TokenType.ASSIGN)) { - this.expect(TokenType.ASSIGN); - } - - let init = null; - if (this.eat(TokenType.ASSIGN)) { - init = this.parseAssignmentExpression(); - } - - return this.finishNode(new AST.VariableDeclarator({ binding, init }), startState); - } - - isolateCoverGrammar(parser) { - let oldIsBindingElement = this.isBindingElement, - oldIsAssignmentTarget = this.isAssignmentTarget, - oldFirstExprError = this.firstExprError, - result; - this.isBindingElement = this.isAssignmentTarget = true; - this.firstExprError = null; - result = parser.call(this); - if (this.firstExprError !== null) { - throw this.firstExprError; - } - this.isBindingElement = oldIsBindingElement; - this.isAssignmentTarget = oldIsAssignmentTarget; - this.firstExprError = oldFirstExprError; - return result; - } - - inheritCoverGrammar(parser) { - let oldIsBindingElement = this.isBindingElement, - oldIsAssignmentTarget = this.isAssignmentTarget, - oldFirstExprError = this.firstExprError, - result; - this.isBindingElement = this.isAssignmentTarget = true; - this.firstExprError = null; - result = parser.call(this); - this.isBindingElement = this.isBindingElement && oldIsBindingElement; - this.isAssignmentTarget = this.isAssignmentTarget && oldIsAssignmentTarget; - this.firstExprError = oldFirstExprError || this.firstExprError; - return result; - } - - parseExpression() { - let startState = this.startNode(); - - let left = this.parseAssignmentExpression(); - if (this.match(TokenType.COMMA)) { - while (!this.eof()) { - if (!this.match(TokenType.COMMA)) break; - this.lex(); - let right = this.parseAssignmentExpression(); - left = this.finishNode(new AST.BinaryExpression({ left, operator: ',', right }), startState); - } - } - return left; - } - - finishArrowParams(head) { - let { params = null, rest = null } = head; - if (head.type !== ARROW_EXPRESSION_PARAMS) { - if (head.type === 'IdentifierExpression') { - params = [this.targetToBinding(this.transformDestructuring(head))]; - } else { - throw this.createUnexpected(this.lookahead); - } - } - return this.copyNode(head, new AST.FormalParameters({ items: params, rest })); - } - - parseArrowExpressionTail(params, isAsync, startState) { - this.expect(TokenType.ARROW); - let previousYield = this.allowYieldExpression; - let previousAwait = this.allowAwaitExpression; - let previousAwaitLocation = this.firstAwaitLocation; - this.allowYieldExpression = false; - this.allowAwaitExpression = isAsync; - this.firstAwaitLocation = null; - let body; - if (this.match(TokenType.LBRACE)) { - let previousAllowIn = this.allowIn; - this.allowIn = true; - body = this.parseFunctionBody(); - this.allowIn = previousAllowIn; - } else { - body = this.parseAssignmentExpression(); - } - this.allowYieldExpression = previousYield; - this.allowAwaitExpression = previousAwait; - this.firstAwaitLocation = previousAwaitLocation; - return this.finishNode(new AST.ArrowExpression({ isAsync, params, body }), startState); - } - - parseAssignmentExpression() { - return this.isolateCoverGrammar(this.parseAssignmentExpressionOrTarget); - } - - parseAssignmentExpressionOrTarget() { - let startState = this.startNode(); - if (this.allowYieldExpression && this.match(TokenType.YIELD)) { - this.isBindingElement = this.isAssignmentTarget = false; - return this.parseYieldExpression(); - } - let expr = this.parseConditionalExpression(); - if (!this.hasLineTerminatorBeforeNext && this.match(TokenType.ARROW)) { - this.isBindingElement = this.isAssignmentTarget = false; - this.firstExprError = null; - let isAsync = expr.type === ARROW_EXPRESSION_PARAMS && expr.isAsync; - return this.parseArrowExpressionTail(this.finishArrowParams(expr), isAsync, startState); - } - let isAssignmentOperator = false; - let operator = this.lookahead; - switch (operator.type) { - case TokenType.ASSIGN_BIT_OR: - case TokenType.ASSIGN_BIT_XOR: - case TokenType.ASSIGN_BIT_AND: - case TokenType.ASSIGN_SHL: - case TokenType.ASSIGN_SHR: - case TokenType.ASSIGN_SHR_UNSIGNED: - case TokenType.ASSIGN_ADD: - case TokenType.ASSIGN_SUB: - case TokenType.ASSIGN_MUL: - case TokenType.ASSIGN_DIV: - case TokenType.ASSIGN_MOD: - case TokenType.ASSIGN_EXP: - isAssignmentOperator = true; - break; - } - if (isAssignmentOperator) { - if (!this.isAssignmentTarget || !isValidSimpleAssignmentTarget(expr)) { - throw this.createError(ErrorMessages.INVALID_LHS_IN_ASSIGNMENT); - } - expr = this.transformDestructuring(expr); - } else if (operator.type === TokenType.ASSIGN) { - if (!this.isAssignmentTarget) { - throw this.createError(ErrorMessages.INVALID_LHS_IN_ASSIGNMENT); - } - expr = this.transformDestructuring(expr); - } else { - return expr; - } - this.lex(); - let rhs = this.parseAssignmentExpression(); - - this.firstExprError = null; - let node; - if (operator.type === TokenType.ASSIGN) { - node = new AST.AssignmentExpression({ binding: expr, expression: rhs }); - } else { - node = new AST.CompoundAssignmentExpression({ binding: expr, operator: operator.type.name, expression: rhs }); - this.isBindingElement = this.isAssignmentTarget = false; - } - return this.finishNode(node, startState); - } - - targetToBinding(node) { - if (node === null) { - return null; - } - - switch (node.type) { - case 'AssignmentTargetIdentifier': - return this.copyNode(node, new AST.BindingIdentifier({ name: node.name })); - case 'ArrayAssignmentTarget': - return this.copyNode(node, new AST.ArrayBinding({ elements: node.elements.map(e => this.targetToBinding(e)), rest: this.targetToBinding(node.rest) })); - case 'ObjectAssignmentTarget': - return this.copyNode(node, new AST.ObjectBinding({ properties: node.properties.map(p => this.targetToBinding(p)), rest: this.targetToBinding(node.rest) })); - case 'AssignmentTargetPropertyIdentifier': - return this.copyNode(node, new AST.BindingPropertyIdentifier({ binding: this.targetToBinding(node.binding), init: node.init })); - case 'AssignmentTargetPropertyProperty': - return this.copyNode(node, new AST.BindingPropertyProperty({ name: node.name, binding: this.targetToBinding(node.binding) })); - case 'AssignmentTargetWithDefault': - return this.copyNode(node, new AST.BindingWithDefault({ binding: this.targetToBinding(node.binding), init: node.init })); - } - - // istanbul ignore next - throw new Error('Not reached'); - } - - transformDestructuring(node) { - switch (node.type) { - - case 'DataProperty': - return this.copyNode(node, new AST.AssignmentTargetPropertyProperty({ - name: node.name, - binding: this.transformDestructuringWithDefault(node.expression), - })); - case 'ShorthandProperty': - return this.copyNode(node, new AST.AssignmentTargetPropertyIdentifier({ - binding: this.copyNode(node, new AST.AssignmentTargetIdentifier({ name: node.name.name })), - init: null, - })); - - case 'ObjectExpression': { - let last = node.properties.length > 0 ? node.properties[node.properties.length - 1] : void 0; - if (last != null && last.type === 'SpreadProperty') { - return this.copyNode(node, new AST.ObjectAssignmentTarget({ - properties: node.properties.slice(0, -1).map(e => e && this.transformDestructuringWithDefault(e)), - rest: this.transformDestructuring(last.expression), - })); - } - - return this.copyNode(node, new AST.ObjectAssignmentTarget({ - properties: node.properties.map(e => e && this.transformDestructuringWithDefault(e)), - rest: null, - })); - } - case 'ArrayExpression': { - let last = node.elements[node.elements.length - 1]; - if (last != null && last.type === 'SpreadElement') { - return this.copyNode(node, new AST.ArrayAssignmentTarget({ - elements: node.elements.slice(0, -1).map(e => e && this.transformDestructuringWithDefault(e)), - rest: this.copyNode(last.expression, this.transformDestructuring(last.expression)), - })); - } - return this.copyNode(node, new AST.ArrayAssignmentTarget({ - elements: node.elements.map(e => e && this.transformDestructuringWithDefault(e)), - rest: null, - })); - } - case 'IdentifierExpression': - return this.copyNode(node, new AST.AssignmentTargetIdentifier({ name: node.name })); - - case 'StaticPropertyName': - return this.copyNode(node, new AST.AssignmentTargetIdentifier({ name: node.value })); - - case 'ComputedMemberExpression': - return this.copyNode(node, new AST.ComputedMemberAssignmentTarget({ object: node.object, expression: node.expression })); - case 'StaticMemberExpression': - return this.copyNode(node, new AST.StaticMemberAssignmentTarget({ object: node.object, property: node.property })); - - case 'ArrayAssignmentTarget': - case 'ObjectAssignmentTarget': - case 'ComputedMemberAssignmentTarget': - case 'StaticMemberAssignmentTarget': - case 'AssignmentTargetIdentifier': - case 'AssignmentTargetPropertyIdentifier': - case 'AssignmentTargetPropertyProperty': - case 'AssignmentTargetWithDefault': - return node; - } - // istanbul ignore next - throw new Error('Not reached'); - } - - transformDestructuringWithDefault(node) { - switch (node.type) { - case 'AssignmentExpression': - return this.copyNode(node, new AST.AssignmentTargetWithDefault({ - binding: this.transformDestructuring(node.binding), - init: node.expression, - })); - } - return this.transformDestructuring(node); - } - - lookaheadAssignmentExpression() { - if (this.matchIdentifier()) { - return true; - } - switch (this.lookahead.type) { - case TokenType.ADD: - case TokenType.ASSIGN_DIV: - case TokenType.BIT_NOT: - case TokenType.CLASS: - case TokenType.DEC: - case TokenType.DELETE: - case TokenType.DIV: - case TokenType.FALSE: - case TokenType.FUNCTION: - case TokenType.INC: - case TokenType.LBRACE: - case TokenType.LBRACK: - case TokenType.LPAREN: - case TokenType.NEW: - case TokenType.NOT: - case TokenType.NULL: - case TokenType.NUMBER: - case TokenType.STRING: - case TokenType.SUB: - case TokenType.SUPER: - case TokenType.THIS: - case TokenType.TRUE: - case TokenType.TYPEOF: - case TokenType.VOID: - case TokenType.TEMPLATE: - return true; - } - return false; - } - - parseYieldExpression() { - let startState = this.startNode(); - - this.lex(); - if (this.hasLineTerminatorBeforeNext) { - return this.finishNode(new AST.YieldExpression({ expression: null }), startState); - } - let isGenerator = !!this.eat(TokenType.MUL); - let expr = null; - if (isGenerator || this.lookaheadAssignmentExpression()) { - expr = this.parseAssignmentExpression(); - } - let ctor = isGenerator ? AST.YieldGeneratorExpression : AST.YieldExpression; - return this.finishNode(new ctor({ expression: expr }), startState); - } - - parseConditionalExpression() { - let startState = this.startNode(); - let test = this.parseBinaryExpression(); - if (this.firstExprError) return test; - if (this.eat(TokenType.CONDITIONAL)) { - this.isBindingElement = this.isAssignmentTarget = false; - let previousAllowIn = this.allowIn; - this.allowIn = true; - let consequent = this.isolateCoverGrammar(this.parseAssignmentExpression); - this.allowIn = previousAllowIn; - this.expect(TokenType.COLON); - let alternate = this.isolateCoverGrammar(this.parseAssignmentExpression); - return this.finishNode(new AST.ConditionalExpression({ test, consequent, alternate }), startState); - } - return test; - } - - isBinaryOperator(type) { - switch (type) { - case TokenType.OR: - case TokenType.AND: - case TokenType.BIT_OR: - case TokenType.BIT_XOR: - case TokenType.BIT_AND: - case TokenType.EQ: - case TokenType.NE: - case TokenType.EQ_STRICT: - case TokenType.NE_STRICT: - case TokenType.LT: - case TokenType.GT: - case TokenType.LTE: - case TokenType.GTE: - case TokenType.INSTANCEOF: - case TokenType.SHL: - case TokenType.SHR: - case TokenType.SHR_UNSIGNED: - case TokenType.ADD: - case TokenType.SUB: - case TokenType.MUL: - case TokenType.DIV: - case TokenType.MOD: - return true; - case TokenType.IN: - return this.allowIn; - default: - return false; - } - } - - parseBinaryExpression() { - let startState = this.startNode(); - let left = this.parseExponentiationExpression(); - if (this.firstExprError) { - return left; - } - - let operator = this.lookahead.type; - if (!this.isBinaryOperator(operator)) return left; - - this.isBindingElement = this.isAssignmentTarget = false; - - this.lex(); - let stack = []; - stack.push({ startState, left, operator, precedence: BinaryPrecedence[operator.name] }); - startState = this.startNode(); - let right = this.isolateCoverGrammar(this.parseExponentiationExpression); - operator = this.lookahead.type; - while (this.isBinaryOperator(operator)) { - let precedence = BinaryPrecedence[operator.name]; - // Reduce: make a binary expression from the three topmost entries. - while (stack.length && precedence <= stack[stack.length - 1].precedence) { - let stackItem = stack[stack.length - 1]; - let stackOperator = stackItem.operator; - left = stackItem.left; - stack.pop(); - startState = stackItem.startState; - right = this.finishNode(new AST.BinaryExpression({ left, operator: stackOperator.name, right }), startState); - } - - this.lex(); - stack.push({ startState, left: right, operator, precedence }); - - startState = this.startNode(); - right = this.isolateCoverGrammar(this.parseExponentiationExpression); - operator = this.lookahead.type; - } - - // Final reduce to clean-up the stack. - return stack.reduceRight((expr, stackItem) => - this.finishNode(new AST.BinaryExpression({ - left: stackItem.left, - operator: stackItem.operator.name, - right: expr, - }), stackItem.startState), - right); - } - - parseExponentiationExpression() { - let startState = this.startNode(); - - let leftIsParenthesized = this.lookahead.type === TokenType.LPAREN; - let left = this.parseUnaryExpression(); - if (this.lookahead.type !== TokenType.EXP) { - return left; - } - if (left.type === 'UnaryExpression' && !leftIsParenthesized) { - throw this.createError(ErrorMessages.INVALID_EXPONENTIATION_LHS); - } - this.lex(); - - this.isBindingElement = this.isAssignmentTarget = false; - - let right = this.isolateCoverGrammar(this.parseExponentiationExpression); - return this.finishNode(new AST.BinaryExpression({ left, operator: '**', right }), startState); - } - - parseUnaryExpression() { - if (this.lookahead.type.klass !== TokenClass.Punctuator && this.lookahead.type.klass !== TokenClass.Keyword) { - return this.parseUpdateExpression(); - } - - let startState = this.startNode(); - if (this.allowAwaitExpression && this.eat(TokenType.AWAIT)) { - this.isBindingElement = this.isAssignmentTarget = false; - let expression = this.isolateCoverGrammar(this.parseUnaryExpression); - return this.finishNode(new AST.AwaitExpression({ expression }), startState); - } - - let operator = this.lookahead; - if (!isPrefixOperator(operator)) { - return this.parseUpdateExpression(); - } - - this.lex(); - this.isBindingElement = this.isAssignmentTarget = false; - - let node; - if (isUpdateOperator(operator)) { - let operandStartLocation = this.getLocation(); - let operand = this.isolateCoverGrammar(this.parseUnaryExpression); - if (!isValidSimpleAssignmentTarget(operand)) { - throw this.createErrorWithLocation(operandStartLocation, ErrorMessages.INVALID_UPDATE_OPERAND); - } - operand = this.transformDestructuring(operand); - node = new AST.UpdateExpression({ isPrefix: true, operator: operator.value, operand }); - } else { - let operand = this.isolateCoverGrammar(this.parseUnaryExpression); - node = new AST.UnaryExpression({ operator: operator.value, operand }); - } - - return this.finishNode(node, startState); - } - - parseUpdateExpression() { - let startLocation = this.getLocation(); - let startState = this.startNode(); - - let operand = this.parseLeftHandSideExpression({ allowCall: true }); - if (this.firstExprError || this.hasLineTerminatorBeforeNext) return operand; - - let operator = this.lookahead; - if (!isUpdateOperator(operator)) return operand; - this.lex(); - this.isBindingElement = this.isAssignmentTarget = false; - if (!isValidSimpleAssignmentTarget(operand)) { - throw this.createErrorWithLocation(startLocation, ErrorMessages.INVALID_UPDATE_OPERAND); - } - operand = this.transformDestructuring(operand); - - return this.finishNode(new AST.UpdateExpression({ isPrefix: false, operator: operator.value, operand }), startState); - } - - parseLeftHandSideExpression({ allowCall }) { - let startState = this.startNode(); - let previousAllowIn = this.allowIn; - this.allowIn = true; - - let expr, token = this.lookahead; - - if (this.eat(TokenType.SUPER)) { - this.isBindingElement = false; - this.isAssignmentTarget = false; - expr = this.finishNode(new AST.Super, startState); - if (this.match(TokenType.LPAREN)) { - if (allowCall) { - expr = this.finishNode(new AST.CallExpression({ - callee: expr, - arguments: this.parseArgumentList().args, - }), startState); - } else { - throw this.createUnexpected(token); - } - } else if (this.match(TokenType.LBRACK)) { - expr = this.finishNode(new AST.ComputedMemberExpression({ - object: expr, - expression: this.parseComputedMember(), - }), startState); - this.isAssignmentTarget = true; - } else if (this.match(TokenType.PERIOD)) { - expr = this.finishNode(new AST.StaticMemberExpression({ - object: expr, - property: this.parseStaticMember(), - }), startState); - this.isAssignmentTarget = true; - } else { - throw this.createUnexpected(token); - } - } else if (this.match(TokenType.NEW)) { - this.isBindingElement = this.isAssignmentTarget = false; - expr = this.parseNewExpression(); - } else if (this.match(TokenType.ASYNC)) { - expr = this.parsePrimaryExpression(); - // there's only three things this could be: an identifier, an async arrow, or an async function expression. - if (expr.type === 'IdentifierExpression' && allowCall && !this.hasLineTerminatorBeforeNext) { - if (this.matchIdentifier()) { - // `async [no lineterminator here] identifier` must be an async arrow - let afterAsyncStartState = this.startNode(); - let previousAwait = this.allowAwaitExpression; - this.allowAwaitExpression = true; - let param = this.parseBindingIdentifier(); - this.allowAwaitExpression = previousAwait; - this.ensureArrow(); - return this.finishNode({ - type: ARROW_EXPRESSION_PARAMS, - params: [param], - rest: null, - isAsync: true, - }, afterAsyncStartState); - } - if (this.match(TokenType.LPAREN)) { - // the maximally obnoxious case: `async (` - let afterAsyncStartState = this.startNode(); - let previousAwaitLocation = this.firstAwaitLocation; - this.firstAwaitLocation = null; - let { args, locationFollowingFirstSpread } = this.parseArgumentList(); - if (this.isBindingElement && !this.hasLineTerminatorBeforeNext && this.match(TokenType.ARROW)) { - if (locationFollowingFirstSpread !== null) { - throw this.createErrorWithLocation(locationFollowingFirstSpread, ErrorMessages.UNEXPECTED_TOKEN(',')); - } - if (this.firstAwaitLocation !== null) { - throw this.createErrorWithLocation(this.firstAwaitLocation, ErrorMessages.NO_AWAIT_IN_ASYNC_PARAMS); - } - let rest = null; - if (args.length > 0 && args[args.length - 1].type === 'SpreadElement') { - rest = this.targetToBinding(this.transformDestructuringWithDefault(args[args.length - 1].expression)); - if (rest.init != null) { - throw this.createError(ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION); - } - args = args.slice(0, -1); - } - let params = args.map(arg => this.targetToBinding(this.transformDestructuringWithDefault(arg))); - return this.finishNode({ - type: ARROW_EXPRESSION_PARAMS, - params, - rest, - isAsync: true, - }, afterAsyncStartState); - } - this.firstAwaitLocation = previousAwaitLocation || this.firstAwaitLocation; - // otherwise we've just taken the first iteration of the loop below - this.isBindingElement = this.isAssignmentTarget = false; - expr = this.finishNode(new AST.CallExpression({ - callee: expr, - arguments: args, - }), startState); - } - } - } else { - expr = this.parsePrimaryExpression(); - if (this.firstExprError) { - return expr; - } - } - - while (true) { - if (allowCall && this.match(TokenType.LPAREN)) { - this.isBindingElement = this.isAssignmentTarget = false; - expr = this.finishNode(new AST.CallExpression({ - callee: expr, - arguments: this.parseArgumentList().args, - }), startState); - } else if (this.match(TokenType.LBRACK)) { - this.isBindingElement = false; - this.isAssignmentTarget = true; - expr = this.finishNode(new AST.ComputedMemberExpression({ - object: expr, - expression: this.parseComputedMember(), - }), startState); - } else if (this.match(TokenType.PERIOD)) { - this.isBindingElement = false; - this.isAssignmentTarget = true; - expr = this.finishNode(new AST.StaticMemberExpression({ - object: expr, - property: this.parseStaticMember(), - }), startState); - } else if (this.match(TokenType.TEMPLATE)) { - this.isBindingElement = this.isAssignmentTarget = false; - expr = this.finishNode(new AST.TemplateExpression({ - tag: expr, - elements: this.parseTemplateElements(), - }), startState); - } else { - break; - } - } - - this.allowIn = previousAllowIn; - - return expr; - } - - parseTemplateElements() { - let startState = this.startNode(); - let token = this.lookahead; - if (token.tail) { - this.lex(); - return [this.finishNode(new AST.TemplateElement({ rawValue: token.slice.text.slice(1, -1) }), startState)]; - } - let result = [ - this.finishNode(new AST.TemplateElement({ rawValue: this.lex().slice.text.slice(1, -2) }), startState), - ]; - while (true) { - result.push(this.parseExpression()); - if (!this.match(TokenType.RBRACE)) { - throw this.createILLEGAL(); - } - this.index = this.startIndex; - this.line = this.startLine; - this.lineStart = this.startLineStart; - this.lookahead = this.scanTemplateElement(); - startState = this.startNode(); - token = this.lex(); - if (token.tail) { - result.push(this.finishNode(new AST.TemplateElement({ rawValue: token.slice.text.slice(1, -1) }), startState)); - return result; - } - result.push(this.finishNode(new AST.TemplateElement({ rawValue: token.slice.text.slice(1, -2) }), startState)); - } - } - - parseStaticMember() { - this.lex(); - if (this.lookahead.type.klass.isIdentifierName) { - return this.lex().value; - } - throw this.createUnexpected(this.lookahead); - } - - parseComputedMember() { - this.lex(); - let expr = this.parseExpression(); - this.expect(TokenType.RBRACK); - return expr; - } - - parseNewExpression() { - let startState = this.startNode(); - this.lex(); - if (this.eat(TokenType.PERIOD)) { - this.expectContextualKeyword('target'); - return this.finishNode(new AST.NewTargetExpression, startState); - } - let callee = this.isolateCoverGrammar(() => this.parseLeftHandSideExpression({ allowCall: false })); - return this.finishNode(new AST.NewExpression({ - callee, - arguments: this.match(TokenType.LPAREN) ? this.parseArgumentList().args : [], - }), startState); - } - - parseRegexFlags(flags) { - let global = false, - ignoreCase = false, - multiLine = false, - unicode = false, - sticky = false, - dotAll = false; - for (let i = 0; i < flags.length; ++i) { - let f = flags[i]; - switch (f) { - case 'g': - if (global) { - throw this.createError('Duplicate regular expression flag \'g\''); - } - global = true; - break; - case 'i': - if (ignoreCase) { - throw this.createError('Duplicate regular expression flag \'i\''); - } - ignoreCase = true; - break; - case 'm': - if (multiLine) { - throw this.createError('Duplicate regular expression flag \'m\''); - } - multiLine = true; - break; - case 'u': - if (unicode) { - throw this.createError('Duplicate regular expression flag \'u\''); - } - unicode = true; - break; - case 'y': - if (sticky) { - throw this.createError('Duplicate regular expression flag \'y\''); - } - sticky = true; - break; - case 's': - if (dotAll) { - throw this.createError('Duplicate regular expression flag \'s\''); - } - dotAll = true; - break; - default: - throw this.createError(`Invalid regular expression flag '${f}'`); - } - } - return { global, ignoreCase, multiLine, unicode, sticky, dotAll }; - } - - parsePrimaryExpression() { - if (this.match(TokenType.LPAREN)) { - return this.parseGroupExpression(); - } - - let startState = this.startNode(); - - if (this.eat(TokenType.ASYNC)) { - if (!this.hasLineTerminatorBeforeNext && this.match(TokenType.FUNCTION)) { - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(this.parseFunction({ isExpr: true, inDefault: false, allowGenerator: true, isAsync: true }), startState); - } - return this.finishNode(new AST.IdentifierExpression({ name: 'async' }), startState); - } - - if (this.matchIdentifier()) { - return this.finishNode(new AST.IdentifierExpression({ name: this.parseIdentifier() }), startState); - } - switch (this.lookahead.type) { - case TokenType.STRING: - this.isBindingElement = this.isAssignmentTarget = false; - return this.parseStringLiteral(); - case TokenType.NUMBER: - this.isBindingElement = this.isAssignmentTarget = false; - return this.parseNumericLiteral(); - case TokenType.THIS: - this.lex(); - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(new AST.ThisExpression, startState); - case TokenType.FUNCTION: - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(this.parseFunction({ isExpr: true, inDefault: false, allowGenerator: true, isAsync: false }), startState); - case TokenType.TRUE: - this.lex(); - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(new AST.LiteralBooleanExpression({ value: true }), startState); - case TokenType.FALSE: - this.lex(); - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(new AST.LiteralBooleanExpression({ value: false }), startState); - case TokenType.NULL: - this.lex(); - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(new AST.LiteralNullExpression, startState); - case TokenType.LBRACK: - return this.parseArrayExpression(); - case TokenType.LBRACE: - return this.parseObjectExpression(); - case TokenType.TEMPLATE: - this.isBindingElement = this.isAssignmentTarget = false; - return this.finishNode(new AST.TemplateExpression({ tag: null, elements: this.parseTemplateElements() }), startState); - case TokenType.DIV: - case TokenType.ASSIGN_DIV: { - this.isBindingElement = this.isAssignmentTarget = false; - this.lookahead = this.scanRegExp(this.match(TokenType.DIV) ? '/' : '/='); - let token = this.lex(); - let lastSlash = token.value.lastIndexOf('/'); - let pattern = token.value.slice(1, lastSlash); - let flags = token.value.slice(lastSlash + 1); - let ctorArgs = this.parseRegexFlags(flags); - if (!acceptRegex(pattern, ctorArgs)) { - throw this.createError(ErrorMessages.INVALID_REGEX); - } - ctorArgs.pattern = pattern; - return this.finishNode(new AST.LiteralRegExpExpression(ctorArgs), startState); - } - case TokenType.CLASS: - this.isBindingElement = this.isAssignmentTarget = false; - return this.parseClass({ isExpr: true, inDefault: false }); - default: - throw this.createUnexpected(this.lookahead); - } - } - - parseNumericLiteral() { - let startLocation = this.getLocation(); - let startState = this.startNode(); - let token = this.lex(); - if (token.octal && this.strict) { - if (token.noctal) { - throw this.createErrorWithLocation(startLocation, 'Unexpected noctal integer literal'); - } else { - throw this.createErrorWithLocation(startLocation, 'Unexpected legacy octal integer literal'); - } - } - let node = token.value === 1 / 0 - ? new AST.LiteralInfinityExpression - : new AST.LiteralNumericExpression({ value: token.value }); - return this.finishNode(node, startState); - } - - parseStringLiteral() { - let startLocation = this.getLocation(); - let startState = this.startNode(); - let token = this.lex(); - if (token.octal != null && this.strict) { - throw this.createErrorWithLocation(startLocation, 'Unexpected legacy octal escape sequence: \\' + token.octal); - } - return this.finishNode(new AST.LiteralStringExpression({ value: token.str }), startState); - } - - parseIdentifierName() { - if (this.lookahead.type.klass.isIdentifierName) { - return this.lex().value; - } - throw this.createUnexpected(this.lookahead); - } - - parseBindingIdentifier() { - let startState = this.startNode(); - return this.finishNode(new AST.BindingIdentifier({ name: this.parseIdentifier() }), startState); - } - - parseIdentifier() { - if (this.lookahead.value === 'yield' && this.allowYieldExpression) { - throw this.createError(ErrorMessages.ILLEGAL_YIELD_IDENTIFIER); - } - if (this.lookahead.value === 'await' && this.allowAwaitExpression) { - throw this.createError(ErrorMessages.ILLEGAL_AWAIT_IDENTIFIER); - } - if (this.matchIdentifier()) { - return this.lex().value; - } - throw this.createUnexpected(this.lookahead); - } - - parseArgumentList() { - this.lex(); - let args = this.parseArguments(); - this.expect(TokenType.RPAREN); - return args; - } - - parseArguments() { - let args = []; - let locationFollowingFirstSpread = null; - while (!this.match(TokenType.RPAREN)) { - let arg; - let startState = this.startNode(); - if (this.eat(TokenType.ELLIPSIS)) { - arg = this.finishNode(new AST.SpreadElement({ expression: this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget) }), startState); - if (locationFollowingFirstSpread === null) { - args.push(arg); - if (this.match(TokenType.RPAREN)) { - break; - } - locationFollowingFirstSpread = this.getLocation(); - this.expect(TokenType.COMMA); - continue; - } - } else { - arg = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - } - args.push(arg); - if (this.match(TokenType.RPAREN)) { - break; - } - this.expect(TokenType.COMMA); - } - return { args, locationFollowingFirstSpread }; - } - - // 11.2 Left-Hand-Side Expressions; - - ensureArrow() { - if (this.hasLineTerminatorBeforeNext) { - throw this.createError(ErrorMessages.UNEXPECTED_LINE_TERMINATOR); - } - if (!this.match(TokenType.ARROW)) { - this.expect(TokenType.ARROW); - } - } - - parseGroupExpression() { - // At this point, we need to parse 3 things: - // 1. Group expression - // 2. Assignment target of assignment expression - // 3. Parameter list of arrow function - let rest = null; - let preParenStartState = this.startNode(); - let start = this.expect(TokenType.LPAREN); - let postParenStartState = this.startNode(); - if (this.match(TokenType.RPAREN)) { - this.lex(); - let paramsNode = this.finishNode({ - type: ARROW_EXPRESSION_PARAMS, - params: [], - rest: null, - isAsync: false, - }, preParenStartState); - this.ensureArrow(); - this.isBindingElement = this.isAssignmentTarget = false; - return paramsNode; - } else if (this.eat(TokenType.ELLIPSIS)) { - rest = this.parseBindingTarget(); - if (this.match(TokenType.ASSIGN)) { - throw this.createError(ErrorMessages.INVALID_REST_PARAMETERS_INITIALIZATION); - } - if (this.match(TokenType.COMMA)) { - throw this.createError(ErrorMessages.INVALID_LAST_REST_PARAMETER); - } - this.expect(TokenType.RPAREN); - let paramsNode = this.finishNode({ - type: ARROW_EXPRESSION_PARAMS, - params: [], - rest, - isAsync: false, - }, preParenStartState); - this.ensureArrow(); - this.isBindingElement = this.isAssignmentTarget = false; - return paramsNode; - } - let group = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - - let params = this.isBindingElement ? [this.targetToBinding(this.transformDestructuringWithDefault(group))] : null; - - while (this.eat(TokenType.COMMA)) { - if (this.match(TokenType.RPAREN)) { - if (!this.isBindingElement) { - throw this.createUnexpected(this.lookahead); - } - this.firstExprError = this.firstExprError || this.createUnexpected(this.lookahead); - group = null; - break; - } - this.isAssignmentTarget = false; - if (this.match(TokenType.ELLIPSIS)) { - if (!this.isBindingElement) { - throw this.createUnexpected(this.lookahead); - } - this.lex(); - rest = this.parseBindingTarget(); - if (this.match(TokenType.ASSIGN)) { - throw this.createError(ErrorMessages.INVALID_REST_PARAMETERS_INITIALIZATION); - } - if (this.match(TokenType.COMMA)) { - throw this.createError(ErrorMessages.INVALID_LAST_REST_PARAMETER); - } - break; - } - - if (group) { - // Can be either binding element or assignment target. - let expr = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - if (this.isBindingElement) { - params.push(this.targetToBinding(this.transformDestructuringWithDefault(expr))); - } else { - params = null; - } - - if (this.firstExprError) { - group = null; - } else { - group = this.finishNode(new AST.BinaryExpression({ - left: group, - operator: ',', - right: expr, - }), postParenStartState); - } - } else { - // Can be only binding elements. - let binding = this.parseBindingElement(); - params.push(binding); - } - } - this.expect(TokenType.RPAREN); - - if (!this.hasLineTerminatorBeforeNext && this.match(TokenType.ARROW)) { - if (!this.isBindingElement) { - throw this.createErrorWithLocation(start, ErrorMessages.ILLEGAL_ARROW_FUNCTION_PARAMS); - } - - this.isBindingElement = false; - return this.finishNode({ - type: ARROW_EXPRESSION_PARAMS, - params, - rest, - isAsync: false, - }, preParenStartState); - } - // Ensure assignment pattern: - if (rest) { - this.ensureArrow(); - } - this.isBindingElement = false; - if (!isValidSimpleAssignmentTarget(group)) { - this.isAssignmentTarget = false; - } - return group; - } - - parseArrayExpression() { - let startLocation = this.getLocation(); - let startState = this.startNode(); - - this.lex(); - - let exprs = []; - let rest = null; - - while (true) { - if (this.match(TokenType.RBRACK)) { - break; - } - if (this.eat(TokenType.COMMA)) { - exprs.push(null); - } else { - let elementStartState = this.startNode(); - let expr; - if (this.eat(TokenType.ELLIPSIS)) { - // Spread/Rest element - expr = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - if (!this.isAssignmentTarget && this.firstExprError) { - throw this.firstExprError; - } - if (expr.type === 'ArrayAssignmentTarget' || expr.type === 'ObjectAssignmentTarget') { - rest = expr; - break; - } - if (expr.type !== 'ArrayExpression' && expr.type !== 'ObjectExpression' && !isValidSimpleAssignmentTarget(expr)) { - this.isBindingElement = this.isAssignmentTarget = false; - } - expr = this.finishNode(new AST.SpreadElement({ expression: expr }), elementStartState); - if (!this.match(TokenType.RBRACK)) { - this.isBindingElement = this.isAssignmentTarget = false; - } - } else { - expr = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - if (!this.isAssignmentTarget && this.firstExprError) { - throw this.firstExprError; - } - } - exprs.push(expr); - - if (!this.match(TokenType.RBRACK)) { - this.expect(TokenType.COMMA); - } - } - } - - if (rest && this.match(TokenType.COMMA)) { - throw this.createErrorWithLocation(startLocation, ErrorMessages.UNEXPECTED_COMMA_AFTER_REST); - } - - this.expect(TokenType.RBRACK); - - if (rest) { - // No need to check isAssignmentTarget: the only way to have something we know is a rest element is if we have ...Object/ArrayAssignmentTarget, which implies we have a firstExprError; as such, if isAssignmentTarget were false, we'd've thrown above before setting rest. - return this.finishNode(new AST.ArrayAssignmentTarget({ - elements: exprs.map(e => e && this.transformDestructuringWithDefault(e)), - rest, - }), startState); - } else if (this.firstExprError) { - let last = exprs[exprs.length - 1]; - if (last != null && last.type === 'SpreadElement') { - return this.finishNode(new AST.ArrayAssignmentTarget({ - elements: exprs.slice(0, -1).map(e => e && this.transformDestructuringWithDefault(e)), - rest: this.transformDestructuring(last.expression), - }), startState); - } - return this.finishNode(new AST.ArrayAssignmentTarget({ - elements: exprs.map(e => e && this.transformDestructuringWithDefault(e)), - rest: null, - }), startState); - - } - return this.finishNode(new AST.ArrayExpression({ elements: exprs }), startState); - } - - parseObjectExpression() { - let startState = this.startNode(); - this.lex(); - let properties = []; - while (!this.match(TokenType.RBRACE)) { - let isSpreadProperty = false; - if (this.match(TokenType.ELLIPSIS)) { - isSpreadProperty = true; - let spreadPropertyOrAssignmentTarget = this.parseSpreadPropertyDefinition(); - properties.push(spreadPropertyOrAssignmentTarget); - } else { - let property = this.inheritCoverGrammar(this.parsePropertyDefinition); - properties.push(property); - } - if (!this.match(TokenType.RBRACE)) { - this.expect(TokenType.COMMA); - if (isSpreadProperty) { - this.isBindingElement = this.isAssignmentTarget = false; - } - } - } - this.expect(TokenType.RBRACE); - if (this.firstExprError) { - if (!this.isAssignmentTarget) { - throw this.createError(ErrorMessages.INVALID_LHS_IN_BINDING); - } - let last = properties[properties.length - 1]; - if (last != null && last.type === 'SpreadProperty') { - return this.finishNode(new AST.ObjectAssignmentTarget({ - properties: properties.slice(0, -1).map(p => this.transformDestructuringWithDefault(p)), - rest: this.transformDestructuring(last.expression), - }), startState); - } - return this.finishNode(new AST.ObjectAssignmentTarget({ properties: properties.map(p => this.transformDestructuringWithDefault(p)), rest: null }), startState); - } - return this.finishNode(new AST.ObjectExpression({ properties }), startState); - } - - parseSpreadPropertyDefinition() { - let startState = this.startNode(); - this.expect(TokenType.ELLIPSIS); - let expression = this.parseAssignmentExpression(); - if (!isValidSimpleAssignmentTarget(expression)) { - this.isBindingElement = this.isAssignmentTarget = false; - } else if (expression.type !== 'IdentifierExpression') { - this.isBindingElement = false; - } - return this.finishNode(new AST.SpreadProperty({ expression }), startState); - } - - parsePropertyDefinition() { - let startLocation = this.getLocation(); - let startState = this.startNode(); - let token = this.lookahead; - - let { methodOrKey, kind } = this.parseMethodDefinition(); - switch (kind) { - case 'method': - this.isBindingElement = this.isAssignmentTarget = false; - return methodOrKey; - case 'identifier': - if (token.value === 'await' && this.firstAwaitLocation == null) { - this.firstAwaitLocation = this.getLocation(); - } - if (this.eat(TokenType.ASSIGN)) { - if (this.allowYieldExpression && token.value === 'yield') { - throw this.createError(ErrorMessages.ILLEGAL_YIELD_IDENTIFIER); - } - if (this.allowAwaitExpression && token.value === 'await') { - throw this.createError(ErrorMessages.ILLEGAL_AWAIT_IDENTIFIER); - } - // CoverInitializedName - let init = this.isolateCoverGrammar(this.parseAssignmentExpression); - this.firstExprError = this.createErrorWithLocation(startLocation, ErrorMessages.ILLEGAL_PROPERTY); - return this.finishNode(new AST.AssignmentTargetPropertyIdentifier({ - binding: this.transformDestructuring(methodOrKey), - init, - }), startState); - } else if (!this.match(TokenType.COLON)) { - if (this.allowYieldExpression && token.value === 'yield') { - throw this.createError(ErrorMessages.ILLEGAL_YIELD_IDENTIFIER); - } - if (this.allowAwaitExpression && token.value === 'await') { - throw this.createError(ErrorMessages.ILLEGAL_AWAIT_IDENTIFIER); - } - if (token.type === TokenType.IDENTIFIER || token.value === 'let' || token.value === 'yield' || token.value === 'async' || token.value === 'await') { - return this.finishNode(new AST.ShorthandProperty({ name: this.finishNode(new AST.IdentifierExpression({ name: methodOrKey.value }), startState) }), startState); - } - throw this.createUnexpected(token); - } - } - - // property - this.expect(TokenType.COLON); - - let expr = this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget); - if (this.firstExprError) { - return this.finishNode(new AST.AssignmentTargetPropertyProperty({ name: methodOrKey, binding: expr }), startState); - } - return this.finishNode(new AST.DataProperty({ name: methodOrKey, expression: expr }), startState); - } - - parsePropertyName() { - // PropertyName[Yield,GeneratorParameter]: - let token = this.lookahead; - let startState = this.startNode(); - - if (this.eof()) { - throw this.createUnexpected(token); - } - - switch (token.type) { - case TokenType.STRING: - return { - name: this.finishNode(new AST.StaticPropertyName({ - value: this.parseStringLiteral().value, - }), startState), - binding: null, - }; - case TokenType.NUMBER: { - let numLiteral = this.parseNumericLiteral(); - return { - name: this.finishNode(new AST.StaticPropertyName({ - value: `${numLiteral.type === 'LiteralInfinityExpression' ? 1 / 0 : numLiteral.value}`, - }), startState), - binding: null, - }; - } - case TokenType.LBRACK: { - this.lex(); - let expr = this.parseAssignmentExpression(); - this.expect(TokenType.RBRACK); - return { name: this.finishNode(new AST.ComputedPropertyName({ expression: expr }), startState), binding: null }; - } - } - - let name = this.parseIdentifierName(); - return { - name: this.finishNode(new AST.StaticPropertyName({ value: name }), startState), - binding: this.finishNode(new AST.BindingIdentifier({ name }), startState), - }; - } - - /** - * Test if lookahead can be the beginning of a `PropertyName`. - * @returns {boolean} - */ - lookaheadPropertyName() { - switch (this.lookahead.type) { - case TokenType.NUMBER: - case TokenType.STRING: - case TokenType.LBRACK: - return true; - default: - return this.lookahead.type.klass.isIdentifierName; - } - } - - // eslint-disable-next-line valid-jsdoc - /** - * Try to parse a method definition. - * - * If it turns out to be one of: - * * `IdentifierReference` - * * `CoverInitializedName` (`IdentifierReference "=" AssignmentExpression`) - * * `PropertyName : AssignmentExpression` - * The parser will stop at the end of the leading `Identifier` or `PropertyName` and return it. - * - * @returns {{methodOrKey: (Method|PropertyName), kind: string}} - */ - parseMethodDefinition() { - let token = this.lookahead; - let startState = this.startNode(); - - let preAsyncTokenState = this.saveLexerState(); - - let isAsync = !!this.eat(TokenType.ASYNC); - if (isAsync && this.hasLineTerminatorBeforeNext) { - isAsync = false; - this.restoreLexerState(preAsyncTokenState); - } - - let isGenerator = !!this.eat(TokenType.MUL); - if (isAsync && !this.lookaheadPropertyName()) { - isAsync = false; - isGenerator = false; - this.restoreLexerState(preAsyncTokenState); - } - - let { name } = this.parsePropertyName(); - - if (!isGenerator && !isAsync) { - if (token.type === TokenType.IDENTIFIER && token.value.length === 3) { - // Property Assignment: Getter and Setter. - if (token.value === 'get' && this.lookaheadPropertyName() && !token.escaped) { - ({ name } = this.parsePropertyName()); - this.expect(TokenType.LPAREN); - this.expect(TokenType.RPAREN); - let previousYield = this.allowYieldExpression; - let previousAwait = this.allowAwaitExpression; - let previousAwaitLocation = this.firstAwaitLocation; - this.allowYieldExpression = false; - this.allowAwaitExpression = false; - this.firstAwaitLocation = null; - let body = this.parseFunctionBody(); - this.allowYieldExpression = previousYield; - this.allowAwaitExpression = previousAwait; - this.firstAwaitLocation = previousAwaitLocation; - return { - methodOrKey: this.finishNode(new AST.Getter({ name, body }), startState), - kind: 'method', - }; - } else if (token.value === 'set' && this.lookaheadPropertyName() && !token.escaped) { - ({ name } = this.parsePropertyName()); - this.expect(TokenType.LPAREN); - let previousYield = this.allowYieldExpression; - let previousAwait = this.allowAwaitExpression; - let previousAwaitLocation = this.firstAwaitLocation; - this.allowYieldExpression = false; - this.allowAwaitExpression = false; - this.firstAwaitLocation = null; - let param = this.parseBindingElement(); - this.expect(TokenType.RPAREN); - let body = this.parseFunctionBody(); - this.allowYieldExpression = previousYield; - this.allowAwaitExpression = previousAwait; - this.firstAwaitLocation = previousAwaitLocation; - return { - methodOrKey: this.finishNode(new AST.Setter({ name, param, body }), startState), - kind: 'method', - }; - } - } - } - if (isAsync) { - let previousYield = this.allowYieldExpression; - let previousAwait = this.allowAwaitExpression; - this.allowYieldExpression = isGenerator; - this.allowAwaitExpression = true; - let params = this.parseParams(); - this.allowYieldExpression = isGenerator; - this.allowAwaitExpression = true; - let body = this.parseFunctionBody(); - this.allowYieldExpression = previousYield; - this.allowAwaitExpression = previousAwait; - return { - methodOrKey: this.finishNode(new AST.Method({ isAsync, isGenerator, name, params, body }), startState), - kind: 'method', - }; - } - - if (this.match(TokenType.LPAREN)) { - let previousYield = this.allowYieldExpression; - let previousAwait = this.allowAwaitExpression; - let previousAwaitLocation = this.firstAwaitLocation; - this.allowYieldExpression = isGenerator; - this.allowAwaitExpression = false; - this.firstAwaitLocation = null; - let params = this.parseParams(); - let body = this.parseFunctionBody(); - this.allowYieldExpression = previousYield; - this.allowAwaitExpression = previousAwait; - this.firstAwaitLocation = previousAwaitLocation; - - return { - methodOrKey: this.finishNode(new AST.Method({ isAsync, isGenerator, name, params, body }), startState), - kind: 'method', - }; - } - - if (isGenerator && this.match(TokenType.COLON)) { - throw this.createUnexpected(this.lookahead); - } - - return { - methodOrKey: name, - kind: token.type.klass.isIdentifierName ? 'identifier' : 'property', - escaped: token.escaped, - }; - } - - parseClass({ isExpr, inDefault }) { - let startState = this.startNode(); - - this.lex(); - let name = null; - let heritage = null; - - if (this.matchIdentifier()) { - name = this.parseBindingIdentifier(); - } else if (!isExpr) { - if (inDefault) { - name = new AST.BindingIdentifier({ name: '*default*' }); - } else { - throw this.createUnexpected(this.lookahead); - } - } - - if (this.eat(TokenType.EXTENDS)) { - heritage = this.isolateCoverGrammar(() => this.parseLeftHandSideExpression({ allowCall: true })); - } - - this.expect(TokenType.LBRACE); - let elements = []; - while (!this.eat(TokenType.RBRACE)) { - if (this.eat(TokenType.SEMICOLON)) { - continue; - } - let isStatic = false; - let classElementStart = this.startNode(); - let { methodOrKey, kind, escaped } = this.parseMethodDefinition(); - if (kind === 'identifier' && methodOrKey.value === 'static' && !escaped) { - isStatic = true; - ({ methodOrKey, kind } = this.parseMethodDefinition()); - } - if (kind === 'method') { - elements.push(this.finishNode(new AST.ClassElement({ isStatic, method: methodOrKey }), classElementStart)); - } else { - throw this.createError('Only methods are allowed in classes'); - } - } - return this.finishNode(new (isExpr ? AST.ClassExpression : AST.ClassDeclaration)({ name, super: heritage, elements }), startState); - } - - parseFunction({ isExpr, inDefault, allowGenerator, isAsync, startState = this.startNode() }) { - this.lex(); - let name = null; - let isGenerator = allowGenerator && !!this.eat(TokenType.MUL); - - let previousYield = this.allowYieldExpression; - let previousAwait = this.allowAwaitExpression; - let previousAwaitLocation = this.firstAwaitLocation; - - if (isExpr) { - this.allowYieldExpression = isGenerator; - this.allowAwaitExpression = isAsync; - } - - if (!this.match(TokenType.LPAREN)) { - name = this.parseBindingIdentifier(); - } else if (!isExpr) { - if (inDefault) { - name = new AST.BindingIdentifier({ name: '*default*' }); - } else { - throw this.createUnexpected(this.lookahead); - } - } - this.allowYieldExpression = isGenerator; - this.allowAwaitExpression = isAsync; - this.firstAwaitLocation = null; - let params = this.parseParams(); - let body = this.parseFunctionBody(); - this.allowYieldExpression = previousYield; - this.allowAwaitExpression = previousAwait; - this.firstAwaitLocation = previousAwaitLocation; - - return this.finishNode(new (isExpr ? AST.FunctionExpression : AST.FunctionDeclaration)({ isAsync, isGenerator, name, params, body }), startState); - } - - parseArrayBinding() { - let startState = this.startNode(); - - this.expect(TokenType.LBRACK); - - let elements = [], rest = null; - - while (true) { - if (this.match(TokenType.RBRACK)) { - break; - } - let el; - - if (this.eat(TokenType.COMMA)) { - el = null; - } else { - if (this.eat(TokenType.ELLIPSIS)) { - rest = this.parseBindingTarget(); - break; - } else { - el = this.parseBindingElement(); - } - if (!this.match(TokenType.RBRACK)) { - this.expect(TokenType.COMMA); - } - } - elements.push(el); - } - - this.expect(TokenType.RBRACK); - - return this.finishNode(new AST.ArrayBinding({ elements, rest }), startState); - } - - parseBindingProperty() { - let startState = this.startNode(); - let isIdentifier = this.matchIdentifier(); - let token = this.lookahead; - let { name, binding } = this.parsePropertyName(); - if (isIdentifier && name.type === 'StaticPropertyName') { - if (!this.match(TokenType.COLON)) { - if (this.allowYieldExpression && token.value === 'yield') { - throw this.createError(ErrorMessages.ILLEGAL_YIELD_IDENTIFIER); - } - if (this.allowAwaitExpression && token.value === 'await') { - throw this.createError(ErrorMessages.ILLEGAL_AWAIT_IDENTIFIER); - } - let defaultValue = null; - if (this.eat(TokenType.ASSIGN)) { - defaultValue = this.parseAssignmentExpression(); - } - return this.finishNode(new AST.BindingPropertyIdentifier({ - binding, - init: defaultValue, - }), startState); - } - } - this.expect(TokenType.COLON); - binding = this.parseBindingElement(); - return this.finishNode(new AST.BindingPropertyProperty({ name, binding }), startState); - } - - parseObjectBinding() { - let startState = this.startNode(); - this.expect(TokenType.LBRACE); - - let properties = []; - let rest = null; - while (!this.match(TokenType.RBRACE)) { - if (this.eat(TokenType.ELLIPSIS)) { - rest = this.parseBindingIdentifier(); - break; - } - properties.push(this.parseBindingProperty()); - if (!this.match(TokenType.RBRACE)) { - this.expect(TokenType.COMMA); - } - } - - this.expect(TokenType.RBRACE); - - return this.finishNode(new AST.ObjectBinding({ properties, rest }), startState); - } - - parseBindingTarget() { - if (this.matchIdentifier()) { - return this.parseBindingIdentifier(); - } - switch (this.lookahead.type) { - case TokenType.LBRACK: - return this.parseArrayBinding(); - case TokenType.LBRACE: - return this.parseObjectBinding(); - } - throw this.createUnexpected(this.lookahead); - } - - parseBindingElement() { - let startState = this.startNode(); - let binding = this.parseBindingTarget(); - if (this.eat(TokenType.ASSIGN)) { - let init = this.parseAssignmentExpression(); - binding = this.finishNode(new AST.BindingWithDefault({ binding, init }), startState); - } - return binding; - } - - parseParam() { - let previousInParameter = this.inParameter; - this.inParameter = true; - let param = this.parseBindingElement(); - this.inParameter = previousInParameter; - return param; - } - - parseParams() { - let startState = this.startNode(); - this.expect(TokenType.LPAREN); - - let items = [], rest = null; - while (!this.match(TokenType.RPAREN)) { - if (this.eat(TokenType.ELLIPSIS)) { - rest = this.parseBindingTarget(); - if (this.lookahead.type === TokenType.ASSIGN) { - throw this.createError(ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION); - } - if (this.match(TokenType.COMMA)) { - throw this.createError(ErrorMessages.UNEXPECTED_COMMA_AFTER_REST); - } - break; - } - items.push(this.parseParam()); - if (this.match(TokenType.RPAREN)) break; - this.expect(TokenType.COMMA); - } - - this.expect(TokenType.RPAREN); - - return this.finishNode(new AST.FormalParameters({ items, rest }), startState); - } -} diff --git a/repl/src/shift-parser/tokenizer.js b/repl/src/shift-parser/tokenizer.js deleted file mode 100644 index 3bbeb609..00000000 --- a/repl/src/shift-parser/tokenizer.js +++ /dev/null @@ -1,1505 +0,0 @@ -/** - * Copyright 2014 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -import { getHexValue, isLineTerminator, isWhiteSpace, isIdentifierStart, isIdentifierPart, isDecimalDigit } from './utils'; -import { ErrorMessages } from './errors'; - -export const TokenClass = { - Eof: { name: '' }, - Ident: { name: 'Identifier', isIdentifierName: true }, - Keyword: { name: 'Keyword', isIdentifierName: true }, - NumericLiteral: { name: 'Numeric' }, - TemplateElement: { name: 'Template' }, - Punctuator: { name: 'Punctuator' }, - StringLiteral: { name: 'String' }, - RegularExpression: { name: 'RegularExpression' }, - Illegal: { name: 'Illegal' }, -}; - -export const TokenType = { - EOS: { klass: TokenClass.Eof, name: 'EOS' }, - LPAREN: { klass: TokenClass.Punctuator, name: '(' }, - RPAREN: { klass: TokenClass.Punctuator, name: ')' }, - LBRACK: { klass: TokenClass.Punctuator, name: '[' }, - RBRACK: { klass: TokenClass.Punctuator, name: ']' }, - LBRACE: { klass: TokenClass.Punctuator, name: '{' }, - RBRACE: { klass: TokenClass.Punctuator, name: '}' }, - COLON: { klass: TokenClass.Punctuator, name: ':' }, - SEMICOLON: { klass: TokenClass.Punctuator, name: ';' }, - PERIOD: { klass: TokenClass.Punctuator, name: '.' }, - ELLIPSIS: { klass: TokenClass.Punctuator, name: '...' }, - ARROW: { klass: TokenClass.Punctuator, name: '=>' }, - CONDITIONAL: { klass: TokenClass.Punctuator, name: '?' }, - INC: { klass: TokenClass.Punctuator, name: '++' }, - DEC: { klass: TokenClass.Punctuator, name: '--' }, - ASSIGN: { klass: TokenClass.Punctuator, name: '=' }, - ASSIGN_BIT_OR: { klass: TokenClass.Punctuator, name: '|=' }, - ASSIGN_BIT_XOR: { klass: TokenClass.Punctuator, name: '^=' }, - ASSIGN_BIT_AND: { klass: TokenClass.Punctuator, name: '&=' }, - ASSIGN_SHL: { klass: TokenClass.Punctuator, name: '<<=' }, - ASSIGN_SHR: { klass: TokenClass.Punctuator, name: '>>=' }, - ASSIGN_SHR_UNSIGNED: { klass: TokenClass.Punctuator, name: '>>>=' }, - ASSIGN_ADD: { klass: TokenClass.Punctuator, name: '+=' }, - ASSIGN_SUB: { klass: TokenClass.Punctuator, name: '-=' }, - ASSIGN_MUL: { klass: TokenClass.Punctuator, name: '*=' }, - ASSIGN_DIV: { klass: TokenClass.Punctuator, name: '/=' }, - ASSIGN_MOD: { klass: TokenClass.Punctuator, name: '%=' }, - ASSIGN_EXP: { klass: TokenClass.Punctuator, name: '**=' }, - COMMA: { klass: TokenClass.Punctuator, name: ',' }, - OR: { klass: TokenClass.Punctuator, name: '||' }, - AND: { klass: TokenClass.Punctuator, name: '&&' }, - BIT_OR: { klass: TokenClass.Punctuator, name: '|' }, - BIT_XOR: { klass: TokenClass.Punctuator, name: '^' }, - BIT_AND: { klass: TokenClass.Punctuator, name: '&' }, - SHL: { klass: TokenClass.Punctuator, name: '<<' }, - SHR: { klass: TokenClass.Punctuator, name: '>>' }, - SHR_UNSIGNED: { klass: TokenClass.Punctuator, name: '>>>' }, - ADD: { klass: TokenClass.Punctuator, name: '+' }, - SUB: { klass: TokenClass.Punctuator, name: '-' }, - MUL: { klass: TokenClass.Punctuator, name: '*' }, - DIV: { klass: TokenClass.Punctuator, name: '/' }, - MOD: { klass: TokenClass.Punctuator, name: '%' }, - EXP: { klass: TokenClass.Punctuator, name: '**' }, - EQ: { klass: TokenClass.Punctuator, name: '==' }, - NE: { klass: TokenClass.Punctuator, name: '!=' }, - EQ_STRICT: { klass: TokenClass.Punctuator, name: '===' }, - NE_STRICT: { klass: TokenClass.Punctuator, name: '!==' }, - LT: { klass: TokenClass.Punctuator, name: '<' }, - GT: { klass: TokenClass.Punctuator, name: '>' }, - LTE: { klass: TokenClass.Punctuator, name: '<=' }, - GTE: { klass: TokenClass.Punctuator, name: '>=' }, - INSTANCEOF: { klass: TokenClass.Keyword, name: 'instanceof' }, - IN: { klass: TokenClass.Keyword, name: 'in' }, - NOT: { klass: TokenClass.Punctuator, name: '!' }, - BIT_NOT: { klass: TokenClass.Punctuator, name: '~' }, - ASYNC: { klass: TokenClass.Keyword, name: 'async' }, - AWAIT: { klass: TokenClass.Keyword, name: 'await' }, - ENUM: { klass: TokenClass.Keyword, name: 'enum' }, - DELETE: { klass: TokenClass.Keyword, name: 'delete' }, - TYPEOF: { klass: TokenClass.Keyword, name: 'typeof' }, - VOID: { klass: TokenClass.Keyword, name: 'void' }, - BREAK: { klass: TokenClass.Keyword, name: 'break' }, - CASE: { klass: TokenClass.Keyword, name: 'case' }, - CATCH: { klass: TokenClass.Keyword, name: 'catch' }, - CLASS: { klass: TokenClass.Keyword, name: 'class' }, - CONTINUE: { klass: TokenClass.Keyword, name: 'continue' }, - DEBUGGER: { klass: TokenClass.Keyword, name: 'debugger' }, - DEFAULT: { klass: TokenClass.Keyword, name: 'default' }, - DO: { klass: TokenClass.Keyword, name: 'do' }, - ELSE: { klass: TokenClass.Keyword, name: 'else' }, - EXPORT: { klass: TokenClass.Keyword, name: 'export' }, - EXTENDS: { klass: TokenClass.Keyword, name: 'extends' }, - FINALLY: { klass: TokenClass.Keyword, name: 'finally' }, - FOR: { klass: TokenClass.Keyword, name: 'for' }, - FUNCTION: { klass: TokenClass.Keyword, name: 'function' }, - IF: { klass: TokenClass.Keyword, name: 'if' }, - IMPORT: { klass: TokenClass.Keyword, name: 'import' }, - LET: { klass: TokenClass.Keyword, name: 'let' }, - NEW: { klass: TokenClass.Keyword, name: 'new' }, - RETURN: { klass: TokenClass.Keyword, name: 'return' }, - SUPER: { klass: TokenClass.Keyword, name: 'super' }, - SWITCH: { klass: TokenClass.Keyword, name: 'switch' }, - THIS: { klass: TokenClass.Keyword, name: 'this' }, - THROW: { klass: TokenClass.Keyword, name: 'throw' }, - TRY: { klass: TokenClass.Keyword, name: 'try' }, - VAR: { klass: TokenClass.Keyword, name: 'var' }, - WHILE: { klass: TokenClass.Keyword, name: 'while' }, - WITH: { klass: TokenClass.Keyword, name: 'with' }, - NULL: { klass: TokenClass.Keyword, name: 'null' }, - TRUE: { klass: TokenClass.Keyword, name: 'true' }, - FALSE: { klass: TokenClass.Keyword, name: 'false' }, - YIELD: { klass: TokenClass.Keyword, name: 'yield' }, - NUMBER: { klass: TokenClass.NumericLiteral, name: '' }, - STRING: { klass: TokenClass.StringLiteral, name: '' }, - REGEXP: { klass: TokenClass.RegularExpression, name: '' }, - IDENTIFIER: { klass: TokenClass.Ident, name: '' }, - CONST: { klass: TokenClass.Keyword, name: 'const' }, - TEMPLATE: { klass: TokenClass.TemplateElement, name: '' }, - ESCAPED_KEYWORD: { klass: TokenClass.Keyword, name: '' }, - ILLEGAL: { klass: TokenClass.Illegal, name: '' }, -}; - -const TT = TokenType; -const I = TT.ILLEGAL; -const F = false; -const T = true; - -const ONE_CHAR_PUNCTUATOR = [ - I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, TT.NOT, I, I, I, - TT.MOD, TT.BIT_AND, I, TT.LPAREN, TT.RPAREN, TT.MUL, TT.ADD, TT.COMMA, TT.SUB, TT.PERIOD, TT.DIV, I, I, I, I, I, I, I, - I, I, I, TT.COLON, TT.SEMICOLON, TT.LT, TT.ASSIGN, TT.GT, TT.CONDITIONAL, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, - I, I, I, I, I, I, I, I, I, I, I, I, TT.LBRACK, I, TT.RBRACK, TT.BIT_XOR, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, - I, I, I, I, I, I, I, I, I, I, I, I, I, TT.LBRACE, TT.BIT_OR, TT.RBRACE, TT.BIT_NOT, -]; - -const PUNCTUATOR_START = [ - F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, T, T, - F, T, T, T, T, T, T, F, T, F, F, F, F, F, F, F, F, F, F, T, T, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, - F, F, F, F, F, F, T, T, T, T, F, -]; - -export class JsError extends Error { - constructor(index, line, column, msg) { - super(msg); - this.index = index; - // Safari defines these properties as non-writable and non-configurable on Error objects - try { - this.line = line; - this.column = column; - } catch (e) {} - // define these as well so Safari still has access to this info - this.parseErrorLine = line; - this.parseErrorColumn = column; - this.description = msg; - this.message = `[${line}:${column}]: ${msg}`; - } -} - -function fromCodePoint(cp) { - if (cp <= 0xFFFF) return String.fromCharCode(cp); - let cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); - let cu2 = String.fromCharCode((cp - 0x10000) % 0x400 + 0xDC00); - return cu1 + cu2; -} - -function decodeUtf16(lead, trail) { - return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; -} - -export default class Tokenizer { - constructor(source) { - this.source = source; - this.index = 0; - this.line = 0; - this.lineStart = 0; - this.startIndex = 0; - this.startLine = 0; - this.startLineStart = 0; - this.lastIndex = 0; - this.lastLine = 0; - this.lastLineStart = 0; - this.hasLineTerminatorBeforeNext = false; - this.tokenIndex = 0; - } - - saveLexerState() { - return { - source: this.source, - index: this.index, - line: this.line, - lineStart: this.lineStart, - startIndex: this.startIndex, - startLine: this.startLine, - startLineStart: this.startLineStart, - lastIndex: this.lastIndex, - lastLine: this.lastLine, - lastLineStart: this.lastLineStart, - lookahead: this.lookahead, - hasLineTerminatorBeforeNext: this.hasLineTerminatorBeforeNext, - tokenIndex: this.tokenIndex, - }; - } - - restoreLexerState(state) { - this.source = state.source; - this.index = state.index; - this.line = state.line; - this.lineStart = state.lineStart; - this.startIndex = state.startIndex; - this.startLine = state.startLine; - this.startLineStart = state.startLineStart; - this.lastIndex = state.lastIndex; - this.lastLine = state.lastLine; - this.lastLineStart = state.lastLineStart; - this.lookahead = state.lookahead; - this.hasLineTerminatorBeforeNext = state.hasLineTerminatorBeforeNext; - this.tokenIndex = state.tokenIndex; - } - - createILLEGAL() { - this.startIndex = this.index; - this.startLine = this.line; - this.startLineStart = this.lineStart; - return this.index < this.source.length - ? this.createError(ErrorMessages.UNEXPECTED_ILLEGAL_TOKEN, this.source.charAt(this.index)) - : this.createError(ErrorMessages.UNEXPECTED_EOS); - } - - createUnexpected(token) { - switch (token.type.klass) { - case TokenClass.Eof: - return this.createError(ErrorMessages.UNEXPECTED_EOS); - case TokenClass.Ident: - return this.createError(ErrorMessages.UNEXPECTED_IDENTIFIER); - case TokenClass.Keyword: - if (token.type === TokenType.ESCAPED_KEYWORD) { - return this.createError(ErrorMessages.UNEXPECTED_ESCAPED_KEYWORD); - } - return this.createError(ErrorMessages.UNEXPECTED_TOKEN, token.slice.text); - case TokenClass.NumericLiteral: - return this.createError(ErrorMessages.UNEXPECTED_NUMBER); - case TokenClass.TemplateElement: - return this.createError(ErrorMessages.UNEXPECTED_TEMPLATE); - case TokenClass.Punctuator: - return this.createError(ErrorMessages.UNEXPECTED_TOKEN, token.type.name); - case TokenClass.StringLiteral: - return this.createError(ErrorMessages.UNEXPECTED_STRING); - // the other token classes are RegularExpression and Illegal, but they cannot reach here - } - // istanbul ignore next - throw new Error('Unreachable: unexpected token of class ' + token.type.klass); - } - - createError(message, ...params) { - let msg; - if (typeof message === 'function') { - msg = message(...params); - } else { - msg = message; - } - return new JsError(this.startIndex, this.startLine + 1, this.startIndex - this.startLineStart + 1, msg); - } - - createErrorWithLocation(location, message) { - /* istanbul ignore next */ - let msg = message.replace(/\{(\d+)\}/g, (_, n) => JSON.stringify(arguments[+n + 2])); - if (location.slice && location.slice.startLocation) { - location = location.slice.startLocation; - } - return new JsError(location.offset, location.line, location.column + 1, msg); - } - - static cse2(id, ch1, ch2) { - return id.charAt(1) === ch1 && id.charAt(2) === ch2; - } - - static cse3(id, ch1, ch2, ch3) { - return id.charAt(1) === ch1 && id.charAt(2) === ch2 && id.charAt(3) === ch3; - } - - static cse4(id, ch1, ch2, ch3, ch4) { - return id.charAt(1) === ch1 && id.charAt(2) === ch2 && id.charAt(3) === ch3 && id.charAt(4) === ch4; - } - - static cse5(id, ch1, ch2, ch3, ch4, ch5) { - return id.charAt(1) === ch1 && id.charAt(2) === ch2 && id.charAt(3) === ch3 && id.charAt(4) === ch4 && id.charAt(5) === ch5; - } - - static cse6(id, ch1, ch2, ch3, ch4, ch5, ch6) { - return id.charAt(1) === ch1 && id.charAt(2) === ch2 && id.charAt(3) === ch3 && id.charAt(4) === ch4 && id.charAt(5) === ch5 && id.charAt(6) === ch6; - } - - static cse7(id, ch1, ch2, ch3, ch4, ch5, ch6, ch7) { - return id.charAt(1) === ch1 && id.charAt(2) === ch2 && id.charAt(3) === ch3 && id.charAt(4) === ch4 && id.charAt(5) === ch5 && id.charAt(6) === ch6 && id.charAt(7) === ch7; - } - - getKeyword(id) { - if (id.length === 1 || id.length > 10) { - return TokenType.IDENTIFIER; - } - - /* istanbul ignore next */ - switch (id.length) { - case 2: - switch (id.charAt(0)) { - case 'i': - switch (id.charAt(1)) { - case 'f': - return TokenType.IF; - case 'n': - return TokenType.IN; - default: - break; - } - break; - case 'd': - if (id.charAt(1) === 'o') { - return TokenType.DO; - } - break; - } - break; - case 3: - switch (id.charAt(0)) { - case 'v': - if (Tokenizer.cse2(id, 'a', 'r')) { - return TokenType.VAR; - } - break; - case 'f': - if (Tokenizer.cse2(id, 'o', 'r')) { - return TokenType.FOR; - } - break; - case 'n': - if (Tokenizer.cse2(id, 'e', 'w')) { - return TokenType.NEW; - } - break; - case 't': - if (Tokenizer.cse2(id, 'r', 'y')) { - return TokenType.TRY; - } - break; - case 'l': - if (Tokenizer.cse2(id, 'e', 't')) { - return TokenType.LET; - } - break; - } - break; - case 4: - switch (id.charAt(0)) { - case 't': - if (Tokenizer.cse3(id, 'h', 'i', 's')) { - return TokenType.THIS; - } else if (Tokenizer.cse3(id, 'r', 'u', 'e')) { - return TokenType.TRUE; - } - break; - case 'n': - if (Tokenizer.cse3(id, 'u', 'l', 'l')) { - return TokenType.NULL; - } - break; - case 'e': - if (Tokenizer.cse3(id, 'l', 's', 'e')) { - return TokenType.ELSE; - } else if (Tokenizer.cse3(id, 'n', 'u', 'm')) { - return TokenType.ENUM; - } - break; - case 'c': - if (Tokenizer.cse3(id, 'a', 's', 'e')) { - return TokenType.CASE; - } - break; - case 'v': - if (Tokenizer.cse3(id, 'o', 'i', 'd')) { - return TokenType.VOID; - } - break; - case 'w': - if (Tokenizer.cse3(id, 'i', 't', 'h')) { - return TokenType.WITH; - } - break; - } - break; - case 5: - switch (id.charAt(0)) { - case 'a': - if (Tokenizer.cse4(id, 's', 'y', 'n', 'c')) { - return TokenType.ASYNC; - } - if (Tokenizer.cse4(id, 'w', 'a', 'i', 't')) { - return TokenType.AWAIT; - } - break; - case 'w': - if (Tokenizer.cse4(id, 'h', 'i', 'l', 'e')) { - return TokenType.WHILE; - } - break; - case 'b': - if (Tokenizer.cse4(id, 'r', 'e', 'a', 'k')) { - return TokenType.BREAK; - } - break; - case 'f': - if (Tokenizer.cse4(id, 'a', 'l', 's', 'e')) { - return TokenType.FALSE; - } - break; - case 'c': - if (Tokenizer.cse4(id, 'a', 't', 'c', 'h')) { - return TokenType.CATCH; - } else if (Tokenizer.cse4(id, 'o', 'n', 's', 't')) { - return TokenType.CONST; - } else if (Tokenizer.cse4(id, 'l', 'a', 's', 's')) { - return TokenType.CLASS; - } - break; - case 't': - if (Tokenizer.cse4(id, 'h', 'r', 'o', 'w')) { - return TokenType.THROW; - } - break; - case 'y': - if (Tokenizer.cse4(id, 'i', 'e', 'l', 'd')) { - return TokenType.YIELD; - } - break; - case 's': - if (Tokenizer.cse4(id, 'u', 'p', 'e', 'r')) { - return TokenType.SUPER; - } - break; - } - break; - case 6: - switch (id.charAt(0)) { - case 'r': - if (Tokenizer.cse5(id, 'e', 't', 'u', 'r', 'n')) { - return TokenType.RETURN; - } - break; - case 't': - if (Tokenizer.cse5(id, 'y', 'p', 'e', 'o', 'f')) { - return TokenType.TYPEOF; - } - break; - case 'd': - if (Tokenizer.cse5(id, 'e', 'l', 'e', 't', 'e')) { - return TokenType.DELETE; - } - break; - case 's': - if (Tokenizer.cse5(id, 'w', 'i', 't', 'c', 'h')) { - return TokenType.SWITCH; - } - break; - case 'e': - if (Tokenizer.cse5(id, 'x', 'p', 'o', 'r', 't')) { - return TokenType.EXPORT; - } - break; - case 'i': - if (Tokenizer.cse5(id, 'm', 'p', 'o', 'r', 't')) { - return TokenType.IMPORT; - } - break; - } - break; - case 7: - switch (id.charAt(0)) { - case 'd': - if (Tokenizer.cse6(id, 'e', 'f', 'a', 'u', 'l', 't')) { - return TokenType.DEFAULT; - } - break; - case 'f': - if (Tokenizer.cse6(id, 'i', 'n', 'a', 'l', 'l', 'y')) { - return TokenType.FINALLY; - } - break; - case 'e': - if (Tokenizer.cse6(id, 'x', 't', 'e', 'n', 'd', 's')) { - return TokenType.EXTENDS; - } - break; - } - break; - case 8: - switch (id.charAt(0)) { - case 'f': - if (Tokenizer.cse7(id, 'u', 'n', 'c', 't', 'i', 'o', 'n')) { - return TokenType.FUNCTION; - } - break; - case 'c': - if (Tokenizer.cse7(id, 'o', 'n', 't', 'i', 'n', 'u', 'e')) { - return TokenType.CONTINUE; - } - break; - case 'd': - if (Tokenizer.cse7(id, 'e', 'b', 'u', 'g', 'g', 'e', 'r')) { - return TokenType.DEBUGGER; - } - break; - } - break; - case 10: - if (id === 'instanceof') { - return TokenType.INSTANCEOF; - } - break; - } - return TokenType.IDENTIFIER; - } - - skipSingleLineComment(offset) { - this.index += offset; - while (this.index < this.source.length) { - /** - * @type {Number} - */ - let chCode = this.source.charCodeAt(this.index); - this.index++; - if (isLineTerminator(chCode)) { - this.hasLineTerminatorBeforeNext = true; - if (chCode === 0xD /* "\r" */ && this.source.charCodeAt(this.index) === 0xA /* "\n" */) { - this.index++; - } - this.lineStart = this.index; - this.line++; - return; - } - } - } - - skipMultiLineComment() { - this.index += 2; - const length = this.source.length; - let isLineStart = false; - while (this.index < length) { - let chCode = this.source.charCodeAt(this.index); - if (chCode < 0x80) { - switch (chCode) { - case 42: // "*" - // Block comment ends with "*/". - if (this.source.charAt(this.index + 1) === '/') { - this.index = this.index + 2; - return isLineStart; - } - this.index++; - break; - case 10: // "\n" - isLineStart = true; - this.hasLineTerminatorBeforeNext = true; - this.index++; - this.lineStart = this.index; - this.line++; - break; - case 13: // "\r": - isLineStart = true; - this.hasLineTerminatorBeforeNext = true; - if (this.source.charAt(this.index + 1) === '\n') { - this.index++; - } - this.index++; - this.lineStart = this.index; - this.line++; - break; - default: - this.index++; - } - } else if (chCode === 0x2028 || chCode === 0x2029) { - isLineStart = true; - this.hasLineTerminatorBeforeNext = true; - this.index++; - this.lineStart = this.index; - this.line++; - } else { - this.index++; - } - } - throw this.createILLEGAL(); - } - - - skipComment() { - this.hasLineTerminatorBeforeNext = false; - - let isLineStart = this.index === 0; - const length = this.source.length; - - while (this.index < length) { - let chCode = this.source.charCodeAt(this.index); - if (isWhiteSpace(chCode)) { - this.index++; - } else if (isLineTerminator(chCode)) { - this.hasLineTerminatorBeforeNext = true; - this.index++; - if (chCode === 13 /* "\r" */ && this.source.charAt(this.index) === '\n') { - this.index++; - } - this.lineStart = this.index; - this.line++; - isLineStart = true; - } else if (chCode === 47 /* "/" */) { - if (this.index + 1 >= length) { - break; - } - chCode = this.source.charCodeAt(this.index + 1); - if (chCode === 47 /* "/" */) { - this.skipSingleLineComment(2); - isLineStart = true; - } else if (chCode === 42 /* "*" */) { - isLineStart = this.skipMultiLineComment() || isLineStart; - } else { - break; - } - } else if (!this.moduleIsTheGoalSymbol && isLineStart && chCode === 45 /* "-" */) { - if (this.index + 2 >= length) { - break; - } - // U+003E is ">" - if (this.source.charAt(this.index + 1) === '-' && this.source.charAt(this.index + 2) === '>') { - // "-->" is a single-line comment - this.skipSingleLineComment(3); - } else { - break; - } - } else if (!this.moduleIsTheGoalSymbol && chCode === 60 /* "<" */) { - if (this.source.slice(this.index + 1, this.index + 4) === '!--') { - this.skipSingleLineComment(4); - isLineStart = true; - } else { - break; - } - } else { - break; - } - } - } - - scanHexEscape2() { - if (this.index + 2 > this.source.length) { - return -1; - } - let r1 = getHexValue(this.source.charAt(this.index)); - if (r1 === -1) { - return -1; - } - let r2 = getHexValue(this.source.charAt(this.index + 1)); - if (r2 === -1) { - return -1; - } - this.index += 2; - return r1 << 4 | r2; - } - - scanUnicode() { - if (this.source.charAt(this.index) === '{') { - // \u{HexDigits} - let i = this.index + 1; - let hexDigits = 0, ch; - while (i < this.source.length) { - ch = this.source.charAt(i); - let hex = getHexValue(ch); - if (hex === -1) { - break; - } - hexDigits = hexDigits << 4 | hex; - if (hexDigits > 0x10FFFF) { - throw this.createILLEGAL(); - } - i++; - } - if (ch !== '}') { - throw this.createILLEGAL(); - } - if (i === this.index + 1) { - ++this.index; // This is so that the error is 'Unexpected "}"' instead of 'Unexpected "{"'. - throw this.createILLEGAL(); - } - this.index = i + 1; - return hexDigits; - } - // \uHex4Digits - if (this.index + 4 > this.source.length) { - return -1; - } - let r1 = getHexValue(this.source.charAt(this.index)); - if (r1 === -1) { - return -1; - } - let r2 = getHexValue(this.source.charAt(this.index + 1)); - if (r2 === -1) { - return -1; - } - let r3 = getHexValue(this.source.charAt(this.index + 2)); - if (r3 === -1) { - return -1; - } - let r4 = getHexValue(this.source.charAt(this.index + 3)); - if (r4 === -1) { - return -1; - } - this.index += 4; - return r1 << 12 | r2 << 8 | r3 << 4 | r4; - } - - getEscapedIdentifier() { - let id = ''; - let check = isIdentifierStart; - - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - let code = ch.charCodeAt(0); - let start = this.index; - ++this.index; - if (ch === '\\') { - if (this.index >= this.source.length) { - throw this.createILLEGAL(); - } - if (this.source.charAt(this.index) !== 'u') { - throw this.createILLEGAL(); - } - ++this.index; - code = this.scanUnicode(); - if (code < 0) { - throw this.createILLEGAL(); - } - ch = fromCodePoint(code); - } else if (code >= 0xD800 && code <= 0xDBFF) { - if (this.index >= this.source.length) { - throw this.createILLEGAL(); - } - let lowSurrogateCode = this.source.charCodeAt(this.index); - ++this.index; - if (!(lowSurrogateCode >= 0xDC00 && lowSurrogateCode <= 0xDFFF)) { - throw this.createILLEGAL(); - } - code = decodeUtf16(code, lowSurrogateCode); - ch = fromCodePoint(code); - } - if (!check(code)) { - if (id.length < 1) { - throw this.createILLEGAL(); - } - this.index = start; - return id; - } - check = isIdentifierPart; - id += ch; - } - return id; - } - - getIdentifier() { - let start = this.index; - let l = this.source.length; - let i = this.index; - let check = isIdentifierStart; - while (i < l) { - let ch = this.source.charAt(i); - let code = ch.charCodeAt(0); - if (ch === '\\' || code >= 0xD800 && code <= 0xDBFF) { - // Go back and try the hard one. - this.index = start; - return this.getEscapedIdentifier(); - } - if (!check(code)) { - this.index = i; - return this.source.slice(start, i); - } - ++i; - check = isIdentifierPart; - } - this.index = i; - return this.source.slice(start, i); - } - - scanIdentifier() { - let startLocation = this.getLocation(); - let start = this.index; - - // Backslash (U+005C) starts an escaped character. - let id = this.source.charAt(this.index) === '\\' ? this.getEscapedIdentifier() : this.getIdentifier(); - - let slice = this.getSlice(start, startLocation); - slice.text = id; - let hasEscape = this.index - start !== id.length; - - let type = this.getKeyword(id); - if (hasEscape && type !== TokenType.IDENTIFIER) { - type = TokenType.ESCAPED_KEYWORD; - } - return { type, value: id, slice, escaped: hasEscape }; - } - - getLocation() { - return { - line: this.startLine + 1, - column: this.startIndex - this.startLineStart, - offset: this.startIndex, - }; - } - - getLastTokenEndLocation() { - return { - line: this.lastLine + 1, - column: this.lastIndex - this.lastLineStart, - offset: this.lastIndex, - }; - } - - getSlice(start, startLocation) { - return { text: this.source.slice(start, this.index), start, startLocation, end: this.index }; - } - - scanPunctuatorHelper() { - let ch1 = this.source.charAt(this.index); - - switch (ch1) { - // Check for most common single-character punctuators. - case '.': { - let ch2 = this.source.charAt(this.index + 1); - if (ch2 !== '.') return TokenType.PERIOD; - let ch3 = this.source.charAt(this.index + 2); - if (ch3 !== '.') return TokenType.PERIOD; - return TokenType.ELLIPSIS; - } - case '(': - return TokenType.LPAREN; - case ')': - case ';': - case ',': - return ONE_CHAR_PUNCTUATOR[ch1.charCodeAt(0)]; - case '{': - return TokenType.LBRACE; - case '}': - case '[': - case ']': - case ':': - case '?': - case '~': - return ONE_CHAR_PUNCTUATOR[ch1.charCodeAt(0)]; - default: - // "=" (U+003D) marks an assignment or comparison operator. - if (this.index + 1 < this.source.length && this.source.charAt(this.index + 1) === '=') { - switch (ch1) { - case '=': - if (this.index + 2 < this.source.length && this.source.charAt(this.index + 2) === '=') { - return TokenType.EQ_STRICT; - } - return TokenType.EQ; - case '!': - if (this.index + 2 < this.source.length && this.source.charAt(this.index + 2) === '=') { - return TokenType.NE_STRICT; - } - return TokenType.NE; - case '|': - return TokenType.ASSIGN_BIT_OR; - case '+': - return TokenType.ASSIGN_ADD; - case '-': - return TokenType.ASSIGN_SUB; - case '*': - return TokenType.ASSIGN_MUL; - case '<': - return TokenType.LTE; - case '>': - return TokenType.GTE; - case '/': - return TokenType.ASSIGN_DIV; - case '%': - return TokenType.ASSIGN_MOD; - case '^': - return TokenType.ASSIGN_BIT_XOR; - case '&': - return TokenType.ASSIGN_BIT_AND; - // istanbul ignore next - default: - break; // failed - } - } - } - - if (this.index + 1 < this.source.length) { - let ch2 = this.source.charAt(this.index + 1); - if (ch1 === ch2) { - if (this.index + 2 < this.source.length) { - let ch3 = this.source.charAt(this.index + 2); - if (ch1 === '>' && ch3 === '>') { - // 4-character punctuator: >>>= - if (this.index + 3 < this.source.length && this.source.charAt(this.index + 3) === '=') { - return TokenType.ASSIGN_SHR_UNSIGNED; - } - return TokenType.SHR_UNSIGNED; - } - - if (ch1 === '<' && ch3 === '=') { - return TokenType.ASSIGN_SHL; - } - - if (ch1 === '>' && ch3 === '=') { - return TokenType.ASSIGN_SHR; - } - - if (ch1 === '*' && ch3 === '=') { - return TokenType.ASSIGN_EXP; - } - } - // Other 2-character punctuators: ++ -- << >> && || - switch (ch1) { - case '*': - return TokenType.EXP; - case '+': - return TokenType.INC; - case '-': - return TokenType.DEC; - case '<': - return TokenType.SHL; - case '>': - return TokenType.SHR; - case '&': - return TokenType.AND; - case '|': - return TokenType.OR; - // istanbul ignore next - default: - break; // failed - } - } else if (ch1 === '=' && ch2 === '>') { - return TokenType.ARROW; - } - } - - return ONE_CHAR_PUNCTUATOR[ch1.charCodeAt(0)]; - } - - // 7.7 Punctuators - scanPunctuator() { - let startLocation = this.getLocation(); - let start = this.index; - let subType = this.scanPunctuatorHelper(); - this.index += subType.name.length; - return { type: subType, value: subType.name, slice: this.getSlice(start, startLocation) }; - } - - scanHexLiteral(start, startLocation) { - let i = this.index; - while (i < this.source.length) { - let ch = this.source.charAt(i); - let hex = getHexValue(ch); - if (hex === -1) { - break; - } - i++; - } - - if (this.index === i) { - throw this.createILLEGAL(); - } - - if (i < this.source.length && isIdentifierStart(this.source.charCodeAt(i))) { - throw this.createILLEGAL(); - } - - this.index = i; - - let slice = this.getSlice(start, startLocation); - return { type: TokenType.NUMBER, value: parseInt(slice.text.substr(2), 16), slice }; - } - - scanBinaryLiteral(start, startLocation) { - let offset = this.index - start; - - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - if (ch !== '0' && ch !== '1') { - break; - } - this.index++; - } - - if (this.index - start <= offset) { - throw this.createILLEGAL(); - } - - if (this.index < this.source.length && (isIdentifierStart(this.source.charCodeAt(this.index)) - || isDecimalDigit(this.source.charCodeAt(this.index)))) { - throw this.createILLEGAL(); - } - - return { - type: TokenType.NUMBER, - value: parseInt(this.getSlice(start, startLocation).text.substr(offset), 2), - slice: this.getSlice(start, startLocation), - octal: false, - noctal: false, - }; - } - - scanOctalLiteral(start, startLocation) { - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - if (ch >= '0' && ch <= '7') { - this.index++; - } else if (isIdentifierPart(ch.charCodeAt(0))) { - throw this.createILLEGAL(); - } else { - break; - } - } - - if (this.index - start === 2) { - throw this.createILLEGAL(); - } - - return { - type: TokenType.NUMBER, - value: parseInt(this.getSlice(start, startLocation).text.substr(2), 8), - slice: this.getSlice(start, startLocation), - octal: false, - noctal: false, - }; - } - - scanLegacyOctalLiteral(start, startLocation) { - let isOctal = true; - - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - if (ch >= '0' && ch <= '7') { - this.index++; - } else if (ch === '8' || ch === '9') { - isOctal = false; - this.index++; - } else if (isIdentifierPart(ch.charCodeAt(0))) { - throw this.createILLEGAL(); - } else { - break; - } - } - - let slice = this.getSlice(start, startLocation); - if (!isOctal) { - this.eatDecimalLiteralSuffix(); - return { - type: TokenType.NUMBER, - slice, - value: +slice.text, - octal: true, - noctal: !isOctal, - }; - } - - return { - type: TokenType.NUMBER, - slice, - value: parseInt(slice.text.substr(1), 8), - octal: true, - noctal: !isOctal, - }; - } - - scanNumericLiteral() { - let ch = this.source.charAt(this.index); - // assert(ch === "." || "0" <= ch && ch <= "9") - let startLocation = this.getLocation(); - let start = this.index; - - if (ch === '0') { - this.index++; - if (this.index < this.source.length) { - ch = this.source.charAt(this.index); - if (ch === 'x' || ch === 'X') { - this.index++; - return this.scanHexLiteral(start, startLocation); - } else if (ch === 'b' || ch === 'B') { - this.index++; - return this.scanBinaryLiteral(start, startLocation); - } else if (ch === 'o' || ch === 'O') { - this.index++; - return this.scanOctalLiteral(start, startLocation); - } else if (ch >= '0' && ch <= '9') { - return this.scanLegacyOctalLiteral(start, startLocation); - } - } else { - let slice = this.getSlice(start, startLocation); - return { - type: TokenType.NUMBER, - value: +slice.text, - slice, - octal: false, - noctal: false, - }; - } - } else if (ch !== '.') { - // Must be "1".."9" - ch = this.source.charAt(this.index); - while (ch >= '0' && ch <= '9') { - this.index++; - if (this.index === this.source.length) { - let slice = this.getSlice(start, startLocation); - return { - type: TokenType.NUMBER, - value: +slice.text, - slice, - octal: false, - noctal: false, - }; - } - ch = this.source.charAt(this.index); - } - } - - this.eatDecimalLiteralSuffix(); - - if (this.index !== this.source.length && isIdentifierStart(this.source.charCodeAt(this.index))) { - throw this.createILLEGAL(); - } - - let slice = this.getSlice(start, startLocation); - return { - type: TokenType.NUMBER, - value: +slice.text, - slice, - octal: false, - noctal: false, - }; - } - - eatDecimalLiteralSuffix() { - let ch = this.source.charAt(this.index); - if (ch === '.') { - this.index++; - if (this.index === this.source.length) { - return; - } - - ch = this.source.charAt(this.index); - while (ch >= '0' && ch <= '9') { - this.index++; - if (this.index === this.source.length) { - return; - } - ch = this.source.charAt(this.index); - } - } - - // EOF not reached here - if (ch === 'e' || ch === 'E') { - this.index++; - if (this.index === this.source.length) { - throw this.createILLEGAL(); - } - - ch = this.source.charAt(this.index); - if (ch === '+' || ch === '-') { - this.index++; - if (this.index === this.source.length) { - throw this.createILLEGAL(); - } - ch = this.source.charAt(this.index); - } - - if (ch >= '0' && ch <= '9') { - while (ch >= '0' && ch <= '9') { - this.index++; - if (this.index === this.source.length) { - break; - } - ch = this.source.charAt(this.index); - } - } else { - throw this.createILLEGAL(); - } - } - } - - scanStringEscape(str, octal) { - this.index++; - if (this.index === this.source.length) { - throw this.createILLEGAL(); - } - let ch = this.source.charAt(this.index); - if (isLineTerminator(ch.charCodeAt(0))) { - this.index++; - if (ch === '\r' && this.source.charAt(this.index) === '\n') { - this.index++; - } - this.lineStart = this.index; - this.line++; - } else { - switch (ch) { - case 'n': - str += '\n'; - this.index++; - break; - case 'r': - str += '\r'; - this.index++; - break; - case 't': - str += '\t'; - this.index++; - break; - case 'u': - case 'x': { - let unescaped; - this.index++; - if (this.index >= this.source.length) { - throw this.createILLEGAL(); - } - unescaped = ch === 'u' ? this.scanUnicode() : this.scanHexEscape2(); - if (unescaped < 0) { - throw this.createILLEGAL(); - } - str += fromCodePoint(unescaped); - break; - } - case 'b': - str += '\b'; - this.index++; - break; - case 'f': - str += '\f'; - this.index++; - break; - case 'v': - str += '\u000B'; - this.index++; - break; - default: - if (ch >= '0' && ch <= '7') { - let octalStart = this.index; - let octLen = 1; - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if (ch >= '0' && ch <= '3') { - octLen = 0; - } - let code = 0; - while (octLen < 3 && ch >= '0' && ch <= '7') { - this.index++; - if (octLen > 0 || ch !== '0') { - octal = this.source.slice(octalStart, this.index); - } - code *= 8; - code += ch - '0'; - octLen++; - if (this.index === this.source.length) { - throw this.createILLEGAL(); - } - ch = this.source.charAt(this.index); - } - if (code === 0 && octLen === 1 && (ch === '8' || ch === '9')) { - octal = this.source.slice(octalStart, this.index + 1); - } - str += String.fromCharCode(code); - } else if (ch === '8' || ch === '9') { - throw this.createILLEGAL(); - } else { - str += ch; - this.index++; - } - } - } - return [str, octal]; - } - // 7.8.4 String Literals - scanStringLiteral() { - let str = ''; - - let quote = this.source.charAt(this.index); - // assert((quote === "\"" || quote === """), "String literal must starts with a quote") - - let startLocation = this.getLocation(); - let start = this.index; - this.index++; - - let octal = null; - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - if (ch === quote) { - this.index++; - return { type: TokenType.STRING, slice: this.getSlice(start, startLocation), str, octal }; - } else if (ch === '\\') { - [str, octal] = this.scanStringEscape(str, octal); - } else if (isLineTerminator(ch.charCodeAt(0))) { - throw this.createILLEGAL(); - } else { - str += ch; - this.index++; - } - } - - throw this.createILLEGAL(); - } - - scanTemplateElement() { - let startLocation = this.getLocation(); - let start = this.index; - this.index++; - while (this.index < this.source.length) { - let ch = this.source.charCodeAt(this.index); - switch (ch) { - case 0x60: { // ` - this.index++; - return { type: TokenType.TEMPLATE, tail: true, slice: this.getSlice(start, startLocation) }; - } - case 0x24: { // $ - if (this.source.charCodeAt(this.index + 1) === 0x7B) { // { - this.index += 2; - return { type: TokenType.TEMPLATE, tail: false, slice: this.getSlice(start, startLocation) }; - } - this.index++; - break; - } - case 0x5C: { // \\ - let octal = this.scanStringEscape('', null)[1]; - if (octal != null) { - throw this.createError(ErrorMessages.NO_OCTALS_IN_TEMPLATES); - } - break; - } - case 0x0D: { // \r - this.line++; - this.index++; - if (this.index < this.source.length && this.source.charAt(this.index) === '\n') { - this.index++; - } - this.lineStart = this.index; - break; - } - case 0x0A: // \r - case 0x2028: - case 0x2029: { - this.line++; - this.index++; - this.lineStart = this.index; - break; - } - default: - this.index++; - } - } - - throw this.createILLEGAL(); - } - - scanRegExp(str) { - let startLocation = this.getLocation(); - let start = this.index; - - let terminated = false; - let classMarker = false; - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - if (ch === '\\') { - str += ch; - this.index++; - ch = this.source.charAt(this.index); - // ECMA-262 7.8.5 - if (isLineTerminator(ch.charCodeAt(0))) { - throw this.createError(ErrorMessages.UNTERMINATED_REGEXP); - } - str += ch; - this.index++; - } else if (isLineTerminator(ch.charCodeAt(0))) { - throw this.createError(ErrorMessages.UNTERMINATED_REGEXP); - } else { - if (classMarker) { - if (ch === ']') { - classMarker = false; - } - } else if (ch === '/') { - terminated = true; - str += ch; - this.index++; - break; - } else if (ch === '[') { - classMarker = true; - } - str += ch; - this.index++; - } - } - - if (!terminated) { - throw this.createError(ErrorMessages.UNTERMINATED_REGEXP); - } - - while (this.index < this.source.length) { - let ch = this.source.charAt(this.index); - if (ch === '\\') { - throw this.createError(ErrorMessages.INVALID_REGEXP_FLAGS); - } - if (!isIdentifierPart(ch.charCodeAt(0))) { - break; - } - this.index++; - str += ch; - } - return { type: TokenType.REGEXP, value: str, slice: this.getSlice(start, startLocation) }; - } - - advance() { - let startLocation = this.getLocation(); - - this.lastIndex = this.index; - this.lastLine = this.line; - this.lastLineStart = this.lineStart; - - this.skipComment(); - - this.startIndex = this.index; - this.startLine = this.line; - this.startLineStart = this.lineStart; - - if (this.lastIndex === 0) { - this.lastIndex = this.index; - this.lastLine = this.line; - this.lastLineStart = this.lineStart; - } - - if (this.index >= this.source.length) { - return { type: TokenType.EOS, slice: this.getSlice(this.index, startLocation) }; - } - - let charCode = this.source.charCodeAt(this.index); - - if (charCode < 0x80) { - if (PUNCTUATOR_START[charCode]) { - return this.scanPunctuator(); - } - - if (isIdentifierStart(charCode) || charCode === 0x5C /* backslash (\) */) { - return this.scanIdentifier(); - } - - // Dot (.) U+002E can also start a floating-point number, hence the need - // to check the next character. - if (charCode === 0x2E) { - if (this.index + 1 < this.source.length && isDecimalDigit(this.source.charCodeAt(this.index + 1))) { - return this.scanNumericLiteral(); - } - return this.scanPunctuator(); - } - - // String literal starts with single quote (U+0027) or double quote (U+0022). - if (charCode === 0x27 || charCode === 0x22) { - return this.scanStringLiteral(); - } - - // Template literal starts with back quote (U+0060) - if (charCode === 0x60) { - return this.scanTemplateElement(); - } - - if (charCode /* "0" */ >= 0x30 && charCode <= 0x39 /* "9" */) { - return this.scanNumericLiteral(); - } - - // Slash (/) U+002F can also start a regex. - throw this.createILLEGAL(); - } else { - if (isIdentifierStart(charCode) || charCode >= 0xD800 && charCode <= 0xDBFF) { - return this.scanIdentifier(); - } - - throw this.createILLEGAL(); - } - } - - eof() { - return this.lookahead.type === TokenType.EOS; - } - - lex() { - let prevToken = this.lookahead; - this.lookahead = this.advance(); - this.tokenIndex++; - return prevToken; - } -} diff --git a/repl/src/shift-parser/unicode.js b/repl/src/shift-parser/unicode.js deleted file mode 100644 index 27906deb..00000000 --- a/repl/src/shift-parser/unicode.js +++ /dev/null @@ -1,11 +0,0 @@ -// Generated by scripts/generate-unicode-data.js - -export const whitespaceArray = [5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279]; -export const whitespaceBool = [false, false, false, false, false, false, false, false, false, true, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]; - -export const idStartLargeRegex = /^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/; -export const idStartBool = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false]; - -export const idContinueLargeRegex = /^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/; -export const idContinueBool = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false]; - diff --git a/repl/src/shift-parser/utils.js b/repl/src/shift-parser/utils.js deleted file mode 100644 index e87b9662..00000000 --- a/repl/src/shift-parser/utils.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Copyright 2017 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { whitespaceArray, whitespaceBool, idStartLargeRegex, idStartBool, idContinueLargeRegex, idContinueBool } from './unicode'; - - -const strictReservedWords = [ - 'null', - 'true', - 'false', - - 'implements', - 'interface', - 'package', - 'private', - 'protected', - 'public', - 'static', - 'let', - - 'if', - 'in', - 'do', - 'var', - 'for', - 'new', - 'try', - 'this', - 'else', - 'case', - 'void', - 'with', - 'enum', - 'while', - 'break', - 'catch', - 'throw', - 'const', - 'yield', - 'class', - 'super', - 'return', - 'typeof', - 'delete', - 'switch', - 'export', - 'import', - 'default', - 'finally', - 'extends', - 'function', - 'continue', - 'debugger', - 'instanceof', -]; - -export function isStrictModeReservedWord(id) { - return strictReservedWords.indexOf(id) !== -1; -} - -export function isWhiteSpace(ch) { - return ch < 128 ? whitespaceBool[ch] : ch === 0xA0 || ch > 0x167F && whitespaceArray.indexOf(ch) !== -1; -} - -export function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; -} - -export function isIdentifierStart(ch) { - return ch < 128 ? idStartBool[ch] : idStartLargeRegex.test(String.fromCodePoint(ch)); -} - -export function isIdentifierPart(ch) { - return ch < 128 ? idContinueBool[ch] : idContinueLargeRegex.test(String.fromCodePoint(ch)); -} - -export function isDecimalDigit(ch) { - return ch >= 48 && ch <= 57; -} - -export function getHexValue(rune) { - if (rune >= '0' && rune <= '9') { - return rune.charCodeAt(0) - 48; - } - if (rune >= 'a' && rune <= 'f') { - return rune.charCodeAt(0) - 87; - } - if (rune >= 'A' && rune <= 'F') { - return rune.charCodeAt(0) - 55; - } - return -1; -} diff --git a/repl/src/shift-reducer/adapt.js b/repl/src/shift-reducer/adapt.js deleted file mode 100644 index f3ec0c40..00000000 --- a/repl/src/shift-reducer/adapt.js +++ /dev/null @@ -1,418 +0,0 @@ -// Generated by generate-adapt.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as Shift from 'shift-ast'; - -export default (fn, reducer) => ({ - __proto__: reducer, - - reduceArrayAssignmentTarget(node, data) { - return fn(super.reduceArrayAssignmentTarget(node, data), node); - }, - - reduceArrayBinding(node, data) { - return fn(super.reduceArrayBinding(node, data), node); - }, - - reduceArrayExpression(node, data) { - return fn(super.reduceArrayExpression(node, data), node); - }, - - reduceArrowExpression(node, data) { - return fn(super.reduceArrowExpression(node, data), node); - }, - - reduceAssignmentExpression(node, data) { - return fn(super.reduceAssignmentExpression(node, data), node); - }, - - reduceAssignmentTargetIdentifier(node, data) { - return fn(super.reduceAssignmentTargetIdentifier(node, data), node); - }, - - reduceAssignmentTargetPropertyIdentifier(node, data) { - return fn(super.reduceAssignmentTargetPropertyIdentifier(node, data), node); - }, - - reduceAssignmentTargetPropertyProperty(node, data) { - return fn(super.reduceAssignmentTargetPropertyProperty(node, data), node); - }, - - reduceAssignmentTargetWithDefault(node, data) { - return fn(super.reduceAssignmentTargetWithDefault(node, data), node); - }, - - reduceAwaitExpression(node, data) { - return fn(super.reduceAwaitExpression(node, data), node); - }, - - reduceBinaryExpression(node, data) { - return fn(super.reduceBinaryExpression(node, data), node); - }, - - reduceBindingIdentifier(node, data) { - return fn(super.reduceBindingIdentifier(node, data), node); - }, - - reduceBindingPropertyIdentifier(node, data) { - return fn(super.reduceBindingPropertyIdentifier(node, data), node); - }, - - reduceBindingPropertyProperty(node, data) { - return fn(super.reduceBindingPropertyProperty(node, data), node); - }, - - reduceBindingWithDefault(node, data) { - return fn(super.reduceBindingWithDefault(node, data), node); - }, - - reduceBlock(node, data) { - return fn(super.reduceBlock(node, data), node); - }, - - reduceBlockStatement(node, data) { - return fn(super.reduceBlockStatement(node, data), node); - }, - - reduceBreakStatement(node, data) { - return fn(super.reduceBreakStatement(node, data), node); - }, - - reduceCallExpression(node, data) { - return fn(super.reduceCallExpression(node, data), node); - }, - - reduceCatchClause(node, data) { - return fn(super.reduceCatchClause(node, data), node); - }, - - reduceClassDeclaration(node, data) { - return fn(super.reduceClassDeclaration(node, data), node); - }, - - reduceClassElement(node, data) { - return fn(super.reduceClassElement(node, data), node); - }, - - reduceClassExpression(node, data) { - return fn(super.reduceClassExpression(node, data), node); - }, - - reduceCompoundAssignmentExpression(node, data) { - return fn(super.reduceCompoundAssignmentExpression(node, data), node); - }, - - reduceComputedMemberAssignmentTarget(node, data) { - return fn(super.reduceComputedMemberAssignmentTarget(node, data), node); - }, - - reduceComputedMemberExpression(node, data) { - return fn(super.reduceComputedMemberExpression(node, data), node); - }, - - reduceComputedPropertyName(node, data) { - return fn(super.reduceComputedPropertyName(node, data), node); - }, - - reduceConditionalExpression(node, data) { - return fn(super.reduceConditionalExpression(node, data), node); - }, - - reduceContinueStatement(node, data) { - return fn(super.reduceContinueStatement(node, data), node); - }, - - reduceDataProperty(node, data) { - return fn(super.reduceDataProperty(node, data), node); - }, - - reduceDebuggerStatement(node, data) { - return fn(super.reduceDebuggerStatement(node, data), node); - }, - - reduceDirective(node, data) { - return fn(super.reduceDirective(node, data), node); - }, - - reduceDoWhileStatement(node, data) { - return fn(super.reduceDoWhileStatement(node, data), node); - }, - - reduceEmptyStatement(node, data) { - return fn(super.reduceEmptyStatement(node, data), node); - }, - - reduceExport(node, data) { - return fn(super.reduceExport(node, data), node); - }, - - reduceExportAllFrom(node, data) { - return fn(super.reduceExportAllFrom(node, data), node); - }, - - reduceExportDefault(node, data) { - return fn(super.reduceExportDefault(node, data), node); - }, - - reduceExportFrom(node, data) { - return fn(super.reduceExportFrom(node, data), node); - }, - - reduceExportFromSpecifier(node, data) { - return fn(super.reduceExportFromSpecifier(node, data), node); - }, - - reduceExportLocalSpecifier(node, data) { - return fn(super.reduceExportLocalSpecifier(node, data), node); - }, - - reduceExportLocals(node, data) { - return fn(super.reduceExportLocals(node, data), node); - }, - - reduceExpressionStatement(node, data) { - return fn(super.reduceExpressionStatement(node, data), node); - }, - - reduceForAwaitStatement(node, data) { - return fn(super.reduceForAwaitStatement(node, data), node); - }, - - reduceForInStatement(node, data) { - return fn(super.reduceForInStatement(node, data), node); - }, - - reduceForOfStatement(node, data) { - return fn(super.reduceForOfStatement(node, data), node); - }, - - reduceForStatement(node, data) { - return fn(super.reduceForStatement(node, data), node); - }, - - reduceFormalParameters(node, data) { - return fn(super.reduceFormalParameters(node, data), node); - }, - - reduceFunctionBody(node, data) { - return fn(super.reduceFunctionBody(node, data), node); - }, - - reduceFunctionDeclaration(node, data) { - return fn(super.reduceFunctionDeclaration(node, data), node); - }, - - reduceFunctionExpression(node, data) { - return fn(super.reduceFunctionExpression(node, data), node); - }, - - reduceGetter(node, data) { - return fn(super.reduceGetter(node, data), node); - }, - - reduceIdentifierExpression(node, data) { - return fn(super.reduceIdentifierExpression(node, data), node); - }, - - reduceIfStatement(node, data) { - return fn(super.reduceIfStatement(node, data), node); - }, - - reduceImport(node, data) { - return fn(super.reduceImport(node, data), node); - }, - - reduceImportNamespace(node, data) { - return fn(super.reduceImportNamespace(node, data), node); - }, - - reduceImportSpecifier(node, data) { - return fn(super.reduceImportSpecifier(node, data), node); - }, - - reduceLabeledStatement(node, data) { - return fn(super.reduceLabeledStatement(node, data), node); - }, - - reduceLiteralBooleanExpression(node, data) { - return fn(super.reduceLiteralBooleanExpression(node, data), node); - }, - - reduceLiteralInfinityExpression(node, data) { - return fn(super.reduceLiteralInfinityExpression(node, data), node); - }, - - reduceLiteralNullExpression(node, data) { - return fn(super.reduceLiteralNullExpression(node, data), node); - }, - - reduceLiteralNumericExpression(node, data) { - return fn(super.reduceLiteralNumericExpression(node, data), node); - }, - - reduceLiteralRegExpExpression(node, data) { - return fn(super.reduceLiteralRegExpExpression(node, data), node); - }, - - reduceLiteralStringExpression(node, data) { - return fn(super.reduceLiteralStringExpression(node, data), node); - }, - - reduceMethod(node, data) { - return fn(super.reduceMethod(node, data), node); - }, - - reduceModule(node, data) { - return fn(super.reduceModule(node, data), node); - }, - - reduceNewExpression(node, data) { - return fn(super.reduceNewExpression(node, data), node); - }, - - reduceNewTargetExpression(node, data) { - return fn(super.reduceNewTargetExpression(node, data), node); - }, - - reduceObjectAssignmentTarget(node, data) { - return fn(super.reduceObjectAssignmentTarget(node, data), node); - }, - - reduceObjectBinding(node, data) { - return fn(super.reduceObjectBinding(node, data), node); - }, - - reduceObjectExpression(node, data) { - return fn(super.reduceObjectExpression(node, data), node); - }, - - reduceReturnStatement(node, data) { - return fn(super.reduceReturnStatement(node, data), node); - }, - - reduceScript(node, data) { - return fn(super.reduceScript(node, data), node); - }, - - reduceSetter(node, data) { - return fn(super.reduceSetter(node, data), node); - }, - - reduceShorthandProperty(node, data) { - return fn(super.reduceShorthandProperty(node, data), node); - }, - - reduceSpreadElement(node, data) { - return fn(super.reduceSpreadElement(node, data), node); - }, - - reduceSpreadProperty(node, data) { - return fn(super.reduceSpreadProperty(node, data), node); - }, - - reduceStaticMemberAssignmentTarget(node, data) { - return fn(super.reduceStaticMemberAssignmentTarget(node, data), node); - }, - - reduceStaticMemberExpression(node, data) { - return fn(super.reduceStaticMemberExpression(node, data), node); - }, - - reduceStaticPropertyName(node, data) { - return fn(super.reduceStaticPropertyName(node, data), node); - }, - - reduceSuper(node, data) { - return fn(super.reduceSuper(node, data), node); - }, - - reduceSwitchCase(node, data) { - return fn(super.reduceSwitchCase(node, data), node); - }, - - reduceSwitchDefault(node, data) { - return fn(super.reduceSwitchDefault(node, data), node); - }, - - reduceSwitchStatement(node, data) { - return fn(super.reduceSwitchStatement(node, data), node); - }, - - reduceSwitchStatementWithDefault(node, data) { - return fn(super.reduceSwitchStatementWithDefault(node, data), node); - }, - - reduceTemplateElement(node, data) { - return fn(super.reduceTemplateElement(node, data), node); - }, - - reduceTemplateExpression(node, data) { - return fn(super.reduceTemplateExpression(node, data), node); - }, - - reduceThisExpression(node, data) { - return fn(super.reduceThisExpression(node, data), node); - }, - - reduceThrowStatement(node, data) { - return fn(super.reduceThrowStatement(node, data), node); - }, - - reduceTryCatchStatement(node, data) { - return fn(super.reduceTryCatchStatement(node, data), node); - }, - - reduceTryFinallyStatement(node, data) { - return fn(super.reduceTryFinallyStatement(node, data), node); - }, - - reduceUnaryExpression(node, data) { - return fn(super.reduceUnaryExpression(node, data), node); - }, - - reduceUpdateExpression(node, data) { - return fn(super.reduceUpdateExpression(node, data), node); - }, - - reduceVariableDeclaration(node, data) { - return fn(super.reduceVariableDeclaration(node, data), node); - }, - - reduceVariableDeclarationStatement(node, data) { - return fn(super.reduceVariableDeclarationStatement(node, data), node); - }, - - reduceVariableDeclarator(node, data) { - return fn(super.reduceVariableDeclarator(node, data), node); - }, - - reduceWhileStatement(node, data) { - return fn(super.reduceWhileStatement(node, data), node); - }, - - reduceWithStatement(node, data) { - return fn(super.reduceWithStatement(node, data), node); - }, - - reduceYieldExpression(node, data) { - return fn(super.reduceYieldExpression(node, data), node); - }, - - reduceYieldGeneratorExpression(node, data) { - return fn(super.reduceYieldGeneratorExpression(node, data), node); - }, -}); diff --git a/repl/src/shift-reducer/clone-reducer.js b/repl/src/shift-reducer/clone-reducer.js deleted file mode 100644 index 4cdcc334..00000000 --- a/repl/src/shift-reducer/clone-reducer.js +++ /dev/null @@ -1,416 +0,0 @@ -// Generated by generate-clone-reducer.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as Shift from 'shift-ast'; - -export default class CloneReducer { - reduceArrayAssignmentTarget(node, { elements, rest }) { - return new Shift.ArrayAssignmentTarget({ elements, rest }); - } - - reduceArrayBinding(node, { elements, rest }) { - return new Shift.ArrayBinding({ elements, rest }); - } - - reduceArrayExpression(node, { elements }) { - return new Shift.ArrayExpression({ elements }); - } - - reduceArrowExpression(node, { params, body }) { - return new Shift.ArrowExpression({ isAsync: node.isAsync, params, body }); - } - - reduceAssignmentExpression(node, { binding, expression }) { - return new Shift.AssignmentExpression({ binding, expression }); - } - - reduceAssignmentTargetIdentifier(node) { - return new Shift.AssignmentTargetIdentifier({ name: node.name }); - } - - reduceAssignmentTargetPropertyIdentifier(node, { binding, init }) { - return new Shift.AssignmentTargetPropertyIdentifier({ binding, init }); - } - - reduceAssignmentTargetPropertyProperty(node, { name, binding }) { - return new Shift.AssignmentTargetPropertyProperty({ name, binding }); - } - - reduceAssignmentTargetWithDefault(node, { binding, init }) { - return new Shift.AssignmentTargetWithDefault({ binding, init }); - } - - reduceAwaitExpression(node, { expression }) { - return new Shift.AwaitExpression({ expression }); - } - - reduceBinaryExpression(node, { left, right }) { - return new Shift.BinaryExpression({ left, operator: node.operator, right }); - } - - reduceBindingIdentifier(node) { - return new Shift.BindingIdentifier({ name: node.name }); - } - - reduceBindingPropertyIdentifier(node, { binding, init }) { - return new Shift.BindingPropertyIdentifier({ binding, init }); - } - - reduceBindingPropertyProperty(node, { name, binding }) { - return new Shift.BindingPropertyProperty({ name, binding }); - } - - reduceBindingWithDefault(node, { binding, init }) { - return new Shift.BindingWithDefault({ binding, init }); - } - - reduceBlock(node, { statements }) { - return new Shift.Block({ statements }); - } - - reduceBlockStatement(node, { block }) { - return new Shift.BlockStatement({ block }); - } - - reduceBreakStatement(node) { - return new Shift.BreakStatement({ label: node.label }); - } - - reduceCallExpression(node, { callee, arguments: _arguments }) { - return new Shift.CallExpression({ callee, arguments: _arguments }); - } - - reduceCatchClause(node, { binding, body }) { - return new Shift.CatchClause({ binding, body }); - } - - reduceClassDeclaration(node, { name, super: _super, elements }) { - return new Shift.ClassDeclaration({ name, super: _super, elements }); - } - - reduceClassElement(node, { method }) { - return new Shift.ClassElement({ isStatic: node.isStatic, method }); - } - - reduceClassExpression(node, { name, super: _super, elements }) { - return new Shift.ClassExpression({ name, super: _super, elements }); - } - - reduceCompoundAssignmentExpression(node, { binding, expression }) { - return new Shift.CompoundAssignmentExpression({ binding, operator: node.operator, expression }); - } - - reduceComputedMemberAssignmentTarget(node, { object, expression }) { - return new Shift.ComputedMemberAssignmentTarget({ object, expression }); - } - - reduceComputedMemberExpression(node, { object, expression }) { - return new Shift.ComputedMemberExpression({ object, expression }); - } - - reduceComputedPropertyName(node, { expression }) { - return new Shift.ComputedPropertyName({ expression }); - } - - reduceConditionalExpression(node, { test, consequent, alternate }) { - return new Shift.ConditionalExpression({ test, consequent, alternate }); - } - - reduceContinueStatement(node) { - return new Shift.ContinueStatement({ label: node.label }); - } - - reduceDataProperty(node, { name, expression }) { - return new Shift.DataProperty({ name, expression }); - } - - reduceDebuggerStatement(node) { - return new Shift.DebuggerStatement; - } - - reduceDirective(node) { - return new Shift.Directive({ rawValue: node.rawValue }); - } - - reduceDoWhileStatement(node, { body, test }) { - return new Shift.DoWhileStatement({ body, test }); - } - - reduceEmptyStatement(node) { - return new Shift.EmptyStatement; - } - - reduceExport(node, { declaration }) { - return new Shift.Export({ declaration }); - } - - reduceExportAllFrom(node) { - return new Shift.ExportAllFrom({ moduleSpecifier: node.moduleSpecifier }); - } - - reduceExportDefault(node, { body }) { - return new Shift.ExportDefault({ body }); - } - - reduceExportFrom(node, { namedExports }) { - return new Shift.ExportFrom({ namedExports, moduleSpecifier: node.moduleSpecifier }); - } - - reduceExportFromSpecifier(node) { - return new Shift.ExportFromSpecifier({ name: node.name, exportedName: node.exportedName }); - } - - reduceExportLocalSpecifier(node, { name }) { - return new Shift.ExportLocalSpecifier({ name, exportedName: node.exportedName }); - } - - reduceExportLocals(node, { namedExports }) { - return new Shift.ExportLocals({ namedExports }); - } - - reduceExpressionStatement(node, { expression }) { - return new Shift.ExpressionStatement({ expression }); - } - - reduceForAwaitStatement(node, { left, right, body }) { - return new Shift.ForAwaitStatement({ left, right, body }); - } - - reduceForInStatement(node, { left, right, body }) { - return new Shift.ForInStatement({ left, right, body }); - } - - reduceForOfStatement(node, { left, right, body }) { - return new Shift.ForOfStatement({ left, right, body }); - } - - reduceForStatement(node, { init, test, update, body }) { - return new Shift.ForStatement({ init, test, update, body }); - } - - reduceFormalParameters(node, { items, rest }) { - return new Shift.FormalParameters({ items, rest }); - } - - reduceFunctionBody(node, { directives, statements }) { - return new Shift.FunctionBody({ directives, statements }); - } - - reduceFunctionDeclaration(node, { name, params, body }) { - return new Shift.FunctionDeclaration({ isAsync: node.isAsync, isGenerator: node.isGenerator, name, params, body }); - } - - reduceFunctionExpression(node, { name, params, body }) { - return new Shift.FunctionExpression({ isAsync: node.isAsync, isGenerator: node.isGenerator, name, params, body }); - } - - reduceGetter(node, { name, body }) { - return new Shift.Getter({ name, body }); - } - - reduceIdentifierExpression(node) { - return new Shift.IdentifierExpression({ name: node.name }); - } - - reduceIfStatement(node, { test, consequent, alternate }) { - return new Shift.IfStatement({ test, consequent, alternate }); - } - - reduceImport(node, { defaultBinding, namedImports }) { - return new Shift.Import({ defaultBinding, namedImports, moduleSpecifier: node.moduleSpecifier }); - } - - reduceImportNamespace(node, { defaultBinding, namespaceBinding }) { - return new Shift.ImportNamespace({ defaultBinding, namespaceBinding, moduleSpecifier: node.moduleSpecifier }); - } - - reduceImportSpecifier(node, { binding }) { - return new Shift.ImportSpecifier({ name: node.name, binding }); - } - - reduceLabeledStatement(node, { body }) { - return new Shift.LabeledStatement({ label: node.label, body }); - } - - reduceLiteralBooleanExpression(node) { - return new Shift.LiteralBooleanExpression({ value: node.value }); - } - - reduceLiteralInfinityExpression(node) { - return new Shift.LiteralInfinityExpression; - } - - reduceLiteralNullExpression(node) { - return new Shift.LiteralNullExpression; - } - - reduceLiteralNumericExpression(node) { - return new Shift.LiteralNumericExpression({ value: node.value }); - } - - reduceLiteralRegExpExpression(node) { - return new Shift.LiteralRegExpExpression({ pattern: node.pattern, global: node.global, ignoreCase: node.ignoreCase, multiLine: node.multiLine, dotAll: node.dotAll, unicode: node.unicode, sticky: node.sticky }); - } - - reduceLiteralStringExpression(node) { - return new Shift.LiteralStringExpression({ value: node.value }); - } - - reduceMethod(node, { name, params, body }) { - return new Shift.Method({ isAsync: node.isAsync, isGenerator: node.isGenerator, name, params, body }); - } - - reduceModule(node, { directives, items }) { - return new Shift.Module({ directives, items }); - } - - reduceNewExpression(node, { callee, arguments: _arguments }) { - return new Shift.NewExpression({ callee, arguments: _arguments }); - } - - reduceNewTargetExpression(node) { - return new Shift.NewTargetExpression; - } - - reduceObjectAssignmentTarget(node, { properties, rest }) { - return new Shift.ObjectAssignmentTarget({ properties, rest }); - } - - reduceObjectBinding(node, { properties, rest }) { - return new Shift.ObjectBinding({ properties, rest }); - } - - reduceObjectExpression(node, { properties }) { - return new Shift.ObjectExpression({ properties }); - } - - reduceReturnStatement(node, { expression }) { - return new Shift.ReturnStatement({ expression }); - } - - reduceScript(node, { directives, statements }) { - return new Shift.Script({ directives, statements }); - } - - reduceSetter(node, { name, param, body }) { - return new Shift.Setter({ name, param, body }); - } - - reduceShorthandProperty(node, { name }) { - return new Shift.ShorthandProperty({ name }); - } - - reduceSpreadElement(node, { expression }) { - return new Shift.SpreadElement({ expression }); - } - - reduceSpreadProperty(node, { expression }) { - return new Shift.SpreadProperty({ expression }); - } - - reduceStaticMemberAssignmentTarget(node, { object }) { - return new Shift.StaticMemberAssignmentTarget({ object, property: node.property }); - } - - reduceStaticMemberExpression(node, { object }) { - return new Shift.StaticMemberExpression({ object, property: node.property }); - } - - reduceStaticPropertyName(node) { - return new Shift.StaticPropertyName({ value: node.value }); - } - - reduceSuper(node) { - return new Shift.Super; - } - - reduceSwitchCase(node, { test, consequent }) { - return new Shift.SwitchCase({ test, consequent }); - } - - reduceSwitchDefault(node, { consequent }) { - return new Shift.SwitchDefault({ consequent }); - } - - reduceSwitchStatement(node, { discriminant, cases }) { - return new Shift.SwitchStatement({ discriminant, cases }); - } - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - return new Shift.SwitchStatementWithDefault({ discriminant, preDefaultCases, defaultCase, postDefaultCases }); - } - - reduceTemplateElement(node) { - return new Shift.TemplateElement({ rawValue: node.rawValue }); - } - - reduceTemplateExpression(node, { tag, elements }) { - return new Shift.TemplateExpression({ tag, elements }); - } - - reduceThisExpression(node) { - return new Shift.ThisExpression; - } - - reduceThrowStatement(node, { expression }) { - return new Shift.ThrowStatement({ expression }); - } - - reduceTryCatchStatement(node, { body, catchClause }) { - return new Shift.TryCatchStatement({ body, catchClause }); - } - - reduceTryFinallyStatement(node, { body, catchClause, finalizer }) { - return new Shift.TryFinallyStatement({ body, catchClause, finalizer }); - } - - reduceUnaryExpression(node, { operand }) { - return new Shift.UnaryExpression({ operator: node.operator, operand }); - } - - reduceUpdateExpression(node, { operand }) { - return new Shift.UpdateExpression({ isPrefix: node.isPrefix, operator: node.operator, operand }); - } - - reduceVariableDeclaration(node, { declarators }) { - return new Shift.VariableDeclaration({ kind: node.kind, declarators }); - } - - reduceVariableDeclarationStatement(node, { declaration }) { - return new Shift.VariableDeclarationStatement({ declaration }); - } - - reduceVariableDeclarator(node, { binding, init }) { - return new Shift.VariableDeclarator({ binding, init }); - } - - reduceWhileStatement(node, { test, body }) { - return new Shift.WhileStatement({ test, body }); - } - - reduceWithStatement(node, { object, body }) { - return new Shift.WithStatement({ object, body }); - } - - reduceYieldExpression(node, { expression }) { - return new Shift.YieldExpression({ expression }); - } - - reduceYieldGeneratorExpression(node, { expression }) { - return new Shift.YieldGeneratorExpression({ expression }); - } -} diff --git a/repl/src/shift-reducer/director.js b/repl/src/shift-reducer/director.js deleted file mode 100644 index c9e4b038..00000000 --- a/repl/src/shift-reducer/director.js +++ /dev/null @@ -1,418 +0,0 @@ -// Generated by generate-director.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const director = { - ArrayAssignmentTarget(reducer, node) { - return reducer.reduceArrayAssignmentTarget(node, { elements: node.elements.map(v => v && this[v.type](reducer, v)), rest: node.rest && this[node.rest.type](reducer, node.rest) }); - }, - - ArrayBinding(reducer, node) { - return reducer.reduceArrayBinding(node, { elements: node.elements.map(v => v && this[v.type](reducer, v)), rest: node.rest && this[node.rest.type](reducer, node.rest) }); - }, - - ArrayExpression(reducer, node) { - return reducer.reduceArrayExpression(node, { elements: node.elements.map(v => v && this[v.type](reducer, v)) }); - }, - - ArrowExpression(reducer, node) { - return reducer.reduceArrowExpression(node, { params: this.FormalParameters(reducer, node.params), body: this[node.body.type](reducer, node.body) }); - }, - - AssignmentExpression(reducer, node) { - return reducer.reduceAssignmentExpression(node, { binding: this[node.binding.type](reducer, node.binding), expression: this[node.expression.type](reducer, node.expression) }); - }, - - AssignmentTargetIdentifier(reducer, node) { - return reducer.reduceAssignmentTargetIdentifier(node); - }, - - AssignmentTargetPropertyIdentifier(reducer, node) { - return reducer.reduceAssignmentTargetPropertyIdentifier(node, { binding: this.AssignmentTargetIdentifier(reducer, node.binding), init: node.init && this[node.init.type](reducer, node.init) }); - }, - - AssignmentTargetPropertyProperty(reducer, node) { - return reducer.reduceAssignmentTargetPropertyProperty(node, { name: this[node.name.type](reducer, node.name), binding: this[node.binding.type](reducer, node.binding) }); - }, - - AssignmentTargetWithDefault(reducer, node) { - return reducer.reduceAssignmentTargetWithDefault(node, { binding: this[node.binding.type](reducer, node.binding), init: this[node.init.type](reducer, node.init) }); - }, - - AwaitExpression(reducer, node) { - return reducer.reduceAwaitExpression(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, - - BinaryExpression(reducer, node) { - return reducer.reduceBinaryExpression(node, { left: this[node.left.type](reducer, node.left), right: this[node.right.type](reducer, node.right) }); - }, - - BindingIdentifier(reducer, node) { - return reducer.reduceBindingIdentifier(node); - }, - - BindingPropertyIdentifier(reducer, node) { - return reducer.reduceBindingPropertyIdentifier(node, { binding: this.BindingIdentifier(reducer, node.binding), init: node.init && this[node.init.type](reducer, node.init) }); - }, - - BindingPropertyProperty(reducer, node) { - return reducer.reduceBindingPropertyProperty(node, { name: this[node.name.type](reducer, node.name), binding: this[node.binding.type](reducer, node.binding) }); - }, - - BindingWithDefault(reducer, node) { - return reducer.reduceBindingWithDefault(node, { binding: this[node.binding.type](reducer, node.binding), init: this[node.init.type](reducer, node.init) }); - }, - - Block(reducer, node) { - return reducer.reduceBlock(node, { statements: node.statements.map(v => this[v.type](reducer, v)) }); - }, - - BlockStatement(reducer, node) { - return reducer.reduceBlockStatement(node, { block: this.Block(reducer, node.block) }); - }, - - BreakStatement(reducer, node) { - return reducer.reduceBreakStatement(node); - }, - - CallExpression(reducer, node) { - return reducer.reduceCallExpression(node, { callee: this[node.callee.type](reducer, node.callee), arguments: node.arguments.map(v => this[v.type](reducer, v)) }); - }, - - CatchClause(reducer, node) { - return reducer.reduceCatchClause(node, { binding: this[node.binding.type](reducer, node.binding), body: this.Block(reducer, node.body) }); - }, - - ClassDeclaration(reducer, node) { - return reducer.reduceClassDeclaration(node, { name: this.BindingIdentifier(reducer, node.name), super: node.super && this[node.super.type](reducer, node.super), elements: node.elements.map(v => this.ClassElement(reducer, v)) }); - }, - - ClassElement(reducer, node) { - return reducer.reduceClassElement(node, { method: this[node.method.type](reducer, node.method) }); - }, - - ClassExpression(reducer, node) { - return reducer.reduceClassExpression(node, { name: node.name && this.BindingIdentifier(reducer, node.name), super: node.super && this[node.super.type](reducer, node.super), elements: node.elements.map(v => this.ClassElement(reducer, v)) }); - }, - - CompoundAssignmentExpression(reducer, node) { - return reducer.reduceCompoundAssignmentExpression(node, { binding: this[node.binding.type](reducer, node.binding), expression: this[node.expression.type](reducer, node.expression) }); - }, - - ComputedMemberAssignmentTarget(reducer, node) { - return reducer.reduceComputedMemberAssignmentTarget(node, { object: this[node.object.type](reducer, node.object), expression: this[node.expression.type](reducer, node.expression) }); - }, - - ComputedMemberExpression(reducer, node) { - return reducer.reduceComputedMemberExpression(node, { object: this[node.object.type](reducer, node.object), expression: this[node.expression.type](reducer, node.expression) }); - }, - - ComputedPropertyName(reducer, node) { - return reducer.reduceComputedPropertyName(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, - - ConditionalExpression(reducer, node) { - return reducer.reduceConditionalExpression(node, { test: this[node.test.type](reducer, node.test), consequent: this[node.consequent.type](reducer, node.consequent), alternate: this[node.alternate.type](reducer, node.alternate) }); - }, - - ContinueStatement(reducer, node) { - return reducer.reduceContinueStatement(node); - }, - - DataProperty(reducer, node) { - return reducer.reduceDataProperty(node, { name: this[node.name.type](reducer, node.name), expression: this[node.expression.type](reducer, node.expression) }); - }, - - DebuggerStatement(reducer, node) { - return reducer.reduceDebuggerStatement(node); - }, - - Directive(reducer, node) { - return reducer.reduceDirective(node); - }, - - DoWhileStatement(reducer, node) { - return reducer.reduceDoWhileStatement(node, { body: this[node.body.type](reducer, node.body), test: this[node.test.type](reducer, node.test) }); - }, - - EmptyStatement(reducer, node) { - return reducer.reduceEmptyStatement(node); - }, - - Export(reducer, node) { - return reducer.reduceExport(node, { declaration: this[node.declaration.type](reducer, node.declaration) }); - }, - - ExportAllFrom(reducer, node) { - return reducer.reduceExportAllFrom(node); - }, - - ExportDefault(reducer, node) { - return reducer.reduceExportDefault(node, { body: this[node.body.type](reducer, node.body) }); - }, - - ExportFrom(reducer, node) { - return reducer.reduceExportFrom(node, { namedExports: node.namedExports.map(v => this.ExportFromSpecifier(reducer, v)) }); - }, - - ExportFromSpecifier(reducer, node) { - return reducer.reduceExportFromSpecifier(node); - }, - - ExportLocalSpecifier(reducer, node) { - return reducer.reduceExportLocalSpecifier(node, { name: this.IdentifierExpression(reducer, node.name) }); - }, - - ExportLocals(reducer, node) { - return reducer.reduceExportLocals(node, { namedExports: node.namedExports.map(v => this.ExportLocalSpecifier(reducer, v)) }); - }, - - ExpressionStatement(reducer, node) { - return reducer.reduceExpressionStatement(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, - - ForAwaitStatement(reducer, node) { - return reducer.reduceForAwaitStatement(node, { left: this[node.left.type](reducer, node.left), right: this[node.right.type](reducer, node.right), body: this[node.body.type](reducer, node.body) }); - }, - - ForInStatement(reducer, node) { - return reducer.reduceForInStatement(node, { left: this[node.left.type](reducer, node.left), right: this[node.right.type](reducer, node.right), body: this[node.body.type](reducer, node.body) }); - }, - - ForOfStatement(reducer, node) { - return reducer.reduceForOfStatement(node, { left: this[node.left.type](reducer, node.left), right: this[node.right.type](reducer, node.right), body: this[node.body.type](reducer, node.body) }); - }, - - ForStatement(reducer, node) { - return reducer.reduceForStatement(node, { init: node.init && this[node.init.type](reducer, node.init), test: node.test && this[node.test.type](reducer, node.test), update: node.update && this[node.update.type](reducer, node.update), body: this[node.body.type](reducer, node.body) }); - }, - - FormalParameters(reducer, node) { - return reducer.reduceFormalParameters(node, { items: node.items.map(v => this[v.type](reducer, v)), rest: node.rest && this[node.rest.type](reducer, node.rest) }); - }, - - FunctionBody(reducer, node) { - return reducer.reduceFunctionBody(node, { directives: node.directives.map(v => this.Directive(reducer, v)), statements: node.statements.map(v => this[v.type](reducer, v)) }); - }, - - FunctionDeclaration(reducer, node) { - return reducer.reduceFunctionDeclaration(node, { name: this.BindingIdentifier(reducer, node.name), params: this.FormalParameters(reducer, node.params), body: this.FunctionBody(reducer, node.body) }); - }, - - FunctionExpression(reducer, node) { - return reducer.reduceFunctionExpression(node, { name: node.name && this.BindingIdentifier(reducer, node.name), params: this.FormalParameters(reducer, node.params), body: this.FunctionBody(reducer, node.body) }); - }, - - Getter(reducer, node) { - return reducer.reduceGetter(node, { name: this[node.name.type](reducer, node.name), body: this.FunctionBody(reducer, node.body) }); - }, - - IdentifierExpression(reducer, node) { - return reducer.reduceIdentifierExpression(node); - }, - - IfStatement(reducer, node) { - return reducer.reduceIfStatement(node, { test: this[node.test.type](reducer, node.test), consequent: this[node.consequent.type](reducer, node.consequent), alternate: node.alternate && this[node.alternate.type](reducer, node.alternate) }); - }, - - Import(reducer, node) { - return reducer.reduceImport(node, { defaultBinding: node.defaultBinding && this.BindingIdentifier(reducer, node.defaultBinding), namedImports: node.namedImports.map(v => this.ImportSpecifier(reducer, v)) }); - }, - - ImportNamespace(reducer, node) { - return reducer.reduceImportNamespace(node, { defaultBinding: node.defaultBinding && this.BindingIdentifier(reducer, node.defaultBinding), namespaceBinding: this.BindingIdentifier(reducer, node.namespaceBinding) }); - }, - - ImportSpecifier(reducer, node) { - return reducer.reduceImportSpecifier(node, { binding: this.BindingIdentifier(reducer, node.binding) }); - }, - - LabeledStatement(reducer, node) { - return reducer.reduceLabeledStatement(node, { body: this[node.body.type](reducer, node.body) }); - }, - - LiteralBooleanExpression(reducer, node) { - return reducer.reduceLiteralBooleanExpression(node); - }, - - LiteralInfinityExpression(reducer, node) { - return reducer.reduceLiteralInfinityExpression(node); - }, - - LiteralNullExpression(reducer, node) { - return reducer.reduceLiteralNullExpression(node); - }, - - LiteralNumericExpression(reducer, node) { - return reducer.reduceLiteralNumericExpression(node); - }, - - LiteralRegExpExpression(reducer, node) { - return reducer.reduceLiteralRegExpExpression(node); - }, - - LiteralStringExpression(reducer, node) { - return reducer.reduceLiteralStringExpression(node); - }, - - Method(reducer, node) { - return reducer.reduceMethod(node, { name: this[node.name.type](reducer, node.name), params: this.FormalParameters(reducer, node.params), body: this.FunctionBody(reducer, node.body) }); - }, - - Module(reducer, node) { - return reducer.reduceModule(node, { directives: node.directives.map(v => this.Directive(reducer, v)), items: node.items.map(v => this[v.type](reducer, v)) }); - }, - - NewExpression(reducer, node) { - return reducer.reduceNewExpression(node, { callee: this[node.callee.type](reducer, node.callee), arguments: node.arguments.map(v => this[v.type](reducer, v)) }); - }, - - NewTargetExpression(reducer, node) { - return reducer.reduceNewTargetExpression(node); - }, - - ObjectAssignmentTarget(reducer, node) { - return reducer.reduceObjectAssignmentTarget(node, { properties: node.properties.map(v => this[v.type](reducer, v)), rest: node.rest && this[node.rest.type](reducer, node.rest) }); - }, - - ObjectBinding(reducer, node) { - return reducer.reduceObjectBinding(node, { properties: node.properties.map(v => this[v.type](reducer, v)), rest: node.rest && this[node.rest.type](reducer, node.rest) }); - }, - - ObjectExpression(reducer, node) { - return reducer.reduceObjectExpression(node, { properties: node.properties.map(v => this[v.type](reducer, v)) }); - }, - - ReturnStatement(reducer, node) { - return reducer.reduceReturnStatement(node, { expression: node.expression && this[node.expression.type](reducer, node.expression) }); - }, - - Script(reducer, node) { - return reducer.reduceScript(node, { directives: node.directives.map(v => this.Directive(reducer, v)), statements: node.statements.map(v => this[v.type](reducer, v)) }); - }, - - Setter(reducer, node) { - return reducer.reduceSetter(node, { name: this[node.name.type](reducer, node.name), param: this[node.param.type](reducer, node.param), body: this.FunctionBody(reducer, node.body) }); - }, - - ShorthandProperty(reducer, node) { - return reducer.reduceShorthandProperty(node, { name: this.IdentifierExpression(reducer, node.name) }); - }, - - SpreadElement(reducer, node) { - return reducer.reduceSpreadElement(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, - - SpreadProperty(reducer, node) { - return reducer.reduceSpreadProperty(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, - - StaticMemberAssignmentTarget(reducer, node) { - return reducer.reduceStaticMemberAssignmentTarget(node, { object: this[node.object.type](reducer, node.object) }); - }, - - StaticMemberExpression(reducer, node) { - return reducer.reduceStaticMemberExpression(node, { object: this[node.object.type](reducer, node.object) }); - }, - - StaticPropertyName(reducer, node) { - return reducer.reduceStaticPropertyName(node); - }, - - Super(reducer, node) { - return reducer.reduceSuper(node); - }, - - SwitchCase(reducer, node) { - return reducer.reduceSwitchCase(node, { test: this[node.test.type](reducer, node.test), consequent: node.consequent.map(v => this[v.type](reducer, v)) }); - }, - - SwitchDefault(reducer, node) { - return reducer.reduceSwitchDefault(node, { consequent: node.consequent.map(v => this[v.type](reducer, v)) }); - }, - - SwitchStatement(reducer, node) { - return reducer.reduceSwitchStatement(node, { discriminant: this[node.discriminant.type](reducer, node.discriminant), cases: node.cases.map(v => this.SwitchCase(reducer, v)) }); - }, - - SwitchStatementWithDefault(reducer, node) { - return reducer.reduceSwitchStatementWithDefault(node, { discriminant: this[node.discriminant.type](reducer, node.discriminant), preDefaultCases: node.preDefaultCases.map(v => this.SwitchCase(reducer, v)), defaultCase: this.SwitchDefault(reducer, node.defaultCase), postDefaultCases: node.postDefaultCases.map(v => this.SwitchCase(reducer, v)) }); - }, - - TemplateElement(reducer, node) { - return reducer.reduceTemplateElement(node); - }, - - TemplateExpression(reducer, node) { - return reducer.reduceTemplateExpression(node, { tag: node.tag && this[node.tag.type](reducer, node.tag), elements: node.elements.map(v => this[v.type](reducer, v)) }); - }, - - ThisExpression(reducer, node) { - return reducer.reduceThisExpression(node); - }, - - ThrowStatement(reducer, node) { - return reducer.reduceThrowStatement(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, - - TryCatchStatement(reducer, node) { - return reducer.reduceTryCatchStatement(node, { body: this.Block(reducer, node.body), catchClause: this.CatchClause(reducer, node.catchClause) }); - }, - - TryFinallyStatement(reducer, node) { - return reducer.reduceTryFinallyStatement(node, { body: this.Block(reducer, node.body), catchClause: node.catchClause && this.CatchClause(reducer, node.catchClause), finalizer: this.Block(reducer, node.finalizer) }); - }, - - UnaryExpression(reducer, node) { - return reducer.reduceUnaryExpression(node, { operand: this[node.operand.type](reducer, node.operand) }); - }, - - UpdateExpression(reducer, node) { - return reducer.reduceUpdateExpression(node, { operand: this[node.operand.type](reducer, node.operand) }); - }, - - VariableDeclaration(reducer, node) { - return reducer.reduceVariableDeclaration(node, { declarators: node.declarators.map(v => this.VariableDeclarator(reducer, v)) }); - }, - - VariableDeclarationStatement(reducer, node) { - return reducer.reduceVariableDeclarationStatement(node, { declaration: this.VariableDeclaration(reducer, node.declaration) }); - }, - - VariableDeclarator(reducer, node) { - return reducer.reduceVariableDeclarator(node, { binding: this[node.binding.type](reducer, node.binding), init: node.init && this[node.init.type](reducer, node.init) }); - }, - - WhileStatement(reducer, node) { - return reducer.reduceWhileStatement(node, { test: this[node.test.type](reducer, node.test), body: this[node.body.type](reducer, node.body) }); - }, - - WithStatement(reducer, node) { - return reducer.reduceWithStatement(node, { object: this[node.object.type](reducer, node.object), body: this[node.body.type](reducer, node.body) }); - }, - - YieldExpression(reducer, node) { - return reducer.reduceYieldExpression(node, { expression: node.expression && this[node.expression.type](reducer, node.expression) }); - }, - - YieldGeneratorExpression(reducer, node) { - return reducer.reduceYieldGeneratorExpression(node, { expression: this[node.expression.type](reducer, node.expression) }); - }, -}; - -export function reduce(reducer, node) { - return director[node.type](reducer, node); -} diff --git a/repl/src/shift-reducer/index.js b/repl/src/shift-reducer/index.js deleted file mode 100644 index 2a97b980..00000000 --- a/repl/src/shift-reducer/index.js +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { reduce, reduce as default } from './director.js'; -export { thunkedReduce } from './thunked-director.js'; -export { default as thunkify } from './thunkify.js'; -export { default as thunkifyClass } from './thunkify-class.js'; -export { default as memoize } from './memoize.js'; -export { default as CloneReducer } from './clone-reducer.js'; -export { default as LazyCloneReducer } from './lazy-clone-reducer.js'; -export { default as MonoidalReducer } from './monoidal-reducer.js'; -export { default as ThunkedMonoidalReducer } from './thunked-monoidal-reducer.js'; -export { default as adapt } from './adapt.js'; -export { PlusReducer, ThunkedPlusReducer, ConcatReducer, ThunkedConcatReducer, AndReducer, ThunkedAndReducer, OrReducer, ThunkedOrReducer } from './reducers.js'; diff --git a/repl/src/shift-reducer/lazy-clone-reducer.js b/repl/src/shift-reducer/lazy-clone-reducer.js deleted file mode 100644 index 68df0d2e..00000000 --- a/repl/src/shift-reducer/lazy-clone-reducer.js +++ /dev/null @@ -1,650 +0,0 @@ -// Generated by generate-lazy-clone-reducer.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as Shift from 'shift-ast'; - -export default class LazyCloneReducer { - reduceArrayAssignmentTarget(node, { elements, rest }) { - if ((node.elements.length === elements.length && node.elements.every((v, i) => v === elements[i])) && node.rest === rest) { - return node; - } - return new Shift.ArrayAssignmentTarget({ elements, rest }); - } - - reduceArrayBinding(node, { elements, rest }) { - if ((node.elements.length === elements.length && node.elements.every((v, i) => v === elements[i])) && node.rest === rest) { - return node; - } - return new Shift.ArrayBinding({ elements, rest }); - } - - reduceArrayExpression(node, { elements }) { - if ((node.elements.length === elements.length && node.elements.every((v, i) => v === elements[i]))) { - return node; - } - return new Shift.ArrayExpression({ elements }); - } - - reduceArrowExpression(node, { params, body }) { - if (node.params === params && node.body === body) { - return node; - } - return new Shift.ArrowExpression({ isAsync: node.isAsync, params, body }); - } - - reduceAssignmentExpression(node, { binding, expression }) { - if (node.binding === binding && node.expression === expression) { - return node; - } - return new Shift.AssignmentExpression({ binding, expression }); - } - - reduceAssignmentTargetIdentifier(node) { - return node; - } - - reduceAssignmentTargetPropertyIdentifier(node, { binding, init }) { - if (node.binding === binding && node.init === init) { - return node; - } - return new Shift.AssignmentTargetPropertyIdentifier({ binding, init }); - } - - reduceAssignmentTargetPropertyProperty(node, { name, binding }) { - if (node.name === name && node.binding === binding) { - return node; - } - return new Shift.AssignmentTargetPropertyProperty({ name, binding }); - } - - reduceAssignmentTargetWithDefault(node, { binding, init }) { - if (node.binding === binding && node.init === init) { - return node; - } - return new Shift.AssignmentTargetWithDefault({ binding, init }); - } - - reduceAwaitExpression(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.AwaitExpression({ expression }); - } - - reduceBinaryExpression(node, { left, right }) { - if (node.left === left && node.right === right) { - return node; - } - return new Shift.BinaryExpression({ left, operator: node.operator, right }); - } - - reduceBindingIdentifier(node) { - return node; - } - - reduceBindingPropertyIdentifier(node, { binding, init }) { - if (node.binding === binding && node.init === init) { - return node; - } - return new Shift.BindingPropertyIdentifier({ binding, init }); - } - - reduceBindingPropertyProperty(node, { name, binding }) { - if (node.name === name && node.binding === binding) { - return node; - } - return new Shift.BindingPropertyProperty({ name, binding }); - } - - reduceBindingWithDefault(node, { binding, init }) { - if (node.binding === binding && node.init === init) { - return node; - } - return new Shift.BindingWithDefault({ binding, init }); - } - - reduceBlock(node, { statements }) { - if ((node.statements.length === statements.length && node.statements.every((v, i) => v === statements[i]))) { - return node; - } - return new Shift.Block({ statements }); - } - - reduceBlockStatement(node, { block }) { - if (node.block === block) { - return node; - } - return new Shift.BlockStatement({ block }); - } - - reduceBreakStatement(node) { - return node; - } - - reduceCallExpression(node, { callee, arguments: _arguments }) { - if (node.callee === callee && (node.arguments.length === _arguments.length && node.arguments.every((v, i) => v === _arguments[i]))) { - return node; - } - return new Shift.CallExpression({ callee, arguments: _arguments }); - } - - reduceCatchClause(node, { binding, body }) { - if (node.binding === binding && node.body === body) { - return node; - } - return new Shift.CatchClause({ binding, body }); - } - - reduceClassDeclaration(node, { name, super: _super, elements }) { - if (node.name === name && node.super === _super && (node.elements.length === elements.length && node.elements.every((v, i) => v === elements[i]))) { - return node; - } - return new Shift.ClassDeclaration({ name, super: _super, elements }); - } - - reduceClassElement(node, { method }) { - if (node.method === method) { - return node; - } - return new Shift.ClassElement({ isStatic: node.isStatic, method }); - } - - reduceClassExpression(node, { name, super: _super, elements }) { - if (node.name === name && node.super === _super && (node.elements.length === elements.length && node.elements.every((v, i) => v === elements[i]))) { - return node; - } - return new Shift.ClassExpression({ name, super: _super, elements }); - } - - reduceCompoundAssignmentExpression(node, { binding, expression }) { - if (node.binding === binding && node.expression === expression) { - return node; - } - return new Shift.CompoundAssignmentExpression({ binding, operator: node.operator, expression }); - } - - reduceComputedMemberAssignmentTarget(node, { object, expression }) { - if (node.object === object && node.expression === expression) { - return node; - } - return new Shift.ComputedMemberAssignmentTarget({ object, expression }); - } - - reduceComputedMemberExpression(node, { object, expression }) { - if (node.object === object && node.expression === expression) { - return node; - } - return new Shift.ComputedMemberExpression({ object, expression }); - } - - reduceComputedPropertyName(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.ComputedPropertyName({ expression }); - } - - reduceConditionalExpression(node, { test, consequent, alternate }) { - if (node.test === test && node.consequent === consequent && node.alternate === alternate) { - return node; - } - return new Shift.ConditionalExpression({ test, consequent, alternate }); - } - - reduceContinueStatement(node) { - return node; - } - - reduceDataProperty(node, { name, expression }) { - if (node.name === name && node.expression === expression) { - return node; - } - return new Shift.DataProperty({ name, expression }); - } - - reduceDebuggerStatement(node) { - return node; - } - - reduceDirective(node) { - return node; - } - - reduceDoWhileStatement(node, { body, test }) { - if (node.body === body && node.test === test) { - return node; - } - return new Shift.DoWhileStatement({ body, test }); - } - - reduceEmptyStatement(node) { - return node; - } - - reduceExport(node, { declaration }) { - if (node.declaration === declaration) { - return node; - } - return new Shift.Export({ declaration }); - } - - reduceExportAllFrom(node) { - return node; - } - - reduceExportDefault(node, { body }) { - if (node.body === body) { - return node; - } - return new Shift.ExportDefault({ body }); - } - - reduceExportFrom(node, { namedExports }) { - if ((node.namedExports.length === namedExports.length && node.namedExports.every((v, i) => v === namedExports[i]))) { - return node; - } - return new Shift.ExportFrom({ namedExports, moduleSpecifier: node.moduleSpecifier }); - } - - reduceExportFromSpecifier(node) { - return node; - } - - reduceExportLocalSpecifier(node, { name }) { - if (node.name === name) { - return node; - } - return new Shift.ExportLocalSpecifier({ name, exportedName: node.exportedName }); - } - - reduceExportLocals(node, { namedExports }) { - if ((node.namedExports.length === namedExports.length && node.namedExports.every((v, i) => v === namedExports[i]))) { - return node; - } - return new Shift.ExportLocals({ namedExports }); - } - - reduceExpressionStatement(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.ExpressionStatement({ expression }); - } - - reduceForAwaitStatement(node, { left, right, body }) { - if (node.left === left && node.right === right && node.body === body) { - return node; - } - return new Shift.ForAwaitStatement({ left, right, body }); - } - - reduceForInStatement(node, { left, right, body }) { - if (node.left === left && node.right === right && node.body === body) { - return node; - } - return new Shift.ForInStatement({ left, right, body }); - } - - reduceForOfStatement(node, { left, right, body }) { - if (node.left === left && node.right === right && node.body === body) { - return node; - } - return new Shift.ForOfStatement({ left, right, body }); - } - - reduceForStatement(node, { init, test, update, body }) { - if (node.init === init && node.test === test && node.update === update && node.body === body) { - return node; - } - return new Shift.ForStatement({ init, test, update, body }); - } - - reduceFormalParameters(node, { items, rest }) { - if ((node.items.length === items.length && node.items.every((v, i) => v === items[i])) && node.rest === rest) { - return node; - } - return new Shift.FormalParameters({ items, rest }); - } - - reduceFunctionBody(node, { directives, statements }) { - if ((node.directives.length === directives.length && node.directives.every((v, i) => v === directives[i])) && (node.statements.length === statements.length && node.statements.every((v, i) => v === statements[i]))) { - return node; - } - return new Shift.FunctionBody({ directives, statements }); - } - - reduceFunctionDeclaration(node, { name, params, body }) { - if (node.name === name && node.params === params && node.body === body) { - return node; - } - return new Shift.FunctionDeclaration({ isAsync: node.isAsync, isGenerator: node.isGenerator, name, params, body }); - } - - reduceFunctionExpression(node, { name, params, body }) { - if (node.name === name && node.params === params && node.body === body) { - return node; - } - return new Shift.FunctionExpression({ isAsync: node.isAsync, isGenerator: node.isGenerator, name, params, body }); - } - - reduceGetter(node, { name, body }) { - if (node.name === name && node.body === body) { - return node; - } - return new Shift.Getter({ name, body }); - } - - reduceIdentifierExpression(node) { - return node; - } - - reduceIfStatement(node, { test, consequent, alternate }) { - if (node.test === test && node.consequent === consequent && node.alternate === alternate) { - return node; - } - return new Shift.IfStatement({ test, consequent, alternate }); - } - - reduceImport(node, { defaultBinding, namedImports }) { - if (node.defaultBinding === defaultBinding && (node.namedImports.length === namedImports.length && node.namedImports.every((v, i) => v === namedImports[i]))) { - return node; - } - return new Shift.Import({ defaultBinding, namedImports, moduleSpecifier: node.moduleSpecifier }); - } - - reduceImportNamespace(node, { defaultBinding, namespaceBinding }) { - if (node.defaultBinding === defaultBinding && node.namespaceBinding === namespaceBinding) { - return node; - } - return new Shift.ImportNamespace({ defaultBinding, namespaceBinding, moduleSpecifier: node.moduleSpecifier }); - } - - reduceImportSpecifier(node, { binding }) { - if (node.binding === binding) { - return node; - } - return new Shift.ImportSpecifier({ name: node.name, binding }); - } - - reduceLabeledStatement(node, { body }) { - if (node.body === body) { - return node; - } - return new Shift.LabeledStatement({ label: node.label, body }); - } - - reduceLiteralBooleanExpression(node) { - return node; - } - - reduceLiteralInfinityExpression(node) { - return node; - } - - reduceLiteralNullExpression(node) { - return node; - } - - reduceLiteralNumericExpression(node) { - return node; - } - - reduceLiteralRegExpExpression(node) { - return node; - } - - reduceLiteralStringExpression(node) { - return node; - } - - reduceMethod(node, { name, params, body }) { - if (node.name === name && node.params === params && node.body === body) { - return node; - } - return new Shift.Method({ isAsync: node.isAsync, isGenerator: node.isGenerator, name, params, body }); - } - - reduceModule(node, { directives, items }) { - if ((node.directives.length === directives.length && node.directives.every((v, i) => v === directives[i])) && (node.items.length === items.length && node.items.every((v, i) => v === items[i]))) { - return node; - } - return new Shift.Module({ directives, items }); - } - - reduceNewExpression(node, { callee, arguments: _arguments }) { - if (node.callee === callee && (node.arguments.length === _arguments.length && node.arguments.every((v, i) => v === _arguments[i]))) { - return node; - } - return new Shift.NewExpression({ callee, arguments: _arguments }); - } - - reduceNewTargetExpression(node) { - return node; - } - - reduceObjectAssignmentTarget(node, { properties, rest }) { - if ((node.properties.length === properties.length && node.properties.every((v, i) => v === properties[i])) && node.rest === rest) { - return node; - } - return new Shift.ObjectAssignmentTarget({ properties, rest }); - } - - reduceObjectBinding(node, { properties, rest }) { - if ((node.properties.length === properties.length && node.properties.every((v, i) => v === properties[i])) && node.rest === rest) { - return node; - } - return new Shift.ObjectBinding({ properties, rest }); - } - - reduceObjectExpression(node, { properties }) { - if ((node.properties.length === properties.length && node.properties.every((v, i) => v === properties[i]))) { - return node; - } - return new Shift.ObjectExpression({ properties }); - } - - reduceReturnStatement(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.ReturnStatement({ expression }); - } - - reduceScript(node, { directives, statements }) { - if ((node.directives.length === directives.length && node.directives.every((v, i) => v === directives[i])) && (node.statements.length === statements.length && node.statements.every((v, i) => v === statements[i]))) { - return node; - } - return new Shift.Script({ directives, statements }); - } - - reduceSetter(node, { name, param, body }) { - if (node.name === name && node.param === param && node.body === body) { - return node; - } - return new Shift.Setter({ name, param, body }); - } - - reduceShorthandProperty(node, { name }) { - if (node.name === name) { - return node; - } - return new Shift.ShorthandProperty({ name }); - } - - reduceSpreadElement(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.SpreadElement({ expression }); - } - - reduceSpreadProperty(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.SpreadProperty({ expression }); - } - - reduceStaticMemberAssignmentTarget(node, { object }) { - if (node.object === object) { - return node; - } - return new Shift.StaticMemberAssignmentTarget({ object, property: node.property }); - } - - reduceStaticMemberExpression(node, { object }) { - if (node.object === object) { - return node; - } - return new Shift.StaticMemberExpression({ object, property: node.property }); - } - - reduceStaticPropertyName(node) { - return node; - } - - reduceSuper(node) { - return node; - } - - reduceSwitchCase(node, { test, consequent }) { - if (node.test === test && (node.consequent.length === consequent.length && node.consequent.every((v, i) => v === consequent[i]))) { - return node; - } - return new Shift.SwitchCase({ test, consequent }); - } - - reduceSwitchDefault(node, { consequent }) { - if ((node.consequent.length === consequent.length && node.consequent.every((v, i) => v === consequent[i]))) { - return node; - } - return new Shift.SwitchDefault({ consequent }); - } - - reduceSwitchStatement(node, { discriminant, cases }) { - if (node.discriminant === discriminant && (node.cases.length === cases.length && node.cases.every((v, i) => v === cases[i]))) { - return node; - } - return new Shift.SwitchStatement({ discriminant, cases }); - } - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - if (node.discriminant === discriminant && (node.preDefaultCases.length === preDefaultCases.length && node.preDefaultCases.every((v, i) => v === preDefaultCases[i])) && node.defaultCase === defaultCase && (node.postDefaultCases.length === postDefaultCases.length && node.postDefaultCases.every((v, i) => v === postDefaultCases[i]))) { - return node; - } - return new Shift.SwitchStatementWithDefault({ discriminant, preDefaultCases, defaultCase, postDefaultCases }); - } - - reduceTemplateElement(node) { - return node; - } - - reduceTemplateExpression(node, { tag, elements }) { - if (node.tag === tag && (node.elements.length === elements.length && node.elements.every((v, i) => v === elements[i]))) { - return node; - } - return new Shift.TemplateExpression({ tag, elements }); - } - - reduceThisExpression(node) { - return node; - } - - reduceThrowStatement(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.ThrowStatement({ expression }); - } - - reduceTryCatchStatement(node, { body, catchClause }) { - if (node.body === body && node.catchClause === catchClause) { - return node; - } - return new Shift.TryCatchStatement({ body, catchClause }); - } - - reduceTryFinallyStatement(node, { body, catchClause, finalizer }) { - if (node.body === body && node.catchClause === catchClause && node.finalizer === finalizer) { - return node; - } - return new Shift.TryFinallyStatement({ body, catchClause, finalizer }); - } - - reduceUnaryExpression(node, { operand }) { - if (node.operand === operand) { - return node; - } - return new Shift.UnaryExpression({ operator: node.operator, operand }); - } - - reduceUpdateExpression(node, { operand }) { - if (node.operand === operand) { - return node; - } - return new Shift.UpdateExpression({ isPrefix: node.isPrefix, operator: node.operator, operand }); - } - - reduceVariableDeclaration(node, { declarators }) { - if ((node.declarators.length === declarators.length && node.declarators.every((v, i) => v === declarators[i]))) { - return node; - } - return new Shift.VariableDeclaration({ kind: node.kind, declarators }); - } - - reduceVariableDeclarationStatement(node, { declaration }) { - if (node.declaration === declaration) { - return node; - } - return new Shift.VariableDeclarationStatement({ declaration }); - } - - reduceVariableDeclarator(node, { binding, init }) { - if (node.binding === binding && node.init === init) { - return node; - } - return new Shift.VariableDeclarator({ binding, init }); - } - - reduceWhileStatement(node, { test, body }) { - if (node.test === test && node.body === body) { - return node; - } - return new Shift.WhileStatement({ test, body }); - } - - reduceWithStatement(node, { object, body }) { - if (node.object === object && node.body === body) { - return node; - } - return new Shift.WithStatement({ object, body }); - } - - reduceYieldExpression(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.YieldExpression({ expression }); - } - - reduceYieldGeneratorExpression(node, { expression }) { - if (node.expression === expression) { - return node; - } - return new Shift.YieldGeneratorExpression({ expression }); - } -} diff --git a/repl/src/shift-reducer/memoize.js b/repl/src/shift-reducer/memoize.js deleted file mode 100644 index 2f3887e6..00000000 --- a/repl/src/shift-reducer/memoize.js +++ /dev/null @@ -1,914 +0,0 @@ -// Generated by generate-memoize.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as Shift from 'shift-ast'; - -export default function memoize(reducer) { - const cache = new WeakMap; - return { - reduceArrayAssignmentTarget(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceArrayAssignmentTarget(node, arg); - cache.set(node, res); - return res; - }, - - reduceArrayBinding(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceArrayBinding(node, arg); - cache.set(node, res); - return res; - }, - - reduceArrayExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceArrayExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceArrowExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceArrowExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceAssignmentExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceAssignmentExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceAssignmentTargetIdentifier(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceAssignmentTargetIdentifier(node); - cache.set(node, res); - return res; - }, - - reduceAssignmentTargetPropertyIdentifier(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceAssignmentTargetPropertyIdentifier(node, arg); - cache.set(node, res); - return res; - }, - - reduceAssignmentTargetPropertyProperty(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceAssignmentTargetPropertyProperty(node, arg); - cache.set(node, res); - return res; - }, - - reduceAssignmentTargetWithDefault(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceAssignmentTargetWithDefault(node, arg); - cache.set(node, res); - return res; - }, - - reduceAwaitExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceAwaitExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceBinaryExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBinaryExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceBindingIdentifier(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBindingIdentifier(node); - cache.set(node, res); - return res; - }, - - reduceBindingPropertyIdentifier(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBindingPropertyIdentifier(node, arg); - cache.set(node, res); - return res; - }, - - reduceBindingPropertyProperty(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBindingPropertyProperty(node, arg); - cache.set(node, res); - return res; - }, - - reduceBindingWithDefault(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBindingWithDefault(node, arg); - cache.set(node, res); - return res; - }, - - reduceBlock(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBlock(node, arg); - cache.set(node, res); - return res; - }, - - reduceBlockStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBlockStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceBreakStatement(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceBreakStatement(node); - cache.set(node, res); - return res; - }, - - reduceCallExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceCallExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceCatchClause(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceCatchClause(node, arg); - cache.set(node, res); - return res; - }, - - reduceClassDeclaration(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceClassDeclaration(node, arg); - cache.set(node, res); - return res; - }, - - reduceClassElement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceClassElement(node, arg); - cache.set(node, res); - return res; - }, - - reduceClassExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceClassExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceCompoundAssignmentExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceCompoundAssignmentExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceComputedMemberAssignmentTarget(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceComputedMemberAssignmentTarget(node, arg); - cache.set(node, res); - return res; - }, - - reduceComputedMemberExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceComputedMemberExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceComputedPropertyName(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceComputedPropertyName(node, arg); - cache.set(node, res); - return res; - }, - - reduceConditionalExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceConditionalExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceContinueStatement(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceContinueStatement(node); - cache.set(node, res); - return res; - }, - - reduceDataProperty(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceDataProperty(node, arg); - cache.set(node, res); - return res; - }, - - reduceDebuggerStatement(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceDebuggerStatement(node); - cache.set(node, res); - return res; - }, - - reduceDirective(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceDirective(node); - cache.set(node, res); - return res; - }, - - reduceDoWhileStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceDoWhileStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceEmptyStatement(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceEmptyStatement(node); - cache.set(node, res); - return res; - }, - - reduceExport(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExport(node, arg); - cache.set(node, res); - return res; - }, - - reduceExportAllFrom(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExportAllFrom(node); - cache.set(node, res); - return res; - }, - - reduceExportDefault(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExportDefault(node, arg); - cache.set(node, res); - return res; - }, - - reduceExportFrom(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExportFrom(node, arg); - cache.set(node, res); - return res; - }, - - reduceExportFromSpecifier(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExportFromSpecifier(node); - cache.set(node, res); - return res; - }, - - reduceExportLocalSpecifier(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExportLocalSpecifier(node, arg); - cache.set(node, res); - return res; - }, - - reduceExportLocals(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExportLocals(node, arg); - cache.set(node, res); - return res; - }, - - reduceExpressionStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceExpressionStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceForAwaitStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceForAwaitStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceForInStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceForInStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceForOfStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceForOfStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceForStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceForStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceFormalParameters(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceFormalParameters(node, arg); - cache.set(node, res); - return res; - }, - - reduceFunctionBody(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceFunctionBody(node, arg); - cache.set(node, res); - return res; - }, - - reduceFunctionDeclaration(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceFunctionDeclaration(node, arg); - cache.set(node, res); - return res; - }, - - reduceFunctionExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceFunctionExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceGetter(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceGetter(node, arg); - cache.set(node, res); - return res; - }, - - reduceIdentifierExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceIdentifierExpression(node); - cache.set(node, res); - return res; - }, - - reduceIfStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceIfStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceImport(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceImport(node, arg); - cache.set(node, res); - return res; - }, - - reduceImportNamespace(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceImportNamespace(node, arg); - cache.set(node, res); - return res; - }, - - reduceImportSpecifier(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceImportSpecifier(node, arg); - cache.set(node, res); - return res; - }, - - reduceLabeledStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLabeledStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceLiteralBooleanExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLiteralBooleanExpression(node); - cache.set(node, res); - return res; - }, - - reduceLiteralInfinityExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLiteralInfinityExpression(node); - cache.set(node, res); - return res; - }, - - reduceLiteralNullExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLiteralNullExpression(node); - cache.set(node, res); - return res; - }, - - reduceLiteralNumericExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLiteralNumericExpression(node); - cache.set(node, res); - return res; - }, - - reduceLiteralRegExpExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLiteralRegExpExpression(node); - cache.set(node, res); - return res; - }, - - reduceLiteralStringExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceLiteralStringExpression(node); - cache.set(node, res); - return res; - }, - - reduceMethod(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceMethod(node, arg); - cache.set(node, res); - return res; - }, - - reduceModule(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceModule(node, arg); - cache.set(node, res); - return res; - }, - - reduceNewExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceNewExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceNewTargetExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceNewTargetExpression(node); - cache.set(node, res); - return res; - }, - - reduceObjectAssignmentTarget(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceObjectAssignmentTarget(node, arg); - cache.set(node, res); - return res; - }, - - reduceObjectBinding(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceObjectBinding(node, arg); - cache.set(node, res); - return res; - }, - - reduceObjectExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceObjectExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceReturnStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceReturnStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceScript(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceScript(node, arg); - cache.set(node, res); - return res; - }, - - reduceSetter(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSetter(node, arg); - cache.set(node, res); - return res; - }, - - reduceShorthandProperty(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceShorthandProperty(node, arg); - cache.set(node, res); - return res; - }, - - reduceSpreadElement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSpreadElement(node, arg); - cache.set(node, res); - return res; - }, - - reduceSpreadProperty(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSpreadProperty(node, arg); - cache.set(node, res); - return res; - }, - - reduceStaticMemberAssignmentTarget(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceStaticMemberAssignmentTarget(node, arg); - cache.set(node, res); - return res; - }, - - reduceStaticMemberExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceStaticMemberExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceStaticPropertyName(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceStaticPropertyName(node); - cache.set(node, res); - return res; - }, - - reduceSuper(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSuper(node); - cache.set(node, res); - return res; - }, - - reduceSwitchCase(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSwitchCase(node, arg); - cache.set(node, res); - return res; - }, - - reduceSwitchDefault(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSwitchDefault(node, arg); - cache.set(node, res); - return res; - }, - - reduceSwitchStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSwitchStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceSwitchStatementWithDefault(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceSwitchStatementWithDefault(node, arg); - cache.set(node, res); - return res; - }, - - reduceTemplateElement(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceTemplateElement(node); - cache.set(node, res); - return res; - }, - - reduceTemplateExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceTemplateExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceThisExpression(node) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceThisExpression(node); - cache.set(node, res); - return res; - }, - - reduceThrowStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceThrowStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceTryCatchStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceTryCatchStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceTryFinallyStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceTryFinallyStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceUnaryExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceUnaryExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceUpdateExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceUpdateExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceVariableDeclaration(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceVariableDeclaration(node, arg); - cache.set(node, res); - return res; - }, - - reduceVariableDeclarationStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceVariableDeclarationStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceVariableDeclarator(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceVariableDeclarator(node, arg); - cache.set(node, res); - return res; - }, - - reduceWhileStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceWhileStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceWithStatement(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceWithStatement(node, arg); - cache.set(node, res); - return res; - }, - - reduceYieldExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceYieldExpression(node, arg); - cache.set(node, res); - return res; - }, - - reduceYieldGeneratorExpression(node, arg) { - if (cache.has(node)) { - return cache.get(node); - } - const res = reducer.reduceYieldGeneratorExpression(node, arg); - cache.set(node, res); - return res; - }, - }; -} diff --git a/repl/src/shift-reducer/monoidal-reducer.js b/repl/src/shift-reducer/monoidal-reducer.js deleted file mode 100644 index 29369a80..00000000 --- a/repl/src/shift-reducer/monoidal-reducer.js +++ /dev/null @@ -1,430 +0,0 @@ -// Generated by generate-monoidal-reducer.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import Shift from 'shift-ast'; - -export default class MonoidalReducer { - constructor(monoid) { - let identity = monoid.empty(); - this.identity = identity; - let concat; - if (monoid.prototype && typeof monoid.prototype.concat === 'function') { - concat = Function.prototype.call.bind(monoid.prototype.concat); - } else if (typeof monoid.concat === 'function') { - concat = monoid.concat; - } else { - throw new TypeError('Monoid must provide a `concat` method'); - } - this.append = (...args) => args.reduce(concat, identity); - } - - reduceArrayAssignmentTarget(node, { elements, rest }) { - return this.append(...elements.filter(n => n != null), rest == null ? this.identity : rest); - } - - reduceArrayBinding(node, { elements, rest }) { - return this.append(...elements.filter(n => n != null), rest == null ? this.identity : rest); - } - - reduceArrayExpression(node, { elements }) { - return this.append(...elements.filter(n => n != null)); - } - - reduceArrowExpression(node, { params, body }) { - return this.append(params, body); - } - - reduceAssignmentExpression(node, { binding, expression }) { - return this.append(binding, expression); - } - - reduceAssignmentTargetIdentifier(node) { - return this.identity; - } - - reduceAssignmentTargetPropertyIdentifier(node, { binding, init }) { - return this.append(binding, init == null ? this.identity : init); - } - - reduceAssignmentTargetPropertyProperty(node, { name, binding }) { - return this.append(name, binding); - } - - reduceAssignmentTargetWithDefault(node, { binding, init }) { - return this.append(binding, init); - } - - reduceAwaitExpression(node, { expression }) { - return expression; - } - - reduceBinaryExpression(node, { left, right }) { - return this.append(left, right); - } - - reduceBindingIdentifier(node) { - return this.identity; - } - - reduceBindingPropertyIdentifier(node, { binding, init }) { - return this.append(binding, init == null ? this.identity : init); - } - - reduceBindingPropertyProperty(node, { name, binding }) { - return this.append(name, binding); - } - - reduceBindingWithDefault(node, { binding, init }) { - return this.append(binding, init); - } - - reduceBlock(node, { statements }) { - return this.append(...statements); - } - - reduceBlockStatement(node, { block }) { - return block; - } - - reduceBreakStatement(node) { - return this.identity; - } - - reduceCallExpression(node, { callee, arguments: _arguments }) { - return this.append(callee, ..._arguments); - } - - reduceCatchClause(node, { binding, body }) { - return this.append(binding, body); - } - - reduceClassDeclaration(node, { name, super: _super, elements }) { - return this.append(name, _super == null ? this.identity : _super, ...elements); - } - - reduceClassElement(node, { method }) { - return method; - } - - reduceClassExpression(node, { name, super: _super, elements }) { - return this.append(name == null ? this.identity : name, _super == null ? this.identity : _super, ...elements); - } - - reduceCompoundAssignmentExpression(node, { binding, expression }) { - return this.append(binding, expression); - } - - reduceComputedMemberAssignmentTarget(node, { object, expression }) { - return this.append(object, expression); - } - - reduceComputedMemberExpression(node, { object, expression }) { - return this.append(object, expression); - } - - reduceComputedPropertyName(node, { expression }) { - return expression; - } - - reduceConditionalExpression(node, { test, consequent, alternate }) { - return this.append(test, consequent, alternate); - } - - reduceContinueStatement(node) { - return this.identity; - } - - reduceDataProperty(node, { name, expression }) { - return this.append(name, expression); - } - - reduceDebuggerStatement(node) { - return this.identity; - } - - reduceDirective(node) { - return this.identity; - } - - reduceDoWhileStatement(node, { body, test }) { - return this.append(body, test); - } - - reduceEmptyStatement(node) { - return this.identity; - } - - reduceExport(node, { declaration }) { - return declaration; - } - - reduceExportAllFrom(node) { - return this.identity; - } - - reduceExportDefault(node, { body }) { - return body; - } - - reduceExportFrom(node, { namedExports }) { - return this.append(...namedExports); - } - - reduceExportFromSpecifier(node) { - return this.identity; - } - - reduceExportLocalSpecifier(node, { name }) { - return name; - } - - reduceExportLocals(node, { namedExports }) { - return this.append(...namedExports); - } - - reduceExpressionStatement(node, { expression }) { - return expression; - } - - reduceForAwaitStatement(node, { left, right, body }) { - return this.append(left, right, body); - } - - reduceForInStatement(node, { left, right, body }) { - return this.append(left, right, body); - } - - reduceForOfStatement(node, { left, right, body }) { - return this.append(left, right, body); - } - - reduceForStatement(node, { init, test, update, body }) { - return this.append(init == null ? this.identity : init, test == null ? this.identity : test, update == null ? this.identity : update, body); - } - - reduceFormalParameters(node, { items, rest }) { - return this.append(...items, rest == null ? this.identity : rest); - } - - reduceFunctionBody(node, { directives, statements }) { - return this.append(...directives, ...statements); - } - - reduceFunctionDeclaration(node, { name, params, body }) { - return this.append(name, params, body); - } - - reduceFunctionExpression(node, { name, params, body }) { - return this.append(name == null ? this.identity : name, params, body); - } - - reduceGetter(node, { name, body }) { - return this.append(name, body); - } - - reduceIdentifierExpression(node) { - return this.identity; - } - - reduceIfStatement(node, { test, consequent, alternate }) { - return this.append(test, consequent, alternate == null ? this.identity : alternate); - } - - reduceImport(node, { defaultBinding, namedImports }) { - return this.append(defaultBinding == null ? this.identity : defaultBinding, ...namedImports); - } - - reduceImportNamespace(node, { defaultBinding, namespaceBinding }) { - return this.append(defaultBinding == null ? this.identity : defaultBinding, namespaceBinding); - } - - reduceImportSpecifier(node, { binding }) { - return binding; - } - - reduceLabeledStatement(node, { body }) { - return body; - } - - reduceLiteralBooleanExpression(node) { - return this.identity; - } - - reduceLiteralInfinityExpression(node) { - return this.identity; - } - - reduceLiteralNullExpression(node) { - return this.identity; - } - - reduceLiteralNumericExpression(node) { - return this.identity; - } - - reduceLiteralRegExpExpression(node) { - return this.identity; - } - - reduceLiteralStringExpression(node) { - return this.identity; - } - - reduceMethod(node, { name, params, body }) { - return this.append(name, params, body); - } - - reduceModule(node, { directives, items }) { - return this.append(...directives, ...items); - } - - reduceNewExpression(node, { callee, arguments: _arguments }) { - return this.append(callee, ..._arguments); - } - - reduceNewTargetExpression(node) { - return this.identity; - } - - reduceObjectAssignmentTarget(node, { properties, rest }) { - return this.append(...properties, rest == null ? this.identity : rest); - } - - reduceObjectBinding(node, { properties, rest }) { - return this.append(...properties, rest == null ? this.identity : rest); - } - - reduceObjectExpression(node, { properties }) { - return this.append(...properties); - } - - reduceReturnStatement(node, { expression }) { - return expression == null ? this.identity : expression; - } - - reduceScript(node, { directives, statements }) { - return this.append(...directives, ...statements); - } - - reduceSetter(node, { name, param, body }) { - return this.append(name, param, body); - } - - reduceShorthandProperty(node, { name }) { - return name; - } - - reduceSpreadElement(node, { expression }) { - return expression; - } - - reduceSpreadProperty(node, { expression }) { - return expression; - } - - reduceStaticMemberAssignmentTarget(node, { object }) { - return object; - } - - reduceStaticMemberExpression(node, { object }) { - return object; - } - - reduceStaticPropertyName(node) { - return this.identity; - } - - reduceSuper(node) { - return this.identity; - } - - reduceSwitchCase(node, { test, consequent }) { - return this.append(test, ...consequent); - } - - reduceSwitchDefault(node, { consequent }) { - return this.append(...consequent); - } - - reduceSwitchStatement(node, { discriminant, cases }) { - return this.append(discriminant, ...cases); - } - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - return this.append(discriminant, ...preDefaultCases, defaultCase, ...postDefaultCases); - } - - reduceTemplateElement(node) { - return this.identity; - } - - reduceTemplateExpression(node, { tag, elements }) { - return this.append(tag == null ? this.identity : tag, ...elements); - } - - reduceThisExpression(node) { - return this.identity; - } - - reduceThrowStatement(node, { expression }) { - return expression; - } - - reduceTryCatchStatement(node, { body, catchClause }) { - return this.append(body, catchClause); - } - - reduceTryFinallyStatement(node, { body, catchClause, finalizer }) { - return this.append(body, catchClause == null ? this.identity : catchClause, finalizer); - } - - reduceUnaryExpression(node, { operand }) { - return operand; - } - - reduceUpdateExpression(node, { operand }) { - return operand; - } - - reduceVariableDeclaration(node, { declarators }) { - return this.append(...declarators); - } - - reduceVariableDeclarationStatement(node, { declaration }) { - return declaration; - } - - reduceVariableDeclarator(node, { binding, init }) { - return this.append(binding, init == null ? this.identity : init); - } - - reduceWhileStatement(node, { test, body }) { - return this.append(test, body); - } - - reduceWithStatement(node, { object, body }) { - return this.append(object, body); - } - - reduceYieldExpression(node, { expression }) { - return expression == null ? this.identity : expression; - } - - reduceYieldGeneratorExpression(node, { expression }) { - return expression; - } -} diff --git a/repl/src/shift-reducer/reducers.js b/repl/src/shift-reducer/reducers.js deleted file mode 100644 index ed7a43cb..00000000 --- a/repl/src/shift-reducer/reducers.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -import MonoidalReducer from './monoidal-reducer.js'; -import ThunkedMonoidalReducer from './thunked-monoidal-reducer.js'; - -const PlusMonoid = { - empty: () => 0, - concat: (a, b) => a + b, -}; - -const ConcatMonoid = { - empty: () => [], - concat: (a, b) => a.concat(b), -}; - -const AndMonoid = { - empty: () => true, - concat: (a, b) => a && b, - concatThunk: (a, b) => a && b(), -}; - -const OrMonoid = { - empty: () => false, - concat: (a, b) => a || b, - concatThunk: (a, b) => a || b(), -}; - - -export class PlusReducer extends MonoidalReducer { - constructor() { - super(PlusMonoid); - } -} - -export class ThunkedPlusReducer extends ThunkedMonoidalReducer { - constructor() { - super(PlusMonoid); - } -} - -export class ConcatReducer extends MonoidalReducer { - constructor() { - super(ConcatMonoid); - } -} - -export class ThunkedConcatReducer extends ThunkedMonoidalReducer { - constructor() { - super(ConcatMonoid); - } -} - -export class AndReducer extends MonoidalReducer { - constructor() { - super(AndMonoid); - } -} - -export class ThunkedAndReducer extends ThunkedMonoidalReducer { - constructor() { - super(AndMonoid); - } -} - -export class OrReducer extends MonoidalReducer { - constructor() { - super(OrMonoid); - } -} - -export class ThunkedOrReducer extends ThunkedMonoidalReducer { - constructor() { - super(OrMonoid); - } -} diff --git a/repl/src/shift-reducer/thunked-director.js b/repl/src/shift-reducer/thunked-director.js deleted file mode 100644 index 01fd3d3f..00000000 --- a/repl/src/shift-reducer/thunked-director.js +++ /dev/null @@ -1,418 +0,0 @@ -// Generated by generate-director.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const director = { - ArrayAssignmentTarget(reducer, node) { - return reducer.reduceArrayAssignmentTarget(node, { elements: node.elements.map(v => v && (() => this[v.type](reducer, v))), rest: node.rest && (() => this[node.rest.type](reducer, node.rest)) }); - }, - - ArrayBinding(reducer, node) { - return reducer.reduceArrayBinding(node, { elements: node.elements.map(v => v && (() => this[v.type](reducer, v))), rest: node.rest && (() => this[node.rest.type](reducer, node.rest)) }); - }, - - ArrayExpression(reducer, node) { - return reducer.reduceArrayExpression(node, { elements: node.elements.map(v => v && (() => this[v.type](reducer, v))) }); - }, - - ArrowExpression(reducer, node) { - return reducer.reduceArrowExpression(node, { params: (() => this.FormalParameters(reducer, node.params)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - AssignmentExpression(reducer, node) { - return reducer.reduceAssignmentExpression(node, { binding: (() => this[node.binding.type](reducer, node.binding)), expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - AssignmentTargetIdentifier(reducer, node) { - return reducer.reduceAssignmentTargetIdentifier(node); - }, - - AssignmentTargetPropertyIdentifier(reducer, node) { - return reducer.reduceAssignmentTargetPropertyIdentifier(node, { binding: (() => this.AssignmentTargetIdentifier(reducer, node.binding)), init: node.init && (() => this[node.init.type](reducer, node.init)) }); - }, - - AssignmentTargetPropertyProperty(reducer, node) { - return reducer.reduceAssignmentTargetPropertyProperty(node, { name: (() => this[node.name.type](reducer, node.name)), binding: (() => this[node.binding.type](reducer, node.binding)) }); - }, - - AssignmentTargetWithDefault(reducer, node) { - return reducer.reduceAssignmentTargetWithDefault(node, { binding: (() => this[node.binding.type](reducer, node.binding)), init: (() => this[node.init.type](reducer, node.init)) }); - }, - - AwaitExpression(reducer, node) { - return reducer.reduceAwaitExpression(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - BinaryExpression(reducer, node) { - return reducer.reduceBinaryExpression(node, { left: (() => this[node.left.type](reducer, node.left)), right: (() => this[node.right.type](reducer, node.right)) }); - }, - - BindingIdentifier(reducer, node) { - return reducer.reduceBindingIdentifier(node); - }, - - BindingPropertyIdentifier(reducer, node) { - return reducer.reduceBindingPropertyIdentifier(node, { binding: (() => this.BindingIdentifier(reducer, node.binding)), init: node.init && (() => this[node.init.type](reducer, node.init)) }); - }, - - BindingPropertyProperty(reducer, node) { - return reducer.reduceBindingPropertyProperty(node, { name: (() => this[node.name.type](reducer, node.name)), binding: (() => this[node.binding.type](reducer, node.binding)) }); - }, - - BindingWithDefault(reducer, node) { - return reducer.reduceBindingWithDefault(node, { binding: (() => this[node.binding.type](reducer, node.binding)), init: (() => this[node.init.type](reducer, node.init)) }); - }, - - Block(reducer, node) { - return reducer.reduceBlock(node, { statements: node.statements.map(v => (() => this[v.type](reducer, v))) }); - }, - - BlockStatement(reducer, node) { - return reducer.reduceBlockStatement(node, { block: (() => this.Block(reducer, node.block)) }); - }, - - BreakStatement(reducer, node) { - return reducer.reduceBreakStatement(node); - }, - - CallExpression(reducer, node) { - return reducer.reduceCallExpression(node, { callee: (() => this[node.callee.type](reducer, node.callee)), arguments: node.arguments.map(v => (() => this[v.type](reducer, v))) }); - }, - - CatchClause(reducer, node) { - return reducer.reduceCatchClause(node, { binding: (() => this[node.binding.type](reducer, node.binding)), body: (() => this.Block(reducer, node.body)) }); - }, - - ClassDeclaration(reducer, node) { - return reducer.reduceClassDeclaration(node, { name: (() => this.BindingIdentifier(reducer, node.name)), super: node.super && (() => this[node.super.type](reducer, node.super)), elements: node.elements.map(v => (() => this.ClassElement(reducer, v))) }); - }, - - ClassElement(reducer, node) { - return reducer.reduceClassElement(node, { method: (() => this[node.method.type](reducer, node.method)) }); - }, - - ClassExpression(reducer, node) { - return reducer.reduceClassExpression(node, { name: node.name && (() => this.BindingIdentifier(reducer, node.name)), super: node.super && (() => this[node.super.type](reducer, node.super)), elements: node.elements.map(v => (() => this.ClassElement(reducer, v))) }); - }, - - CompoundAssignmentExpression(reducer, node) { - return reducer.reduceCompoundAssignmentExpression(node, { binding: (() => this[node.binding.type](reducer, node.binding)), expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - ComputedMemberAssignmentTarget(reducer, node) { - return reducer.reduceComputedMemberAssignmentTarget(node, { object: (() => this[node.object.type](reducer, node.object)), expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - ComputedMemberExpression(reducer, node) { - return reducer.reduceComputedMemberExpression(node, { object: (() => this[node.object.type](reducer, node.object)), expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - ComputedPropertyName(reducer, node) { - return reducer.reduceComputedPropertyName(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - ConditionalExpression(reducer, node) { - return reducer.reduceConditionalExpression(node, { test: (() => this[node.test.type](reducer, node.test)), consequent: (() => this[node.consequent.type](reducer, node.consequent)), alternate: (() => this[node.alternate.type](reducer, node.alternate)) }); - }, - - ContinueStatement(reducer, node) { - return reducer.reduceContinueStatement(node); - }, - - DataProperty(reducer, node) { - return reducer.reduceDataProperty(node, { name: (() => this[node.name.type](reducer, node.name)), expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - DebuggerStatement(reducer, node) { - return reducer.reduceDebuggerStatement(node); - }, - - Directive(reducer, node) { - return reducer.reduceDirective(node); - }, - - DoWhileStatement(reducer, node) { - return reducer.reduceDoWhileStatement(node, { body: (() => this[node.body.type](reducer, node.body)), test: (() => this[node.test.type](reducer, node.test)) }); - }, - - EmptyStatement(reducer, node) { - return reducer.reduceEmptyStatement(node); - }, - - Export(reducer, node) { - return reducer.reduceExport(node, { declaration: (() => this[node.declaration.type](reducer, node.declaration)) }); - }, - - ExportAllFrom(reducer, node) { - return reducer.reduceExportAllFrom(node); - }, - - ExportDefault(reducer, node) { - return reducer.reduceExportDefault(node, { body: (() => this[node.body.type](reducer, node.body)) }); - }, - - ExportFrom(reducer, node) { - return reducer.reduceExportFrom(node, { namedExports: node.namedExports.map(v => (() => this.ExportFromSpecifier(reducer, v))) }); - }, - - ExportFromSpecifier(reducer, node) { - return reducer.reduceExportFromSpecifier(node); - }, - - ExportLocalSpecifier(reducer, node) { - return reducer.reduceExportLocalSpecifier(node, { name: (() => this.IdentifierExpression(reducer, node.name)) }); - }, - - ExportLocals(reducer, node) { - return reducer.reduceExportLocals(node, { namedExports: node.namedExports.map(v => (() => this.ExportLocalSpecifier(reducer, v))) }); - }, - - ExpressionStatement(reducer, node) { - return reducer.reduceExpressionStatement(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - ForAwaitStatement(reducer, node) { - return reducer.reduceForAwaitStatement(node, { left: (() => this[node.left.type](reducer, node.left)), right: (() => this[node.right.type](reducer, node.right)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - ForInStatement(reducer, node) { - return reducer.reduceForInStatement(node, { left: (() => this[node.left.type](reducer, node.left)), right: (() => this[node.right.type](reducer, node.right)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - ForOfStatement(reducer, node) { - return reducer.reduceForOfStatement(node, { left: (() => this[node.left.type](reducer, node.left)), right: (() => this[node.right.type](reducer, node.right)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - ForStatement(reducer, node) { - return reducer.reduceForStatement(node, { init: node.init && (() => this[node.init.type](reducer, node.init)), test: node.test && (() => this[node.test.type](reducer, node.test)), update: node.update && (() => this[node.update.type](reducer, node.update)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - FormalParameters(reducer, node) { - return reducer.reduceFormalParameters(node, { items: node.items.map(v => (() => this[v.type](reducer, v))), rest: node.rest && (() => this[node.rest.type](reducer, node.rest)) }); - }, - - FunctionBody(reducer, node) { - return reducer.reduceFunctionBody(node, { directives: node.directives.map(v => (() => this.Directive(reducer, v))), statements: node.statements.map(v => (() => this[v.type](reducer, v))) }); - }, - - FunctionDeclaration(reducer, node) { - return reducer.reduceFunctionDeclaration(node, { name: (() => this.BindingIdentifier(reducer, node.name)), params: (() => this.FormalParameters(reducer, node.params)), body: (() => this.FunctionBody(reducer, node.body)) }); - }, - - FunctionExpression(reducer, node) { - return reducer.reduceFunctionExpression(node, { name: node.name && (() => this.BindingIdentifier(reducer, node.name)), params: (() => this.FormalParameters(reducer, node.params)), body: (() => this.FunctionBody(reducer, node.body)) }); - }, - - Getter(reducer, node) { - return reducer.reduceGetter(node, { name: (() => this[node.name.type](reducer, node.name)), body: (() => this.FunctionBody(reducer, node.body)) }); - }, - - IdentifierExpression(reducer, node) { - return reducer.reduceIdentifierExpression(node); - }, - - IfStatement(reducer, node) { - return reducer.reduceIfStatement(node, { test: (() => this[node.test.type](reducer, node.test)), consequent: (() => this[node.consequent.type](reducer, node.consequent)), alternate: node.alternate && (() => this[node.alternate.type](reducer, node.alternate)) }); - }, - - Import(reducer, node) { - return reducer.reduceImport(node, { defaultBinding: node.defaultBinding && (() => this.BindingIdentifier(reducer, node.defaultBinding)), namedImports: node.namedImports.map(v => (() => this.ImportSpecifier(reducer, v))) }); - }, - - ImportNamespace(reducer, node) { - return reducer.reduceImportNamespace(node, { defaultBinding: node.defaultBinding && (() => this.BindingIdentifier(reducer, node.defaultBinding)), namespaceBinding: (() => this.BindingIdentifier(reducer, node.namespaceBinding)) }); - }, - - ImportSpecifier(reducer, node) { - return reducer.reduceImportSpecifier(node, { binding: (() => this.BindingIdentifier(reducer, node.binding)) }); - }, - - LabeledStatement(reducer, node) { - return reducer.reduceLabeledStatement(node, { body: (() => this[node.body.type](reducer, node.body)) }); - }, - - LiteralBooleanExpression(reducer, node) { - return reducer.reduceLiteralBooleanExpression(node); - }, - - LiteralInfinityExpression(reducer, node) { - return reducer.reduceLiteralInfinityExpression(node); - }, - - LiteralNullExpression(reducer, node) { - return reducer.reduceLiteralNullExpression(node); - }, - - LiteralNumericExpression(reducer, node) { - return reducer.reduceLiteralNumericExpression(node); - }, - - LiteralRegExpExpression(reducer, node) { - return reducer.reduceLiteralRegExpExpression(node); - }, - - LiteralStringExpression(reducer, node) { - return reducer.reduceLiteralStringExpression(node); - }, - - Method(reducer, node) { - return reducer.reduceMethod(node, { name: (() => this[node.name.type](reducer, node.name)), params: (() => this.FormalParameters(reducer, node.params)), body: (() => this.FunctionBody(reducer, node.body)) }); - }, - - Module(reducer, node) { - return reducer.reduceModule(node, { directives: node.directives.map(v => (() => this.Directive(reducer, v))), items: node.items.map(v => (() => this[v.type](reducer, v))) }); - }, - - NewExpression(reducer, node) { - return reducer.reduceNewExpression(node, { callee: (() => this[node.callee.type](reducer, node.callee)), arguments: node.arguments.map(v => (() => this[v.type](reducer, v))) }); - }, - - NewTargetExpression(reducer, node) { - return reducer.reduceNewTargetExpression(node); - }, - - ObjectAssignmentTarget(reducer, node) { - return reducer.reduceObjectAssignmentTarget(node, { properties: node.properties.map(v => (() => this[v.type](reducer, v))), rest: node.rest && (() => this[node.rest.type](reducer, node.rest)) }); - }, - - ObjectBinding(reducer, node) { - return reducer.reduceObjectBinding(node, { properties: node.properties.map(v => (() => this[v.type](reducer, v))), rest: node.rest && (() => this[node.rest.type](reducer, node.rest)) }); - }, - - ObjectExpression(reducer, node) { - return reducer.reduceObjectExpression(node, { properties: node.properties.map(v => (() => this[v.type](reducer, v))) }); - }, - - ReturnStatement(reducer, node) { - return reducer.reduceReturnStatement(node, { expression: node.expression && (() => this[node.expression.type](reducer, node.expression)) }); - }, - - Script(reducer, node) { - return reducer.reduceScript(node, { directives: node.directives.map(v => (() => this.Directive(reducer, v))), statements: node.statements.map(v => (() => this[v.type](reducer, v))) }); - }, - - Setter(reducer, node) { - return reducer.reduceSetter(node, { name: (() => this[node.name.type](reducer, node.name)), param: (() => this[node.param.type](reducer, node.param)), body: (() => this.FunctionBody(reducer, node.body)) }); - }, - - ShorthandProperty(reducer, node) { - return reducer.reduceShorthandProperty(node, { name: (() => this.IdentifierExpression(reducer, node.name)) }); - }, - - SpreadElement(reducer, node) { - return reducer.reduceSpreadElement(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - SpreadProperty(reducer, node) { - return reducer.reduceSpreadProperty(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - StaticMemberAssignmentTarget(reducer, node) { - return reducer.reduceStaticMemberAssignmentTarget(node, { object: (() => this[node.object.type](reducer, node.object)) }); - }, - - StaticMemberExpression(reducer, node) { - return reducer.reduceStaticMemberExpression(node, { object: (() => this[node.object.type](reducer, node.object)) }); - }, - - StaticPropertyName(reducer, node) { - return reducer.reduceStaticPropertyName(node); - }, - - Super(reducer, node) { - return reducer.reduceSuper(node); - }, - - SwitchCase(reducer, node) { - return reducer.reduceSwitchCase(node, { test: (() => this[node.test.type](reducer, node.test)), consequent: node.consequent.map(v => (() => this[v.type](reducer, v))) }); - }, - - SwitchDefault(reducer, node) { - return reducer.reduceSwitchDefault(node, { consequent: node.consequent.map(v => (() => this[v.type](reducer, v))) }); - }, - - SwitchStatement(reducer, node) { - return reducer.reduceSwitchStatement(node, { discriminant: (() => this[node.discriminant.type](reducer, node.discriminant)), cases: node.cases.map(v => (() => this.SwitchCase(reducer, v))) }); - }, - - SwitchStatementWithDefault(reducer, node) { - return reducer.reduceSwitchStatementWithDefault(node, { discriminant: (() => this[node.discriminant.type](reducer, node.discriminant)), preDefaultCases: node.preDefaultCases.map(v => (() => this.SwitchCase(reducer, v))), defaultCase: (() => this.SwitchDefault(reducer, node.defaultCase)), postDefaultCases: node.postDefaultCases.map(v => (() => this.SwitchCase(reducer, v))) }); - }, - - TemplateElement(reducer, node) { - return reducer.reduceTemplateElement(node); - }, - - TemplateExpression(reducer, node) { - return reducer.reduceTemplateExpression(node, { tag: node.tag && (() => this[node.tag.type](reducer, node.tag)), elements: node.elements.map(v => (() => this[v.type](reducer, v))) }); - }, - - ThisExpression(reducer, node) { - return reducer.reduceThisExpression(node); - }, - - ThrowStatement(reducer, node) { - return reducer.reduceThrowStatement(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, - - TryCatchStatement(reducer, node) { - return reducer.reduceTryCatchStatement(node, { body: (() => this.Block(reducer, node.body)), catchClause: (() => this.CatchClause(reducer, node.catchClause)) }); - }, - - TryFinallyStatement(reducer, node) { - return reducer.reduceTryFinallyStatement(node, { body: (() => this.Block(reducer, node.body)), catchClause: node.catchClause && (() => this.CatchClause(reducer, node.catchClause)), finalizer: (() => this.Block(reducer, node.finalizer)) }); - }, - - UnaryExpression(reducer, node) { - return reducer.reduceUnaryExpression(node, { operand: (() => this[node.operand.type](reducer, node.operand)) }); - }, - - UpdateExpression(reducer, node) { - return reducer.reduceUpdateExpression(node, { operand: (() => this[node.operand.type](reducer, node.operand)) }); - }, - - VariableDeclaration(reducer, node) { - return reducer.reduceVariableDeclaration(node, { declarators: node.declarators.map(v => (() => this.VariableDeclarator(reducer, v))) }); - }, - - VariableDeclarationStatement(reducer, node) { - return reducer.reduceVariableDeclarationStatement(node, { declaration: (() => this.VariableDeclaration(reducer, node.declaration)) }); - }, - - VariableDeclarator(reducer, node) { - return reducer.reduceVariableDeclarator(node, { binding: (() => this[node.binding.type](reducer, node.binding)), init: node.init && (() => this[node.init.type](reducer, node.init)) }); - }, - - WhileStatement(reducer, node) { - return reducer.reduceWhileStatement(node, { test: (() => this[node.test.type](reducer, node.test)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - WithStatement(reducer, node) { - return reducer.reduceWithStatement(node, { object: (() => this[node.object.type](reducer, node.object)), body: (() => this[node.body.type](reducer, node.body)) }); - }, - - YieldExpression(reducer, node) { - return reducer.reduceYieldExpression(node, { expression: node.expression && (() => this[node.expression.type](reducer, node.expression)) }); - }, - - YieldGeneratorExpression(reducer, node) { - return reducer.reduceYieldGeneratorExpression(node, { expression: (() => this[node.expression.type](reducer, node.expression)) }); - }, -}; - -export function thunkedReduce(reducer, node) { - return director[node.type](reducer, node); -} diff --git a/repl/src/shift-reducer/thunked-monoidal-reducer.js b/repl/src/shift-reducer/thunked-monoidal-reducer.js deleted file mode 100644 index c1ba6dea..00000000 --- a/repl/src/shift-reducer/thunked-monoidal-reducer.js +++ /dev/null @@ -1,444 +0,0 @@ -// Generated by generate-monoidal-reducer.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import Shift from 'shift-ast'; - -export default class MonoidalReducer { - constructor(monoid) { - let identity = monoid.empty(); - this.identity = identity; - - let concatThunk; - if (monoid.prototype && typeof monoid.prototype.concatThunk === 'function') { - concatThunk = Function.prototype.call.bind(monoid.prototype.concatThunk); - } else if (typeof monoid.concatThunk === 'function') { - concatThunk = monoid.concatThunk; - } else { - let concat; - if (monoid.prototype && typeof monoid.prototype.concat === 'function') { - concat = Function.prototype.call.bind(monoid.prototype.concat); - } else if (typeof monoid.concat === 'function') { - concat = monoid.concat; - } else { - throw new TypeError('Monoid must provide a `concatThunk` or `concat` method'); - } - if (typeof monoid.isAbsorbing === 'function') { - let isAbsorbing = monoid.isAbsorbing; - concatThunk = (a, b) => isAbsorbing(a) ? a : concat(a, b()); - } else { - concatThunk = (a, b) => concat(a, b()); - } - } - this.append = (...args) => args.reduce(concatThunk, identity); - } - - reduceArrayAssignmentTarget(node, { elements, rest }) { - return this.append(...elements.filter(n => n != null), rest == null ? () => this.identity : rest); - } - - reduceArrayBinding(node, { elements, rest }) { - return this.append(...elements.filter(n => n != null), rest == null ? () => this.identity : rest); - } - - reduceArrayExpression(node, { elements }) { - return this.append(...elements.filter(n => n != null)); - } - - reduceArrowExpression(node, { params, body }) { - return this.append(params, body); - } - - reduceAssignmentExpression(node, { binding, expression }) { - return this.append(binding, expression); - } - - reduceAssignmentTargetIdentifier(node) { - return this.identity; - } - - reduceAssignmentTargetPropertyIdentifier(node, { binding, init }) { - return this.append(binding, init == null ? () => this.identity : init); - } - - reduceAssignmentTargetPropertyProperty(node, { name, binding }) { - return this.append(name, binding); - } - - reduceAssignmentTargetWithDefault(node, { binding, init }) { - return this.append(binding, init); - } - - reduceAwaitExpression(node, { expression }) { - return expression(); - } - - reduceBinaryExpression(node, { left, right }) { - return this.append(left, right); - } - - reduceBindingIdentifier(node) { - return this.identity; - } - - reduceBindingPropertyIdentifier(node, { binding, init }) { - return this.append(binding, init == null ? () => this.identity : init); - } - - reduceBindingPropertyProperty(node, { name, binding }) { - return this.append(name, binding); - } - - reduceBindingWithDefault(node, { binding, init }) { - return this.append(binding, init); - } - - reduceBlock(node, { statements }) { - return this.append(...statements); - } - - reduceBlockStatement(node, { block }) { - return block(); - } - - reduceBreakStatement(node) { - return this.identity; - } - - reduceCallExpression(node, { callee, arguments: _arguments }) { - return this.append(callee, ..._arguments); - } - - reduceCatchClause(node, { binding, body }) { - return this.append(binding, body); - } - - reduceClassDeclaration(node, { name, super: _super, elements }) { - return this.append(name, _super == null ? () => this.identity : _super, ...elements); - } - - reduceClassElement(node, { method }) { - return method(); - } - - reduceClassExpression(node, { name, super: _super, elements }) { - return this.append(name == null ? () => this.identity : name, _super == null ? () => this.identity : _super, ...elements); - } - - reduceCompoundAssignmentExpression(node, { binding, expression }) { - return this.append(binding, expression); - } - - reduceComputedMemberAssignmentTarget(node, { object, expression }) { - return this.append(object, expression); - } - - reduceComputedMemberExpression(node, { object, expression }) { - return this.append(object, expression); - } - - reduceComputedPropertyName(node, { expression }) { - return expression(); - } - - reduceConditionalExpression(node, { test, consequent, alternate }) { - return this.append(test, consequent, alternate); - } - - reduceContinueStatement(node) { - return this.identity; - } - - reduceDataProperty(node, { name, expression }) { - return this.append(name, expression); - } - - reduceDebuggerStatement(node) { - return this.identity; - } - - reduceDirective(node) { - return this.identity; - } - - reduceDoWhileStatement(node, { body, test }) { - return this.append(body, test); - } - - reduceEmptyStatement(node) { - return this.identity; - } - - reduceExport(node, { declaration }) { - return declaration(); - } - - reduceExportAllFrom(node) { - return this.identity; - } - - reduceExportDefault(node, { body }) { - return body(); - } - - reduceExportFrom(node, { namedExports }) { - return this.append(...namedExports); - } - - reduceExportFromSpecifier(node) { - return this.identity; - } - - reduceExportLocalSpecifier(node, { name }) { - return name(); - } - - reduceExportLocals(node, { namedExports }) { - return this.append(...namedExports); - } - - reduceExpressionStatement(node, { expression }) { - return expression(); - } - - reduceForAwaitStatement(node, { left, right, body }) { - return this.append(left, right, body); - } - - reduceForInStatement(node, { left, right, body }) { - return this.append(left, right, body); - } - - reduceForOfStatement(node, { left, right, body }) { - return this.append(left, right, body); - } - - reduceForStatement(node, { init, test, update, body }) { - return this.append(init == null ? () => this.identity : init, test == null ? () => this.identity : test, update == null ? () => this.identity : update, body); - } - - reduceFormalParameters(node, { items, rest }) { - return this.append(...items, rest == null ? () => this.identity : rest); - } - - reduceFunctionBody(node, { directives, statements }) { - return this.append(...directives, ...statements); - } - - reduceFunctionDeclaration(node, { name, params, body }) { - return this.append(name, params, body); - } - - reduceFunctionExpression(node, { name, params, body }) { - return this.append(name == null ? () => this.identity : name, params, body); - } - - reduceGetter(node, { name, body }) { - return this.append(name, body); - } - - reduceIdentifierExpression(node) { - return this.identity; - } - - reduceIfStatement(node, { test, consequent, alternate }) { - return this.append(test, consequent, alternate == null ? () => this.identity : alternate); - } - - reduceImport(node, { defaultBinding, namedImports }) { - return this.append(defaultBinding == null ? () => this.identity : defaultBinding, ...namedImports); - } - - reduceImportNamespace(node, { defaultBinding, namespaceBinding }) { - return this.append(defaultBinding == null ? () => this.identity : defaultBinding, namespaceBinding); - } - - reduceImportSpecifier(node, { binding }) { - return binding(); - } - - reduceLabeledStatement(node, { body }) { - return body(); - } - - reduceLiteralBooleanExpression(node) { - return this.identity; - } - - reduceLiteralInfinityExpression(node) { - return this.identity; - } - - reduceLiteralNullExpression(node) { - return this.identity; - } - - reduceLiteralNumericExpression(node) { - return this.identity; - } - - reduceLiteralRegExpExpression(node) { - return this.identity; - } - - reduceLiteralStringExpression(node) { - return this.identity; - } - - reduceMethod(node, { name, params, body }) { - return this.append(name, params, body); - } - - reduceModule(node, { directives, items }) { - return this.append(...directives, ...items); - } - - reduceNewExpression(node, { callee, arguments: _arguments }) { - return this.append(callee, ..._arguments); - } - - reduceNewTargetExpression(node) { - return this.identity; - } - - reduceObjectAssignmentTarget(node, { properties, rest }) { - return this.append(...properties, rest == null ? () => this.identity : rest); - } - - reduceObjectBinding(node, { properties, rest }) { - return this.append(...properties, rest == null ? () => this.identity : rest); - } - - reduceObjectExpression(node, { properties }) { - return this.append(...properties); - } - - reduceReturnStatement(node, { expression }) { - return expression == null ? this.identity : expression(); - } - - reduceScript(node, { directives, statements }) { - return this.append(...directives, ...statements); - } - - reduceSetter(node, { name, param, body }) { - return this.append(name, param, body); - } - - reduceShorthandProperty(node, { name }) { - return name(); - } - - reduceSpreadElement(node, { expression }) { - return expression(); - } - - reduceSpreadProperty(node, { expression }) { - return expression(); - } - - reduceStaticMemberAssignmentTarget(node, { object }) { - return object(); - } - - reduceStaticMemberExpression(node, { object }) { - return object(); - } - - reduceStaticPropertyName(node) { - return this.identity; - } - - reduceSuper(node) { - return this.identity; - } - - reduceSwitchCase(node, { test, consequent }) { - return this.append(test, ...consequent); - } - - reduceSwitchDefault(node, { consequent }) { - return this.append(...consequent); - } - - reduceSwitchStatement(node, { discriminant, cases }) { - return this.append(discriminant, ...cases); - } - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - return this.append(discriminant, ...preDefaultCases, defaultCase, ...postDefaultCases); - } - - reduceTemplateElement(node) { - return this.identity; - } - - reduceTemplateExpression(node, { tag, elements }) { - return this.append(tag == null ? () => this.identity : tag, ...elements); - } - - reduceThisExpression(node) { - return this.identity; - } - - reduceThrowStatement(node, { expression }) { - return expression(); - } - - reduceTryCatchStatement(node, { body, catchClause }) { - return this.append(body, catchClause); - } - - reduceTryFinallyStatement(node, { body, catchClause, finalizer }) { - return this.append(body, catchClause == null ? () => this.identity : catchClause, finalizer); - } - - reduceUnaryExpression(node, { operand }) { - return operand(); - } - - reduceUpdateExpression(node, { operand }) { - return operand(); - } - - reduceVariableDeclaration(node, { declarators }) { - return this.append(...declarators); - } - - reduceVariableDeclarationStatement(node, { declaration }) { - return declaration(); - } - - reduceVariableDeclarator(node, { binding, init }) { - return this.append(binding, init == null ? () => this.identity : init); - } - - reduceWhileStatement(node, { test, body }) { - return this.append(test, body); - } - - reduceWithStatement(node, { object, body }) { - return this.append(object, body); - } - - reduceYieldExpression(node, { expression }) { - return expression == null ? this.identity : expression(); - } - - reduceYieldGeneratorExpression(node, { expression }) { - return expression(); - } -} diff --git a/repl/src/shift-reducer/thunkify-class.js b/repl/src/shift-reducer/thunkify-class.js deleted file mode 100644 index 4d091f21..00000000 --- a/repl/src/shift-reducer/thunkify-class.js +++ /dev/null @@ -1,416 +0,0 @@ -// Generated by generate-thunkify.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export default function thunkifyClass(reducerClass) { - return class extends reducerClass { - reduceArrayAssignmentTarget(node, { elements, rest }) { - return super.reduceArrayAssignmentTarget(node, { elements: elements.map(n => n == null ? null : n()), rest: rest == null ? null : rest() }); - } - - reduceArrayBinding(node, { elements, rest }) { - return super.reduceArrayBinding(node, { elements: elements.map(n => n == null ? null : n()), rest: rest == null ? null : rest() }); - } - - reduceArrayExpression(node, { elements }) { - return super.reduceArrayExpression(node, { elements: elements.map(n => n == null ? null : n()) }); - } - - reduceArrowExpression(node, { params, body }) { - return super.reduceArrowExpression(node, { params: params(), body: body() }); - } - - reduceAssignmentExpression(node, { binding, expression }) { - return super.reduceAssignmentExpression(node, { binding: binding(), expression: expression() }); - } - - reduceAssignmentTargetIdentifier(node) { - return super.reduceAssignmentTargetIdentifier(node); - } - - reduceAssignmentTargetPropertyIdentifier(node, { binding, init }) { - return super.reduceAssignmentTargetPropertyIdentifier(node, { binding: binding(), init: init == null ? null : init() }); - } - - reduceAssignmentTargetPropertyProperty(node, { name, binding }) { - return super.reduceAssignmentTargetPropertyProperty(node, { name: name(), binding: binding() }); - } - - reduceAssignmentTargetWithDefault(node, { binding, init }) { - return super.reduceAssignmentTargetWithDefault(node, { binding: binding(), init: init() }); - } - - reduceAwaitExpression(node, { expression }) { - return super.reduceAwaitExpression(node, { expression: expression() }); - } - - reduceBinaryExpression(node, { left, right }) { - return super.reduceBinaryExpression(node, { left: left(), right: right() }); - } - - reduceBindingIdentifier(node) { - return super.reduceBindingIdentifier(node); - } - - reduceBindingPropertyIdentifier(node, { binding, init }) { - return super.reduceBindingPropertyIdentifier(node, { binding: binding(), init: init == null ? null : init() }); - } - - reduceBindingPropertyProperty(node, { name, binding }) { - return super.reduceBindingPropertyProperty(node, { name: name(), binding: binding() }); - } - - reduceBindingWithDefault(node, { binding, init }) { - return super.reduceBindingWithDefault(node, { binding: binding(), init: init() }); - } - - reduceBlock(node, { statements }) { - return super.reduceBlock(node, { statements: statements.map(n => n()) }); - } - - reduceBlockStatement(node, { block }) { - return super.reduceBlockStatement(node, { block: block() }); - } - - reduceBreakStatement(node) { - return super.reduceBreakStatement(node); - } - - reduceCallExpression(node, { callee, arguments: _arguments }) { - return super.reduceCallExpression(node, { callee: callee(), arguments: _arguments.map(n => n()) }); - } - - reduceCatchClause(node, { binding, body }) { - return super.reduceCatchClause(node, { binding: binding(), body: body() }); - } - - reduceClassDeclaration(node, { name, super: _super, elements }) { - return super.reduceClassDeclaration(node, { name: name(), super: _super == null ? null : _super(), elements: elements.map(n => n()) }); - } - - reduceClassElement(node, { method }) { - return super.reduceClassElement(node, { method: method() }); - } - - reduceClassExpression(node, { name, super: _super, elements }) { - return super.reduceClassExpression(node, { name: name == null ? null : name(), super: _super == null ? null : _super(), elements: elements.map(n => n()) }); - } - - reduceCompoundAssignmentExpression(node, { binding, expression }) { - return super.reduceCompoundAssignmentExpression(node, { binding: binding(), expression: expression() }); - } - - reduceComputedMemberAssignmentTarget(node, { object, expression }) { - return super.reduceComputedMemberAssignmentTarget(node, { object: object(), expression: expression() }); - } - - reduceComputedMemberExpression(node, { object, expression }) { - return super.reduceComputedMemberExpression(node, { object: object(), expression: expression() }); - } - - reduceComputedPropertyName(node, { expression }) { - return super.reduceComputedPropertyName(node, { expression: expression() }); - } - - reduceConditionalExpression(node, { test, consequent, alternate }) { - return super.reduceConditionalExpression(node, { test: test(), consequent: consequent(), alternate: alternate() }); - } - - reduceContinueStatement(node) { - return super.reduceContinueStatement(node); - } - - reduceDataProperty(node, { name, expression }) { - return super.reduceDataProperty(node, { name: name(), expression: expression() }); - } - - reduceDebuggerStatement(node) { - return super.reduceDebuggerStatement(node); - } - - reduceDirective(node) { - return super.reduceDirective(node); - } - - reduceDoWhileStatement(node, { body, test }) { - return super.reduceDoWhileStatement(node, { body: body(), test: test() }); - } - - reduceEmptyStatement(node) { - return super.reduceEmptyStatement(node); - } - - reduceExport(node, { declaration }) { - return super.reduceExport(node, { declaration: declaration() }); - } - - reduceExportAllFrom(node) { - return super.reduceExportAllFrom(node); - } - - reduceExportDefault(node, { body }) { - return super.reduceExportDefault(node, { body: body() }); - } - - reduceExportFrom(node, { namedExports }) { - return super.reduceExportFrom(node, { namedExports: namedExports.map(n => n()) }); - } - - reduceExportFromSpecifier(node) { - return super.reduceExportFromSpecifier(node); - } - - reduceExportLocalSpecifier(node, { name }) { - return super.reduceExportLocalSpecifier(node, { name: name() }); - } - - reduceExportLocals(node, { namedExports }) { - return super.reduceExportLocals(node, { namedExports: namedExports.map(n => n()) }); - } - - reduceExpressionStatement(node, { expression }) { - return super.reduceExpressionStatement(node, { expression: expression() }); - } - - reduceForAwaitStatement(node, { left, right, body }) { - return super.reduceForAwaitStatement(node, { left: left(), right: right(), body: body() }); - } - - reduceForInStatement(node, { left, right, body }) { - return super.reduceForInStatement(node, { left: left(), right: right(), body: body() }); - } - - reduceForOfStatement(node, { left, right, body }) { - return super.reduceForOfStatement(node, { left: left(), right: right(), body: body() }); - } - - reduceForStatement(node, { init, test, update, body }) { - return super.reduceForStatement(node, { init: init == null ? null : init(), test: test == null ? null : test(), update: update == null ? null : update(), body: body() }); - } - - reduceFormalParameters(node, { items, rest }) { - return super.reduceFormalParameters(node, { items: items.map(n => n()), rest: rest == null ? null : rest() }); - } - - reduceFunctionBody(node, { directives, statements }) { - return super.reduceFunctionBody(node, { directives: directives.map(n => n()), statements: statements.map(n => n()) }); - } - - reduceFunctionDeclaration(node, { name, params, body }) { - return super.reduceFunctionDeclaration(node, { name: name(), params: params(), body: body() }); - } - - reduceFunctionExpression(node, { name, params, body }) { - return super.reduceFunctionExpression(node, { name: name == null ? null : name(), params: params(), body: body() }); - } - - reduceGetter(node, { name, body }) { - return super.reduceGetter(node, { name: name(), body: body() }); - } - - reduceIdentifierExpression(node) { - return super.reduceIdentifierExpression(node); - } - - reduceIfStatement(node, { test, consequent, alternate }) { - return super.reduceIfStatement(node, { test: test(), consequent: consequent(), alternate: alternate == null ? null : alternate() }); - } - - reduceImport(node, { defaultBinding, namedImports }) { - return super.reduceImport(node, { defaultBinding: defaultBinding == null ? null : defaultBinding(), namedImports: namedImports.map(n => n()) }); - } - - reduceImportNamespace(node, { defaultBinding, namespaceBinding }) { - return super.reduceImportNamespace(node, { defaultBinding: defaultBinding == null ? null : defaultBinding(), namespaceBinding: namespaceBinding() }); - } - - reduceImportSpecifier(node, { binding }) { - return super.reduceImportSpecifier(node, { binding: binding() }); - } - - reduceLabeledStatement(node, { body }) { - return super.reduceLabeledStatement(node, { body: body() }); - } - - reduceLiteralBooleanExpression(node) { - return super.reduceLiteralBooleanExpression(node); - } - - reduceLiteralInfinityExpression(node) { - return super.reduceLiteralInfinityExpression(node); - } - - reduceLiteralNullExpression(node) { - return super.reduceLiteralNullExpression(node); - } - - reduceLiteralNumericExpression(node) { - return super.reduceLiteralNumericExpression(node); - } - - reduceLiteralRegExpExpression(node) { - return super.reduceLiteralRegExpExpression(node); - } - - reduceLiteralStringExpression(node) { - return super.reduceLiteralStringExpression(node); - } - - reduceMethod(node, { name, params, body }) { - return super.reduceMethod(node, { name: name(), params: params(), body: body() }); - } - - reduceModule(node, { directives, items }) { - return super.reduceModule(node, { directives: directives.map(n => n()), items: items.map(n => n()) }); - } - - reduceNewExpression(node, { callee, arguments: _arguments }) { - return super.reduceNewExpression(node, { callee: callee(), arguments: _arguments.map(n => n()) }); - } - - reduceNewTargetExpression(node) { - return super.reduceNewTargetExpression(node); - } - - reduceObjectAssignmentTarget(node, { properties, rest }) { - return super.reduceObjectAssignmentTarget(node, { properties: properties.map(n => n()), rest: rest == null ? null : rest() }); - } - - reduceObjectBinding(node, { properties, rest }) { - return super.reduceObjectBinding(node, { properties: properties.map(n => n()), rest: rest == null ? null : rest() }); - } - - reduceObjectExpression(node, { properties }) { - return super.reduceObjectExpression(node, { properties: properties.map(n => n()) }); - } - - reduceReturnStatement(node, { expression }) { - return super.reduceReturnStatement(node, { expression: expression == null ? null : expression() }); - } - - reduceScript(node, { directives, statements }) { - return super.reduceScript(node, { directives: directives.map(n => n()), statements: statements.map(n => n()) }); - } - - reduceSetter(node, { name, param, body }) { - return super.reduceSetter(node, { name: name(), param: param(), body: body() }); - } - - reduceShorthandProperty(node, { name }) { - return super.reduceShorthandProperty(node, { name: name() }); - } - - reduceSpreadElement(node, { expression }) { - return super.reduceSpreadElement(node, { expression: expression() }); - } - - reduceSpreadProperty(node, { expression }) { - return super.reduceSpreadProperty(node, { expression: expression() }); - } - - reduceStaticMemberAssignmentTarget(node, { object }) { - return super.reduceStaticMemberAssignmentTarget(node, { object: object() }); - } - - reduceStaticMemberExpression(node, { object }) { - return super.reduceStaticMemberExpression(node, { object: object() }); - } - - reduceStaticPropertyName(node) { - return super.reduceStaticPropertyName(node); - } - - reduceSuper(node) { - return super.reduceSuper(node); - } - - reduceSwitchCase(node, { test, consequent }) { - return super.reduceSwitchCase(node, { test: test(), consequent: consequent.map(n => n()) }); - } - - reduceSwitchDefault(node, { consequent }) { - return super.reduceSwitchDefault(node, { consequent: consequent.map(n => n()) }); - } - - reduceSwitchStatement(node, { discriminant, cases }) { - return super.reduceSwitchStatement(node, { discriminant: discriminant(), cases: cases.map(n => n()) }); - } - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - return super.reduceSwitchStatementWithDefault(node, { discriminant: discriminant(), preDefaultCases: preDefaultCases.map(n => n()), defaultCase: defaultCase(), postDefaultCases: postDefaultCases.map(n => n()) }); - } - - reduceTemplateElement(node) { - return super.reduceTemplateElement(node); - } - - reduceTemplateExpression(node, { tag, elements }) { - return super.reduceTemplateExpression(node, { tag: tag == null ? null : tag(), elements: elements.map(n => n()) }); - } - - reduceThisExpression(node) { - return super.reduceThisExpression(node); - } - - reduceThrowStatement(node, { expression }) { - return super.reduceThrowStatement(node, { expression: expression() }); - } - - reduceTryCatchStatement(node, { body, catchClause }) { - return super.reduceTryCatchStatement(node, { body: body(), catchClause: catchClause() }); - } - - reduceTryFinallyStatement(node, { body, catchClause, finalizer }) { - return super.reduceTryFinallyStatement(node, { body: body(), catchClause: catchClause == null ? null : catchClause(), finalizer: finalizer() }); - } - - reduceUnaryExpression(node, { operand }) { - return super.reduceUnaryExpression(node, { operand: operand() }); - } - - reduceUpdateExpression(node, { operand }) { - return super.reduceUpdateExpression(node, { operand: operand() }); - } - - reduceVariableDeclaration(node, { declarators }) { - return super.reduceVariableDeclaration(node, { declarators: declarators.map(n => n()) }); - } - - reduceVariableDeclarationStatement(node, { declaration }) { - return super.reduceVariableDeclarationStatement(node, { declaration: declaration() }); - } - - reduceVariableDeclarator(node, { binding, init }) { - return super.reduceVariableDeclarator(node, { binding: binding(), init: init == null ? null : init() }); - } - - reduceWhileStatement(node, { test, body }) { - return super.reduceWhileStatement(node, { test: test(), body: body() }); - } - - reduceWithStatement(node, { object, body }) { - return super.reduceWithStatement(node, { object: object(), body: body() }); - } - - reduceYieldExpression(node, { expression }) { - return super.reduceYieldExpression(node, { expression: expression == null ? null : expression() }); - } - - reduceYieldGeneratorExpression(node, { expression }) { - return super.reduceYieldGeneratorExpression(node, { expression: expression() }); - } - }; -} diff --git a/repl/src/shift-reducer/thunkify.js b/repl/src/shift-reducer/thunkify.js deleted file mode 100644 index 80620d64..00000000 --- a/repl/src/shift-reducer/thunkify.js +++ /dev/null @@ -1,416 +0,0 @@ -// Generated by generate-thunkify.js -/** - * Copyright 2018 Shape Security, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export default function thunkify(reducer) { - return { - reduceArrayAssignmentTarget(node, { elements, rest }) { - return reducer.reduceArrayAssignmentTarget(node, { elements: elements.map(n => n == null ? null : n()), rest: rest == null ? null : rest() }); - }, - - reduceArrayBinding(node, { elements, rest }) { - return reducer.reduceArrayBinding(node, { elements: elements.map(n => n == null ? null : n()), rest: rest == null ? null : rest() }); - }, - - reduceArrayExpression(node, { elements }) { - return reducer.reduceArrayExpression(node, { elements: elements.map(n => n == null ? null : n()) }); - }, - - reduceArrowExpression(node, { params, body }) { - return reducer.reduceArrowExpression(node, { params: params(), body: body() }); - }, - - reduceAssignmentExpression(node, { binding, expression }) { - return reducer.reduceAssignmentExpression(node, { binding: binding(), expression: expression() }); - }, - - reduceAssignmentTargetIdentifier(node) { - return reducer.reduceAssignmentTargetIdentifier(node); - }, - - reduceAssignmentTargetPropertyIdentifier(node, { binding, init }) { - return reducer.reduceAssignmentTargetPropertyIdentifier(node, { binding: binding(), init: init == null ? null : init() }); - }, - - reduceAssignmentTargetPropertyProperty(node, { name, binding }) { - return reducer.reduceAssignmentTargetPropertyProperty(node, { name: name(), binding: binding() }); - }, - - reduceAssignmentTargetWithDefault(node, { binding, init }) { - return reducer.reduceAssignmentTargetWithDefault(node, { binding: binding(), init: init() }); - }, - - reduceAwaitExpression(node, { expression }) { - return reducer.reduceAwaitExpression(node, { expression: expression() }); - }, - - reduceBinaryExpression(node, { left, right }) { - return reducer.reduceBinaryExpression(node, { left: left(), right: right() }); - }, - - reduceBindingIdentifier(node) { - return reducer.reduceBindingIdentifier(node); - }, - - reduceBindingPropertyIdentifier(node, { binding, init }) { - return reducer.reduceBindingPropertyIdentifier(node, { binding: binding(), init: init == null ? null : init() }); - }, - - reduceBindingPropertyProperty(node, { name, binding }) { - return reducer.reduceBindingPropertyProperty(node, { name: name(), binding: binding() }); - }, - - reduceBindingWithDefault(node, { binding, init }) { - return reducer.reduceBindingWithDefault(node, { binding: binding(), init: init() }); - }, - - reduceBlock(node, { statements }) { - return reducer.reduceBlock(node, { statements: statements.map(n => n()) }); - }, - - reduceBlockStatement(node, { block }) { - return reducer.reduceBlockStatement(node, { block: block() }); - }, - - reduceBreakStatement(node) { - return reducer.reduceBreakStatement(node); - }, - - reduceCallExpression(node, { callee, arguments: _arguments }) { - return reducer.reduceCallExpression(node, { callee: callee(), arguments: _arguments.map(n => n()) }); - }, - - reduceCatchClause(node, { binding, body }) { - return reducer.reduceCatchClause(node, { binding: binding(), body: body() }); - }, - - reduceClassDeclaration(node, { name, super: _super, elements }) { - return reducer.reduceClassDeclaration(node, { name: name(), super: _super == null ? null : _super(), elements: elements.map(n => n()) }); - }, - - reduceClassElement(node, { method }) { - return reducer.reduceClassElement(node, { method: method() }); - }, - - reduceClassExpression(node, { name, super: _super, elements }) { - return reducer.reduceClassExpression(node, { name: name == null ? null : name(), super: _super == null ? null : _super(), elements: elements.map(n => n()) }); - }, - - reduceCompoundAssignmentExpression(node, { binding, expression }) { - return reducer.reduceCompoundAssignmentExpression(node, { binding: binding(), expression: expression() }); - }, - - reduceComputedMemberAssignmentTarget(node, { object, expression }) { - return reducer.reduceComputedMemberAssignmentTarget(node, { object: object(), expression: expression() }); - }, - - reduceComputedMemberExpression(node, { object, expression }) { - return reducer.reduceComputedMemberExpression(node, { object: object(), expression: expression() }); - }, - - reduceComputedPropertyName(node, { expression }) { - return reducer.reduceComputedPropertyName(node, { expression: expression() }); - }, - - reduceConditionalExpression(node, { test, consequent, alternate }) { - return reducer.reduceConditionalExpression(node, { test: test(), consequent: consequent(), alternate: alternate() }); - }, - - reduceContinueStatement(node) { - return reducer.reduceContinueStatement(node); - }, - - reduceDataProperty(node, { name, expression }) { - return reducer.reduceDataProperty(node, { name: name(), expression: expression() }); - }, - - reduceDebuggerStatement(node) { - return reducer.reduceDebuggerStatement(node); - }, - - reduceDirective(node) { - return reducer.reduceDirective(node); - }, - - reduceDoWhileStatement(node, { body, test }) { - return reducer.reduceDoWhileStatement(node, { body: body(), test: test() }); - }, - - reduceEmptyStatement(node) { - return reducer.reduceEmptyStatement(node); - }, - - reduceExport(node, { declaration }) { - return reducer.reduceExport(node, { declaration: declaration() }); - }, - - reduceExportAllFrom(node) { - return reducer.reduceExportAllFrom(node); - }, - - reduceExportDefault(node, { body }) { - return reducer.reduceExportDefault(node, { body: body() }); - }, - - reduceExportFrom(node, { namedExports }) { - return reducer.reduceExportFrom(node, { namedExports: namedExports.map(n => n()) }); - }, - - reduceExportFromSpecifier(node) { - return reducer.reduceExportFromSpecifier(node); - }, - - reduceExportLocalSpecifier(node, { name }) { - return reducer.reduceExportLocalSpecifier(node, { name: name() }); - }, - - reduceExportLocals(node, { namedExports }) { - return reducer.reduceExportLocals(node, { namedExports: namedExports.map(n => n()) }); - }, - - reduceExpressionStatement(node, { expression }) { - return reducer.reduceExpressionStatement(node, { expression: expression() }); - }, - - reduceForAwaitStatement(node, { left, right, body }) { - return reducer.reduceForAwaitStatement(node, { left: left(), right: right(), body: body() }); - }, - - reduceForInStatement(node, { left, right, body }) { - return reducer.reduceForInStatement(node, { left: left(), right: right(), body: body() }); - }, - - reduceForOfStatement(node, { left, right, body }) { - return reducer.reduceForOfStatement(node, { left: left(), right: right(), body: body() }); - }, - - reduceForStatement(node, { init, test, update, body }) { - return reducer.reduceForStatement(node, { init: init == null ? null : init(), test: test == null ? null : test(), update: update == null ? null : update(), body: body() }); - }, - - reduceFormalParameters(node, { items, rest }) { - return reducer.reduceFormalParameters(node, { items: items.map(n => n()), rest: rest == null ? null : rest() }); - }, - - reduceFunctionBody(node, { directives, statements }) { - return reducer.reduceFunctionBody(node, { directives: directives.map(n => n()), statements: statements.map(n => n()) }); - }, - - reduceFunctionDeclaration(node, { name, params, body }) { - return reducer.reduceFunctionDeclaration(node, { name: name(), params: params(), body: body() }); - }, - - reduceFunctionExpression(node, { name, params, body }) { - return reducer.reduceFunctionExpression(node, { name: name == null ? null : name(), params: params(), body: body() }); - }, - - reduceGetter(node, { name, body }) { - return reducer.reduceGetter(node, { name: name(), body: body() }); - }, - - reduceIdentifierExpression(node) { - return reducer.reduceIdentifierExpression(node); - }, - - reduceIfStatement(node, { test, consequent, alternate }) { - return reducer.reduceIfStatement(node, { test: test(), consequent: consequent(), alternate: alternate == null ? null : alternate() }); - }, - - reduceImport(node, { defaultBinding, namedImports }) { - return reducer.reduceImport(node, { defaultBinding: defaultBinding == null ? null : defaultBinding(), namedImports: namedImports.map(n => n()) }); - }, - - reduceImportNamespace(node, { defaultBinding, namespaceBinding }) { - return reducer.reduceImportNamespace(node, { defaultBinding: defaultBinding == null ? null : defaultBinding(), namespaceBinding: namespaceBinding() }); - }, - - reduceImportSpecifier(node, { binding }) { - return reducer.reduceImportSpecifier(node, { binding: binding() }); - }, - - reduceLabeledStatement(node, { body }) { - return reducer.reduceLabeledStatement(node, { body: body() }); - }, - - reduceLiteralBooleanExpression(node) { - return reducer.reduceLiteralBooleanExpression(node); - }, - - reduceLiteralInfinityExpression(node) { - return reducer.reduceLiteralInfinityExpression(node); - }, - - reduceLiteralNullExpression(node) { - return reducer.reduceLiteralNullExpression(node); - }, - - reduceLiteralNumericExpression(node) { - return reducer.reduceLiteralNumericExpression(node); - }, - - reduceLiteralRegExpExpression(node) { - return reducer.reduceLiteralRegExpExpression(node); - }, - - reduceLiteralStringExpression(node) { - return reducer.reduceLiteralStringExpression(node); - }, - - reduceMethod(node, { name, params, body }) { - return reducer.reduceMethod(node, { name: name(), params: params(), body: body() }); - }, - - reduceModule(node, { directives, items }) { - return reducer.reduceModule(node, { directives: directives.map(n => n()), items: items.map(n => n()) }); - }, - - reduceNewExpression(node, { callee, arguments: _arguments }) { - return reducer.reduceNewExpression(node, { callee: callee(), arguments: _arguments.map(n => n()) }); - }, - - reduceNewTargetExpression(node) { - return reducer.reduceNewTargetExpression(node); - }, - - reduceObjectAssignmentTarget(node, { properties, rest }) { - return reducer.reduceObjectAssignmentTarget(node, { properties: properties.map(n => n()), rest: rest == null ? null : rest() }); - }, - - reduceObjectBinding(node, { properties, rest }) { - return reducer.reduceObjectBinding(node, { properties: properties.map(n => n()), rest: rest == null ? null : rest() }); - }, - - reduceObjectExpression(node, { properties }) { - return reducer.reduceObjectExpression(node, { properties: properties.map(n => n()) }); - }, - - reduceReturnStatement(node, { expression }) { - return reducer.reduceReturnStatement(node, { expression: expression == null ? null : expression() }); - }, - - reduceScript(node, { directives, statements }) { - return reducer.reduceScript(node, { directives: directives.map(n => n()), statements: statements.map(n => n()) }); - }, - - reduceSetter(node, { name, param, body }) { - return reducer.reduceSetter(node, { name: name(), param: param(), body: body() }); - }, - - reduceShorthandProperty(node, { name }) { - return reducer.reduceShorthandProperty(node, { name: name() }); - }, - - reduceSpreadElement(node, { expression }) { - return reducer.reduceSpreadElement(node, { expression: expression() }); - }, - - reduceSpreadProperty(node, { expression }) { - return reducer.reduceSpreadProperty(node, { expression: expression() }); - }, - - reduceStaticMemberAssignmentTarget(node, { object }) { - return reducer.reduceStaticMemberAssignmentTarget(node, { object: object() }); - }, - - reduceStaticMemberExpression(node, { object }) { - return reducer.reduceStaticMemberExpression(node, { object: object() }); - }, - - reduceStaticPropertyName(node) { - return reducer.reduceStaticPropertyName(node); - }, - - reduceSuper(node) { - return reducer.reduceSuper(node); - }, - - reduceSwitchCase(node, { test, consequent }) { - return reducer.reduceSwitchCase(node, { test: test(), consequent: consequent.map(n => n()) }); - }, - - reduceSwitchDefault(node, { consequent }) { - return reducer.reduceSwitchDefault(node, { consequent: consequent.map(n => n()) }); - }, - - reduceSwitchStatement(node, { discriminant, cases }) { - return reducer.reduceSwitchStatement(node, { discriminant: discriminant(), cases: cases.map(n => n()) }); - }, - - reduceSwitchStatementWithDefault(node, { discriminant, preDefaultCases, defaultCase, postDefaultCases }) { - return reducer.reduceSwitchStatementWithDefault(node, { discriminant: discriminant(), preDefaultCases: preDefaultCases.map(n => n()), defaultCase: defaultCase(), postDefaultCases: postDefaultCases.map(n => n()) }); - }, - - reduceTemplateElement(node) { - return reducer.reduceTemplateElement(node); - }, - - reduceTemplateExpression(node, { tag, elements }) { - return reducer.reduceTemplateExpression(node, { tag: tag == null ? null : tag(), elements: elements.map(n => n()) }); - }, - - reduceThisExpression(node) { - return reducer.reduceThisExpression(node); - }, - - reduceThrowStatement(node, { expression }) { - return reducer.reduceThrowStatement(node, { expression: expression() }); - }, - - reduceTryCatchStatement(node, { body, catchClause }) { - return reducer.reduceTryCatchStatement(node, { body: body(), catchClause: catchClause() }); - }, - - reduceTryFinallyStatement(node, { body, catchClause, finalizer }) { - return reducer.reduceTryFinallyStatement(node, { body: body(), catchClause: catchClause == null ? null : catchClause(), finalizer: finalizer() }); - }, - - reduceUnaryExpression(node, { operand }) { - return reducer.reduceUnaryExpression(node, { operand: operand() }); - }, - - reduceUpdateExpression(node, { operand }) { - return reducer.reduceUpdateExpression(node, { operand: operand() }); - }, - - reduceVariableDeclaration(node, { declarators }) { - return reducer.reduceVariableDeclaration(node, { declarators: declarators.map(n => n()) }); - }, - - reduceVariableDeclarationStatement(node, { declaration }) { - return reducer.reduceVariableDeclarationStatement(node, { declaration: declaration() }); - }, - - reduceVariableDeclarator(node, { binding, init }) { - return reducer.reduceVariableDeclarator(node, { binding: binding(), init: init == null ? null : init() }); - }, - - reduceWhileStatement(node, { test, body }) { - return reducer.reduceWhileStatement(node, { test: test(), body: body() }); - }, - - reduceWithStatement(node, { object, body }) { - return reducer.reduceWithStatement(node, { object: object(), body: body() }); - }, - - reduceYieldExpression(node, { expression }) { - return reducer.reduceYieldExpression(node, { expression: expression == null ? null : expression() }); - }, - - reduceYieldGeneratorExpression(node, { expression }) { - return reducer.reduceYieldGeneratorExpression(node, { expression: expression() }); - }, - }; -} diff --git a/repl/src/shift-traverser/index.js b/repl/src/shift-traverser/index.js deleted file mode 100644 index 858bc4d5..00000000 --- a/repl/src/shift-traverser/index.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (C) 2014 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -import Spec from 'shift-spec'; -// import { version } from '../package.json' - -// Loading uncached estraverse for changing estraverse.Syntax. -import _estraverse from 'estraverse'; - -const estraverse = _estraverse.cloneEnvironment(); - -// Adjust estraverse members. - -Object.keys(estraverse.Syntax) - .filter((key) => key !== 'Property') - .forEach((key) => { - delete estraverse.Syntax[key]; - delete estraverse.VisitorKeys[key]; - }); - -Object.assign( - estraverse.Syntax, - Object.keys(Spec).reduce((result, key) => { - result[key] = key; - return result; - }, {}) -); - -Object.assign( - estraverse.VisitorKeys, - Object.keys(Spec).reduce((result, key) => { - result[key] = Spec[key].fields.map((field) => field.name); - return result; - }, {}) -); - -// estraverse.version = version; -export default estraverse; - -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/repl/src/types.d.ts b/repl/src/types.d.ts deleted file mode 100644 index 6272e641..00000000 --- a/repl/src/types.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { State } from '../../strudel.mjs'; - -export declare interface Fraction { - (v: number): Fraction; - d: number; - n: number; - s: number; - sub: (f: Fraction) => Fraction; - sam: () => Fraction; - equals: (f: Fraction) => boolean; -} -export declare interface TimeSpan { - constructor: any; //? - begin: Fraction; - end: Fraction; -} -export declare interface Hap { - whole: TimeSpan; - part: TimeSpan; - value: T; - context: any; - show: () => string; -} -export declare interface Pattern { - query: (span: State) => Hap[]; - fmap: (v: T) => T; -} diff --git a/repl/tsconfig.json b/repl/tsconfig.json deleted file mode 100644 index 1ea10b13..00000000 --- a/repl/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "include": ["src", "types", "public/hot.js", "tutorial"], - "compilerOptions": { - "allowJs": true, - "module": "esnext", - "target": "esnext", - "moduleResolution": "node", - "jsx": "preserve", - "baseUrl": "./", - /* paths - import rewriting/resolving */ - "paths": { - // If you configured any Snowpack aliases, add them here. - // Add this line to get types for streaming imports (packageOptions.source="remote"): - // "*": [".snowpack/types/*"] - // More info: https://www.snowpack.dev/guides/streaming-imports - }, - /* noEmit - Snowpack builds (emits) files, not tsc. */ - "noEmit": true, - /* Additional Options */ - "strict": true, - "skipLibCheck": true, - "types": ["mocha", "snowpack-env"], - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "importsNotUsedAsValues": "error", - "noImplicitAny": false - } -} diff --git a/repl/types/static.d.ts b/repl/types/static.d.ts deleted file mode 100644 index ba74d2a2..00000000 --- a/repl/types/static.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* Use this file to declare any custom file extensions for importing */ -/* Use this folder to also add/extend a package d.ts file, if needed. */ - -/* CSS MODULES */ -declare module '*.module.css' { - const classes: { [key: string]: string }; - export default classes; -} -declare module '*.module.scss' { - const classes: { [key: string]: string }; - export default classes; -} -declare module '*.module.sass' { - const classes: { [key: string]: string }; - export default classes; -} -declare module '*.module.less' { - const classes: { [key: string]: string }; - export default classes; -} -declare module '*.module.styl' { - const classes: { [key: string]: string }; - export default classes; -} - -/* CSS */ -declare module '*.css'; -declare module '*.scss'; -declare module '*.sass'; -declare module '*.less'; -declare module '*.styl'; - -/* IMAGES */ -declare module '*.svg' { - const ref: string; - export default ref; -} -declare module '*.bmp' { - const ref: string; - export default ref; -} -declare module '*.gif' { - const ref: string; - export default ref; -} -declare module '*.jpg' { - const ref: string; - export default ref; -} -declare module '*.jpeg' { - const ref: string; - export default ref; -} -declare module '*.png' { - const ref: string; - export default ref; -} - -/* CUSTOM: ADD YOUR OWN HERE */