@c15t/backend 1.0.0 → 1.1.0-canary.0
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/.turbo/turbo-build.log +33 -39
- package/.turbo/turbo-fmt.log +7 -0
- package/.turbo/turbo-test.log +531 -0
- package/README.md +19 -7
- package/coverage/coverage-final.json +84 -0
- package/coverage/coverage-summary.json +85 -0
- package/coverage/html/backend/index.html +116 -0
- package/coverage/html/backend/rslib.config.ts.html +415 -0
- package/coverage/html/backend/src/contracts/consent/index.html +161 -0
- package/coverage/html/backend/src/contracts/consent/index.ts.html +112 -0
- package/coverage/html/backend/src/contracts/consent/post.contract.ts.html +559 -0
- package/coverage/html/backend/src/contracts/consent/show-banner.contract.ts.html +220 -0
- package/coverage/html/backend/src/contracts/consent/verify.contract.ts.html +463 -0
- package/coverage/html/backend/src/contracts/index.html +116 -0
- package/coverage/html/backend/src/contracts/index.ts.html +139 -0
- package/coverage/html/backend/src/contracts/meta/index.html +131 -0
- package/coverage/html/backend/src/contracts/meta/index.ts.html +100 -0
- package/coverage/html/backend/src/contracts/meta/status.contract.ts.html +196 -0
- package/coverage/html/backend/src/contracts/shared/index.html +116 -0
- package/coverage/html/backend/src/contracts/shared/jurisdiction.schema.ts.html +175 -0
- package/coverage/html/backend/src/core.ts.html +1624 -0
- package/coverage/html/backend/src/handlers/consent/index.html +161 -0
- package/coverage/html/backend/src/handlers/consent/index.ts.html +112 -0
- package/coverage/html/backend/src/handlers/consent/post.handler.ts.html +889 -0
- package/coverage/html/backend/src/handlers/consent/show-banner.handler.ts.html +535 -0
- package/coverage/html/backend/src/handlers/consent/verify.handler.ts.html +1000 -0
- package/coverage/html/backend/src/handlers/meta/index.html +131 -0
- package/coverage/html/backend/src/handlers/meta/index.ts.html +100 -0
- package/coverage/html/backend/src/handlers/meta/status.handler.ts.html +226 -0
- package/coverage/html/backend/src/index.html +161 -0
- package/coverage/html/backend/src/init.ts.html +1018 -0
- package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +116 -0
- package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +544 -0
- package/coverage/html/backend/src/pkgs/api-router/index.html +116 -0
- package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +334 -0
- package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +304 -0
- package/coverage/html/backend/src/pkgs/api-router/utils/index.html +131 -0
- package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +361 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +709 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +256 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/index.html +161 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +136 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +496 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +349 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +176 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +358 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +613 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +538 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +289 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +289 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +2203 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +670 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +131 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +3634 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +1417 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +2071 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +1834 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +316 -0
- package/coverage/html/backend/src/pkgs/db-adapters/index.html +131 -0
- package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +238 -0
- package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +343 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +217 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +146 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +280 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +289 -0
- package/coverage/html/backend/src/pkgs/migrations/index.html +176 -0
- package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +595 -0
- package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +301 -0
- package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +694 -0
- package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +817 -0
- package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +976 -0
- package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +703 -0
- package/coverage/html/backend/src/pkgs/results/core/index.html +146 -0
- package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +280 -0
- package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +271 -0
- package/coverage/html/backend/src/pkgs/results/index.html +131 -0
- package/coverage/html/backend/src/pkgs/results/orpc-error-handler.ts.html +496 -0
- package/coverage/html/backend/src/pkgs/results/results/index.html +131 -0
- package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +628 -0
- package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +1234 -0
- package/coverage/html/backend/src/pkgs/utils/env.ts.html +337 -0
- package/coverage/html/backend/src/pkgs/utils/index.html +146 -0
- package/coverage/html/backend/src/pkgs/utils/logger.ts.html +199 -0
- package/coverage/html/backend/src/pkgs/utils/url.ts.html +400 -0
- package/coverage/html/backend/src/router.ts.html +109 -0
- package/coverage/html/backend/src/schema/audit-log/index.html +146 -0
- package/coverage/html/backend/src/schema/audit-log/registry.ts.html +436 -0
- package/coverage/html/backend/src/schema/audit-log/schema.ts.html +223 -0
- package/coverage/html/backend/src/schema/audit-log/table.ts.html +640 -0
- package/coverage/html/backend/src/schema/consent/index.html +146 -0
- package/coverage/html/backend/src/schema/consent/registry.ts.html +616 -0
- package/coverage/html/backend/src/schema/consent/schema.ts.html +238 -0
- package/coverage/html/backend/src/schema/consent/table.ts.html +748 -0
- package/coverage/html/backend/src/schema/consent-policy/index.html +146 -0
- package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +1063 -0
- package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +265 -0
- package/coverage/html/backend/src/schema/consent-policy/table.ts.html +535 -0
- package/coverage/html/backend/src/schema/consent-purpose/index.html +146 -0
- package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +589 -0
- package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +259 -0
- package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +547 -0
- package/coverage/html/backend/src/schema/consent-record/index.html +131 -0
- package/coverage/html/backend/src/schema/consent-record/schema.ts.html +211 -0
- package/coverage/html/backend/src/schema/consent-record/table.ts.html +457 -0
- package/coverage/html/backend/src/schema/create-registry.ts.html +148 -0
- package/coverage/html/backend/src/schema/definition.ts.html +685 -0
- package/coverage/html/backend/src/schema/domain/index.html +146 -0
- package/coverage/html/backend/src/schema/domain/registry.ts.html +973 -0
- package/coverage/html/backend/src/schema/domain/schema.ts.html +214 -0
- package/coverage/html/backend/src/schema/domain/table.ts.html +496 -0
- package/coverage/html/backend/src/schema/index.html +146 -0
- package/coverage/html/backend/src/schema/schemas.ts.html +166 -0
- package/coverage/html/backend/src/schema/subject/index.html +146 -0
- package/coverage/html/backend/src/schema/subject/registry.ts.html +973 -0
- package/coverage/html/backend/src/schema/subject/schema.ts.html +208 -0
- package/coverage/html/backend/src/schema/subject/table.ts.html +499 -0
- package/coverage/html/backend/src/server.ts.html +475 -0
- package/coverage/html/backend/src/testing/contract-testing.ts.html +1348 -0
- package/coverage/html/backend/src/testing/index.html +116 -0
- package/coverage/html/base.css +224 -0
- package/coverage/html/block-navigation.js +87 -0
- package/coverage/html/favicon.png +0 -0
- package/coverage/html/index.html +626 -0
- package/coverage/html/prettify.css +1 -0
- package/coverage/html/prettify.js +2 -0
- package/coverage/html/sort-arrow-sprite.png +0 -0
- package/coverage/html/sorter.js +196 -0
- package/dist/contracts/consent/index.d.ts +401 -0
- package/dist/contracts/consent/index.d.ts.map +1 -0
- package/dist/contracts/consent/index.test.d.ts +2 -0
- package/dist/contracts/consent/index.test.d.ts.map +1 -0
- package/dist/contracts/consent/post.contract.d.ts +212 -0
- package/dist/contracts/consent/post.contract.d.ts.map +1 -0
- package/dist/contracts/consent/post.contract.test.d.ts +2 -0
- package/dist/contracts/consent/post.contract.test.d.ts.map +1 -0
- package/dist/contracts/consent/show-banner.contract.d.ts +45 -0
- package/dist/contracts/consent/show-banner.contract.d.ts.map +1 -0
- package/dist/contracts/consent/show-banner.contract.test.d.ts +2 -0
- package/dist/contracts/consent/show-banner.contract.test.d.ts.map +1 -0
- package/dist/contracts/consent/verify.contract.d.ts +147 -0
- package/dist/contracts/consent/verify.contract.d.ts.map +1 -0
- package/dist/contracts/consent/verify.contract.test.d.ts +2 -0
- package/dist/contracts/consent/verify.contract.test.d.ts.map +1 -0
- package/dist/contracts/index.d.ts +963 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/meta/index.d.ts +78 -0
- package/dist/contracts/meta/index.d.ts.map +1 -0
- package/dist/contracts/meta/index.test.d.ts +2 -0
- package/dist/contracts/meta/index.test.d.ts.map +1 -0
- package/dist/contracts/meta/status.contract.d.ts +77 -0
- package/dist/contracts/meta/status.contract.d.ts.map +1 -0
- package/dist/contracts/meta/status.contract.test.d.ts +2 -0
- package/dist/contracts/meta/status.contract.test.d.ts.map +1 -0
- package/dist/contracts/shared/jurisdiction.schema.d.ts +24 -0
- package/dist/contracts/shared/jurisdiction.schema.d.ts.map +1 -0
- package/dist/core.cjs +3584 -0
- package/dist/core.d.ts +533 -78
- package/dist/core.d.ts.map +1 -1
- package/dist/{index.js → core.js} +1164 -1292
- package/dist/handlers/consent/index.d.ts +401 -0
- package/dist/handlers/consent/index.d.ts.map +1 -0
- package/dist/handlers/consent/post.handler.d.ts +234 -0
- package/dist/handlers/consent/post.handler.d.ts.map +1 -0
- package/dist/handlers/consent/show-banner.handler.d.ts +57 -0
- package/dist/handlers/consent/show-banner.handler.d.ts.map +1 -0
- package/dist/handlers/consent/show-banner.handler.test.d.ts +2 -0
- package/dist/handlers/consent/show-banner.handler.test.d.ts.map +1 -0
- package/dist/handlers/consent/verify.handler.d.ts +169 -0
- package/dist/handlers/consent/verify.handler.d.ts.map +1 -0
- package/dist/handlers/meta/index.d.ts +78 -0
- package/dist/handlers/meta/index.d.ts.map +1 -0
- package/dist/handlers/meta/status.handler.d.ts +76 -0
- package/dist/handlers/meta/status.handler.d.ts.map +1 -0
- package/dist/init.d.ts +0 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/pkgs/api-router/hooks/processor.d.ts.map +1 -1
- package/dist/pkgs/api-router/types/router-props.d.ts +1 -1
- package/dist/pkgs/api-router/types/router-props.d.ts.map +1 -1
- package/dist/pkgs/api-router/utils/cors.d.ts +1 -1
- package/dist/pkgs/api-router/utils/cors.d.ts.map +1 -1
- package/dist/pkgs/data-model/fields/field-types.d.ts +1 -1
- package/dist/pkgs/data-model/fields/zod-fields.d.ts +32 -32
- package/dist/pkgs/data-model/index.cjs +1433 -1799
- package/dist/pkgs/data-model/index.js +20 -385
- package/dist/pkgs/data-model/schema/index.cjs +1402 -1768
- package/dist/pkgs/data-model/schema/index.js +20 -385
- package/dist/pkgs/db-adapters/adapter-factory.d.ts +2 -2
- package/dist/pkgs/db-adapters/adapter-factory.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts +4 -7
- package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.cjs +19 -151
- package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.js +19 -151
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts +1 -3
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.cjs +17 -149
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.js +17 -149
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts +0 -1
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts +2 -2
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/types.d.ts +0 -2
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/types.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/memory-adapter/index.cjs +17 -149
- package/dist/pkgs/db-adapters/adapters/memory-adapter/index.js +17 -149
- package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts +0 -1
- package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.cjs +19 -151
- package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.js +19 -151
- package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts +0 -1
- package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -1
- package/dist/pkgs/db-adapters/index.cjs +31 -153
- package/dist/pkgs/db-adapters/index.js +31 -153
- package/dist/pkgs/migrations/get-schema/get-schema.d.ts +2 -2
- package/dist/pkgs/migrations/get-schema/index.d.ts +1 -1
- package/dist/pkgs/migrations/index.cjs +30 -153
- package/dist/pkgs/migrations/index.js +30 -153
- package/dist/pkgs/migrations/schema-comparison.d.ts.map +1 -1
- package/dist/pkgs/results/core/error-class.d.ts +23 -21
- package/dist/pkgs/results/core/error-class.d.ts.map +1 -1
- package/dist/pkgs/results/index.cjs +17 -150
- package/dist/pkgs/results/index.d.ts +0 -3
- package/dist/pkgs/results/index.d.ts.map +1 -1
- package/dist/pkgs/results/index.js +17 -138
- package/dist/pkgs/results/orpc-error-handler.d.ts +65 -0
- package/dist/pkgs/results/orpc-error-handler.d.ts.map +1 -0
- package/dist/pkgs/results/types.d.ts +7 -7
- package/dist/pkgs/results/types.d.ts.map +1 -1
- package/dist/pkgs/types/context.d.ts +15 -8
- package/dist/pkgs/types/context.d.ts.map +1 -1
- package/dist/pkgs/types/endpoints.d.ts +3 -4
- package/dist/pkgs/types/endpoints.d.ts.map +1 -1
- package/dist/pkgs/types/options.d.ts +2 -4
- package/dist/pkgs/types/options.d.ts.map +1 -1
- package/dist/pkgs/types/plugins.d.ts +2 -3
- package/dist/pkgs/types/plugins.d.ts.map +1 -1
- package/dist/pkgs/utils/index.d.ts +1 -0
- package/dist/pkgs/utils/index.d.ts.map +1 -1
- package/dist/pkgs/utils/logger.d.ts +16 -0
- package/dist/pkgs/utils/logger.d.ts.map +1 -0
- package/dist/router.cjs +1213 -0
- package/dist/router.d.ts +480 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +1169 -0
- package/dist/schema/audit-log/table.d.ts +1 -1
- package/dist/schema/consent/table.d.ts +1 -1
- package/dist/schema/consent-policy/registry.d.ts +12 -12
- package/dist/schema/consent-policy/schema.d.ts +6 -6
- package/dist/schema/consent-policy/table.d.ts +7 -7
- package/dist/schema/consent-purpose/registry.d.ts +6 -6
- package/dist/schema/consent-purpose/schema.d.ts +6 -6
- package/dist/schema/consent-purpose/table.d.ts +7 -7
- package/dist/schema/consent-record/table.d.ts +1 -1
- package/dist/schema/create-registry.d.ts +32 -32
- package/dist/schema/definition.d.ts +19 -19
- package/dist/schema/domain/registry.d.ts +10 -10
- package/dist/schema/domain/schema.d.ts +5 -5
- package/dist/schema/domain/table.d.ts +6 -6
- package/dist/schema/index.cjs +1409 -1775
- package/dist/schema/index.js +20 -385
- package/dist/schema/schemas.d.ts +19 -19
- package/dist/schema/subject/registry.d.ts +4 -4
- package/dist/schema/subject/schema.d.ts +2 -2
- package/dist/schema/subject/table.d.ts +3 -3
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/testing/contract-testing.d.ts +37 -0
- package/dist/testing/contract-testing.d.ts.map +1 -0
- package/dist/types/context.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/options.d.ts +33 -3
- package/dist/types/options.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +3 -4
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +20 -28
- package/rslib.config.ts +2 -5
- package/src/contracts/consent/index.test.ts +5 -0
- package/src/contracts/consent/index.ts +9 -0
- package/src/contracts/consent/post.contract.test.ts +526 -0
- package/src/contracts/consent/post.contract.ts +160 -0
- package/src/contracts/consent/show-banner.contract.test.ts +214 -0
- package/src/contracts/consent/show-banner.contract.ts +45 -0
- package/src/contracts/consent/verify.contract.test.ts +185 -0
- package/src/contracts/consent/verify.contract.ts +126 -0
- package/src/contracts/index.ts +18 -0
- package/src/contracts/meta/index.test.ts +5 -0
- package/src/contracts/meta/index.ts +5 -0
- package/src/contracts/meta/status.contract.test.ts +338 -0
- package/src/contracts/meta/status.contract.ts +37 -0
- package/src/contracts/shared/jurisdiction.schema.ts +30 -0
- package/src/core.ts +451 -161
- package/src/handlers/consent/index.ts +9 -0
- package/src/handlers/consent/post.handler.ts +273 -0
- package/src/handlers/consent/show-banner.handler.test.ts +148 -0
- package/src/handlers/consent/show-banner.handler.ts +150 -0
- package/src/handlers/consent/verify.handler.ts +305 -0
- package/src/handlers/meta/index.ts +5 -0
- package/src/handlers/meta/status.handler.ts +47 -0
- package/src/init.ts +8 -26
- package/src/pkgs/api-router/hooks/__tests__/processor.test.ts +6 -0
- package/src/pkgs/api-router/hooks/processor.ts +2 -0
- package/src/pkgs/api-router/types/router-props.ts +1 -1
- package/src/pkgs/api-router/utils/cors.ts +1 -1
- package/src/pkgs/data-model/fields/field-types.ts +1 -1
- package/src/pkgs/data-model/fields/id-generator.ts +1 -1
- package/src/pkgs/db-adapters/README.md +3 -3
- package/src/pkgs/db-adapters/adapter-factory.ts +8 -4
- package/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts +13 -16
- package/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts +1 -3
- package/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts +0 -1
- package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/postgres.test.ts +1 -1
- package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/sqlite.test.ts +1 -1
- package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts +2 -2
- package/src/pkgs/db-adapters/adapters/kysely-adapter/types.ts +0 -2
- package/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts +0 -1
- package/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts +0 -1
- package/src/pkgs/migrations/get-migration.ts +3 -3
- package/src/pkgs/migrations/get-schema/get-schema.ts +2 -2
- package/src/pkgs/migrations/get-schema/index.ts +1 -1
- package/src/pkgs/migrations/migration-builders.ts +2 -2
- package/src/pkgs/migrations/migration-execution.ts +2 -2
- package/src/pkgs/migrations/schema-comparison.ts +5 -4
- package/src/pkgs/results/__tests__/error-class.test.ts +8 -7
- package/src/pkgs/results/core/error-class.ts +31 -43
- package/src/pkgs/results/index.ts +0 -10
- package/src/pkgs/results/orpc-error-handler.ts +137 -0
- package/src/pkgs/results/types.ts +8 -7
- package/src/pkgs/types/context.ts +18 -9
- package/src/pkgs/types/endpoints.ts +3 -5
- package/src/pkgs/types/options.ts +2 -4
- package/src/pkgs/types/plugins.ts +2 -3
- package/src/pkgs/utils/index.ts +1 -0
- package/src/pkgs/utils/logger.ts +38 -0
- package/src/router.ts +8 -0
- package/src/schema/audit-log/table.ts +1 -1
- package/src/schema/consent/table.ts +1 -1
- package/src/schema/consent-policy/table.ts +1 -1
- package/src/schema/consent-purpose/table.ts +1 -1
- package/src/schema/consent-record/table.ts +1 -1
- package/src/schema/definition.ts +2 -2
- package/src/schema/domain/table.ts +1 -1
- package/src/schema/subject/table.ts +1 -1
- package/src/server.ts +130 -0
- package/src/testing/contract-testing.ts +437 -0
- package/src/types/context.ts +1 -1
- package/src/types/index.ts +2 -2
- package/src/types/options.ts +38 -3
- package/src/types/plugins.ts +3 -4
- package/dist/index.cjs +0 -3706
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/init.test.d.ts +0 -2
- package/dist/init.test.d.ts.map +0 -1
- package/dist/integrations/cloudflare.cjs +0 -312
- package/dist/integrations/cloudflare.d.ts +0 -32
- package/dist/integrations/cloudflare.d.ts.map +0 -1
- package/dist/integrations/cloudflare.js +0 -278
- package/dist/integrations/next.cjs +0 -276
- package/dist/integrations/next.d.ts +0 -68
- package/dist/integrations/next.d.ts.map +0 -1
- package/dist/integrations/next.js +0 -239
- package/dist/integrations/node.cjs +0 -257
- package/dist/integrations/node.d.ts +0 -29
- package/dist/integrations/node.d.ts.map +0 -1
- package/dist/integrations/node.js +0 -223
- package/dist/pkgs/api-router/index.d.ts +0 -9
- package/dist/pkgs/api-router/index.d.ts.map +0 -1
- package/dist/pkgs/api-router/utils/define-route.d.ts +0 -87
- package/dist/pkgs/api-router/utils/define-route.d.ts.map +0 -1
- package/dist/pkgs/logger/__tests__/console-formatter.test.d.ts +0 -2
- package/dist/pkgs/logger/__tests__/console-formatter.test.d.ts.map +0 -1
- package/dist/pkgs/logger/__tests__/integration.test.d.ts +0 -2
- package/dist/pkgs/logger/__tests__/integration.test.d.ts.map +0 -1
- package/dist/pkgs/logger/__tests__/log-levels.test.d.ts +0 -2
- package/dist/pkgs/logger/__tests__/log-levels.test.d.ts.map +0 -1
- package/dist/pkgs/logger/__tests__/logger-factory.test.d.ts +0 -2
- package/dist/pkgs/logger/__tests__/logger-factory.test.d.ts.map +0 -1
- package/dist/pkgs/logger/__tests__/result-logging.test.d.ts +0 -2
- package/dist/pkgs/logger/__tests__/result-logging.test.d.ts.map +0 -1
- package/dist/pkgs/logger/__tests__/types.test.d.ts +0 -2
- package/dist/pkgs/logger/__tests__/types.test.d.ts.map +0 -1
- package/dist/pkgs/logger/console-formatter.d.ts +0 -56
- package/dist/pkgs/logger/console-formatter.d.ts.map +0 -1
- package/dist/pkgs/logger/index.cjs +0 -240
- package/dist/pkgs/logger/index.d.ts +0 -35
- package/dist/pkgs/logger/index.d.ts.map +0 -1
- package/dist/pkgs/logger/index.js +0 -185
- package/dist/pkgs/logger/log-levels.d.ts +0 -29
- package/dist/pkgs/logger/log-levels.d.ts.map +0 -1
- package/dist/pkgs/logger/logger-factory.d.ts +0 -42
- package/dist/pkgs/logger/logger-factory.d.ts.map +0 -1
- package/dist/pkgs/logger/result-logging.d.ts +0 -71
- package/dist/pkgs/logger/result-logging.d.ts.map +0 -1
- package/dist/pkgs/logger/telemetry.d.ts +0 -14
- package/dist/pkgs/logger/telemetry.d.ts.map +0 -1
- package/dist/pkgs/logger/types.d.ts +0 -121
- package/dist/pkgs/logger/types.d.ts.map +0 -1
- package/dist/pkgs/results/__tests__/retrieval-pipeline.test.d.ts +0 -2
- package/dist/pkgs/results/__tests__/retrieval-pipeline.test.d.ts.map +0 -1
- package/dist/pkgs/results/__tests__/validation-pipeline.test.d.ts +0 -2
- package/dist/pkgs/results/__tests__/validation-pipeline.test.d.ts.map +0 -1
- package/dist/pkgs/results/h3-integration.d.ts +0 -52
- package/dist/pkgs/results/h3-integration.d.ts.map +0 -1
- package/dist/pkgs/results/pipeline/retrieval-pipeline.d.ts +0 -101
- package/dist/pkgs/results/pipeline/retrieval-pipeline.d.ts.map +0 -1
- package/dist/pkgs/results/pipeline/validation-pipeline.d.ts +0 -89
- package/dist/pkgs/results/pipeline/validation-pipeline.d.ts.map +0 -1
- package/dist/response-types.d.ts +0 -19
- package/dist/response-types.d.ts.map +0 -1
- package/dist/routes/__test__/index.test.d.ts +0 -17
- package/dist/routes/__test__/index.test.d.ts.map +0 -1
- package/dist/routes/__test__/set-consent.test.d.ts +0 -2
- package/dist/routes/__test__/set-consent.test.d.ts.map +0 -1
- package/dist/routes/__test__/show-consent-banner.test.d.ts +0 -2
- package/dist/routes/__test__/show-consent-banner.test.d.ts.map +0 -1
- package/dist/routes/__test__/status.test.d.ts +0 -2
- package/dist/routes/__test__/status.test.d.ts.map +0 -1
- package/dist/routes/__test__/verify-consent.test.d.ts +0 -2
- package/dist/routes/__test__/verify-consent.test.d.ts.map +0 -1
- package/dist/routes/index.d.ts +0 -3
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/set-consent.d.ts +0 -89
- package/dist/routes/set-consent.d.ts.map +0 -1
- package/dist/routes/show-consent-banner.d.ts +0 -15
- package/dist/routes/show-consent-banner.d.ts.map +0 -1
- package/dist/routes/status.d.ts +0 -44
- package/dist/routes/status.d.ts.map +0 -1
- package/dist/routes/types.d.ts +0 -7
- package/dist/routes/types.d.ts.map +0 -1
- package/dist/routes/verify-consent.d.ts +0 -38
- package/dist/routes/verify-consent.d.ts.map +0 -1
- package/src/docs/ADVANCED_JSON_HANDLING.md +0 -99
- package/src/docs/neverthrow.md +0 -171
- package/src/index.ts +0 -34
- package/src/init.test.ts +0 -236
- package/src/integrations/cloudflare.ts +0 -269
- package/src/integrations/next.ts +0 -204
- package/src/integrations/node.ts +0 -141
- package/src/pkgs/api-router/index.ts +0 -148
- package/src/pkgs/api-router/types/h3.d.ts +0 -42
- package/src/pkgs/api-router/utils/define-route.ts +0 -410
- package/src/pkgs/logger/README.md +0 -213
- package/src/pkgs/logger/__tests__/console-formatter.test.ts +0 -67
- package/src/pkgs/logger/__tests__/integration.test.ts +0 -184
- package/src/pkgs/logger/__tests__/log-levels.test.ts +0 -77
- package/src/pkgs/logger/__tests__/logger-factory.test.ts +0 -156
- package/src/pkgs/logger/__tests__/result-logging.test.ts +0 -209
- package/src/pkgs/logger/__tests__/types.test.ts +0 -94
- package/src/pkgs/logger/console-formatter.ts +0 -75
- package/src/pkgs/logger/doc.md +0 -569
- package/src/pkgs/logger/index.ts +0 -59
- package/src/pkgs/logger/log-levels.ts +0 -46
- package/src/pkgs/logger/logger-factory.ts +0 -121
- package/src/pkgs/logger/result-logging.ts +0 -134
- package/src/pkgs/logger/telemetry.ts +0 -96
- package/src/pkgs/logger/types.ts +0 -138
- package/src/pkgs/results/__tests__/retrieval-pipeline.test.ts +0 -157
- package/src/pkgs/results/__tests__/validation-pipeline.test.ts +0 -151
- package/src/pkgs/results/h3-integration.ts +0 -142
- package/src/pkgs/results/pipeline/retrieval-pipeline.ts +0 -188
- package/src/pkgs/results/pipeline/validation-pipeline.ts +0 -164
- package/src/plugins/.keep +0 -0
- package/src/response-types.ts +0 -29
- package/src/routes/__test__/index.test.ts +0 -112
- package/src/routes/__test__/set-consent.test.ts +0 -242
- package/src/routes/__test__/show-consent-banner.test.ts +0 -98
- package/src/routes/__test__/status.test.ts +0 -64
- package/src/routes/__test__/verify-consent.test.ts +0 -266
- package/src/routes/index.ts +0 -12
- package/src/routes/set-consent.ts +0 -249
- package/src/routes/show-consent-banner.ts +0 -131
- package/src/routes/status.ts +0 -61
- package/src/routes/types.ts +0 -7
- package/src/routes/verify-consent.ts +0 -206
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ORPCError } from '@orpc/server';
|
|
2
2
|
import type { Result, ResultAsync } from 'neverthrow';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -46,17 +46,13 @@ export type ErrorMessageType = string;
|
|
|
46
46
|
*
|
|
47
47
|
* @remarks
|
|
48
48
|
* This interface defines the public API of the DoubleTieError class.
|
|
49
|
-
* It extends the
|
|
49
|
+
* It extends the ORPCError class with additional properties and methods
|
|
50
50
|
* specific to the DoubleTie error handling system.
|
|
51
51
|
*
|
|
52
52
|
* @see DoubleTieErrorOptions for the options used to construct a DoubleTieError
|
|
53
53
|
*/
|
|
54
54
|
export interface DoubleTieError
|
|
55
|
-
extends
|
|
56
|
-
code: ErrorMessageType;
|
|
57
|
-
category?: ErrorCategory;
|
|
58
|
-
meta?: Record<string, unknown>;
|
|
59
|
-
}> {
|
|
55
|
+
extends ORPCError<string, Record<string, unknown>> {
|
|
60
56
|
/**
|
|
61
57
|
* Error code identifying the error type
|
|
62
58
|
*/
|
|
@@ -72,6 +68,11 @@ export interface DoubleTieError
|
|
|
72
68
|
*/
|
|
73
69
|
readonly meta: Record<string, unknown>;
|
|
74
70
|
|
|
71
|
+
/**
|
|
72
|
+
* HTTP status code for the error
|
|
73
|
+
*/
|
|
74
|
+
readonly statusCode: number;
|
|
75
|
+
|
|
75
76
|
/**
|
|
76
77
|
* Creates a new error instance with additional metadata
|
|
77
78
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { createLogger } from '@doubletie/logger';
|
|
2
2
|
import type { DatabaseHook, EntityName } from '~/pkgs/data-model';
|
|
3
3
|
import type { Adapter } from '~/pkgs/db-adapters/types';
|
|
4
|
-
import type { createLogger } from '~/pkgs/logger';
|
|
5
4
|
import type { createRegistry } from '~/schema/create-registry';
|
|
6
5
|
import type { getConsentTables } from '~/schema/definition';
|
|
7
6
|
import type { DoubleTieOptions } from './options';
|
|
@@ -12,7 +11,12 @@ import type { DoubleTieOptions } from './options';
|
|
|
12
11
|
* This type extends the standard endpoint context with additional properties
|
|
13
12
|
* specific to DoubleTie hooks, allowing hooks to access the complete DoubleTie context.
|
|
14
13
|
*/
|
|
15
|
-
export type HookEndpointContext =
|
|
14
|
+
export type HookEndpointContext = {
|
|
15
|
+
/**
|
|
16
|
+
* The request object
|
|
17
|
+
*/
|
|
18
|
+
request: Request;
|
|
19
|
+
|
|
16
20
|
/**
|
|
17
21
|
* The DoubleTie context with possible hook-specific extensions
|
|
18
22
|
*/
|
|
@@ -35,7 +39,12 @@ export type HookEndpointContext = H3Event & {
|
|
|
35
39
|
* A simplified context type for endpoint handlers that don't need
|
|
36
40
|
* access to input-specific context properties.
|
|
37
41
|
*/
|
|
38
|
-
export type GenericEndpointContext =
|
|
42
|
+
export type GenericEndpointContext = {
|
|
43
|
+
/**
|
|
44
|
+
* The request object
|
|
45
|
+
*/
|
|
46
|
+
request: Request;
|
|
47
|
+
|
|
39
48
|
/**
|
|
40
49
|
* The DoubleTie application context
|
|
41
50
|
*/
|
|
@@ -112,11 +121,6 @@ export interface BaseDoubleTieContext {
|
|
|
112
121
|
*/
|
|
113
122
|
baseURL: string;
|
|
114
123
|
|
|
115
|
-
/**
|
|
116
|
-
* Secret key used for signing cookies and tokens
|
|
117
|
-
*/
|
|
118
|
-
secret: string;
|
|
119
|
-
|
|
120
124
|
/**
|
|
121
125
|
* Logger instance for recording events and errors
|
|
122
126
|
*/
|
|
@@ -154,6 +158,11 @@ export interface BaseDoubleTieContext {
|
|
|
154
158
|
* User agent of the client
|
|
155
159
|
*/
|
|
156
160
|
userAgent?: string | null;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Headers of the request
|
|
164
|
+
*/
|
|
165
|
+
headers?: Headers;
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
/**
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { H3Event } from 'h3';
|
|
2
|
-
|
|
3
1
|
export interface EndpointOptions {
|
|
4
2
|
/**
|
|
5
3
|
* Whether authentication is required for this endpoint
|
|
@@ -12,12 +10,12 @@ export interface EndpointOptions {
|
|
|
12
10
|
middleware?: EndpointMiddleware[];
|
|
13
11
|
}
|
|
14
12
|
|
|
15
|
-
export type EndpointMiddleware = (
|
|
13
|
+
export type EndpointMiddleware = (request: Request) => Promise<void>;
|
|
16
14
|
|
|
17
|
-
export type EndpointHandler = (
|
|
15
|
+
export type EndpointHandler = (request: Request) => Promise<unknown>;
|
|
18
16
|
|
|
19
17
|
/**
|
|
20
|
-
* Native
|
|
18
|
+
* Native endpoint interface
|
|
21
19
|
*/
|
|
22
20
|
export interface Endpoint {
|
|
23
21
|
/**
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { DatabaseHook } from '~/pkgs/data-model';
|
|
2
2
|
import type { DatabaseConfiguration } from '~/pkgs/db-adapters/adapters/kysely-adapter/types';
|
|
3
3
|
|
|
4
|
+
import type { LoggerOptions } from '@doubletie/logger';
|
|
4
5
|
import type { Tracer } from '@opentelemetry/api';
|
|
5
|
-
import type { H3Event } from 'h3';
|
|
6
6
|
// Import table configuration types from the schema module
|
|
7
7
|
import type { TablesConfig } from '~/schema/types';
|
|
8
|
-
import type { LoggerOptions } from '../logger';
|
|
9
8
|
import type { DoubleTiePlugin } from './plugins';
|
|
10
9
|
|
|
11
10
|
/**
|
|
@@ -22,7 +21,6 @@ import type { DoubleTiePlugin } from './plugins';
|
|
|
22
21
|
* // Basic configuration
|
|
23
22
|
* const options: DoubleTieOptions = {
|
|
24
23
|
* appName: "My App",
|
|
25
|
-
* secret: process.env.SECRET_KEY,
|
|
26
24
|
* baseURL: "https://example.com",
|
|
27
25
|
* trustedOrigins: ["https://example.com"]
|
|
28
26
|
* };
|
|
@@ -229,6 +227,6 @@ export interface DoubleTieOptions {
|
|
|
229
227
|
* Middleware function for processing API requests
|
|
230
228
|
*/
|
|
231
229
|
export type DoubleTieMiddleware = (
|
|
232
|
-
|
|
230
|
+
request: Request,
|
|
233
231
|
next: () => Promise<unknown>
|
|
234
232
|
) => Promise<unknown>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { H3Event } from 'h3';
|
|
2
1
|
import type { Migration } from 'kysely';
|
|
3
2
|
import type { Field } from '~/pkgs/data-model';
|
|
4
3
|
import type { DoubleTieContext, HookEndpointContext } from './context';
|
|
@@ -75,12 +74,12 @@ export interface DoubleTiePlugin {
|
|
|
75
74
|
/**
|
|
76
75
|
* Handler for intercepting and potentially modifying incoming requests
|
|
77
76
|
*/
|
|
78
|
-
onRequest?: (
|
|
77
|
+
onRequest?: (request: Request, ctx: DoubleTieContext) => Promise<unknown>;
|
|
79
78
|
|
|
80
79
|
/**
|
|
81
80
|
* Handler for intercepting and potentially modifying outgoing responses
|
|
82
81
|
*/
|
|
83
|
-
onResponse?: (
|
|
82
|
+
onResponse?: (response: Response, ctx: DoubleTieContext) => Promise<unknown>;
|
|
84
83
|
|
|
85
84
|
/**
|
|
86
85
|
* Request lifecycle hooks for executing code before or after endpoint handling
|
package/src/pkgs/utils/index.ts
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type LoggerOptions,
|
|
3
|
+
createLogger as createDTLogger,
|
|
4
|
+
} from '@doubletie/logger';
|
|
5
|
+
|
|
6
|
+
let globalLogger: ReturnType<typeof createDTLogger>;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Gets or creates a global logger instance
|
|
10
|
+
*
|
|
11
|
+
* @param options - Optional logger configuration options
|
|
12
|
+
* @returns The global logger instance
|
|
13
|
+
*/
|
|
14
|
+
export function getLogger(
|
|
15
|
+
options?: LoggerOptions
|
|
16
|
+
): ReturnType<typeof createDTLogger> {
|
|
17
|
+
if (!globalLogger) {
|
|
18
|
+
globalLogger = createDTLogger({
|
|
19
|
+
level: 'info',
|
|
20
|
+
appName: 'c15t',
|
|
21
|
+
...options,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return globalLogger;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Initializes the global logger with specific options
|
|
29
|
+
*
|
|
30
|
+
* @param options - Logger configuration options
|
|
31
|
+
* @returns The initialized global logger instance
|
|
32
|
+
*/
|
|
33
|
+
export function initLogger(
|
|
34
|
+
options: LoggerOptions
|
|
35
|
+
): ReturnType<typeof createDTLogger> {
|
|
36
|
+
globalLogger = createDTLogger(options);
|
|
37
|
+
return globalLogger;
|
|
38
|
+
}
|
package/src/router.ts
ADDED
|
@@ -9,7 +9,7 @@ import { auditLogSchema } from './schema';
|
|
|
9
9
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
10
10
|
* for database migrations, schema validation, and query building.
|
|
11
11
|
*
|
|
12
|
-
* @param options -
|
|
12
|
+
* @param options - c15t configuration options that may contain audit log table customizations
|
|
13
13
|
* @param auditLogFields - Additional fields from plugins to include in the audit log table
|
|
14
14
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
15
15
|
*
|
|
@@ -8,7 +8,7 @@ import { consentSchema } from './schema';
|
|
|
8
8
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
9
9
|
* for database migrations, schema validation, and query building.
|
|
10
10
|
*
|
|
11
|
-
* @param options -
|
|
11
|
+
* @param options - c15t configuration options that may contain consent table customizations
|
|
12
12
|
* @param consentFields - Additional fields from plugins to include in the consent table
|
|
13
13
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
14
14
|
*
|
|
@@ -9,7 +9,7 @@ import { consentPolicySchema } from './schema';
|
|
|
9
9
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
10
10
|
* for database migrations, schema validation, and query building.
|
|
11
11
|
*
|
|
12
|
-
* @param options -
|
|
12
|
+
* @param options - c15t configuration options that may contain policy table customizations
|
|
13
13
|
* @param policyFields - Additional fields from plugins to include in the policy table
|
|
14
14
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
15
15
|
*
|
|
@@ -9,7 +9,7 @@ import { purposeSchema } from './schema';
|
|
|
9
9
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
10
10
|
* for database migrations, schema validation, and query building.
|
|
11
11
|
*
|
|
12
|
-
* @param options -
|
|
12
|
+
* @param options - c15t configuration options that may contain consentPurpose table customizations
|
|
13
13
|
* @param purposeFields - Additional fields from plugins to include in the consentPurpose table
|
|
14
14
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
15
15
|
*
|
|
@@ -9,7 +9,7 @@ import { consentRecordSchema } from './schema';
|
|
|
9
9
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
10
10
|
* for database migrations, schema validation, and query building.
|
|
11
11
|
*
|
|
12
|
-
* @param options -
|
|
12
|
+
* @param options - c15t configuration options that may contain consent record table customizations
|
|
13
13
|
* @param recordFields - Additional fields from plugins to include in the consent record table
|
|
14
14
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
15
15
|
*
|
package/src/schema/definition.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { logger } from '@doubletie/logger';
|
|
2
|
+
import { ZodError } from 'zod';
|
|
2
3
|
import type { Field, PluginSchema } from '~/pkgs/data-model';
|
|
3
|
-
import { logger } from '~/pkgs/logger';
|
|
4
4
|
import type { C15TOptions } from '~/types';
|
|
5
5
|
import { getAuditLogTable } from './audit-log/table';
|
|
6
6
|
import { getConsentPolicyTable } from './consent-policy/table';
|
|
@@ -9,7 +9,7 @@ import { domainSchema } from './schema';
|
|
|
9
9
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
10
10
|
* for database migrations, schema validation, and query building.
|
|
11
11
|
*
|
|
12
|
-
* @param options -
|
|
12
|
+
* @param options - c15t configuration options that may contain domain table customizations
|
|
13
13
|
* @param domainFields - Additional fields from plugins to include in the domain table
|
|
14
14
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
15
15
|
*
|
|
@@ -9,7 +9,7 @@ import { subjectSchema } from './schema';
|
|
|
9
9
|
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
10
10
|
* for database migrations, schema validation, and query building.
|
|
11
11
|
*
|
|
12
|
-
* @param options -
|
|
12
|
+
* @param options - c15t configuration options that may contain subject table customizations
|
|
13
13
|
* @param subjectFields - Additional fields from plugins to include in the subject table
|
|
14
14
|
* @returns A complete table schema definition with fields, model name, and metadata
|
|
15
15
|
*
|
package/src/server.ts
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { c15tInstance } from './core';
|
|
3
|
+
import { DoubleTieError } from './pkgs/results';
|
|
4
|
+
import { getLogger } from './pkgs/utils/logger';
|
|
5
|
+
|
|
6
|
+
// Use the centralized logger
|
|
7
|
+
const logger = getLogger({
|
|
8
|
+
level: 'info',
|
|
9
|
+
// appName: 'c15t-server'
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Create the c15t instance with our configuration
|
|
13
|
+
const instance = c15tInstance({
|
|
14
|
+
advanced: {
|
|
15
|
+
cors: {
|
|
16
|
+
allowedOrigins: ['*'], // Allow all origins for development
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
// Add OpenAPI configuration
|
|
20
|
+
openapi: {
|
|
21
|
+
enabled: true, // Set to true to enable docs
|
|
22
|
+
// Additional OpenAPI options can be added here
|
|
23
|
+
},
|
|
24
|
+
// Add logger
|
|
25
|
+
logger: {
|
|
26
|
+
level: 'info',
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Create HTTP server
|
|
31
|
+
const server = createServer(async (req, res) => {
|
|
32
|
+
// Convert Node.js request to Web Request
|
|
33
|
+
const url = new URL(req.url || '/', `http://${req.headers.host}`);
|
|
34
|
+
const headers = new Headers();
|
|
35
|
+
|
|
36
|
+
// Convert Node.js headers to Headers object
|
|
37
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
38
|
+
if (value) {
|
|
39
|
+
headers.set(key, Array.isArray(value) ? value.join(', ') : value);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Create a Request object compatible with oRPC
|
|
44
|
+
const request = new Request(url.toString(), {
|
|
45
|
+
method: req.method || 'GET',
|
|
46
|
+
headers,
|
|
47
|
+
// Handle request body for POST/PUT/PATCH requests
|
|
48
|
+
...(req.method !== 'GET' &&
|
|
49
|
+
req.method !== 'HEAD' && {
|
|
50
|
+
body: req,
|
|
51
|
+
}),
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
// Use c15tInstance handler to process the request
|
|
56
|
+
// It will automatically handle OpenAPI spec and docs UI
|
|
57
|
+
const response = await instance.handler(request);
|
|
58
|
+
|
|
59
|
+
// Convert Web API Response to Node.js response
|
|
60
|
+
res.writeHead(
|
|
61
|
+
response.status,
|
|
62
|
+
response.statusText,
|
|
63
|
+
Object.fromEntries(response.headers.entries())
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
// Handle different response types
|
|
67
|
+
if (response.body) {
|
|
68
|
+
// Stream the response body
|
|
69
|
+
const reader = response.body.getReader();
|
|
70
|
+
const processChunk = async () => {
|
|
71
|
+
try {
|
|
72
|
+
const { done, value } = await reader.read();
|
|
73
|
+
if (done) {
|
|
74
|
+
res.end();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Check if response already ended
|
|
79
|
+
if (!res.writableEnded) {
|
|
80
|
+
const canContinue = res.write(value);
|
|
81
|
+
if (canContinue) {
|
|
82
|
+
processChunk();
|
|
83
|
+
} else {
|
|
84
|
+
// If the buffer is full, wait for the drain event
|
|
85
|
+
res.once('drain', processChunk);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch (err) {
|
|
89
|
+
logger.error('Error while streaming response:', err);
|
|
90
|
+
if (!res.writableEnded) {
|
|
91
|
+
res.end();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
processChunk();
|
|
96
|
+
} else {
|
|
97
|
+
res.end();
|
|
98
|
+
}
|
|
99
|
+
} catch (error) {
|
|
100
|
+
logger.error('Error handling request:', error);
|
|
101
|
+
|
|
102
|
+
// Return a proper error response based on the error type
|
|
103
|
+
if (error instanceof DoubleTieError) {
|
|
104
|
+
res.writeHead(error.statusCode, { 'Content-Type': 'application/json' });
|
|
105
|
+
res.end(
|
|
106
|
+
JSON.stringify({
|
|
107
|
+
code: error.code,
|
|
108
|
+
message: error.message,
|
|
109
|
+
data: error.meta,
|
|
110
|
+
})
|
|
111
|
+
);
|
|
112
|
+
} else {
|
|
113
|
+
// Generic error handler
|
|
114
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
115
|
+
res.end(
|
|
116
|
+
JSON.stringify({
|
|
117
|
+
error: 'Internal Server Error',
|
|
118
|
+
message: error instanceof Error ? error.message : String(error),
|
|
119
|
+
})
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Start the server
|
|
126
|
+
const PORT = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : 3000;
|
|
127
|
+
server.listen(PORT, () => {
|
|
128
|
+
logger.info(`c15t server is running at http://localhost:${PORT}`);
|
|
129
|
+
logger.info(`API documentation available at http://localhost:${PORT}/docs`);
|
|
130
|
+
});
|