@zeniai/client-epic-state 5.1.17 → 5.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,17 @@
1
1
  import { URLPayload } from '../../commonPayloadTypes/urlPayload';
2
2
  import { Customer, CustomerBase } from './customerState';
3
3
  export interface CustomerBasePayload {
4
- customer_id: string;
4
+ customer_id: string | null;
5
5
  customer_name: string;
6
6
  logo?: URLPayload;
7
7
  qbo_id?: string;
8
8
  }
9
+ /**
10
+ * Resolves the effective customer identifier from a payload.
11
+ * For JE/Deposit transactions, customer_id is null at runtime — qbo_id is the
12
+ * actual identity.
13
+ */
14
+ export declare const getCustomerPayloadIdentifier: (customer: CustomerBasePayload) => string | null;
9
15
  export declare const toCustomerBase: (payload: CustomerBasePayload, parseOutParentName: boolean) => CustomerBase;
10
16
  export declare const toCustomerBasePayload: (customer: CustomerBase | undefined, customerUpdates?: CustomerBase) => CustomerBasePayload;
11
17
  export interface CustomerPayload extends CustomerBasePayload {
@@ -1,16 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toCustomer = exports.toCustomerBasePayload = exports.toCustomerBase = void 0;
3
+ exports.toCustomer = exports.toCustomerBasePayload = exports.toCustomerBase = exports.getCustomerPayloadIdentifier = void 0;
4
4
  const urlPayload_1 = require("../../commonPayloadTypes/urlPayload");
5
5
  const zeniDayJS_1 = require("../../zeniDayJS");
6
- const toCustomerBase = (payload, parseOutParentName) => ({
7
- id: payload.customer_id,
8
- name: parseOutParentName
9
- ? removeParentName(payload.customer_name)
10
- : payload.customer_name,
11
- qboId: payload.qbo_id,
12
- logo: payload.logo != null ? (0, urlPayload_1.toURL)(payload.logo) : undefined,
13
- });
6
+ /**
7
+ * Resolves the effective customer identifier from a payload.
8
+ * For JE/Deposit transactions, customer_id is null at runtime — qbo_id is the
9
+ * actual identity.
10
+ */
11
+ const getCustomerPayloadIdentifier = (customer) => {
12
+ const cid = customer.customer_id;
13
+ if (cid != null && cid !== '') {
14
+ return cid;
15
+ }
16
+ const qid = customer.qbo_id;
17
+ if (qid != null && qid !== '') {
18
+ return qid;
19
+ }
20
+ return null;
21
+ };
22
+ exports.getCustomerPayloadIdentifier = getCustomerPayloadIdentifier;
23
+ const toCustomerBase = (payload, parseOutParentName) => {
24
+ const id = (0, exports.getCustomerPayloadIdentifier)(payload);
25
+ if (id == null) {
26
+ throw new Error(`toCustomerBase: no identifier (customer_id/qbo_id) found for customer "${payload.customer_name}".`);
27
+ }
28
+ return {
29
+ id,
30
+ name: parseOutParentName
31
+ ? removeParentName(payload.customer_name)
32
+ : payload.customer_name,
33
+ qboId: payload.qbo_id,
34
+ logo: payload.logo != null ? (0, urlPayload_1.toURL)(payload.logo) : undefined,
35
+ };
36
+ };
14
37
  exports.toCustomerBase = toCustomerBase;
15
38
  const toCustomerBasePayload = (customer, customerUpdates) => {
16
39
  if (customerUpdates != null && customerUpdates.id != null) {
@@ -184,7 +184,8 @@ const toLineDetail = (payload) => ({
184
184
  account: payload.account?.account_id != null
185
185
  ? (0, accountPayload_1.mapAccountBasePayloadToAccountBase)(payload.account)
186
186
  : undefined,
187
- customer: payload.customer?.customer_id != null
187
+ customer: payload.customer != null &&
188
+ (0, customerPayload_1.getCustomerPayloadIdentifier)(payload.customer) != null
188
189
  ? (0, customerPayload_1.toCustomerBase)(payload.customer, false)
189
190
  : undefined,
190
191
  });
@@ -12,7 +12,9 @@ const toCustomerTransaction = (payload) => {
12
12
  const transaction = (0, transactionPayload_1.toTransaction)(payload);
13
13
  return {
14
14
  ...transaction,
15
- customer: payload.customer_id != null ? (0, customerPayload_1.toCustomerBase)(payload, false) : undefined,
15
+ customer: (0, customerPayload_1.getCustomerPayloadIdentifier)(payload) != null
16
+ ? (0, customerPayload_1.toCustomerBase)(payload, false)
17
+ : undefined,
16
18
  documentId: payload.document_id,
17
19
  paymentType: (0, paymentType_1.toPaymentTypeStrict)(payload.payment_type),
18
20
  paymentTypeName: payload.payment_type_name,
@@ -39,7 +39,7 @@ const toTransactionWithAccountAndClassLine = (payload, currency, type = 'transac
39
39
  class: (0, classPayload_1.mapClassBasePayloadToClassBase)(payload.line_detail.class ?? {}), // Note: why bother about empty {} object ? because sometimes backend sends empty objects, sometimes it sends undefined or null
40
40
  account: (0, accountPayload_1.mapAccountBasePayloadToAccountBase)(payload.line_detail.account),
41
41
  customer: payload.line_detail.customer != null &&
42
- payload.line_detail.customer.customer_id != null
42
+ (0, customerPayload_1.getCustomerPayloadIdentifier)(payload.line_detail.customer) != null
43
43
  ? (0, customerPayload_1.toCustomerBase)(payload.line_detail.customer, false)
44
44
  : undefined,
45
45
  vendor: payload.line_detail.vendor != null &&
@@ -12,7 +12,7 @@ export interface VendorTransactionPayload extends VendorBasePayload, Omit<Transa
12
12
  payment_type_name?: string;
13
13
  }
14
14
  export interface VendorTransactionWithCustomerPayload extends VendorTransactionPayload {
15
- customer_id: string;
15
+ customer_id: string | null;
16
16
  customer_name: string;
17
17
  }
18
18
  export declare const isVendorTransactionPayload: (payload: TransactionPayload) => boolean;
@@ -18,7 +18,10 @@ const toTransactionActivityLogLine = (line) => {
18
18
  class: line.accounting_class
19
19
  ? (0, classPayload_1.mapClassBasePayloadToClassBase)(line.accounting_class)
20
20
  : undefined,
21
- customer: line.customer ? (0, customerPayload_1.toCustomerBase)(line.customer, false) : undefined,
21
+ customer: line.customer != null &&
22
+ (0, customerPayload_1.getCustomerPayloadIdentifier)(line.customer) != null
23
+ ? (0, customerPayload_1.toCustomerBase)(line.customer, false)
24
+ : undefined,
22
25
  vendor: line.vendor != null && (0, vendorPayload_1.getVendorPayloadIdentifier)(line.vendor) != null
23
26
  ? (0, vendorPayload_1.mapVendorBasePayloadToVendorBase)(line.vendor)
24
27
  : undefined,
@@ -1,13 +1,35 @@
1
1
  import { toURL } from '../../commonPayloadTypes/urlPayload';
2
2
  import { date } from '../../zeniDayJS';
3
- export const toCustomerBase = (payload, parseOutParentName) => ({
4
- id: payload.customer_id,
5
- name: parseOutParentName
6
- ? removeParentName(payload.customer_name)
7
- : payload.customer_name,
8
- qboId: payload.qbo_id,
9
- logo: payload.logo != null ? toURL(payload.logo) : undefined,
10
- });
3
+ /**
4
+ * Resolves the effective customer identifier from a payload.
5
+ * For JE/Deposit transactions, customer_id is null at runtime — qbo_id is the
6
+ * actual identity.
7
+ */
8
+ export const getCustomerPayloadIdentifier = (customer) => {
9
+ const cid = customer.customer_id;
10
+ if (cid != null && cid !== '') {
11
+ return cid;
12
+ }
13
+ const qid = customer.qbo_id;
14
+ if (qid != null && qid !== '') {
15
+ return qid;
16
+ }
17
+ return null;
18
+ };
19
+ export const toCustomerBase = (payload, parseOutParentName) => {
20
+ const id = getCustomerPayloadIdentifier(payload);
21
+ if (id == null) {
22
+ throw new Error(`toCustomerBase: no identifier (customer_id/qbo_id) found for customer "${payload.customer_name}".`);
23
+ }
24
+ return {
25
+ id,
26
+ name: parseOutParentName
27
+ ? removeParentName(payload.customer_name)
28
+ : payload.customer_name,
29
+ qboId: payload.qbo_id,
30
+ logo: payload.logo != null ? toURL(payload.logo) : undefined,
31
+ };
32
+ };
11
33
  export const toCustomerBasePayload = (customer, customerUpdates) => {
12
34
  if (customerUpdates != null && customerUpdates.id != null) {
13
35
  return {
@@ -5,7 +5,7 @@ import { date, dateNow } from '../../zeniDayJS';
5
5
  import { mapAccountBasePayloadToAccountBase, toAccountPayload, } from '../account/accountPayload';
6
6
  import { toBillPaymentMethod, toBillPaymentStatus, toBillStage, toBillStatus, toBulkProcessingDetail, toDeletionInfo, } from '../billPay/billTransaction/billTransactionPayload';
7
7
  import { mapClassBasePayloadToClassBase, toClassBasePayload, } from '../class/classPayload';
8
- import { toCustomerBase, toCustomerBasePayload, } from '../customer/customerPayload';
8
+ import { getCustomerPayloadIdentifier, toCustomerBase, toCustomerBasePayload, } from '../customer/customerPayload';
9
9
  import { mapMerchantBasePayloadToMerchantBase, toMerchantBasePayload, } from '../merchant/merchantPayload';
10
10
  import { toAttachment, } from '../transaction/payloadTypes/attachmentPayload';
11
11
  const ALL_REIMBURSEMENT_TRANSACTION_TYPE = ['reimbursement'];
@@ -178,7 +178,8 @@ const toLineDetail = (payload) => ({
178
178
  account: payload.account?.account_id != null
179
179
  ? mapAccountBasePayloadToAccountBase(payload.account)
180
180
  : undefined,
181
- customer: payload.customer?.customer_id != null
181
+ customer: payload.customer != null &&
182
+ getCustomerPayloadIdentifier(payload.customer) != null
182
183
  ? toCustomerBase(payload.customer, false)
183
184
  : undefined,
184
185
  });
@@ -1,5 +1,5 @@
1
1
  import { toAmountWC } from '../../../commonStateTypes/amount';
2
- import { toCustomerBase, toCustomerBasePayload, } from '../../customer/customerPayload';
2
+ import { getCustomerPayloadIdentifier, toCustomerBase, toCustomerBasePayload, } from '../../customer/customerPayload';
3
3
  import { toPaymentTypeStrict } from '../stateTypes/paymentType';
4
4
  import { toCustomerTransactionTypeStrict } from '../stateTypes/transactionType';
5
5
  import { toTransaction, toTransactionPayload, } from './transactionPayload';
@@ -8,7 +8,9 @@ export const toCustomerTransaction = (payload) => {
8
8
  const transaction = toTransaction(payload);
9
9
  return {
10
10
  ...transaction,
11
- customer: payload.customer_id != null ? toCustomerBase(payload, false) : undefined,
11
+ customer: getCustomerPayloadIdentifier(payload) != null
12
+ ? toCustomerBase(payload, false)
13
+ : undefined,
12
14
  documentId: payload.document_id,
13
15
  paymentType: toPaymentTypeStrict(payload.payment_type),
14
16
  paymentTypeName: payload.payment_type_name,
@@ -1,7 +1,7 @@
1
1
  import { toAmountWC } from '../../../commonStateTypes/amount';
2
2
  import { mapAccountBasePayloadToAccountBase, toAccountPayload, } from '../../account/accountPayload';
3
3
  import { mapClassBasePayloadToClassBase, toClassBasePayload, } from '../../class/classPayload';
4
- import { toCustomerBase, toCustomerBasePayload, } from '../../customer/customerPayload';
4
+ import { getCustomerPayloadIdentifier, toCustomerBase, toCustomerBasePayload, } from '../../customer/customerPayload';
5
5
  import { mapProjectBasePayloadToProjectBase, toProjectBasePayload, } from '../../project/projectPayload';
6
6
  import { getVendorPayloadIdentifier, mapVendorBasePayloadToVendorBase, toVendorBasePayload, } from '../../vendor/vendorPayload';
7
7
  import { toCategorizationStatusType, toPlatformLineDetailType, } from '../stateTypes/transactionLine';
@@ -35,7 +35,7 @@ export const toTransactionWithAccountAndClassLine = (payload, currency, type = '
35
35
  class: mapClassBasePayloadToClassBase(payload.line_detail.class ?? {}), // Note: why bother about empty {} object ? because sometimes backend sends empty objects, sometimes it sends undefined or null
36
36
  account: mapAccountBasePayloadToAccountBase(payload.line_detail.account),
37
37
  customer: payload.line_detail.customer != null &&
38
- payload.line_detail.customer.customer_id != null
38
+ getCustomerPayloadIdentifier(payload.line_detail.customer) != null
39
39
  ? toCustomerBase(payload.line_detail.customer, false)
40
40
  : undefined,
41
41
  vendor: payload.line_detail.vendor != null &&
@@ -1,7 +1,7 @@
1
1
  import { date } from '../../zeniDayJS';
2
2
  import { mapAccountBasePayloadToAccountBase, } from '../account/accountPayload';
3
3
  import { mapClassBasePayloadToClassBase, } from '../class/classPayload';
4
- import { toCustomerBase } from '../customer/customerPayload';
4
+ import { getCustomerPayloadIdentifier, toCustomerBase } from '../customer/customerPayload';
5
5
  import { toAISummary, } from '../transaction/payloadTypes/transactionLinePayload';
6
6
  import { getVendorPayloadIdentifier, mapVendorBasePayloadToVendorBase, } from '../vendor/vendorPayload';
7
7
  import { toActivityLogEventType, } from './transactionActivityLogState';
@@ -14,7 +14,10 @@ const toTransactionActivityLogLine = (line) => {
14
14
  class: line.accounting_class
15
15
  ? mapClassBasePayloadToClassBase(line.accounting_class)
16
16
  : undefined,
17
- customer: line.customer ? toCustomerBase(line.customer, false) : undefined,
17
+ customer: line.customer != null &&
18
+ getCustomerPayloadIdentifier(line.customer) != null
19
+ ? toCustomerBase(line.customer, false)
20
+ : undefined,
18
21
  vendor: line.vendor != null && getVendorPayloadIdentifier(line.vendor) != null
19
22
  ? mapVendorBasePayloadToVendorBase(line.vendor)
20
23
  : undefined,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.1.17",
3
+ "version": "5.1.19",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -33,6 +33,42 @@
33
33
  "require": "./lib/view/*.js"
34
34
  }
35
35
  },
36
+ "scripts": {
37
+ "clean": "rimraf lib",
38
+ "test:typecheck": "echo 'Typechecking test files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.typecheck.json",
39
+ "test:typecheck-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=2 ./scripts/tsc-modified-files.sh master tsconfig.typecheck.json",
40
+ "test:typecheck-mocks": "echo 'Typechecking mock files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.mocks.json",
41
+ "test:typecheck-mocks-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=2 ./scripts/tsc-modified-files.sh master tsconfig.mocks.json",
42
+ "test": "pnpm lint-modified-files && pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
43
+ "test:full": "pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
44
+ "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix",
45
+ "lint-modified-files": "chmod +x ./scripts/lint-modified-files.sh && ./scripts/lint-modified-files.sh",
46
+ "lint:fix-modified-files": "chmod +x ./scripts/lint-modified-files.sh && LINT_FIX=true ./scripts/lint-modified-files.sh",
47
+ "tsc-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && ./scripts/tsc-modified-files.sh",
48
+ "typecheck": "tsc --noEmit",
49
+ "find-dead-code": "ts-prune | grep -v '(used in module)'",
50
+ "find-unused-exports": "ts-unused-exports ./tsconfig.json",
51
+ "circular-dependency": "npx madge --circular --extensions ts ./src",
52
+ "build": "concurrently --kill-others-on-fail --handle-input \"echo 'TypeScript build in progress...' && time tsc && echo 'ESM build...' && tsc -p tsconfig.esm.json\" \"echo 'Running tests and typecheck (incl. lint-modified-files)...' && pnpm test\" && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
53
+ "only-build": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc && tsc -p tsconfig.esm.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
54
+ "only-build-dev": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc -p tsconfig.dev.json && tsc -p tsconfig.esm.dev.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
55
+ "format": "prettier --write --ignore-unknown \"src/**/*\" && pnpm lint",
56
+ "format-watch": "(git diff --name-only --diff-filter=ACM && git ls-files --others --exclude-standard) | grep -E '\\.(ts|tsx)$' | xargs prettier --write",
57
+ "check-version": "node ./scripts/check_version.js",
58
+ "prepublishOnly": "chmod +x ./scripts/branch_validation.sh && ./scripts/branch_validation.sh && pnpm update-slack-group-topic && pnpm run check-version && pnpm clean && pnpm build",
59
+ "version": "git add -A src",
60
+ "postversion": "git push && git push --tags",
61
+ "check-dependencies": "node ./scripts/check_dependencies.js",
62
+ "clean-overrides": "node ./scripts/clean_overrides.js",
63
+ "create-release-branch": "chmod +x ./scripts/create_release_branch.sh && ./scripts/create_release_branch.sh",
64
+ "bump-update-web-app-cockpit-beta": "chmod +x ./scripts/bump_and_update_web_app_ui_beta.sh && ./scripts/bump_and_update_web_app_ui_beta.sh",
65
+ "send-release-notes": "chmod +x ./scripts/send_release_notes.sh && ./scripts/send_release_notes.sh",
66
+ "update-slack-group-topic": "chmod +x ./scripts/update-slack-group-topic.sh && ./scripts/update-slack-group-topic.sh",
67
+ "build-beta-and-copy": "chmod +x ./scripts/build_and_copy.sh && ./scripts/build_and_copy.sh",
68
+ "pr-approvals-update": "chmod +x ./scripts/pr_approvals.sh && ./scripts/pr_approvals.sh",
69
+ "raise-pr-automation": "chmod +x ./scripts/raise_pr_automation.sh && ./scripts/raise_pr_automation.sh",
70
+ "test:file": "scripts/test-file.sh"
71
+ },
36
72
  "files": [
37
73
  "lib/**/*"
38
74
  ],
@@ -103,39 +139,32 @@
103
139
  "dayjs": "^1.10.7",
104
140
  "url-parse": "^1.5.10"
105
141
  },
106
- "scripts": {
107
- "clean": "rimraf lib",
108
- "test:typecheck": "echo 'Typechecking test files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.typecheck.json",
109
- "test:typecheck-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=2 ./scripts/tsc-modified-files.sh master tsconfig.typecheck.json",
110
- "test:typecheck-mocks": "echo 'Typechecking mock files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.mocks.json",
111
- "test:typecheck-mocks-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=2 ./scripts/tsc-modified-files.sh master tsconfig.mocks.json",
112
- "test": "pnpm lint-modified-files && pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
113
- "test:full": "pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
114
- "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix",
115
- "lint-modified-files": "chmod +x ./scripts/lint-modified-files.sh && ./scripts/lint-modified-files.sh",
116
- "lint:fix-modified-files": "chmod +x ./scripts/lint-modified-files.sh && LINT_FIX=true ./scripts/lint-modified-files.sh",
117
- "tsc-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && ./scripts/tsc-modified-files.sh",
118
- "typecheck": "tsc --noEmit",
119
- "find-dead-code": "ts-prune | grep -v '(used in module)'",
120
- "find-unused-exports": "ts-unused-exports ./tsconfig.json",
121
- "circular-dependency": "npx madge --circular --extensions ts ./src",
122
- "build": "concurrently --kill-others-on-fail --handle-input \"echo 'TypeScript build in progress...' && time tsc && echo 'ESM build...' && tsc -p tsconfig.esm.json\" \"echo 'Running tests and typecheck (incl. lint-modified-files)...' && pnpm test\" && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
123
- "only-build": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc && tsc -p tsconfig.esm.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
124
- "only-build-dev": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc -p tsconfig.dev.json && tsc -p tsconfig.esm.dev.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
125
- "format": "prettier --write --ignore-unknown \"src/**/*\" && pnpm lint",
126
- "format-watch": "(git diff --name-only --diff-filter=ACM && git ls-files --others --exclude-standard) | grep -E '\\.(ts|tsx)$' | xargs prettier --write",
127
- "check-version": "node ./scripts/check_version.js",
128
- "version": "git add -A src",
129
- "postversion": "git push && git push --tags",
130
- "check-dependencies": "node ./scripts/check_dependencies.js",
131
- "clean-overrides": "node ./scripts/clean_overrides.js",
132
- "create-release-branch": "chmod +x ./scripts/create_release_branch.sh && ./scripts/create_release_branch.sh",
133
- "bump-update-web-app-cockpit-beta": "chmod +x ./scripts/bump_and_update_web_app_ui_beta.sh && ./scripts/bump_and_update_web_app_ui_beta.sh",
134
- "send-release-notes": "chmod +x ./scripts/send_release_notes.sh && ./scripts/send_release_notes.sh",
135
- "update-slack-group-topic": "chmod +x ./scripts/update-slack-group-topic.sh && ./scripts/update-slack-group-topic.sh",
136
- "build-beta-and-copy": "chmod +x ./scripts/build_and_copy.sh && ./scripts/build_and_copy.sh",
137
- "pr-approvals-update": "chmod +x ./scripts/pr_approvals.sh && ./scripts/pr_approvals.sh",
138
- "raise-pr-automation": "chmod +x ./scripts/raise_pr_automation.sh && ./scripts/raise_pr_automation.sh",
139
- "test:file": "scripts/test-file.sh"
142
+ "pnpm": {
143
+ "overrides": {
144
+ "@babel/helpers": ">=7.26.10",
145
+ "@babel/runtime": ">=7.26.10",
146
+ "@babel/traverse": ">=7.23.2",
147
+ "@eslint/eslintrc>ajv": ">=6.14.0 <7",
148
+ "@eslint/plugin-kit": ">=0.3.4",
149
+ "@modelcontextprotocol/sdk": ">=1.25.2",
150
+ "ajv": ">=8.18.0",
151
+ "body-parser": ">=2.2.1",
152
+ "brace-expansion": ">=5.0.6",
153
+ "cross-spawn": ">=7.0.5",
154
+ "eslint>ajv": ">=6.14.0 <7",
155
+ "flatted": ">=3.4.2",
156
+ "glob": ">=11.1.0",
157
+ "hono": ">=4.11.4",
158
+ "immutable": ">=4.3.8 <5",
159
+ "js-yaml": ">=4.1.1",
160
+ "minimatch": ">=10.2.3",
161
+ "picomatch": ">=4.0.4",
162
+ "postcss": ">=8.5.12",
163
+ "qs": "^6.14.1",
164
+ "rollup": ">=4.59.0",
165
+ "tough-cookie": "=4.1.3",
166
+ "vite": ">=7.3.2 <8",
167
+ "yaml": ">=1.10.3"
168
+ }
140
169
  }
141
170
  }