prisma-schema-auditor 1.0.1
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.
- package/LICENSE +21 -0
- package/README.md +62 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +132 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/analysis/computeKeys.d.ts +13 -0
- package/dist/core/analysis/computeKeys.d.ts.map +1 -0
- package/dist/core/analysis/computeKeys.js +27 -0
- package/dist/core/analysis/computeKeys.js.map +1 -0
- package/dist/core/analysis/inferFds.d.ts +31 -0
- package/dist/core/analysis/inferFds.d.ts.map +1 -0
- package/dist/core/analysis/inferFds.js +87 -0
- package/dist/core/analysis/inferFds.js.map +1 -0
- package/dist/core/analysis/normalizeChecks/check1nf.d.ts +11 -0
- package/dist/core/analysis/normalizeChecks/check1nf.d.ts.map +1 -0
- package/dist/core/analysis/normalizeChecks/check1nf.js +91 -0
- package/dist/core/analysis/normalizeChecks/check1nf.js.map +1 -0
- package/dist/core/analysis/normalizeChecks/check2nf.d.ts +13 -0
- package/dist/core/analysis/normalizeChecks/check2nf.d.ts.map +1 -0
- package/dist/core/analysis/normalizeChecks/check2nf.js +80 -0
- package/dist/core/analysis/normalizeChecks/check2nf.js.map +1 -0
- package/dist/core/analysis/normalizeChecks/check3nf.d.ts +18 -0
- package/dist/core/analysis/normalizeChecks/check3nf.d.ts.map +1 -0
- package/dist/core/analysis/normalizeChecks/check3nf.js +71 -0
- package/dist/core/analysis/normalizeChecks/check3nf.js.map +1 -0
- package/dist/core/invariants/parse.d.ts +19 -0
- package/dist/core/invariants/parse.d.ts.map +1 -0
- package/dist/core/invariants/parse.js +73 -0
- package/dist/core/invariants/parse.js.map +1 -0
- package/dist/core/invariants/schema.d.ts +24 -0
- package/dist/core/invariants/schema.d.ts.map +1 -0
- package/dist/core/invariants/schema.js +20 -0
- package/dist/core/invariants/schema.js.map +1 -0
- package/dist/core/prismaSchema/contract.d.ts +8 -0
- package/dist/core/prismaSchema/contract.d.ts.map +1 -0
- package/dist/core/prismaSchema/contract.js +107 -0
- package/dist/core/prismaSchema/contract.js.map +1 -0
- package/dist/core/prismaSchema/parse.d.ts +8 -0
- package/dist/core/prismaSchema/parse.d.ts.map +1 -0
- package/dist/core/prismaSchema/parse.js +46 -0
- package/dist/core/prismaSchema/parse.js.map +1 -0
- package/dist/core/prismaSchema/types.d.ts +39 -0
- package/dist/core/prismaSchema/types.d.ts.map +1 -0
- package/dist/core/prismaSchema/types.js +2 -0
- package/dist/core/prismaSchema/types.js.map +1 -0
- package/dist/core/report/reportTypes.d.ts +72 -0
- package/dist/core/report/reportTypes.d.ts.map +1 -0
- package/dist/core/report/reportTypes.js +2 -0
- package/dist/core/report/reportTypes.js.map +1 -0
- package/dist/core/report/toJson.d.ts +7 -0
- package/dist/core/report/toJson.d.ts.map +1 -0
- package/dist/core/report/toJson.js +27 -0
- package/dist/core/report/toJson.js.map +1 -0
- package/dist/core/report/toText.d.ts +6 -0
- package/dist/core/report/toText.d.ts.map +1 -0
- package/dist/core/report/toText.js +46 -0
- package/dist/core/report/toText.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/util/index.d.ts +5 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +15 -0
- package/dist/util/index.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toText.d.ts","sourceRoot":"","sources":["../../../src/core/report/toText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+ClD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format an AuditResult as human-readable text.
|
|
3
|
+
*/
|
|
4
|
+
export function toText(result) {
|
|
5
|
+
const lines = [];
|
|
6
|
+
lines.push('=== Prisma Schema Audit ===');
|
|
7
|
+
lines.push('');
|
|
8
|
+
if (result.metadata.timestamp !== null) {
|
|
9
|
+
lines.push(`Timestamp: ${result.metadata.timestamp}`);
|
|
10
|
+
}
|
|
11
|
+
lines.push(`Schema: ${result.metadata.schemaPath}`);
|
|
12
|
+
lines.push(`Models: ${String(result.metadata.modelCount)}`);
|
|
13
|
+
lines.push(`Findings: ${String(result.metadata.findingCount)}`);
|
|
14
|
+
lines.push('');
|
|
15
|
+
// Contract summary
|
|
16
|
+
lines.push('--- Constraint Contract ---');
|
|
17
|
+
for (const model of result.contract.models) {
|
|
18
|
+
lines.push(` Model: ${model.name}`);
|
|
19
|
+
if (model.primaryKey !== null) {
|
|
20
|
+
lines.push(` PK: (${model.primaryKey.fields.join(', ')})`);
|
|
21
|
+
}
|
|
22
|
+
for (const uq of model.uniqueConstraints) {
|
|
23
|
+
const label = uq.name !== null ? ` [${uq.name}]` : '';
|
|
24
|
+
lines.push(` Unique${label}: (${uq.fields.join(', ')})`);
|
|
25
|
+
}
|
|
26
|
+
for (const fk of model.foreignKeys) {
|
|
27
|
+
lines.push(` FK: (${fk.fields.join(', ')}) -> ${fk.referencedModel}(${fk.referencedFields.join(', ')}) onDelete=${fk.onDelete} onUpdate=${fk.onUpdate}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
lines.push('');
|
|
31
|
+
// Findings
|
|
32
|
+
if (result.findings.length > 0) {
|
|
33
|
+
lines.push('--- Findings ---');
|
|
34
|
+
for (const f of result.findings) {
|
|
35
|
+
const field = f.field !== null ? `.${f.field}` : '';
|
|
36
|
+
lines.push(` [${f.severity.toUpperCase()}] ${f.rule} @ ${f.model}${field}`);
|
|
37
|
+
lines.push(` ${f.message}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
lines.push('No normalization findings.');
|
|
42
|
+
}
|
|
43
|
+
lines.push('');
|
|
44
|
+
return lines.join('\n');
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=toText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toText.js","sourceRoot":"","sources":["../../../src/core/report/toText.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type { AuditResult, AuditMetadata, ConstraintContract, ModelContract, FieldContract, PrimaryKeyConstraint, UniqueConstraint, ForeignKeyConstraint, Finding, RuleCode, Severity, NormalForm, OutputFormat, ReferentialAction, } from './core/report/reportTypes.js';
|
|
2
|
+
export type { AuditModel, AuditField, AuditPrimaryKey, AuditUniqueIndex, ParseResult, } from './core/prismaSchema/types.js';
|
|
3
|
+
export type { FunctionalDependency } from './core/analysis/inferFds.js';
|
|
4
|
+
export type { CandidateKey } from './core/analysis/computeKeys.js';
|
|
5
|
+
export type { InvariantsFile, InvariantFd } from './core/invariants/schema.js';
|
|
6
|
+
import type { AuditResult } from './core/report/reportTypes.js';
|
|
7
|
+
/** Options for the audit function. */
|
|
8
|
+
export interface AuditOptions {
|
|
9
|
+
readonly schemaPath: string;
|
|
10
|
+
readonly invariantsPath?: string | undefined;
|
|
11
|
+
readonly noTimestamp?: boolean | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Run a full audit on a Prisma schema file.
|
|
15
|
+
* Returns the constraint contract and normalization findings.
|
|
16
|
+
*/
|
|
17
|
+
export declare function audit(schemaPathOrOptions: string | AuditOptions, noTimestamp?: boolean): Promise<AuditResult>;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS/E,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,8BAA8B,CAAC;AAEzE,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAsB,KAAK,CACzB,mBAAmB,EAAE,MAAM,GAAG,YAAY,EAC1C,WAAW,UAAQ,GAClB,OAAO,CAAC,WAAW,CAAC,CAuCtB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { parseSchema } from './core/prismaSchema/parse.js';
|
|
2
|
+
import { extractContract } from './core/prismaSchema/contract.js';
|
|
3
|
+
import { inferFunctionalDependencies } from './core/analysis/inferFds.js';
|
|
4
|
+
import { check1nf } from './core/analysis/normalizeChecks/check1nf.js';
|
|
5
|
+
import { check2nf } from './core/analysis/normalizeChecks/check2nf.js';
|
|
6
|
+
import { check3nf } from './core/analysis/normalizeChecks/check3nf.js';
|
|
7
|
+
import { parseInvariantsFile, invariantsToFds, validateInvariantsAgainstContract } from './core/invariants/parse.js';
|
|
8
|
+
/**
|
|
9
|
+
* Run a full audit on a Prisma schema file.
|
|
10
|
+
* Returns the constraint contract and normalization findings.
|
|
11
|
+
*/
|
|
12
|
+
export async function audit(schemaPathOrOptions, noTimestamp = false) {
|
|
13
|
+
const options = typeof schemaPathOrOptions === 'string'
|
|
14
|
+
? { schemaPath: schemaPathOrOptions, noTimestamp }
|
|
15
|
+
: schemaPathOrOptions;
|
|
16
|
+
const shouldOmitTimestamp = options.noTimestamp === true;
|
|
17
|
+
const parsed = await parseSchema(options.schemaPath);
|
|
18
|
+
const contract = extractContract(parsed);
|
|
19
|
+
const schemaFds = inferFunctionalDependencies(contract);
|
|
20
|
+
// Merge invariant-declared FDs if provided
|
|
21
|
+
let allFds = schemaFds;
|
|
22
|
+
let invariantFindings = [];
|
|
23
|
+
if (options.invariantsPath !== undefined) {
|
|
24
|
+
const invariants = parseInvariantsFile(options.invariantsPath);
|
|
25
|
+
const invariantFds = invariantsToFds(invariants);
|
|
26
|
+
allFds = [...schemaFds, ...invariantFds];
|
|
27
|
+
invariantFindings = validateInvariantsAgainstContract(invariants, contract);
|
|
28
|
+
}
|
|
29
|
+
const findings = [
|
|
30
|
+
...check1nf(contract),
|
|
31
|
+
...check2nf(contract, allFds),
|
|
32
|
+
...check3nf(contract, allFds),
|
|
33
|
+
...invariantFindings,
|
|
34
|
+
];
|
|
35
|
+
return {
|
|
36
|
+
contract,
|
|
37
|
+
findings,
|
|
38
|
+
metadata: {
|
|
39
|
+
schemaPath: options.schemaPath,
|
|
40
|
+
timestamp: shouldOmitTimestamp ? null : new Date().toISOString(),
|
|
41
|
+
modelCount: contract.models.length,
|
|
42
|
+
findingCount: findings.length,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAUrH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,mBAA0C,EAC1C,WAAW,GAAG,KAAK;IAEnB,MAAM,OAAO,GACX,OAAO,mBAAmB,KAAK,QAAQ;QACrC,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE;QAClD,CAAC,CAAC,mBAAmB,CAAC;IAE1B,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;IAEzD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAExD,2CAA2C;IAC3C,IAAI,MAAM,GAAG,SAAS,CAAC;IACvB,IAAI,iBAAiB,GAAuB,EAAE,CAAC;IAC/C,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC;QACzC,iBAAiB,GAAG,iCAAiC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACrB,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC7B,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC7B,GAAG,iBAAiB;KACrB,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,QAAQ,EAAE;YACR,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAChE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;YAClC,YAAY,EAAE,QAAQ,CAAC,MAAM;SAC9B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CAQ5E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sort an array by a key function. Returns a new array.
|
|
3
|
+
*/
|
|
4
|
+
export function sortBy(arr, keyFn) {
|
|
5
|
+
return [...arr].sort((a, b) => {
|
|
6
|
+
const ka = keyFn(a);
|
|
7
|
+
const kb = keyFn(b);
|
|
8
|
+
if (ka < kb)
|
|
9
|
+
return -1;
|
|
10
|
+
if (ka > kb)
|
|
11
|
+
return 1;
|
|
12
|
+
return 0;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,MAAM,CAAI,GAAiB,EAAE,KAA0B;IACrE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "prisma-schema-auditor",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Static analysis for Prisma schemas: deterministic constraint contracts + normalization lint findings (1NF/2NF; 3NF+ via invariants)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"prisma-schema-auditor": "./dist/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"README.md",
|
|
21
|
+
"CHANGELOG.md"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"typecheck": "tsc -p tsconfig.test.json",
|
|
26
|
+
"lint": "eslint src tests",
|
|
27
|
+
"lint:fix": "eslint src tests --fix",
|
|
28
|
+
"knip": "knip",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"test:coverage": "vitest run --coverage",
|
|
32
|
+
"ci": "pnpm audit --prod && pnpm run typecheck && pnpm run lint && pnpm run knip && pnpm run test",
|
|
33
|
+
"prepublishOnly": "pnpm run build",
|
|
34
|
+
"version": "pnpm run build"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"prisma",
|
|
38
|
+
"schema",
|
|
39
|
+
"audit",
|
|
40
|
+
"normalization",
|
|
41
|
+
"constraint",
|
|
42
|
+
"1nf",
|
|
43
|
+
"2nf",
|
|
44
|
+
"3nf",
|
|
45
|
+
"static-analysis",
|
|
46
|
+
"typescript"
|
|
47
|
+
],
|
|
48
|
+
"author": "EddieRydell",
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "git+https://github.com/EddieRydell/prisma-schema-auditor.git"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://github.com/EddieRydell/prisma-schema-auditor#readme",
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/EddieRydell/prisma-schema-auditor/issues"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@prisma/internals": ">=7.0.0",
|
|
60
|
+
"prisma": ">=7.0.0"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@eslint/js": "^9.0.0",
|
|
64
|
+
"@prisma/internals": "^7.0.0",
|
|
65
|
+
"@types/node": "^25.2.1",
|
|
66
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
67
|
+
"eslint": "^9.0.0",
|
|
68
|
+
"knip": "^5.0.0",
|
|
69
|
+
"prisma": "^7.0.0",
|
|
70
|
+
"semantic-release": "^25.0.3",
|
|
71
|
+
"typescript": "^5.7.0",
|
|
72
|
+
"typescript-eslint": "^8.0.0",
|
|
73
|
+
"vitest": "^4.0.18"
|
|
74
|
+
},
|
|
75
|
+
"publishConfig": {
|
|
76
|
+
"access": "public"
|
|
77
|
+
},
|
|
78
|
+
"engines": {
|
|
79
|
+
"node": ">=18"
|
|
80
|
+
},
|
|
81
|
+
"dependencies": {
|
|
82
|
+
"zod": "^4.3.6"
|
|
83
|
+
}
|
|
84
|
+
}
|