New linter rule import/no-unused-modules & fixing import on typescript (#1173)

- New linter rules are now added
- Perhaps the `createPayee` method i've tagged with a disable should be
deleted.
- I have ignored unused methods in Plaid/Mobile as this stuff is still
WIP/experimental?
This commit is contained in:
Shazib Hussain
2023-06-24 16:58:40 +01:00
committed by GitHub
parent f3f2c8485a
commit 228cff3cfd
15 changed files with 322 additions and 193 deletions

View File

@@ -70,6 +70,7 @@ module.exports = {
],
'import/no-useless-path-segments': 'error',
'import/no-duplicates': ['error', { 'prefer-inline': true }],
'import/no-unused-modules': ['error', { 'unusedExports': true }],
'import/order': [
'error',
{
@@ -166,5 +167,33 @@ module.exports = {
],
},
},
{
files: ['./packages/loot-core/src/**/*'],
rules: {
// defining 'src' to check all packages is slow, so only do it for loot-core
'import/no-unused-modules': ['error', { 'unusedExports': true, 'src': ['../**/*.{js,ts,tsx}'] }],
}
},
{
files: [
'**/icons/**/*.js',
'**/mocks/**/*.{js,ts,tsx}',
'**/{mocks,__mocks__}/*.{js,ts,tsx}',
// can't correctly resolve usages
'**/*.{testing,electron,browser,web,api}.ts',
'packages/loot-core/src/server/main.ts'
],
rules: { 'import/no-unused-modules': 'off' }
},
],
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"typescript": {
"alwaysTryTypes": true
}
}
}
};

View File

@@ -41,7 +41,9 @@
"cross-env": "^7.0.3",
"eslint": "^8.37.0",
"eslint-config-react-app": "7.0.1",
"eslint-import-resolver-typescript": "3.5.5",
"eslint-plugin-prettier": "4.2.1",
"eslint-plugin-react": "7.32.2",
"eslint-plugin-rulesdir": "^0.2.2",
"npm-run-all": "^4.1.3",
"patch-package": "^6.1.2",

View File

