diff --git a/packages/config/FEATURES.md b/packages/config/FEATURES.md index ba96d5067..9b2e0ff8d 100644 --- a/packages/config/FEATURES.md +++ b/packages/config/FEATURES.md @@ -15,31 +15,16 @@ 6. Registers an `onRequest` hook that sets `request.config` to the same `ApiConfig` object on every incoming request. -## Utility Functions - -7. Exports a `parse` utility for converting raw `string | undefined` env var values to typed values using a fallback to infer the target type: - - Returns `fallback` when `value` is `undefined`. - - Returns a `boolean` (via `!!JSON.parse(value)`) when `fallback` is a `boolean`. - - Returns a `number` (via `JSON.parse(value)`) when `fallback` is a `number`. - - Returns the raw `string` otherwise. - - ```typescript - parse(process.env.PORT, 3000); // → number - parse(process.env.DEBUG, false); // → boolean - parse(process.env.APP_NAME, "my-app"); // → string - parse(undefined, 3000); // → 3000 (fallback) - ``` - ## Type Exports & Module Augmentation -8. Exports `ApiConfig` type — the shape of the full application configuration object. -9. Exports `AppConfig` type — the shape of an individual app entry within `ApiConfig.apps`. -10. Module-augments `FastifyInstance` to add `config: ApiConfig` and `hostname: string`. -11. Module-augments `FastifyRequest` to add `config: ApiConfig`. +7. Exports `ApiConfig` type — the shape of the full application configuration object. +8. Exports `AppConfig` type — the shape of an individual app entry within `ApiConfig.apps`. +9. Module-augments `FastifyInstance` to add `config: ApiConfig` and `hostname: string`. +10. Module-augments `FastifyRequest` to add `config: ApiConfig`. ## ApiConfig Shape -12. `ApiConfig` top-level fields: +11. `ApiConfig` top-level fields: - `appName: string` - `appOrigin: string[]` - `apps?: AppConfig[]` @@ -53,7 +38,7 @@ - `rest: { enabled: boolean }` - `version: string` -13. `ApiConfig.logger` sub-object: +12. `ApiConfig.logger` sub-object: - `level: Level` (required) - `base?: LoggerOptions["base"]` - `formatters?: LoggerOptions["formatters"]` diff --git a/packages/config/GUIDE.md b/packages/config/GUIDE.md index c9707145d..c38e9f36a 100644 --- a/packages/config/GUIDE.md +++ b/packages/config/GUIDE.md @@ -67,7 +67,6 @@ We wrap this library with a different surface: - `fastify.hostname` decorator derived from `baseUrl` and `port` - `request.config` population via `onRequest` - Type exports and Fastify module augmentation -- `parse` utility for typed env parsing --- @@ -125,20 +124,6 @@ fastify.get("/me", async (request) => { }); ``` -### `parse` — typed env var parser - -The exported `parse` utility converts raw environment variables to their intended types. Pass a fallback value; its type determines how the string is coerced. - -```typescript -import { parse } from "@prefabs.tech/fastify-config"; - -const config: ApiConfig = { - port: parse(process.env.PORT, 3000) as number, - env: parse(process.env.NODE_ENV, "development") as string, - // ... -}; -``` - Rules: - `value === undefined` → returns `fallback` @@ -200,30 +185,6 @@ The plugin ships with module augmentation for Fastify's types. No extra setup is ## Use Cases -### Building config from environment variables - -Use `parse` to construct a fully typed `ApiConfig` from `process.env`: - -```typescript -import { parse } from "@prefabs.tech/fastify-config"; -import type { ApiConfig } from "@prefabs.tech/fastify-config"; - -const config: ApiConfig = { - appName: parse(process.env.APP_NAME, "my-api") as string, - appOrigin: (process.env.APP_ORIGIN ?? "http://localhost:3000").split(","), - baseUrl: parse(process.env.BASE_URL, "http://localhost") as string, - env: parse(process.env.NODE_ENV, "development") as string, - logger: { - level: parse(process.env.LOG_LEVEL, "info") as string as Level, - }, - name: "my-api", - port: parse(process.env.PORT, 3000) as number, - protocol: parse(process.env.PROTOCOL, "http") as string, - rest: { enabled: parse(process.env.REST_ENABLED, true) as boolean }, - version: parse(process.env.APP_VERSION, "0.0.0") as string, -}; -``` - ### Accessing config in a route handler Config is available on both the instance and the request object, so you can use whichever is in scope: diff --git a/packages/config/README.md b/packages/config/README.md index b87e44335..27bba1280 100644 --- a/packages/config/README.md +++ b/packages/config/README.md @@ -19,7 +19,6 @@ In a complex API or monorepo with multiple Fastify plugins and services, maintai - **`fastify.config`** — decorates the Fastify instance with your `ApiConfig` object, accessible everywhere on the instance - **`request.config`** — decorates every incoming request with the same config reference via an `onRequest` hook (useful for mercurius `buildContext`, route handlers, etc.) - **`fastify.hostname`** — computed `${baseUrl}:${port}` string, derived from your config -- **`parse(value, fallback)`** — type-coercing env var parser: returns a boolean, number, or string based on the fallback type; returns the fallback when the value is `undefined` - **`ApiConfig` type** — strongly typed interface covering app identity, origins, logging (pino), pagination, REST feature flag, and multi-tenant app list - **`AppConfig` type** — per-app shape for multi-tenant configurations (`id`, `name`, `origin`, `supportedRoles`) @@ -38,8 +37,8 @@ No sibling `@prefabs.tech` plugins need to be registered before this one. ```typescript // config.ts -import { parse } from "@prefabs.tech/fastify-config"; import type { ApiConfig } from "@prefabs.tech/fastify-config"; +import { parse } from "@prefabs.tech/utilities"; const config: ApiConfig = { appName: process.env.APP_NAME as string, diff --git a/packages/config/package.json b/packages/config/package.json index faa149c5d..d9466cac9 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -31,8 +31,8 @@ "typecheck": "tsc --noEmit -p tsconfig.json --composite false" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/node": "24.10.15", "@vitest/coverage-istanbul": "3.2.4", "eslint": "9.39.4", diff --git a/packages/config/src/__test__/parse.test.ts b/packages/config/src/__test__/parse.test.ts deleted file mode 100644 index 45f2913c6..000000000 --- a/packages/config/src/__test__/parse.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* istanbul ignore file */ -import { describe, expect, it } from "vitest"; - -import parse from "../parse"; - -describe("parse", () => { - it("parses a boolean", () => { - expect(parse("false", false)).toBe(false); - }); - - it("parses a number", () => { - expect(parse("23", 1)).toBe(23); - }); - - it("parses a number as a string", () => { - expect(parse("23", "abc")).toBe("23"); - }); - - it("parses 'false' as a string", () => { - expect(parse("false", "abc")).toBe("false"); - }); - - it("returns the fallback value as a boolean", () => { - expect(parse(undefined, true)).toBe(true); - }); - - it("returns the fallback value as a number", () => { - expect(parse(undefined, 123)).toBe(123); - }); - - it("returns the fallback value as a string", () => { - expect(parse(undefined, "abc")).toBe("abc"); - }); - - it("returns undefined", () => { - // eslint-disable-next-line unicorn/no-useless-undefined - expect(parse(undefined, undefined)).toBe(undefined); - }); - - it("throws SyntaxError when boolean parsing receives invalid JSON", () => { - expect(() => parse("Dzango", false)).toThrow(SyntaxError); - }); - - it("throws SyntaxError when number parsing receives invalid JSON", () => { - expect(() => parse("Dzango", 14)).toThrow(SyntaxError); - }); - - it('parses "1" as truthy boolean', () => { - expect(parse("1", false)).toBe(true); - }); - - it('parses "0" as falsy boolean', () => { - expect(parse("0", true)).toBe(false); - }); - - it("parses a float number", () => { - expect(parse("3.14", 0)).toBe(3.14); - }); - - it("parses a negative number", () => { - expect(parse("-5", 0)).toBe(-5); - }); - - it("returns empty string when value is empty string", () => { - expect(parse("", "default")).toBe(""); - }); -}); diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 1b90b72ea..a96c30fb0 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -11,8 +11,6 @@ declare module "fastify" { } } -export { default as parse } from "./parse"; - export { default } from "./plugin"; export type { ApiConfig, AppConfig } from "./types"; diff --git a/packages/config/src/parse.ts b/packages/config/src/parse.ts deleted file mode 100644 index f4e809184..000000000 --- a/packages/config/src/parse.ts +++ /dev/null @@ -1,24 +0,0 @@ -const parse = ( - value: string | undefined, - fallback: boolean | number | string | undefined, -) => { - if (value === undefined) { - return fallback; - } - - switch (typeof fallback) { - case "boolean": { - return !!JSON.parse(value); - } - - case "number": { - return JSON.parse(value); - } - - default: { - return value; - } - } -}; - -export default parse; diff --git a/packages/error-handler/package.json b/packages/error-handler/package.json index b08c0d55c..e047e5b95 100644 --- a/packages/error-handler/package.json +++ b/packages/error-handler/package.json @@ -34,8 +34,8 @@ "stacktracey": "2.2.0" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/node": "24.10.15", "@types/stack-trace": "0.0.33", "@vitest/coverage-istanbul": "3.2.4", diff --git a/packages/firebase/package.json b/packages/firebase/package.json index 4b732db2c..2a5162f84 100644 --- a/packages/firebase/package.json +++ b/packages/firebase/package.json @@ -33,12 +33,12 @@ "zod": "3.25.76" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", "@prefabs.tech/fastify-config": "0.94.1", "@prefabs.tech/fastify-error-handler": "0.94.1", "@prefabs.tech/fastify-graphql": "0.94.1", "@prefabs.tech/fastify-slonik": "0.94.1", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/node": "24.10.15", "@vitest/coverage-istanbul": "3.2.4", "eslint": "9.39.4", diff --git a/packages/graphql/README.md b/packages/graphql/README.md index 350f3f0b5..5c26fd542 100644 --- a/packages/graphql/README.md +++ b/packages/graphql/README.md @@ -84,7 +84,6 @@ export { default as schema } from "./schema"; Add a `graphql` block to your config in `config/index.ts`: ```typescript -import { parse } from "@prefabs.tech/fastify-config"; import dotenv from "dotenv"; import { resolvers, schema } from "../src/graphql"; diff --git a/packages/graphql/package.json b/packages/graphql/package.json index aff9e8ecb..6749a51cc 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -33,10 +33,10 @@ "graphql-tag": "2.12.6" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", "@prefabs.tech/fastify-config": "0.94.1", "@prefabs.tech/fastify-slonik": "0.94.1", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/node": "24.10.15", "@vitest/coverage-istanbul": "3.2.4", "eslint": "9.39.4", diff --git a/packages/mailer/package.json b/packages/mailer/package.json index d72ef358b..a964f8492 100644 --- a/packages/mailer/package.json +++ b/packages/mailer/package.json @@ -36,9 +36,9 @@ "nodemailer-mjml": "1.6.0" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", "@prefabs.tech/fastify-config": "0.94.1", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/mjml": "4.7.4", "@types/node": "24.10.15", "@types/nodemailer": "6.4.23", diff --git a/packages/s3/package.json b/packages/s3/package.json index f0b27738f..93e94442b 100644 --- a/packages/s3/package.json +++ b/packages/s3/package.json @@ -41,12 +41,12 @@ "uuid": "9.0.1" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", "@prefabs.tech/fastify-config": "0.94.1", "@prefabs.tech/fastify-error-handler": "0.94.1", "@prefabs.tech/fastify-graphql": "0.94.1", "@prefabs.tech/fastify-slonik": "0.94.1", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/node": "24.10.15", "@vitest/coverage-istanbul": "3.2.4", "eslint": "9.39.4", diff --git a/packages/slonik/README.md b/packages/slonik/README.md index 6d16a18b5..ac4933abe 100644 --- a/packages/slonik/README.md +++ b/packages/slonik/README.md @@ -43,7 +43,7 @@ pnpm add --filter "@scope/project" @prefabs.tech/fastify-config @prefabs.tech/fa Add a `slonik` block to your config: ```typescript -import { parse } from "@prefabs.tech/fastify-config"; +import { parse } from "@prefabs.tech/utilities"; import dotenv from "dotenv"; import type { ApiConfig } from "@prefabs.tech/fastify-config"; diff --git a/packages/slonik/package.json b/packages/slonik/package.json index 3a8e4edc3..10d0692b7 100644 --- a/packages/slonik/package.json +++ b/packages/slonik/package.json @@ -35,9 +35,9 @@ "slonik-interceptor-query-logging": "46.8.0" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", "@prefabs.tech/fastify-config": "0.94.1", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/tsconfig": "0.8.0", "@slonik/driver": "46.8.0", "@types/humps": "2.0.6", "@types/node": "24.10.15", diff --git a/packages/swagger/package.json b/packages/swagger/package.json index e5d918c8d..bd6ec2ab6 100644 --- a/packages/swagger/package.json +++ b/packages/swagger/package.json @@ -35,8 +35,8 @@ "@fastify/swagger-ui": "5.2.6" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/node": "24.10.15", "@vitest/coverage-istanbul": "3.2.4", "eslint": "9.39.4", diff --git a/packages/user/package.json b/packages/user/package.json index 89430e5d1..426528a47 100644 --- a/packages/user/package.json +++ b/packages/user/package.json @@ -33,14 +33,14 @@ "validator": "13.15.35" }, "devDependencies": { - "@prefabs.tech/eslint-config": "0.7.0", + "@prefabs.tech/eslint-config": "0.8.0", "@prefabs.tech/fastify-config": "0.94.1", "@prefabs.tech/fastify-error-handler": "0.94.1", "@prefabs.tech/fastify-graphql": "0.94.1", "@prefabs.tech/fastify-mailer": "0.94.1", "@prefabs.tech/fastify-s3": "0.94.1", "@prefabs.tech/fastify-slonik": "0.94.1", - "@prefabs.tech/tsconfig": "0.7.0", + "@prefabs.tech/tsconfig": "0.8.0", "@types/humps": "2.0.6", "@types/node": "24.10.15", "@types/validator": "13.15.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b7b7f187..72ce9811f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,11 +43,11 @@ importers: packages/config: devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/node': specifier: 24.10.15 version: 24.10.15 @@ -89,11 +89,11 @@ importers: version: 2.2.0 devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/node': specifier: 24.10.15 version: 24.10.15 @@ -135,8 +135,8 @@ importers: version: 3.25.76 devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/fastify-config': specifier: 0.94.1 version: link:../config @@ -150,8 +150,8 @@ importers: specifier: 0.94.1 version: link:../slonik '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/node': specifier: 24.10.15 version: 24.10.15 @@ -205,8 +205,8 @@ importers: version: 2.12.6(graphql@16.13.2) devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/fastify-config': specifier: 0.94.1 version: link:../config @@ -214,8 +214,8 @@ importers: specifier: 0.94.1 version: link:../slonik '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/node': specifier: 24.10.15 version: 24.10.15 @@ -275,14 +275,14 @@ importers: version: 1.6.0(nodemailer@7.0.13) devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/fastify-config': specifier: 0.94.1 version: link:../config '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/mjml': specifier: 4.7.4 version: 4.7.4 @@ -357,8 +357,8 @@ importers: version: 9.0.1 devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/fastify-config': specifier: 0.94.1 version: link:../config @@ -372,8 +372,8 @@ importers: specifier: 0.94.1 version: link:../slonik '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/node': specifier: 24.10.15 version: 24.10.15 @@ -427,14 +427,14 @@ importers: version: 46.8.0(slonik@46.8.0(zod@3.25.76)) devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/fastify-config': specifier: 0.94.1 version: link:../config '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@slonik/driver': specifier: 46.8.0 version: 46.8.0(zod@3.25.76) @@ -491,11 +491,11 @@ importers: version: 5.2.6 devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/node': specifier: 24.10.15 version: 24.10.15 @@ -534,8 +534,8 @@ importers: version: 13.15.35 devDependencies: '@prefabs.tech/eslint-config': - specifier: 0.7.0 - version: 0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) + specifier: 0.8.0 + version: 0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3) '@prefabs.tech/fastify-config': specifier: 0.94.1 version: link:../config @@ -555,8 +555,8 @@ importers: specifier: 0.94.1 version: link:../slonik '@prefabs.tech/tsconfig': - specifier: 0.7.0 - version: 0.7.0 + specifier: 0.8.0 + version: 0.8.0 '@types/humps': specifier: 2.0.6 version: 2.0.6 @@ -1580,8 +1580,8 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@prefabs.tech/eslint-config@0.7.0': - resolution: {integrity: sha512-kMLs+ksinlNKa5FfhTb2qNisnU/On+IGrRHbZ3aHq1INF8NsjVRB7Wm0Q9vdnBipco9YOady0qSx1goVnhhC3w==} + '@prefabs.tech/eslint-config@0.8.0': + resolution: {integrity: sha512-E1vrgnsjuw9hXanhq18jQFUWrbrmNzr74cND1QA26gqiYKCtnXBol71BYLxJae3SDBPy9eiAyEuqiaep1CHzUg==} peerDependencies: eslint: '>=9.0.0' prettier: '>=3.3.3' @@ -1592,8 +1592,8 @@ packages: engines: {node: '>10.17.0'} hasBin: true - '@prefabs.tech/tsconfig@0.7.0': - resolution: {integrity: sha512-MiEvKeoNVPSy79tYQOkFeaBoVViW27JYfSiEbCBT+Fvuk1XEkXyBpSxlpdKQDV5bsAg0C5VNSjRh4qH3eDjA+w==} + '@prefabs.tech/tsconfig@0.8.0': + resolution: {integrity: sha512-tllO+FL56JLAHE/j6jKbRlUifxIgB2U47vzdL670FpsPsH4vIFNpniW81/pD80ogMeLXqD7E40AHGMTUBaioww==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -7188,7 +7188,7 @@ snapshots: '@pkgr/core@0.2.9': {} - '@prefabs.tech/eslint-config@0.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3)': + '@prefabs.tech/eslint-config@0.8.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(prettier@3.8.3)(typescript@5.9.3)': dependencies: '@eslint/js': 9.39.4 eslint: 9.39.4(jiti@2.6.1) @@ -7225,7 +7225,7 @@ snapshots: transitivePeerDependencies: - pg-native - '@prefabs.tech/tsconfig@0.7.0': {} + '@prefabs.tech/tsconfig@0.8.0': {} '@protobufjs/aspromise@1.1.2': optional: true @@ -7908,7 +7908,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.7.3 + semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 @@ -8759,7 +8759,7 @@ snapshots: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.3 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 @@ -8830,7 +8830,7 @@ snapshots: es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 es-to-primitive@1.3.0: dependencies: @@ -8882,7 +8882,7 @@ snapshots: eslint-compat-utils@0.5.1(eslint@9.39.4(jiti@2.6.1)): dependencies: eslint: 9.39.4(jiti@2.6.1) - semver: 7.7.3 + semver: 7.7.4 eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.6.1)): dependencies: @@ -8952,7 +8952,7 @@ snapshots: eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.6.1)) - hasown: 2.0.2 + hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.5 @@ -8980,7 +8980,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 eslint: 9.39.4(jiti@2.6.1) - hasown: 2.0.2 + hasown: 2.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.5 @@ -8999,7 +8999,7 @@ snapshots: globals: 15.15.0 ignore: 5.3.2 minimatch: 9.0.5 - semver: 7.7.3 + semver: 7.7.4 ts-declaration-location: 1.0.7(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -9049,7 +9049,7 @@ snapshots: es-iterator-helpers: 1.2.2 eslint: 9.39.4(jiti@2.6.1) estraverse: 5.3.0 - hasown: 2.0.2 + hasown: 2.0.3 jsx-ast-utils: 3.3.5 minimatch: 3.1.5 object.entries: 1.1.9 @@ -9080,7 +9080,7 @@ snapshots: pluralize: 8.0.0 regexp-tree: 0.1.27 regjsparser: 0.13.0 - semver: 7.7.3 + semver: 7.7.4 strip-indent: 4.1.1 eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.4(jiti@2.6.1))): @@ -9090,7 +9090,7 @@ snapshots: natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 - semver: 7.7.3 + semver: 7.7.4 vue-eslint-parser: 10.2.0(eslint@9.39.4(jiti@2.6.1)) xml-name-validator: 4.0.0 optionalDependencies: @@ -9412,7 +9412,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.2 + hasown: 2.0.3 is-callable: 1.2.7 functional-red-black-tree@1.0.1: {} @@ -9699,7 +9699,6 @@ snapshots: hasown@2.0.3: dependencies: function-bind: 1.1.2 - optional: true he@1.2.0: {} @@ -9862,7 +9861,7 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.2 + hasown: 2.0.3 side-channel: 1.1.0 ipaddr.js@2.4.0: {} @@ -9902,13 +9901,13 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 is-callable@1.2.7: {} is-core-module@2.16.1: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 is-data-view@1.0.2: dependencies: @@ -9969,7 +9968,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.3 is-set@2.0.3: {} @@ -12055,7 +12054,7 @@ snapshots: eslint-visitor-keys: 4.2.1 espree: 10.4.0 esquery: 1.6.0 - semver: 7.7.3 + semver: 7.7.4 transitivePeerDependencies: - supports-color