{ "name": "openbooks", "version": "0.1.0-alpha.37.10", "private": true, "license": "AGPL-3.0-or-later", "workspaces": [ "schema", "engine", "web", "packages/*" ], "devDependencies": { "@axe-core/playwright": "4.12.1", "@playwright/test": "^1.62.0", "esbuild": "0.25.12", "eslint": "9.39.4", "eslint-config-next": "16.3.0", "next": "16.4.3", "prettier": "3.9.5", "typescript": "6.0.3" }, "overrides": { "@modelcontextprotocol/sdk": "1.32.1", "@ai-sdk/gateway": "3.0.150", "@ai-sdk/provider-utils": "4.0.39", "exceljs": { "uuid": "11.1.1" }, "minimatch@3.1.5": { "brace-expansion": "1.1.21" }, "minimatch@5.1.9": { "brace-expansion": "2.1.7" }, "next": { ".": "16.4.3", "postcss": "8.5.26", "sharp": "0.35.5", "nanoid": "3.3.18" }, "hono": "4.13.11", "fast-uri": "3.1.9", "body-parser": "2.4.0", "ip-address": "10.7.5", "qs": "6.16.2", "dompurify": "3.4.17", "undici": "8.12.3", "@tailwindcss/typography": { "postcss-selector-parser": "7.1.6" } }, "engines": { "node": "24.x" }, "scripts": { "icons:generate": "node scripts/generate-pwa-icons.mjs", "worker": "tsx --conditions=react-server --tsconfig web/tsconfig.json scripts/worker-entry.mts", "lint": "node scripts/lint.mjs --max-warnings=0", "typecheck:e2e": "tsc --project e2e/tsconfig.json", "typecheck:scripts": "tsc --project scripts/tsconfig.json", "check:dependencies": "npm audit --omit=dev --audit-level=moderate", "check:history-hygiene": "node scripts/check-history-hygiene.mjs", "check:internal-ids": "node scripts/check-internal-ids.mjs", "check:journal-status-filter": "node scripts/check-journal-status-filter.mjs", "check:repository-artifacts": "node scripts/check-repository-artifacts.mjs", "check:product-neutrality": "node scripts/check-product-neutrality.mjs", "check:country-neutrality": "node scripts/check-country-neutrality.mjs", "check:credential-fetch-redirects": "node scripts/check-credential-fetch-redirects.mjs", "check:container-security": "node scripts/check-container-security.mjs", "check:explicit-any": "node scripts/check-explicit-any.mjs", "check:payroll-treatment-bases": "node scripts/check-payroll-treatment-bases.mjs", "check:fetch-response-parse": "node scripts/check-fetch-response-parse.mjs", "check:viewer-locale": "node scripts/check-viewer-locale.mjs", "check:money-number-conversion": "node scripts/check-money-number-conversion.mjs", "check:money-brand": "node scripts/check-money-brand.mjs", "check:security-jsx-copy": "node scripts/check-security-jsx-copy.mjs", "check:civil-date-arithmetic": "node scripts/check-civil-date-arithmetic.mjs", "check:migration-headers": "node scripts/check-migration-headers.mjs", "check:test-source-pins": "node scripts/check-test-source-pins.mjs", "check:tx-concurrency": "node scripts/check-tx-concurrency.mjs", "check:session-advisory-locks": "node scripts/check-session-advisory-locks.mjs", "check:org-wide-config-scope": "node scripts/check-org-wide-config-scope.mjs", "check:api-error-sanitization": "node scripts/check-api-error-sanitization.mjs", "check:uuid-shapes": "node scripts/check-uuid-shapes.mjs", "check:sql-raw-interpolation": "node scripts/check-sql-raw-interpolation.mjs", "check:migration-preflights": "node scripts/check-migration-preflights.mjs", "check:rls-bypass-predicate": "node scripts/check-rls-bypass-predicate.mjs", "check:bypass-justification": "node scripts/check-bypass-justification.mjs", "check:route-permission-coverage": "node scripts/check-route-permission-coverage.mjs", "check:report-catalog-strings": "node --import tsx scripts/check-report-catalog-strings.mjs", "upgrade:check": "node --import tsx scripts/bootstrap.ts --check", "test:load-harness": "node --test scripts/load-smoke.test.mjs", "test:load": "node scripts/load-smoke.mjs", "check:on-conflict-justification": "node scripts/check-on-conflict-justification.mjs", "check:static": "npm run check:container-security && npm run check:engine-boundaries && npm run check:source-path-references && npm run check:product-neutrality && npm run check:country-neutrality && npm run check:credential-fetch-redirects && npm run check:repository-artifacts && npm run check:internal-ids && npm run check:payroll-treatment-bases && npm run check:fetch-response-parse && npm run check:viewer-locale && npm run check:money-number-conversion && npm run check:money-brand && npm run check:civil-date-arithmetic && npm run check:civil-date-validation && npm run check:migration-headers && npm run check:migration-preflights && npm run check:rls-bypass-predicate && npm run check:bypass-justification && npm run check:on-conflict-justification && npm run check:test-source-pins && npm run check:tenant-table-policies && npm run check:client-server-imports && npm run check:test-mock-surface && npm run check:session-advisory-locks && npm run check:uuid-shapes && npm run check:sql-raw-interpolation && npm run check:org-wide-config-scope && npm run check:journal-status-filter && npm run check:keyboard-table-rows && npm run check:ledger-journal-writes && npm run check:route-permission-coverage && npm run check:report-catalog-strings && npm run check:ui-reuse && npm run check:tx-concurrency && npm run check:api-error-sanitization && npm run check:test-bypass-scope && npm run check:scratch-org-lease-shape && npm run check:format", "test": "npm run check:static && NODE_ENV=test OPENBOOKS_DB_URL= OPENBOOKS_DATA_KEY=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f OPENBOOKS_TRUSTED_TEST_BYPASS=1 node scripts/test-suite.mjs unit && NODE_ENV=test OPENBOOKS_DATA_KEY=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f OPENBOOKS_TRUSTED_TEST_BYPASS=1 node scripts/test-suite.mjs integration && npm run check:security-jsx-copy", "test:unit": "npm run check:static && NODE_ENV=test OPENBOOKS_DB_URL= OPENBOOKS_DATA_KEY=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f OPENBOOKS_TRUSTED_TEST_BYPASS=1 node scripts/test-suite.mjs unit && npm run check:security-jsx-copy", "test:integration": "NODE_ENV=test OPENBOOKS_DATA_KEY=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f OPENBOOKS_TRUSTED_TEST_BYPASS=1 node scripts/test-suite.mjs integration", "test:mutation": "NODE_ENV=test OPENBOOKS_DATA_KEY=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f OPENBOOKS_TRUSTED_TEST_BYPASS=1 node --import tsx engine/src/harness/mutation/cli.ts --sample 25 --timeout-secs 240", "verify:release": "npm run check:repository-artifacts && npm run check:engine-boundaries && npm run check:source-path-references && npm run check:dependencies && npm run check:container-security && npm run check:explicit-any && npm run lint && npm run typecheck:e2e && npm run typecheck --workspaces --if-present && npm run typecheck:scripts && npm test && npm -w web run build", "verify:release:quick": "npm run check:repository-artifacts && npm run check:engine-boundaries && npm run check:source-path-references && npm run check:dependencies && npm run check:container-security && npm run check:explicit-any && npm run lint && npm run typecheck:e2e && npm run typecheck --workspaces --if-present && npm run typecheck:scripts && npm -w web run build", "verify:release:full": "npm run check:repository-artifacts && npm run check:engine-boundaries && npm run check:source-path-references && npm run check:dependencies && npm run check:container-security && npm run check:explicit-any && npm run lint && npm run typecheck:e2e && npm run typecheck --workspaces --if-present && npm run typecheck:scripts && npm test && npm -w web run build", "verify:release:checks": "npm run check:repository-artifacts && npm run check:engine-boundaries && npm run check:source-path-references && npm run check:dependencies && npm run check:container-security && npm run check:explicit-any && npm run lint && npm run typecheck:e2e && npm run typecheck:scripts", "check:engine-boundaries": "node scripts/check-engine-boundaries.mjs && npm run check:engine-public-api", "check:source-path-references": "node scripts/check-source-path-references.mjs", "check:civil-date-validation": "node scripts/check-civil-date-validation.mjs", "check:keyboard-table-rows": "node scripts/check-keyboard-table-rows.mjs", "check:tenant-table-policies": "node scripts/check-tenant-table-policies.mjs", "check:client-server-imports": "node scripts/check-client-server-imports.mjs", "check:test-mock-surface": "node scripts/check-test-mock-surface.mjs", "check:scratch-org-lease-shape": "node scripts/check-scratch-org-lease-shape.mjs", "check:test-bypass-scope": "node scripts/check-test-bypass-scope.mjs", "check:ledger-journal-writes": "node scripts/check-ledger-journal-writes.mjs", "check:ui-reuse": "node scripts/check-ui-reuse.mjs", "check:engine-public-api": "node scripts/check-engine-public-api.mjs", "format": "prettier --write", "format:check": "prettier --check", "check:format": "prettier --check --cache \"**/*.{ts,tsx,mts,cts,js,mjs,cjs,jsx,css}\"" }, "allowScripts": { "@parcel/watcher@2.5.6": true, "cpu-features@0.0.10": true, "esbuild@0.25.12": true, "esbuild@0.28.1": true, "fsevents@2.3.3": true, "fsevents@2.3.2": true, "msgpackr-extract@3.0.4": true, "@swc/core@1.15.43": true, "ssh2@1.17.0": true, "unrs-resolver@1.12.2": true } }