@@ -1,3 +1,5 @@
bundle.browser.js
build/
public/kcab/
**/node_modules/*
node_modules/

View File

@@ -24,7 +24,7 @@ import { colors } from '../../style';
import { withThemeColor } from '../../util/withThemeColor';
import SyncRefresh from '../SyncRefresh';
import { default as AccountDetails } from './MobileAccountDetails';
import AccountDetails from './MobileAccountDetails';
const getSchedulesTransform = memoizeOne((id, hasSearch) => {
let filter = queries.getAccountFilter(id, '_account');

View File

@@ -51,6 +51,8 @@ function lookupName(items, id) {
return items.find(item => item.id === id).name;
}
// TODO: delete if not needed
/* eslint-disable-next-line import/no-unused-modules */
export function DateHeader({ date }) {
return (
<ListItem

View File

@@ -1,3 +1,4 @@
/* eslint-disable import/no-unused-modules */
import { send } from 'loot-core/src/platform/client/fetch';
function _authorize(pushModal, plaidToken, { onSuccess, onClose }) {

View File

@@ -0,0 +1 @@
**/node_modules/*

View File

@@ -0,0 +1 @@
**/node_modules/*

View File

@@ -1,2 +1,2 @@
// eslint-disable-next-line no-restricted-imports, import/extensions
// eslint-disable-next-line no-restricted-imports
export * from './__mocks__/index.web';

View File

@@ -5,7 +5,6 @@ import {
transaction,
execQuery,
runQuery,
// eslint-disable-next-line import/extensions
} from './index.web';
beforeAll(() => {

View File

@@ -1,5 +1,6 @@
import * as db from '../db';
/* eslint-disable import/no-unused-modules */
export async function createPayee(description) {
// Check to make sure no payee already exists with exactly the same
// name

View File

@@ -1,187 +0,0 @@
import * as dateFns from 'date-fns';
const AlwaysTrue = Symbol('AlwaysTrue');
let shouldLog = false;
// TODO: We need to track conformance with the SQL behavior that
// sqlite implements. Luckily we are restricted to a very small subset
// of the language, but we still need to be careful about things like
// type coercion.
function bind(args, func) {
// if (shouldLog) {
// console.log(args, func.toString());
// }
for (let i = 0; i < args.length; i++) {
if (args[i] === AlwaysTrue) {
return AlwaysTrue;
}
}
return func();
}
const builtinFuncs = {
concat: function (str1, str2) {
return str1 + str2;
},
date: function (str) {
return dateFns.parseISO(str);
},
};
function interpretExpr(expr, context) {
switch (expr.getTypeName()) {
case 'FunCall':
const args = expr.args.map(arg => interpretExpr(arg, context));
return bind(args, () => {
return builtinFuncs[expr.name].apply(null, args);
});
case 'Member':
// We don't support walking through table schema yet. Any joined
// fields are always evaluated as true. These will always exist
// as member expressions; fields from the implicit table will
// simply be symbols.
return AlwaysTrue;
case 'Literal':
return expr.value;
case 'Symbol':
return expr.value in context.row ? context.row[expr.value] : AlwaysTrue;
case 'BinOp':
switch (expr.op) {
case 'or': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([expr.left, expr.right], () => {
return left || right;
});
}
case 'and': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return left && right;
}
case '=': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
if (left instanceof Date && right instanceof Date) {
return dateFns.isEqual(left, right);
}
return left === right;
});
}
case '=~': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
return left && left.match(new RegExp(right.replace('%', '.*')));
});
}
case '!=~': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
return left && !left.match(new RegExp(right.replace('%', '.*')));
});
}
case '>': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
if (left instanceof Date) {
return dateFns.isAfter(left, dateFns.parseISO(right));
}
return left > right;
});
}
case '<': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
if (left instanceof Date) {
return dateFns.isBefore(left, dateFns.parseISO(right));
}
return left < right;
});
}
case '>=': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
if (left instanceof Date) {
return (
dateFns.isAfter(left, dateFns.parseISO(right)) ||
dateFns.isEqual(left, dateFns.parseISO(right))
);
}
return left >= right;
});
}
case '<=': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => {
if (left instanceof Date) {
return (
dateFns.isBefore(left, dateFns.parseISO(right)) ||
dateFns.isEqual(left, dateFns.parseISO(right))
);
}
return left <= right;
});
}
case '-': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => left - right);
}
case '+': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => left + right);
}
case '*': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => left * right);
}
case '/': {
const left = interpretExpr(expr.left, context);
const right = interpretExpr(expr.right, context);
return bind([left, right], () => left / right);
}
default:
console.log(expr);
throw new Error('Unable to interpret operator: ' + expr.op);
}
default:
throw new Error('Unknown sql node: ' + expr.getTypeName());
}
}
function interpret(where, row, table) {
// if (where.op !== 'or' && where.op !== 'and') {
// throw new Error(
// 'Invalid where clause: top-level expression must be AND or OR'
// );
// }
// Set this to `true` for debugging
shouldLog = false;
let ret = interpretExpr(where, { row, table });
if (shouldLog) {
console.log('Final', ret);
}
shouldLog = false;
return ret;
}
export default interpret;

View File

@@ -1,3 +1,5 @@
/* eslint-disable import/no-unused-modules */
export function isPreviewEnvironment() {
return String(process.env.REACT_APP_NETLIFY) === 'true';
}

View File

@@ -0,0 +1,6 @@
---
category: Maintenance
authors: [Shazib]
---
Add additional linter rules for checking imports

276
yarn.lock
View File

