2026-06-18 12:49:47 -04:00
|
|
|
{
|
|
|
|
|
"name": "@proposal-system/api-contracts",
|
|
|
|
|
"version": "0.1.0",
|
|
|
|
|
"lockfileVersion": 3,
|
|
|
|
|
"requires": true,
|
|
|
|
|
"packages": {
|
|
|
|
|
"": {
|
|
|
|
|
"name": "@proposal-system/api-contracts",
|
|
|
|
|
"version": "0.1.0",
|
feat(contracts): shared api-contracts adoption, zod schemas, ProblemDetails codes (#222)
* feat(web): adopt SHOC design system and shell layout (ADR 0003)
Port shoc-frontend-new dev's design system with its CSS-variable
single-token-source mechanism:
- src/styles/theme.css: SHOC token file ported verbatim (Montserrat/
DM Sans/JetBrains Mono, primary #1c75bc, navy #262262, full radius/
shadow/sidebar/header token layers); fonts self-hosted via @fontsource
- src/lib/theme/{css-vars,mui-theme}.ts: getCssVar -> createTheme
adapter mirroring SHOC's mui-theme.ts (palette, typography, shadows
tuple, component overrides; MUI v9 slot renames expressed as class
selectors); theme.ts is now a re-export
- Shell: SHOC composition (sidebar column + sticky gradient topbar +
scrolling main); sidebar 244px/76px collapse with brand header row,
grouped nav, SHOC active treatment (white card + 3px accent bar);
topbar 100-degree gradient, surface hamburger, gradient avatar pill
- Brand: SeahavenMark + BrandLockup ported (Tailwind re-expressed as
sx; wordmark subtitle localized to PROPOSAL SYSTEM)
- Login: SHOC auth-card treatment (centered 384px card on #f9fafb)
- Old "Sea Haven Ops" Inter/#2563EB theme and Nunito remnants removed;
remaining hardcoded hexes replaced with tokens; lucide-react for
shell/nav icons per SHOC convention
Verify: tsc clean, 26/26 vitest, vite build OK; Playwright screenshots
pixel-sampled against the extracted SHOC spec (all hard values exact,
no blocking deviations).
* feat(contracts): adopt shared api-contracts in web, add zod schemas and ProblemDetails codes
Closes WEB-M5 (web hand-duplicated wire types, standing drift risk):
- shared/api-contracts: rewritten as the authoritative superset of the
.NET DTOs (ProposalListItem/ProposalDetail with poNumber and
submittedByName, line item requests, customers, pricing library,
dashboard, audit, sites, auth, presigned upload, ApiProblem); stale
Proposal/UpdateLineItemsRequest shapes removed
- shared/api-contracts/src/schemas.ts: zod runtime schemas coupled to
every wire type via `satisfies z.ZodType<T>` (schema/type drift is now
a compile error); separate entrypoint so type-only consumers (mobile)
never pull zod
- web: imports @proposal-system/api-contracts (file: dep + tsconfig
paths + vite preserveSymlinks); all 7 lib/api modules re-export shared
types so page imports stay stable; enum unions tightened
(PricingLibraryPage form state now ServiceCategory-typed)
- fix(web): customer create/update sent a singular `address` field the
API silently dropped (contract is addresses: string[], CustomerDtos.cs)
- addresses now round-trip, extra addresses preserved on edit
- api: ProblemDetails responses carry a machine-readable top-level
`code` (SHOC error-code vocabulary): ValidationFailed,
InvalidStateTransition, NotFound, Unauthorized, InternalError; new
BusinessRuleException(code, message) maps to 422 with its code;
GlobalExceptionHandlerTests cover the full mapping (wire contract)
Cross-checked .NET DTOs vs TS types vs zod schemas with the
orchestrator scanner (Gemini): core domains consistent; internal-only
DTOs (FileDtos vendor/lambda surface, SimilarProposalDtos, UserDtos
admin surface) intentionally uncovered.
Verify: dotnet 166/166, web tsc + vitest 26/26 + build, mobile tsc,
shared tsc all green.
* fix(web): install shared api-contracts deps via postinstall
Web Frontend Check failed on PR #222: tsc compiles
shared/api-contracts/src/schemas.ts through the tsconfig path alias,
and module resolution for its zod import walks up from shared/, never
reaching web/node_modules. CI only ran npm ci in web/, so the shared
package's deps were absent. A postinstall hook installs them wherever
web's deps are installed (CI typecheck, web-test, deploy bundling).
Passed locally only because a stray repo-root node_modules/zod
satisfied the lookup.
2026-07-13 19:28:33 -04:00
|
|
|
"dependencies": {
|
|
|
|
|
"zod": "^4.4.3"
|
|
|
|
|
},
|
2026-06-18 12:49:47 -04:00
|
|
|
"devDependencies": {
|
build(deps): combine open Dependabot updates into one PR
Consolidates the 15 open Dependabot PRs (#195–#209) into a single branch.
Python (lambdas):
- boto3 -> >=1.43.43,<2.0 in suggestions, library-ingest, pdf-generate,
pdf-extract, aurora-pgvector-init (#203, #205, #206, #208, #204)
- tests: pytest >=9.1.1 (#198, major), pytest-mock >=3.15.1 (#197),
moto >=5.2.2 (#200), httpx >=0.28.1 (#195)
npm:
- infra: @types/node ^25.9.5 (#196), typescript ~7.0.2 (#199, major)
- web: vitest ^4.1.10 (#202), typescript ~7.0.2 (#207, major)
- shared/api-contracts: typescript ~7.0.2 (#201, major)
Ruby (mobile):
- bundler group: cocoapods 1.17.0, fastlane 2.237.0 + transitive (#209)
Note: TypeScript 5.7 -> 7.0.2 and pytest 8 -> 9.1.1 are major bumps;
relying on CI to validate.
2026-07-08 16:46:43 -04:00
|
|
|
"typescript": "~7.0.2"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-aix-ppc64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"ppc64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"aix"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-darwin-arm64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"darwin"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-darwin-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"darwin"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-freebsd-arm64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"freebsd"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-freebsd-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"freebsd"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-arm": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-arm64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-loong64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"loong64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-mips64el": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"mips64el"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-ppc64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"ppc64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-riscv64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"riscv64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-s390x": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"s390x"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-linux-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"linux"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-netbsd-arm64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"netbsd"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-netbsd-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"netbsd"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-openbsd-arm64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"openbsd"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-openbsd-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"openbsd"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-sunos-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"sunos"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-win32-arm64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"arm64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"win32"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/@typescript/typescript-win32-x64": {
|
|
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
|
|
|
|
|
"cpu": [
|
|
|
|
|
"x64"
|
|
|
|
|
],
|
|
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"optional": true,
|
|
|
|
|
"os": [
|
|
|
|
|
"win32"
|
|
|
|
|
],
|
|
|
|
|
"engines": {
|
|
|
|
|
"node": ">=16.20.0"
|
2026-06-18 12:49:47 -04:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"node_modules/typescript": {
|
build(deps): combine open Dependabot updates into one PR
Consolidates the 15 open Dependabot PRs (#195–#209) into a single branch.
Python (lambdas):
- boto3 -> >=1.43.43,<2.0 in suggestions, library-ingest, pdf-generate,
pdf-extract, aurora-pgvector-init (#203, #205, #206, #208, #204)
- tests: pytest >=9.1.1 (#198, major), pytest-mock >=3.15.1 (#197),
moto >=5.2.2 (#200), httpx >=0.28.1 (#195)
npm:
- infra: @types/node ^25.9.5 (#196), typescript ~7.0.2 (#199, major)
- web: vitest ^4.1.10 (#202), typescript ~7.0.2 (#207, major)
- shared/api-contracts: typescript ~7.0.2 (#201, major)
Ruby (mobile):
- bundler group: cocoapods 1.17.0, fastlane 2.237.0 + transitive (#209)
Note: TypeScript 5.7 -> 7.0.2 and pytest 8 -> 9.1.1 are major bumps;
relying on CI to validate.
2026-07-08 16:46:43 -04:00
|
|
|
"version": "7.0.2",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
|
|
|
|
|
"integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
|
2026-06-18 12:49:47 -04:00
|
|
|
"dev": true,
|
|
|
|
|
"license": "Apache-2.0",
|
|
|
|
|
"bin": {
|
build(deps): combine open Dependabot updates into one PR
Consolidates the 15 open Dependabot PRs (#195–#209) into a single branch.
Python (lambdas):
- boto3 -> >=1.43.43,<2.0 in suggestions, library-ingest, pdf-generate,
pdf-extract, aurora-pgvector-init (#203, #205, #206, #208, #204)
- tests: pytest >=9.1.1 (#198, major), pytest-mock >=3.15.1 (#197),
moto >=5.2.2 (#200), httpx >=0.28.1 (#195)
npm:
- infra: @types/node ^25.9.5 (#196), typescript ~7.0.2 (#199, major)
- web: vitest ^4.1.10 (#202), typescript ~7.0.2 (#207, major)
- shared/api-contracts: typescript ~7.0.2 (#201, major)
Ruby (mobile):
- bundler group: cocoapods 1.17.0, fastlane 2.237.0 + transitive (#209)
Note: TypeScript 5.7 -> 7.0.2 and pytest 8 -> 9.1.1 are major bumps;
relying on CI to validate.
2026-07-08 16:46:43 -04:00
|
|
|
"tsc": "bin/tsc"
|
2026-06-18 12:49:47 -04:00
|
|
|
},
|
|
|
|
|
"engines": {
|
build(deps): combine open Dependabot updates into one PR
Consolidates the 15 open Dependabot PRs (#195–#209) into a single branch.
Python (lambdas):
- boto3 -> >=1.43.43,<2.0 in suggestions, library-ingest, pdf-generate,
pdf-extract, aurora-pgvector-init (#203, #205, #206, #208, #204)
- tests: pytest >=9.1.1 (#198, major), pytest-mock >=3.15.1 (#197),
moto >=5.2.2 (#200), httpx >=0.28.1 (#195)
npm:
- infra: @types/node ^25.9.5 (#196), typescript ~7.0.2 (#199, major)
- web: vitest ^4.1.10 (#202), typescript ~7.0.2 (#207, major)
- shared/api-contracts: typescript ~7.0.2 (#201, major)
Ruby (mobile):
- bundler group: cocoapods 1.17.0, fastlane 2.237.0 + transitive (#209)
Note: TypeScript 5.7 -> 7.0.2 and pytest 8 -> 9.1.1 are major bumps;
relying on CI to validate.
2026-07-08 16:46:43 -04:00
|
|
|
"node": ">=16.20.0"
|
|
|
|
|
},
|
|
|
|
|
"optionalDependencies": {
|
|
|
|
|
"@typescript/typescript-aix-ppc64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-darwin-arm64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-darwin-x64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-freebsd-arm64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-freebsd-x64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-arm": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-arm64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-loong64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-mips64el": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-ppc64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-riscv64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-s390x": "7.0.2",
|
|
|
|
|
"@typescript/typescript-linux-x64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-netbsd-arm64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-netbsd-x64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-openbsd-arm64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-openbsd-x64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-sunos-x64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-win32-arm64": "7.0.2",
|
|
|
|
|
"@typescript/typescript-win32-x64": "7.0.2"
|
2026-06-18 12:49:47 -04:00
|
|
|
}
|
feat(contracts): shared api-contracts adoption, zod schemas, ProblemDetails codes (#222)
* feat(web): adopt SHOC design system and shell layout (ADR 0003)
Port shoc-frontend-new dev's design system with its CSS-variable
single-token-source mechanism:
- src/styles/theme.css: SHOC token file ported verbatim (Montserrat/
DM Sans/JetBrains Mono, primary #1c75bc, navy #262262, full radius/
shadow/sidebar/header token layers); fonts self-hosted via @fontsource
- src/lib/theme/{css-vars,mui-theme}.ts: getCssVar -> createTheme
adapter mirroring SHOC's mui-theme.ts (palette, typography, shadows
tuple, component overrides; MUI v9 slot renames expressed as class
selectors); theme.ts is now a re-export
- Shell: SHOC composition (sidebar column + sticky gradient topbar +
scrolling main); sidebar 244px/76px collapse with brand header row,
grouped nav, SHOC active treatment (white card + 3px accent bar);
topbar 100-degree gradient, surface hamburger, gradient avatar pill
- Brand: SeahavenMark + BrandLockup ported (Tailwind re-expressed as
sx; wordmark subtitle localized to PROPOSAL SYSTEM)
- Login: SHOC auth-card treatment (centered 384px card on #f9fafb)
- Old "Sea Haven Ops" Inter/#2563EB theme and Nunito remnants removed;
remaining hardcoded hexes replaced with tokens; lucide-react for
shell/nav icons per SHOC convention
Verify: tsc clean, 26/26 vitest, vite build OK; Playwright screenshots
pixel-sampled against the extracted SHOC spec (all hard values exact,
no blocking deviations).
* feat(contracts): adopt shared api-contracts in web, add zod schemas and ProblemDetails codes
Closes WEB-M5 (web hand-duplicated wire types, standing drift risk):
- shared/api-contracts: rewritten as the authoritative superset of the
.NET DTOs (ProposalListItem/ProposalDetail with poNumber and
submittedByName, line item requests, customers, pricing library,
dashboard, audit, sites, auth, presigned upload, ApiProblem); stale
Proposal/UpdateLineItemsRequest shapes removed
- shared/api-contracts/src/schemas.ts: zod runtime schemas coupled to
every wire type via `satisfies z.ZodType<T>` (schema/type drift is now
a compile error); separate entrypoint so type-only consumers (mobile)
never pull zod
- web: imports @proposal-system/api-contracts (file: dep + tsconfig
paths + vite preserveSymlinks); all 7 lib/api modules re-export shared
types so page imports stay stable; enum unions tightened
(PricingLibraryPage form state now ServiceCategory-typed)
- fix(web): customer create/update sent a singular `address` field the
API silently dropped (contract is addresses: string[], CustomerDtos.cs)
- addresses now round-trip, extra addresses preserved on edit
- api: ProblemDetails responses carry a machine-readable top-level
`code` (SHOC error-code vocabulary): ValidationFailed,
InvalidStateTransition, NotFound, Unauthorized, InternalError; new
BusinessRuleException(code, message) maps to 422 with its code;
GlobalExceptionHandlerTests cover the full mapping (wire contract)
Cross-checked .NET DTOs vs TS types vs zod schemas with the
orchestrator scanner (Gemini): core domains consistent; internal-only
DTOs (FileDtos vendor/lambda surface, SimilarProposalDtos, UserDtos
admin surface) intentionally uncovered.
Verify: dotnet 166/166, web tsc + vitest 26/26 + build, mobile tsc,
shared tsc all green.
* fix(web): install shared api-contracts deps via postinstall
Web Frontend Check failed on PR #222: tsc compiles
shared/api-contracts/src/schemas.ts through the tsconfig path alias,
and module resolution for its zod import walks up from shared/, never
reaching web/node_modules. CI only ran npm ci in web/, so the shared
package's deps were absent. A postinstall hook installs them wherever
web's deps are installed (CI typecheck, web-test, deploy bundling).
Passed locally only because a stray repo-root node_modules/zod
satisfied the lookup.
2026-07-13 19:28:33 -04:00
|
|
|
},
|
|
|
|
|
"node_modules/zod": {
|
|
|
|
|
"version": "4.4.3",
|
|
|
|
|
"resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
|
|
|
|
|
"integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
|
|
|
|
|
"license": "MIT",
|
|
|
|
|
"funding": {
|
|
|
|
|
"url": "https://github.com/sponsors/colinhacks"
|
|
|
|
|
}
|
2026-06-18 12:49:47 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|