Tags: finom/vovk
Tags
feat: kebab-case file naming across packages, scaffolding, and tests (#… …23) * feat(vovk): kebab-case source file naming with aliased subpath exports Rename all camelCase/PascalCase source files (47 files, openAPIToVovkSchema/ dir) to kebab-case; dist mirrors src, so the subpaths become vovk/create-rpc and vovk/create-validate-on-client. The old vovk/createRPC and vovk/createValidateOnClient specifiers remain as exports-map aliases pointing at the same files until the next major. Generated clients now default to vovk/create-rpc. Version anchored at 3.6.0 so workspace installs satisfy the new peer ranges. * feat(vovk-cli): kebab-case scaffolding, template dirs, and generated-client imports - vovk new scaffolds user-controller.ts / user-service.ts (classes stay PascalCase); module dirs use kebab-case; custom user templates keep naming themselves - abort with a hint when a module exists under the pre-kebab naming, so legacy projects don't end up with duplicate classes - client-templates dirs renamed (tsBase -> ts-base etc., incl. vovk-python and vovk-rust); template NAMES in fromTemplates/extends/requires are unchanged - generated clients import vovk/create-rpc; vovk peer range bumped to >=3.6.0 (first version shipping the kebab subpaths) * refactor(vovk-ajv): import vovk/create-validate-on-client Peer range bumped to vovk >=3.6.0 (first version shipping the subpath). * refactor(test): rename test workspace files to kebab-case Fixtures under src/modules/generated are regenerated by the scaffolder and verified idempotent; adds a regression test asserting vovk/createRPC and vovk/createValidateOnClient stay importable as aliases of the kebab subpaths until the next major. * docs: update file-name references to kebab-case * chore: regenerate root lockfile * fix(deps): defer vovk peer floor bump until 3.6.0 is published bun's resolver (verified with 1.3.14) spins in an infinite CPU loop when a peerDependencies range is only satisfiable by a file:-linked package and no published version matches — vovk >=3.6.0 while the registry tops out at 3.5.0 hung all four CI jobs for 6 hours inside the bun init tests. Keep the peer floor at the registry-satisfiable >=3.0.0 for now; bump to >=3.6.0 in a follow-up once vovk 3.6.0 is on npm, before vovk-cli/vovk-ajv are published. * ci: add 45-minute job timeout The default 6-hour limit let a hung bun install burn 24 runner-hours before failing. Normal runs finish well under 45 minutes. * ci: free runner disk space on ubuntu The second yarn init test hit ENOSPC: yarn copies packages/vovk-cli — including the Next.js project caches accumulated by earlier specs — into its cache and into node_modules on every file: install, and stock ubuntu runners only have ~14 GB free. Removing the unused preinstalled toolchains reclaims ~25-30 GB.
feat: kebab-case file naming across packages, scaffolding, and tests (#… …23) * feat(vovk): kebab-case source file naming with aliased subpath exports Rename all camelCase/PascalCase source files (47 files, openAPIToVovkSchema/ dir) to kebab-case; dist mirrors src, so the subpaths become vovk/create-rpc and vovk/create-validate-on-client. The old vovk/createRPC and vovk/createValidateOnClient specifiers remain as exports-map aliases pointing at the same files until the next major. Generated clients now default to vovk/create-rpc. Version anchored at 3.6.0 so workspace installs satisfy the new peer ranges. * feat(vovk-cli): kebab-case scaffolding, template dirs, and generated-client imports - vovk new scaffolds user-controller.ts / user-service.ts (classes stay PascalCase); module dirs use kebab-case; custom user templates keep naming themselves - abort with a hint when a module exists under the pre-kebab naming, so legacy projects don't end up with duplicate classes - client-templates dirs renamed (tsBase -> ts-base etc., incl. vovk-python and vovk-rust); template NAMES in fromTemplates/extends/requires are unchanged - generated clients import vovk/create-rpc; vovk peer range bumped to >=3.6.0 (first version shipping the kebab subpaths) * refactor(vovk-ajv): import vovk/create-validate-on-client Peer range bumped to vovk >=3.6.0 (first version shipping the subpath). * refactor(test): rename test workspace files to kebab-case Fixtures under src/modules/generated are regenerated by the scaffolder and verified idempotent; adds a regression test asserting vovk/createRPC and vovk/createValidateOnClient stay importable as aliases of the kebab subpaths until the next major. * docs: update file-name references to kebab-case * chore: regenerate root lockfile * fix(deps): defer vovk peer floor bump until 3.6.0 is published bun's resolver (verified with 1.3.14) spins in an infinite CPU loop when a peerDependencies range is only satisfiable by a file:-linked package and no published version matches — vovk >=3.6.0 while the registry tops out at 3.5.0 hung all four CI jobs for 6 hours inside the bun init tests. Keep the peer floor at the registry-satisfiable >=3.0.0 for now; bump to >=3.6.0 in a follow-up once vovk 3.6.0 is on npm, before vovk-cli/vovk-ajv are published. * ci: add 45-minute job timeout The default 6-hour limit let a hung bun install burn 24 runner-hours before failing. Normal runs finish well under 45 minutes. * ci: free runner disk space on ubuntu The second yarn init test hit ENOSPC: yarn copies packages/vovk-cli — including the Next.js project caches accumulated by earlier specs — into its cache and into node_modules on every file: install, and stock ubuntu runners only have ~14 GB free. Removing the unused preinstalled toolchains reclaims ~25-30 GB.
feat: kebab-case file naming across packages, scaffolding, and tests (#… …23) * feat(vovk): kebab-case source file naming with aliased subpath exports Rename all camelCase/PascalCase source files (47 files, openAPIToVovkSchema/ dir) to kebab-case; dist mirrors src, so the subpaths become vovk/create-rpc and vovk/create-validate-on-client. The old vovk/createRPC and vovk/createValidateOnClient specifiers remain as exports-map aliases pointing at the same files until the next major. Generated clients now default to vovk/create-rpc. Version anchored at 3.6.0 so workspace installs satisfy the new peer ranges. * feat(vovk-cli): kebab-case scaffolding, template dirs, and generated-client imports - vovk new scaffolds user-controller.ts / user-service.ts (classes stay PascalCase); module dirs use kebab-case; custom user templates keep naming themselves - abort with a hint when a module exists under the pre-kebab naming, so legacy projects don't end up with duplicate classes - client-templates dirs renamed (tsBase -> ts-base etc., incl. vovk-python and vovk-rust); template NAMES in fromTemplates/extends/requires are unchanged - generated clients import vovk/create-rpc; vovk peer range bumped to >=3.6.0 (first version shipping the kebab subpaths) * refactor(vovk-ajv): import vovk/create-validate-on-client Peer range bumped to vovk >=3.6.0 (first version shipping the subpath). * refactor(test): rename test workspace files to kebab-case Fixtures under src/modules/generated are regenerated by the scaffolder and verified idempotent; adds a regression test asserting vovk/createRPC and vovk/createValidateOnClient stay importable as aliases of the kebab subpaths until the next major. * docs: update file-name references to kebab-case * chore: regenerate root lockfile * fix(deps): defer vovk peer floor bump until 3.6.0 is published bun's resolver (verified with 1.3.14) spins in an infinite CPU loop when a peerDependencies range is only satisfiable by a file:-linked package and no published version matches — vovk >=3.6.0 while the registry tops out at 3.5.0 hung all four CI jobs for 6 hours inside the bun init tests. Keep the peer floor at the registry-satisfiable >=3.0.0 for now; bump to >=3.6.0 in a follow-up once vovk 3.6.0 is on npm, before vovk-cli/vovk-ajv are published. * ci: add 45-minute job timeout The default 6-hour limit let a hung bun install burn 24 runner-hours before failing. Normal runs finish well under 45 minutes. * ci: free runner disk space on ubuntu The second yarn init test hit ENOSPC: yarn copies packages/vovk-cli — including the Next.js project caches accumulated by earlier specs — into its cache and into node_modules on every file: install, and stock ubuntu runners only have ~14 GB free. Removing the unused preinstalled toolchains reclaims ~25-30 GB.
feat: kebab-case file naming across packages, scaffolding, and tests (#… …23) * feat(vovk): kebab-case source file naming with aliased subpath exports Rename all camelCase/PascalCase source files (47 files, openAPIToVovkSchema/ dir) to kebab-case; dist mirrors src, so the subpaths become vovk/create-rpc and vovk/create-validate-on-client. The old vovk/createRPC and vovk/createValidateOnClient specifiers remain as exports-map aliases pointing at the same files until the next major. Generated clients now default to vovk/create-rpc. Version anchored at 3.6.0 so workspace installs satisfy the new peer ranges. * feat(vovk-cli): kebab-case scaffolding, template dirs, and generated-client imports - vovk new scaffolds user-controller.ts / user-service.ts (classes stay PascalCase); module dirs use kebab-case; custom user templates keep naming themselves - abort with a hint when a module exists under the pre-kebab naming, so legacy projects don't end up with duplicate classes - client-templates dirs renamed (tsBase -> ts-base etc., incl. vovk-python and vovk-rust); template NAMES in fromTemplates/extends/requires are unchanged - generated clients import vovk/create-rpc; vovk peer range bumped to >=3.6.0 (first version shipping the kebab subpaths) * refactor(vovk-ajv): import vovk/create-validate-on-client Peer range bumped to vovk >=3.6.0 (first version shipping the subpath). * refactor(test): rename test workspace files to kebab-case Fixtures under src/modules/generated are regenerated by the scaffolder and verified idempotent; adds a regression test asserting vovk/createRPC and vovk/createValidateOnClient stay importable as aliases of the kebab subpaths until the next major. * docs: update file-name references to kebab-case * chore: regenerate root lockfile * fix(deps): defer vovk peer floor bump until 3.6.0 is published bun's resolver (verified with 1.3.14) spins in an infinite CPU loop when a peerDependencies range is only satisfiable by a file:-linked package and no published version matches — vovk >=3.6.0 while the registry tops out at 3.5.0 hung all four CI jobs for 6 hours inside the bun init tests. Keep the peer floor at the registry-satisfiable >=3.0.0 for now; bump to >=3.6.0 in a follow-up once vovk 3.6.0 is on npm, before vovk-cli/vovk-ajv are published. * ci: add 45-minute job timeout The default 6-hour limit let a hung bun install burn 24 runner-hours before failing. Normal runs finish well under 45 minutes. * ci: free runner disk space on ubuntu The second yarn init test hit ENOSPC: yarn copies packages/vovk-cli — including the Next.js project caches accumulated by earlier specs — into its cache and into node_modules on every file: install, and stock ubuntu runners only have ~14 GB free. Removing the unused preinstalled toolchains reclaims ~25-30 GB.
feat: kebab-case file naming across packages, scaffolding, and tests (#… …23) * feat(vovk): kebab-case source file naming with aliased subpath exports Rename all camelCase/PascalCase source files (47 files, openAPIToVovkSchema/ dir) to kebab-case; dist mirrors src, so the subpaths become vovk/create-rpc and vovk/create-validate-on-client. The old vovk/createRPC and vovk/createValidateOnClient specifiers remain as exports-map aliases pointing at the same files until the next major. Generated clients now default to vovk/create-rpc. Version anchored at 3.6.0 so workspace installs satisfy the new peer ranges. * feat(vovk-cli): kebab-case scaffolding, template dirs, and generated-client imports - vovk new scaffolds user-controller.ts / user-service.ts (classes stay PascalCase); module dirs use kebab-case; custom user templates keep naming themselves - abort with a hint when a module exists under the pre-kebab naming, so legacy projects don't end up with duplicate classes - client-templates dirs renamed (tsBase -> ts-base etc., incl. vovk-python and vovk-rust); template NAMES in fromTemplates/extends/requires are unchanged - generated clients import vovk/create-rpc; vovk peer range bumped to >=3.6.0 (first version shipping the kebab subpaths) * refactor(vovk-ajv): import vovk/create-validate-on-client Peer range bumped to vovk >=3.6.0 (first version shipping the subpath). * refactor(test): rename test workspace files to kebab-case Fixtures under src/modules/generated are regenerated by the scaffolder and verified idempotent; adds a regression test asserting vovk/createRPC and vovk/createValidateOnClient stay importable as aliases of the kebab subpaths until the next major. * docs: update file-name references to kebab-case * chore: regenerate root lockfile * fix(deps): defer vovk peer floor bump until 3.6.0 is published bun's resolver (verified with 1.3.14) spins in an infinite CPU loop when a peerDependencies range is only satisfiable by a file:-linked package and no published version matches — vovk >=3.6.0 while the registry tops out at 3.5.0 hung all four CI jobs for 6 hours inside the bun init tests. Keep the peer floor at the registry-satisfiable >=3.0.0 for now; bump to >=3.6.0 in a follow-up once vovk 3.6.0 is on npm, before vovk-cli/vovk-ajv are published. * ci: add 45-minute job timeout The default 6-hour limit let a hung bun install burn 24 runner-hours before failing. Normal runs finish well under 45 minutes. * ci: free runner disk space on ubuntu The second yarn init test hit ENOSPC: yarn copies packages/vovk-cli — including the Next.js project caches accumulated by earlier specs — into its cache and into node_modules on every file: install, and stock ubuntu runners only have ~14 GB free. Removing the unused preinstalled toolchains reclaims ~25-30 GB.
Merge pull request #22 from finom/feat/openapi-mixin-filter-prune feat(openapi): add filterOperations + pruneComponents for OpenAPI mixins
feat(openapi): add filterOperations + pruneComponents for OpenAPI mixins filterOperations keeps only operations the predicate accepts, running before getModuleName/getMethodName so fully filtered-out modules are never created. pruneComponents (default false) shrinks meta.openAPIObject.components.schemas to the transitive $ref closure of the kept handlers (validation slots + raw operation objects), preserving key order and never mutating the input spec. Stripe spec3.sdk.json with an 8-GET filter: 8.38 MB -> 1.20 MB (1693 -> 863 components, the strongly-connected core).
fix(openapi): dedupe mixin component $defs to fix JSON.stringify over… …flow OpenAPI mixin generation embedded each referenced component's full transitive $ref closure into every validation slot's $defs, per handler. On large, densely cross-referenced specs (Stripe: 1693 components x 534 ops) the output slots alone produced ~270k component copies (~397MB); JSON.stringify (schema.json, mixins.json, the dev segment writer) then exceeded V8's max string length -> "RangeError: Invalid string length". Response slots (output/iteration) are never validated at runtime and are typed via x-tsType, so they don't need a self-contained $defs. applyComponentsSchemas gains an `emitDefs` flag: for output/iteration it sets x-tsType + keeps the #/components/schemas ref but emits no $defs (the components already live once per segment in meta.openAPIObject.components.schemas). Body/query/params stay self-contained, so runtime AJV is unchanged. Generators that resolve $ref against a self-contained schema (Rust) reconstitute the closure at render via reattachMixinDefs() -> output is byte-identical. TS (x-tsType) and Python (no $ref resolution) need nothing. Stripe mixin now generates with no crash (mixins.json ~17MB vs >400MB). Adds openAPIToVovkSchema dedup + reattach-identity tests.
fix(openapi): dedupe mixin component $defs to fix JSON.stringify over… …flow OpenAPI mixin generation embedded each referenced component's full transitive $ref closure into every validation slot's $defs, per handler. On large, densely cross-referenced specs (Stripe: 1693 components x 534 ops) the output slots alone produced ~270k component copies (~397MB); JSON.stringify (schema.json, mixins.json, the dev segment writer) then exceeded V8's max string length -> "RangeError: Invalid string length". Response slots (output/iteration) are never validated at runtime and are typed via x-tsType, so they don't need a self-contained $defs. applyComponentsSchemas gains an `emitDefs` flag: for output/iteration it sets x-tsType + keeps the #/components/schemas ref but emits no $defs (the components already live once per segment in meta.openAPIObject.components.schemas). Body/query/params stay self-contained, so runtime AJV is unchanged. Generators that resolve $ref against a self-contained schema (Rust) reconstitute the closure at render via reattachMixinDefs() -> output is byte-identical. TS (x-tsType) and Python (no $ref resolution) need nothing. Stripe mixin now generates with no crash (mixins.json ~17MB vs >400MB). Adds openAPIToVovkSchema dedup + reattach-identity tests.
fix(openapi): dedupe mixin component $defs to fix JSON.stringify over… …flow OpenAPI mixin generation embedded each referenced component's full transitive $ref closure into every validation slot's $defs, per handler. On large, densely cross-referenced specs (Stripe: 1693 components x 534 ops) the output slots alone produced ~270k component copies (~397MB); JSON.stringify (schema.json, mixins.json, the dev segment writer) then exceeded V8's max string length -> "RangeError: Invalid string length". Response slots (output/iteration) are never validated at runtime and are typed via x-tsType, so they don't need a self-contained $defs. applyComponentsSchemas gains an `emitDefs` flag: for output/iteration it sets x-tsType + keeps the #/components/schemas ref but emits no $defs (the components already live once per segment in meta.openAPIObject.components.schemas). Body/query/params stay self-contained, so runtime AJV is unchanged. Generators that resolve $ref against a self-contained schema (Rust) reconstitute the closure at render via reattachMixinDefs() -> output is byte-identical. TS (x-tsType) and Python (no $ref resolution) need nothing. Stripe mixin now generates with no crash (mixins.json ~17MB vs >400MB). Adds openAPIToVovkSchema dedup + reattach-identity tests.
PreviousNext