@@ -2737,6 +2737,20 @@ __metadata:
languageName: node
linkType: hard
"@pkgr/utils@npm:^2.3.1":
version: 2.4.1
resolution: "@pkgr/utils@npm:2.4.1"
dependencies:
cross-spawn: ^7.0.3
fast-glob: ^3.2.12
is-glob: ^4.0.3
open: ^9.1.0
picocolors: ^1.0.0
tslib: ^2.5.0
checksum: 654682860272541a40485b01e0763b155ec31faeba85b2c51e38b59c4ff1f8918c37b87b5ecbda3ff482d8486eba086e92b991fe4a8ed62efbbbdf83c0f64409
languageName: node
linkType: hard
"@playwright/test@npm:^1.29.1":
version: 1.33.0
resolution: "@playwright/test@npm:1.33.0"
@@ -4980,7 +4994,9 @@ __metadata:
cross-env: ^7.0.3
eslint: ^8.37.0
eslint-config-react-app: 7.0.1
eslint-import-resolver-typescript: 3.5.5
eslint-plugin-prettier: 4.2.1
eslint-plugin-react: 7.32.2
eslint-plugin-rulesdir: ^0.2.2
npm-run-all: ^4.1.3
patch-package: ^6.1.2
@@ -5768,6 +5784,13 @@ __metadata:
languageName: node
linkType: hard
"big-integer@npm:^1.6.44":
version: 1.6.51
resolution: "big-integer@npm:1.6.51"
checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518
languageName: node
linkType: hard
"big.js@npm:^5.2.2":
version: 5.2.2
resolution: "big.js@npm:5.2.2"
@@ -5871,6 +5894,15 @@ __metadata:
languageName: node
linkType: hard
"bplist-parser@npm:^0.2.0":
version: 0.2.0
resolution: "bplist-parser@npm:0.2.0"
dependencies:
big-integer: ^1.6.44
checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd
languageName: node
linkType: hard
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
@@ -6064,6 +6096,15 @@ __metadata:
languageName: node
linkType: hard
"bundle-name@npm:^3.0.0":
version: 3.0.0
resolution: "bundle-name@npm:3.0.0"
dependencies:
run-applescript: ^5.0.0
checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615
languageName: node
linkType: hard
"bytes@npm:3.0.0":
version: 3.0.0
resolution: "bytes@npm:3.0.0"
@@ -7449,6 +7490,28 @@ __metadata:
languageName: node
linkType: hard
"default-browser-id@npm:^3.0.0":
version: 3.0.0
resolution: "default-browser-id@npm:3.0.0"
dependencies:
bplist-parser: ^0.2.0
untildify: ^4.0.0
checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941
languageName: node
linkType: hard
"default-browser@npm:^4.0.0":
version: 4.0.0
resolution: "default-browser@npm:4.0.0"
dependencies:
bundle-name: ^3.0.0
default-browser-id: ^3.0.0
execa: ^7.1.1
titleize: ^3.0.0
checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7
languageName: node
linkType: hard
"default-gateway@npm:^6.0.3":
version: 6.0.3
resolution: "default-gateway@npm:6.0.3"
@@ -7481,6 +7544,13 @@ __metadata:
languageName: node
linkType: hard
"define-lazy-prop@npm:^3.0.0":
version: 3.0.0
resolution: "define-lazy-prop@npm:3.0.0"
checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6
languageName: node
linkType: hard
"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0":
version: 1.2.0
resolution: "define-properties@npm:1.2.0"
@@ -8076,6 +8146,16 @@ __metadata:
languageName: node
linkType: hard
"enhanced-resolve@npm:^5.12.0":
version: 5.15.0
resolution: "enhanced-resolve@npm:5.15.0"
dependencies:
graceful-fs: ^4.2.4
tapable: ^2.2.0
checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11
languageName: node
linkType: hard
"enhanced-resolve@npm:^5.13.0":
version: 5.13.0
resolution: "enhanced-resolve@npm:5.13.0"
@@ -8358,6 +8438,25 @@ __metadata:
languageName: node
linkType: hard
"eslint-import-resolver-typescript@npm:3.5.5":
version: 3.5.5
resolution: "eslint-import-resolver-typescript@npm:3.5.5"
dependencies:
debug: ^4.3.4
enhanced-resolve: ^5.12.0
eslint-module-utils: ^2.7.4
get-tsconfig: ^4.5.0
globby: ^13.1.3
is-core-module: ^2.11.0
is-glob: ^4.0.3
synckit: ^0.8.5
peerDependencies:
eslint: "*"
eslint-plugin-import: "*"
checksum: 27e6276fdff5d377c9036362ff736ac29852106e883ff589ea9092dc57d4bc2a67a82d75134221124f05045f9a7e2114a159b2c827d1f9f64d091f7afeab0f58
languageName: node
linkType: hard
"eslint-module-utils@npm:^2.7.4":
version: 2.8.0
resolution: "eslint-module-utils@npm:2.8.0"
@@ -8530,7 +8629,7 @@ __metadata:
languageName: node
linkType: hard
"eslint-plugin-react@npm:^7.27.1":
"eslint-plugin-react@npm:7.32.2, eslint-plugin-react@npm:^7.27.1":
version: 7.32.2
resolution: "eslint-plugin-react@npm:7.32.2"
dependencies:
@@ -8820,6 +8919,23 @@ __metadata:
languageName: node
linkType: hard
"execa@npm:^7.1.1":
version: 7.1.1
resolution: "execa@npm:7.1.1"
dependencies:
cross-spawn: ^7.0.3
get-stream: ^6.0.1
human-signals: ^4.3.0
is-stream: ^3.0.0
merge-stream: ^2.0.0
npm-run-path: ^5.1.0
onetime: ^6.0.0
signal-exit: ^3.0.7
strip-final-newline: ^3.0.0
checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937
languageName: node
linkType: hard
"exenv@npm:^1.2.0":
version: 1.2.2
resolution: "exenv@npm:1.2.2"
@@ -8961,7 +9077,7 @@ __metadata:
languageName: node
linkType: hard
"fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9":
"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9":
version: 3.2.12
resolution: "fast-glob@npm:3.2.12"
dependencies:
@@ -9516,7 +9632,7 @@ __metadata:
languageName: node
linkType: hard
"get-stream@npm:^6.0.0":
"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1":
version: 6.0.1
resolution: "get-stream@npm:6.0.1"
checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad
@@ -9533,6 +9649,15 @@ __metadata:
languageName: node
linkType: hard
"get-tsconfig@npm:^4.5.0":
version: 4.6.0
resolution: "get-tsconfig@npm:4.6.0"
dependencies:
resolve-pkg-maps: ^1.0.0
checksum: fd2589a50e21543cf416285e5c4ac605359f49209b6c2e66bb8698fac907356e060de0a681e40881f00182b6f19771377411a88adcc78fd3954732ff54f4a54d
languageName: node
linkType: hard
"github-from-package@npm:0.0.0":
version: 0.0.0
resolution: "github-from-package@npm:0.0.0"
@@ -9692,6 +9817,19 @@ __metadata:
languageName: node
linkType: hard
"globby@npm:^13.1.3":
version: 13.2.0
resolution: "globby@npm:13.2.0"
dependencies:
dir-glob: ^3.0.1
fast-glob: ^3.2.11
ignore: ^5.2.0
merge2: ^1.4.1
slash: ^4.0.0
checksum: 0a3dd786571788adef1c894f22112834cff5bbe061ae6e0a01c5118c39d44b3f1937ef1dae3f8b9bc24756eba84a0923e565b1ad9a4ec52831d7e2a04c035e75
languageName: node
linkType: hard
"google-protobuf@npm:^3.12.0-rc.1, google-protobuf@npm:^3.15.5":
version: 3.21.2
resolution: "google-protobuf@npm:3.21.2"
@@ -10091,6 +10229,13 @@ __metadata:
languageName: node
linkType: hard
"human-signals@npm:^4.3.0":
version: 4.3.1
resolution: "human-signals@npm:4.3.1"
checksum: 6f12958df3f21b6fdaf02d90896c271df00636a31e2bbea05bddf817a35c66b38a6fdac5863e2df85bd52f34958997f1f50350ff97249e1dff8452865d5235d1
languageName: node
linkType: hard
"humanize-ms@npm:^1.2.1":
version: 1.2.1
resolution: "humanize-ms@npm:1.2.1"
@@ -10456,6 +10601,15 @@ __metadata:
languageName: node
linkType: hard
"is-docker@npm:^3.0.0":
version: 3.0.0
resolution: "is-docker@npm:3.0.0"
bin:
is-docker: cli.js
checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90
languageName: node
linkType: hard
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
@@ -10511,6 +10665,17 @@ __metadata:
languageName: node
linkType: hard
"is-inside-container@npm:^1.0.0":
version: 1.0.0
resolution: "is-inside-container@npm:1.0.0"
dependencies:
is-docker: ^3.0.0
bin:
is-inside-container: cli.js
checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03
languageName: node
linkType: hard
"is-interactive@npm:^1.0.0":
version: 1.0.0
resolution: "is-interactive@npm:1.0.0"
@@ -10663,6 +10828,13 @@ __metadata:
languageName: node
linkType: hard
"is-stream@npm:^3.0.0":
version: 3.0.0
resolution: "is-stream@npm:3.0.0"
checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16
languageName: node
linkType: hard
"is-string@npm:^1.0.5, is-string@npm:^1.0.7":
version: 1.0.7
resolution: "is-string@npm:1.0.7"
@@ -12516,6 +12688,13 @@ __metadata:
languageName: node
linkType: hard
"mimic-fn@npm:^4.0.0":
version: 4.0.0
resolution: "mimic-fn@npm:4.0.0"
checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56
languageName: node
linkType: hard
"mimic-response@npm:^1.0.0":
version: 1.0.1
resolution: "mimic-response@npm:1.0.1"
@@ -13000,6 +13179,15 @@ __metadata:
languageName: node
linkType: hard
"npm-run-path@npm:^5.1.0":
version: 5.1.0
resolution: "npm-run-path@npm:5.1.0"
dependencies:
path-key: ^4.0.0
checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66
languageName: node
linkType: hard
"npmlog@npm:^6.0.0":
version: 6.0.2
resolution: "npmlog@npm:6.0.2"
@@ -13191,6 +13379,15 @@ __metadata:
languageName: node
linkType: hard
"onetime@npm:^6.0.0":
version: 6.0.0
resolution: "onetime@npm:6.0.0"
dependencies:
mimic-fn: ^4.0.0
checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788
languageName: node
linkType: hard
"open@npm:^7.4.2":
version: 7.4.2
resolution: "open@npm:7.4.2"
@@ -13212,6 +13409,18 @@ __metadata:
languageName: node
linkType: hard
"open@npm:^9.1.0":
version: 9.1.0
resolution: "open@npm:9.1.0"
dependencies:
default-browser: ^4.0.0
define-lazy-prop: ^3.0.0
is-inside-container: ^1.0.0
is-wsl: ^2.2.0
checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9
languageName: node
linkType: hard
"optionator@npm:^0.8.1":
version: 0.8.3
resolution: "optionator@npm:0.8.3"
@@ -13532,6 +13741,13 @@ __metadata:
languageName: node
linkType: hard
"path-key@npm:^4.0.0":
version: 4.0.0
resolution: "path-key@npm:4.0.0"
checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7
languageName: node
linkType: hard
"path-parse@npm:^1.0.7":
version: 1.0.7
resolution: "path-parse@npm:1.0.7"
@@ -15508,6 +15724,13 @@ __metadata:
languageName: node
linkType: hard
"resolve-pkg-maps@npm:^1.0.0":
version: 1.0.0
resolution: "resolve-pkg-maps@npm:1.0.0"
checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977
languageName: node
linkType: hard
"resolve-url-loader@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-url-loader@npm:4.0.0"
@@ -15692,6 +15915,15 @@ __metadata:
languageName: node
linkType: hard
"run-applescript@npm:^5.0.0":
version: 5.0.0
resolution: "run-applescript@npm:5.0.0"
dependencies:
execa: ^5.0.0
checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77
languageName: node
linkType: hard
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
@@ -16651,6 +16883,13 @@ __metadata:
languageName: node
linkType: hard
"strip-final-newline@npm:^3.0.0":
version: 3.0.0
resolution: "strip-final-newline@npm:3.0.0"
checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050
languageName: node
linkType: hard
"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
@@ -16811,6 +17050,16 @@ __metadata:
languageName: node
linkType: hard
"synckit@npm:^0.8.5":
version: 0.8.5
resolution: "synckit@npm:0.8.5"
dependencies:
"@pkgr/utils": ^2.3.1
tslib: ^2.5.0
checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b
languageName: node
linkType: hard
"tabbable@npm:^4.0.0":
version: 4.0.0
resolution: "tabbable@npm:4.0.0"
@@ -17044,6 +17293,13 @@ __metadata:
languageName: node
linkType: hard
"titleize@npm:^3.0.0":
version: 3.0.0
resolution: "titleize@npm:3.0.0"
checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28
languageName: node
linkType: hard
"tmp-promise@npm:^3.0.2":
version: 3.0.3
resolution: "tmp-promise@npm:3.0.3"
@@ -17276,6 +17532,13 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.5.0":
version: 2.5.3
resolution: "tslib@npm:2.5.3"
checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c
languageName: node
linkType: hard
"tsutils@npm:^3.21.0":
version: 3.21.0
resolution: "tsutils@npm:3.21.0"
@@ -17565,6 +17828,13 @@ __metadata:
languageName: node
linkType: hard
"untildify@npm:^4.0.0":
version: 4.0.0
resolution: "untildify@npm:4.0.0"
checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9
languageName: node
linkType: hard
"upath@npm:^1.2.0":
version: 1.2.0
resolution: "upath@npm:1.2.0"