@c15t/backend 0.0.1-rc.10
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 +11 -0
- package/.turbo/turbo-check-types.log +5 -0
- package/.turbo/turbo-fmt.log +7 -0
- package/.turbo/turbo-lint.log +6 -0
- package/.turbo/turbo-test.log +26 -0
- package/README-next.md +223 -0
- package/README.md +164 -0
- package/dist/api/call.d.ts +176 -0
- package/dist/api/call.d.ts.map +1 -0
- package/dist/api/index.d.ts +935 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/middlewares/index.d.ts +39 -0
- package/dist/api/middlewares/index.d.ts.map +1 -0
- package/dist/api/middlewares/origin-check.d.ts +82 -0
- package/dist/api/middlewares/origin-check.d.ts.map +1 -0
- package/dist/api/middlewares/validate-context.d.ts +38 -0
- package/dist/api/middlewares/validate-context.d.ts.map +1 -0
- package/dist/api/routes/__tests__/consent.test.d.ts +2 -0
- package/dist/api/routes/__tests__/consent.test.d.ts.map +1 -0
- package/dist/api/routes/__tests__/status.test.d.ts +2 -0
- package/dist/api/routes/__tests__/status.test.d.ts.map +1 -0
- package/dist/api/routes/error.d.ts +57 -0
- package/dist/api/routes/error.d.ts.map +1 -0
- package/dist/api/routes/generate-consent-receipt.d.ts +130 -0
- package/dist/api/routes/generate-consent-receipt.d.ts.map +1 -0
- package/dist/api/routes/get-consent-history.d.ts +133 -0
- package/dist/api/routes/get-consent-history.d.ts.map +1 -0
- package/dist/api/routes/get-consent-policy.d.ts +164 -0
- package/dist/api/routes/get-consent-policy.d.ts.map +1 -0
- package/dist/api/routes/get-consent.d.ts +148 -0
- package/dist/api/routes/get-consent.d.ts.map +1 -0
- package/dist/api/routes/index.d.ts +339 -0
- package/dist/api/routes/index.d.ts.map +1 -0
- package/dist/api/routes/ok.d.ts +87 -0
- package/dist/api/routes/ok.d.ts.map +1 -0
- package/dist/api/routes/set-consent.d.ts +245 -0
- package/dist/api/routes/set-consent.d.ts.map +1 -0
- package/dist/api/routes/show-consent-banner.d.ts +127 -0
- package/dist/api/routes/show-consent-banner.d.ts.map +1 -0
- package/dist/api/routes/status.d.ts +61 -0
- package/dist/api/routes/status.d.ts.map +1 -0
- package/dist/api/routes/verify-consent.d.ts +179 -0
- package/dist/api/routes/verify-consent.d.ts.map +1 -0
- package/dist/api/routes/withdraw-consent.d.ts +194 -0
- package/dist/api/routes/withdraw-consent.d.ts.map +1 -0
- package/dist/api/to-endpoints.d.ts +35 -0
- package/dist/api/to-endpoints.d.ts.map +1 -0
- package/dist/client/index.cjs +139 -0
- package/dist/client/index.d.ts +203 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +106 -0
- package/dist/client/types.d.ts +431 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/core.d.ts +124 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.test.d.ts +2 -0
- package/dist/core.test.d.ts.map +1 -0
- package/dist/db/adapters/drizzle-adapter/drizzle-adapter.d.ts +122 -0
- package/dist/db/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -0
- package/dist/db/adapters/drizzle-adapter/index.d.ts +2 -0
- package/dist/db/adapters/drizzle-adapter/index.d.ts.map +1 -0
- package/dist/db/adapters/drizzle.cjs +1531 -0
- package/dist/db/adapters/drizzle.js +1489 -0
- package/dist/db/adapters/kysely-adapter/dialect.d.ts +72 -0
- package/dist/db/adapters/kysely-adapter/dialect.d.ts.map +1 -0
- package/dist/db/adapters/kysely-adapter/index.d.ts +4 -0
- package/dist/db/adapters/kysely-adapter/index.d.ts.map +1 -0
- package/dist/db/adapters/kysely-adapter/kysely-adapter.d.ts +98 -0
- package/dist/db/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -0
- package/dist/db/adapters/kysely-adapter/types.d.ts +281 -0
- package/dist/db/adapters/kysely-adapter/types.d.ts.map +1 -0
- package/dist/db/adapters/kysely.cjs +1551 -0
- package/dist/db/adapters/kysely.js +1508 -0
- package/dist/db/adapters/memory-adapter/index.d.ts +2 -0
- package/dist/db/adapters/memory-adapter/index.d.ts.map +1 -0
- package/dist/db/adapters/memory-adapter/memory-adapter.d.ts +56 -0
- package/dist/db/adapters/memory-adapter/memory-adapter.d.ts.map +1 -0
- package/dist/db/adapters/memory.cjs +1391 -0
- package/dist/db/adapters/memory.js +1349 -0
- package/dist/db/adapters/prisma-adapter/index.d.ts +2 -0
- package/dist/db/adapters/prisma-adapter/index.d.ts.map +1 -0
- package/dist/db/adapters/prisma-adapter/prisma-adapter.d.ts +143 -0
- package/dist/db/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -0
- package/dist/db/adapters/prisma.cjs +1503 -0
- package/dist/db/adapters/prisma.js +1461 -0
- package/dist/db/adapters/types.d.ts +154 -0
- package/dist/db/adapters/types.d.ts.map +1 -0
- package/dist/db/adapters/utils.d.ts +36 -0
- package/dist/db/adapters/utils.d.ts.map +1 -0
- package/dist/db/core/fields/field-factory.d.ts +383 -0
- package/dist/db/core/fields/field-factory.d.ts.map +1 -0
- package/dist/db/core/fields/field-inference.d.ts +218 -0
- package/dist/db/core/fields/field-inference.d.ts.map +1 -0
- package/dist/db/core/fields/field-options-integration.d.ts +90 -0
- package/dist/db/core/fields/field-options-integration.d.ts.map +1 -0
- package/dist/db/core/fields/field-types.d.ts +182 -0
- package/dist/db/core/fields/field-types.d.ts.map +1 -0
- package/dist/db/core/fields/id-generator.d.ts +19 -0
- package/dist/db/core/fields/id-generator.d.ts.map +1 -0
- package/dist/db/core/fields/index.d.ts +8 -0
- package/dist/db/core/fields/index.d.ts.map +1 -0
- package/dist/db/core/fields/superjson-utils.d.ts +34 -0
- package/dist/db/core/fields/superjson-utils.d.ts.map +1 -0
- package/dist/db/core/fields/zod-fields.d.ts +1011 -0
- package/dist/db/core/fields/zod-fields.d.ts.map +1 -0
- package/dist/db/core/get-schema.d.ts +36 -0
- package/dist/db/core/get-schema.d.ts.map +1 -0
- package/dist/db/core/types.d.ts +41 -0
- package/dist/db/core/types.d.ts.map +1 -0
- package/dist/db/create-registry.d.ts +760 -0
- package/dist/db/create-registry.d.ts.map +1 -0
- package/dist/db/hooks/create-hooks.d.ts +32 -0
- package/dist/db/hooks/create-hooks.d.ts.map +1 -0
- package/dist/db/hooks/index.d.ts +40 -0
- package/dist/db/hooks/index.d.ts.map +1 -0
- package/dist/db/hooks/types.d.ts +133 -0
- package/dist/db/hooks/types.d.ts.map +1 -0
- package/dist/db/hooks/update-hooks.d.ts +33 -0
- package/dist/db/hooks/update-hooks.d.ts.map +1 -0
- package/dist/db/hooks/update-many-hooks.d.ts +55 -0
- package/dist/db/hooks/update-many-hooks.d.ts.map +1 -0
- package/dist/db/hooks/utils.d.ts +62 -0
- package/dist/db/hooks/utils.d.ts.map +1 -0
- package/dist/db/hooks/with-hooks-factory.d.ts +33 -0
- package/dist/db/hooks/with-hooks-factory.d.ts.map +1 -0
- package/dist/db/index.cjs +2458 -0
- package/dist/db/index.d.ts +11 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +2404 -0
- package/dist/db/migration/get-migration.d.ts +32 -0
- package/dist/db/migration/get-migration.d.ts.map +1 -0
- package/dist/db/migration/get-schema/get-schema.d.ts +27 -0
- package/dist/db/migration/get-schema/get-schema.d.ts.map +1 -0
- package/dist/db/migration/get-schema/index.d.ts +21 -0
- package/dist/db/migration/get-schema/index.d.ts.map +1 -0
- package/dist/db/migration/get-schema/process-fields.d.ts +16 -0
- package/dist/db/migration/get-schema/process-fields.d.ts.map +1 -0
- package/dist/db/migration/get-schema/process-tables.d.ts +13 -0
- package/dist/db/migration/get-schema/process-tables.d.ts.map +1 -0
- package/dist/db/migration/get-schema/types.d.ts +17 -0
- package/dist/db/migration/get-schema/types.d.ts.map +1 -0
- package/dist/db/migration/index.cjs +1613 -0
- package/dist/db/migration/index.d.ts +14 -0
- package/dist/db/migration/index.d.ts.map +1 -0
- package/dist/db/migration/index.js +1571 -0
- package/dist/db/migration/migration-builders.d.ts +28 -0
- package/dist/db/migration/migration-builders.d.ts.map +1 -0
- package/dist/db/migration/migration-execution.d.ts +12 -0
- package/dist/db/migration/migration-execution.d.ts.map +1 -0
- package/dist/db/migration/schema-comparison.d.ts +54 -0
- package/dist/db/migration/schema-comparison.d.ts.map +1 -0
- package/dist/db/migration/type-mapping.d.ts +86 -0
- package/dist/db/migration/type-mapping.d.ts.map +1 -0
- package/dist/db/migration/types.d.ts +37 -0
- package/dist/db/migration/types.d.ts.map +1 -0
- package/dist/db/schema/audit-log/index.d.ts +4 -0
- package/dist/db/schema/audit-log/index.d.ts.map +1 -0
- package/dist/db/schema/audit-log/registry.d.ts +128 -0
- package/dist/db/schema/audit-log/registry.d.ts.map +1 -0
- package/dist/db/schema/audit-log/schema.d.ts +67 -0
- package/dist/db/schema/audit-log/schema.d.ts.map +1 -0
- package/dist/db/schema/audit-log/table.d.ts +175 -0
- package/dist/db/schema/audit-log/table.d.ts.map +1 -0
- package/dist/db/schema/audit-log/types.d.ts +29 -0
- package/dist/db/schema/audit-log/types.d.ts.map +1 -0
- package/dist/db/schema/consent/index.d.ts +4 -0
- package/dist/db/schema/consent/index.d.ts.map +1 -0
- package/dist/db/schema/consent/registry.d.ts +318 -0
- package/dist/db/schema/consent/registry.d.ts.map +1 -0
- package/dist/db/schema/consent/schema.d.ts +135 -0
- package/dist/db/schema/consent/schema.d.ts.map +1 -0
- package/dist/db/schema/consent/table.d.ts +245 -0
- package/dist/db/schema/consent/table.d.ts.map +1 -0
- package/dist/db/schema/consent/types.d.ts +37 -0
- package/dist/db/schema/consent/types.d.ts.map +1 -0
- package/dist/db/schema/consent-geo-location/index.d.ts +4 -0
- package/dist/db/schema/consent-geo-location/index.d.ts.map +1 -0
- package/dist/db/schema/consent-geo-location/registry.d.ts +96 -0
- package/dist/db/schema/consent-geo-location/registry.d.ts.map +1 -0
- package/dist/db/schema/consent-geo-location/schema.d.ts +71 -0
- package/dist/db/schema/consent-geo-location/schema.d.ts.map +1 -0
- package/dist/db/schema/consent-geo-location/table.d.ts +167 -0
- package/dist/db/schema/consent-geo-location/table.d.ts.map +1 -0
- package/dist/db/schema/consent-geo-location/types.d.ts +21 -0
- package/dist/db/schema/consent-geo-location/types.d.ts.map +1 -0
- package/dist/db/schema/consent-policy/index.d.ts +4 -0
- package/dist/db/schema/consent-policy/index.d.ts.map +1 -0
- package/dist/db/schema/consent-policy/registry.d.ts +186 -0
- package/dist/db/schema/consent-policy/registry.d.ts.map +1 -0
- package/dist/db/schema/consent-policy/schema.d.ts +68 -0
- package/dist/db/schema/consent-policy/schema.d.ts.map +1 -0
- package/dist/db/schema/consent-policy/table.d.ts +147 -0
- package/dist/db/schema/consent-policy/table.d.ts.map +1 -0
- package/dist/db/schema/consent-policy/types.d.ts +28 -0
- package/dist/db/schema/consent-policy/types.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose/index.d.ts +4 -0
- package/dist/db/schema/consent-purpose/index.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose/registry.d.ts +136 -0
- package/dist/db/schema/consent-purpose/registry.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose/schema.d.ts +79 -0
- package/dist/db/schema/consent-purpose/schema.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose/table.d.ts +161 -0
- package/dist/db/schema/consent-purpose/table.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose/types.d.ts +16 -0
- package/dist/db/schema/consent-purpose/types.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose-junction/index.d.ts +4 -0
- package/dist/db/schema/consent-purpose-junction/index.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose-junction/registry.d.ts +109 -0
- package/dist/db/schema/consent-purpose-junction/registry.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose-junction/schema.d.ts +57 -0
- package/dist/db/schema/consent-purpose-junction/schema.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose-junction/table.d.ts +138 -0
- package/dist/db/schema/consent-purpose-junction/table.d.ts.map +1 -0
- package/dist/db/schema/consent-purpose-junction/types.d.ts +14 -0
- package/dist/db/schema/consent-purpose-junction/types.d.ts.map +1 -0
- package/dist/db/schema/consent-record/index.d.ts +4 -0
- package/dist/db/schema/consent-record/index.d.ts.map +1 -0
- package/dist/db/schema/consent-record/registry.d.ts +119 -0
- package/dist/db/schema/consent-record/registry.d.ts.map +1 -0
- package/dist/db/schema/consent-record/schema.d.ts +57 -0
- package/dist/db/schema/consent-record/schema.d.ts.map +1 -0
- package/dist/db/schema/consent-record/table.d.ts +123 -0
- package/dist/db/schema/consent-record/table.d.ts.map +1 -0
- package/dist/db/schema/consent-record/types.d.ts +21 -0
- package/dist/db/schema/consent-record/types.d.ts.map +1 -0
- package/dist/db/schema/consent-withdrawal/index.d.ts +4 -0
- package/dist/db/schema/consent-withdrawal/index.d.ts.map +1 -0
- package/dist/db/schema/consent-withdrawal/registry.d.ts +134 -0
- package/dist/db/schema/consent-withdrawal/registry.d.ts.map +1 -0
- package/dist/db/schema/consent-withdrawal/schema.d.ts +67 -0
- package/dist/db/schema/consent-withdrawal/schema.d.ts.map +1 -0
- package/dist/db/schema/consent-withdrawal/table.d.ts +170 -0
- package/dist/db/schema/consent-withdrawal/table.d.ts.map +1 -0
- package/dist/db/schema/consent-withdrawal/types.d.ts +28 -0
- package/dist/db/schema/consent-withdrawal/types.d.ts.map +1 -0
- package/dist/db/schema/definition.d.ts +1100 -0
- package/dist/db/schema/definition.d.ts.map +1 -0
- package/dist/db/schema/domain/index.d.ts +4 -0
- package/dist/db/schema/domain/index.d.ts.map +1 -0
- package/dist/db/schema/domain/registry.d.ts +169 -0
- package/dist/db/schema/domain/registry.d.ts.map +1 -0
- package/dist/db/schema/domain/schema.d.ts +60 -0
- package/dist/db/schema/domain/schema.d.ts.map +1 -0
- package/dist/db/schema/domain/table.d.ts +140 -0
- package/dist/db/schema/domain/table.d.ts.map +1 -0
- package/dist/db/schema/domain/types.d.ts +27 -0
- package/dist/db/schema/domain/types.d.ts.map +1 -0
- package/dist/db/schema/geo-location/index.d.ts +4 -0
- package/dist/db/schema/geo-location/index.d.ts.map +1 -0
- package/dist/db/schema/geo-location/registry.d.ts +114 -0
- package/dist/db/schema/geo-location/registry.d.ts.map +1 -0
- package/dist/db/schema/geo-location/schema.d.ts +58 -0
- package/dist/db/schema/geo-location/schema.d.ts.map +1 -0
- package/dist/db/schema/geo-location/table.d.ts +132 -0
- package/dist/db/schema/geo-location/table.d.ts.map +1 -0
- package/dist/db/schema/geo-location/types.d.ts +17 -0
- package/dist/db/schema/geo-location/types.d.ts.map +1 -0
- package/dist/db/schema/index.d.ts +85 -0
- package/dist/db/schema/index.d.ts.map +1 -0
- package/dist/db/schema/parser.d.ts +183 -0
- package/dist/db/schema/parser.d.ts.map +1 -0
- package/dist/db/schema/schemas.d.ts +383 -0
- package/dist/db/schema/schemas.d.ts.map +1 -0
- package/dist/db/schema/subject/index.d.ts +4 -0
- package/dist/db/schema/subject/index.d.ts.map +1 -0
- package/dist/db/schema/subject/registry.d.ts +141 -0
- package/dist/db/schema/subject/registry.d.ts.map +1 -0
- package/dist/db/schema/subject/schema.d.ts +56 -0
- package/dist/db/schema/subject/schema.d.ts.map +1 -0
- package/dist/db/schema/subject/table.d.ts +136 -0
- package/dist/db/schema/subject/table.d.ts.map +1 -0
- package/dist/db/schema/subject/types.d.ts +22 -0
- package/dist/db/schema/subject/types.d.ts.map +1 -0
- package/dist/db/schema/types.d.ts +136 -0
- package/dist/db/schema/types.d.ts.map +1 -0
- package/dist/db/utils/adapter-factory.d.ts +21 -0
- package/dist/db/utils/adapter-factory.d.ts.map +1 -0
- package/dist/db/utils/index.d.ts +10 -0
- package/dist/db/utils/index.d.ts.map +1 -0
- package/dist/db/utils.d.ts +4 -0
- package/dist/db/utils.d.ts.map +1 -0
- package/dist/error/codes.cjs +68 -0
- package/dist/error/codes.d.ts +175 -0
- package/dist/error/codes.d.ts.map +1 -0
- package/dist/error/codes.js +35 -0
- package/dist/error/error.d.ts +79 -0
- package/dist/error/error.d.ts.map +1 -0
- package/dist/error/index.cjs +172 -0
- package/dist/error/index.d.ts +9 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +129 -0
- package/dist/error/logging.d.ts +25 -0
- package/dist/error/logging.d.ts.map +1 -0
- package/dist/error/pipeline.d.ts +19 -0
- package/dist/error/pipeline.d.ts.map +1 -0
- package/dist/error/recovery.d.ts +22 -0
- package/dist/error/recovery.d.ts.map +1 -0
- package/dist/error/results.d.ts +56 -0
- package/dist/error/results.d.ts.map +1 -0
- package/dist/index.cjs +4777 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4708 -0
- package/dist/init.d.ts +52 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.test.d.ts +2 -0
- package/dist/init.test.d.ts.map +1 -0
- package/dist/integrations/index.cjs +281 -0
- package/dist/integrations/index.d.ts +7 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +248 -0
- package/dist/integrations/next.cjs +131 -0
- package/dist/integrations/next.d.ts +29 -0
- package/dist/integrations/next.d.ts.map +1 -0
- package/dist/integrations/next.js +99 -0
- package/dist/integrations/react.cjs +182 -0
- package/dist/integrations/react.d.ts +257 -0
- package/dist/integrations/react.d.ts.map +1 -0
- package/dist/integrations/react.js +150 -0
- package/dist/plugins/geo/index.d.ts +2 -0
- package/dist/plugins/geo/index.d.ts.map +1 -0
- package/dist/test/utils.d.ts +65 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/types/api.d.ts +89 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/context.d.ts +205 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/helper.d.ts +78 -0
- package/dist/types/helper.d.ts.map +1 -0
- package/dist/types/index.cjs +19 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +0 -0
- package/dist/types/options.d.ts +172 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/plugins.d.ts +442 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/utils/env.d.ts +77 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/hide-metadata.d.ts +22 -0
- package/dist/utils/hide-metadata.d.ts.map +1 -0
- package/dist/utils/index.cjs +268 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +210 -0
- package/dist/utils/ip.d.ts +10 -0
- package/dist/utils/ip.d.ts.map +1 -0
- package/dist/utils/json.d.ts +14 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +108 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/url.d.ts +87 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/wildcard.d.ts +46 -0
- package/dist/utils/wildcard.d.ts.map +1 -0
- package/knip.json +37 -0
- package/package.json +146 -0
- package/rslib.config.ts +104 -0
- package/src/api/call.ts +177 -0
- package/src/api/index.ts +303 -0
- package/src/api/middlewares/index.ts +38 -0
- package/src/api/middlewares/origin-check.ts +260 -0
- package/src/api/middlewares/validate-context.ts +175 -0
- package/src/api/routes/__tests__/consent.test.ts +270 -0
- package/src/api/routes/__tests__/status.test.ts +36 -0
- package/src/api/routes/error.ts +130 -0
- package/src/api/routes/generate-consent-receipt.ts +244 -0
- package/src/api/routes/get-consent-history.ts +128 -0
- package/src/api/routes/get-consent-policy.ts +327 -0
- package/src/api/routes/get-consent.ts +230 -0
- package/src/api/routes/index.ts +12 -0
- package/src/api/routes/ok.ts +45 -0
- package/src/api/routes/set-consent.ts +328 -0
- package/src/api/routes/show-consent-banner.ts +149 -0
- package/src/api/routes/status.ts +62 -0
- package/src/api/routes/verify-consent.ts +272 -0
- package/src/api/routes/withdraw-consent.ts +293 -0
- package/src/api/to-endpoints.ts +371 -0
- package/src/client/index.ts +471 -0
- package/src/client/types.ts +458 -0
- package/src/core.test.ts +303 -0
- package/src/core.ts +267 -0
- package/src/db/adapters/drizzle-adapter/drizzle-adapter.ts +711 -0
- package/src/db/adapters/drizzle-adapter/index.ts +1 -0
- package/src/db/adapters/kysely-adapter/dialect.ts +192 -0
- package/src/db/adapters/kysely-adapter/index.ts +3 -0
- package/src/db/adapters/kysely-adapter/kysely-adapter.ts +1168 -0
- package/src/db/adapters/kysely-adapter/types.ts +307 -0
- package/src/db/adapters/memory-adapter/index.ts +1 -0
- package/src/db/adapters/memory-adapter/memory-adapter.ts +648 -0
- package/src/db/adapters/prisma-adapter/index.ts +1 -0
- package/src/db/adapters/prisma-adapter/prisma-adapter.ts +586 -0
- package/src/db/adapters/types.ts +203 -0
- package/src/db/adapters/utils.ts +51 -0
- package/src/db/core/fields/field-factory.ts +804 -0
- package/src/db/core/fields/field-inference.ts +298 -0
- package/src/db/core/fields/field-options-integration.ts +135 -0
- package/src/db/core/fields/field-types.ts +233 -0
- package/src/db/core/fields/id-generator.ts +57 -0
- package/src/db/core/fields/index.ts +56 -0
- package/src/db/core/fields/superjson-utils.ts +155 -0
- package/src/db/core/fields/zod-fields.ts +269 -0
- package/src/db/core/get-schema.ts +102 -0
- package/src/db/core/types.ts +52 -0
- package/src/db/create-registry.ts +31 -0
- package/src/db/hooks/create-hooks.ts +88 -0
- package/src/db/hooks/index.ts +39 -0
- package/src/db/hooks/types.ts +164 -0
- package/src/db/hooks/update-hooks.ts +91 -0
- package/src/db/hooks/update-many-hooks.ts +176 -0
- package/src/db/hooks/utils.ts +151 -0
- package/src/db/hooks/with-hooks-factory.ts +68 -0
- package/src/db/index.ts +32 -0
- package/src/db/migration/get-migration.ts +89 -0
- package/src/db/migration/get-schema/get-schema.ts +44 -0
- package/src/db/migration/get-schema/index.ts +20 -0
- package/src/db/migration/get-schema/process-fields.ts +66 -0
- package/src/db/migration/get-schema/process-tables.ts +68 -0
- package/src/db/migration/get-schema/types.ts +18 -0
- package/src/db/migration/index.ts +18 -0
- package/src/db/migration/migration-builders.ts +170 -0
- package/src/db/migration/migration-execution.ts +79 -0
- package/src/db/migration/schema-comparison.ts +216 -0
- package/src/db/migration/type-mapping.ts +255 -0
- package/src/db/migration/types.ts +46 -0
- package/src/db/schema/audit-log/index.ts +3 -0
- package/src/db/schema/audit-log/registry.ts +228 -0
- package/src/db/schema/audit-log/schema.ts +46 -0
- package/src/db/schema/audit-log/table.ts +185 -0
- package/src/db/schema/audit-log/types.ts +29 -0
- package/src/db/schema/consent/index.ts +3 -0
- package/src/db/schema/consent/registry.ts +381 -0
- package/src/db/schema/consent/schema.ts +65 -0
- package/src/db/schema/consent/table.ts +220 -0
- package/src/db/schema/consent/types.ts +39 -0
- package/src/db/schema/consent-geo-location/index.ts +3 -0
- package/src/db/schema/consent-geo-location/registry.ts +124 -0
- package/src/db/schema/consent-geo-location/schema.ts +51 -0
- package/src/db/schema/consent-geo-location/table.ts +169 -0
- package/src/db/schema/consent-geo-location/types.ts +21 -0
- package/src/db/schema/consent-policy/index.ts +3 -0
- package/src/db/schema/consent-policy/registry.ts +313 -0
- package/src/db/schema/consent-policy/schema.ts +47 -0
- package/src/db/schema/consent-policy/table.ts +141 -0
- package/src/db/schema/consent-policy/types.ts +28 -0
- package/src/db/schema/consent-purpose/index.ts +3 -0
- package/src/db/schema/consent-purpose/registry.ts +188 -0
- package/src/db/schema/consent-purpose/schema.ts +58 -0
- package/src/db/schema/consent-purpose/table.ts +154 -0
- package/src/db/schema/consent-purpose/types.ts +16 -0
- package/src/db/schema/consent-purpose-junction/index.ts +3 -0
- package/src/db/schema/consent-purpose-junction/registry.ts +189 -0
- package/src/db/schema/consent-purpose-junction/schema.ts +49 -0
- package/src/db/schema/consent-purpose-junction/table.ts +142 -0
- package/src/db/schema/consent-purpose-junction/types.ts +14 -0
- package/src/db/schema/consent-record/index.ts +3 -0
- package/src/db/schema/consent-record/registry.ts +209 -0
- package/src/db/schema/consent-record/schema.ts +42 -0
- package/src/db/schema/consent-record/table.ts +124 -0
- package/src/db/schema/consent-record/types.ts +21 -0
- package/src/db/schema/consent-withdrawal/index.ts +3 -0
- package/src/db/schema/consent-withdrawal/registry.ts +219 -0
- package/src/db/schema/consent-withdrawal/schema.ts +48 -0
- package/src/db/schema/consent-withdrawal/table.ts +181 -0
- package/src/db/schema/consent-withdrawal/types.ts +29 -0
- package/src/db/schema/definition.ts +196 -0
- package/src/db/schema/domain/index.ts +3 -0
- package/src/db/schema/domain/registry.ts +272 -0
- package/src/db/schema/domain/schema.ts +43 -0
- package/src/db/schema/domain/table.ts +137 -0
- package/src/db/schema/domain/types.ts +27 -0
- package/src/db/schema/geo-location/index.ts +3 -0
- package/src/db/schema/geo-location/registry.ts +159 -0
- package/src/db/schema/geo-location/schema.ts +45 -0
- package/src/db/schema/geo-location/table.ts +148 -0
- package/src/db/schema/geo-location/types.ts +18 -0
- package/src/db/schema/index.ts +96 -0
- package/src/db/schema/parser.ts +417 -0
- package/src/db/schema/schemas.ts +35 -0
- package/src/db/schema/subject/index.ts +3 -0
- package/src/db/schema/subject/registry.ts +371 -0
- package/src/db/schema/subject/schema.ts +41 -0
- package/src/db/schema/subject/table.ts +139 -0
- package/src/db/schema/subject/types.ts +22 -0
- package/src/db/schema/types.ts +154 -0
- package/src/db/utils/adapter-factory.ts +64 -0
- package/src/db/utils/index.ts +10 -0
- package/src/db/utils.ts +42 -0
- package/src/docs/ADVANCED_JSON_HANDLING.md +99 -0
- package/src/docs/neverthrow.md +171 -0
- package/src/error/codes.ts +201 -0
- package/src/error/error.ts +145 -0
- package/src/error/index.ts +23 -0
- package/src/error/logging.ts +52 -0
- package/src/error/pipeline.ts +57 -0
- package/src/error/recovery.ts +45 -0
- package/src/error/results.ts +100 -0
- package/src/index.ts +79 -0
- package/src/init.test.ts +235 -0
- package/src/init.ts +261 -0
- package/src/integrations/index.ts +10 -0
- package/src/integrations/next.ts +136 -0
- package/src/integrations/react.ts +567 -0
- package/src/plugins/geo/index.ts +563 -0
- package/src/test/utils.ts +244 -0
- package/src/types/api.ts +101 -0
- package/src/types/context.ts +235 -0
- package/src/types/helper.ts +87 -0
- package/src/types/index.ts +5 -0
- package/src/types/options.ts +189 -0
- package/src/types/plugins.ts +538 -0
- package/src/utils/env.ts +103 -0
- package/src/utils/hide-metadata.ts +21 -0
- package/src/utils/index.ts +17 -0
- package/src/utils/ip.ts +45 -0
- package/src/utils/json.ts +19 -0
- package/src/utils/logger.ts +252 -0
- package/src/utils/url.ts +194 -0
- package/src/utils/wildcard.ts +253 -0
- package/tsconfig.json +12 -0
- package/vitest.config.ts +14 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized error codes for the c15t consent management system.
|
|
3
|
+
*
|
|
4
|
+
* These error codes are used throughout the application to provide consistent
|
|
5
|
+
* error messages and enable proper error handling in client applications.
|
|
6
|
+
* Each error code represents a specific type of error that can occur during
|
|
7
|
+
* consent management operations.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { BASE_ERROR_CODES, C15TError } from '@c15t/error';
|
|
12
|
+
*
|
|
13
|
+
* // Handle a specific error
|
|
14
|
+
* try {
|
|
15
|
+
* await consentManager.updateConsent(consentId, preferences);
|
|
16
|
+
* } catch (error) {
|
|
17
|
+
* if (error instanceof C15TError && error.code === BASE_ERROR_CODES.CONSENT_NOT_FOUND) {
|
|
18
|
+
* // Handle the specific case where consent is not found
|
|
19
|
+
* console.error('Cannot update: consent record does not exist');
|
|
20
|
+
* } else {
|
|
21
|
+
* // Handle other errors
|
|
22
|
+
* console.error('Failed to update consent:', error.message);
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const BASE_ERROR_CODES = {
|
|
28
|
+
/**
|
|
29
|
+
* The requested resource could not be found.
|
|
30
|
+
* This is a general error for when a requested entity does not exist.
|
|
31
|
+
*/
|
|
32
|
+
NOT_FOUND: 'Resource not found',
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The request is invalid or malformed.
|
|
36
|
+
* This is a general error for requests that do not meet the expected format.
|
|
37
|
+
*/
|
|
38
|
+
BAD_REQUEST: 'Bad request',
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The request conflicts with the current state of the server.
|
|
42
|
+
* This may occur when trying to create a resource that already exists or
|
|
43
|
+
* when attempting to modify a resource in a way that conflicts with its current state.
|
|
44
|
+
*/
|
|
45
|
+
CONFLICT: 'Conflict with current state',
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The requested consent record could not be found.
|
|
49
|
+
* This may occur when attempting to retrieve, update, or delete a non-existent consent record.
|
|
50
|
+
*/
|
|
51
|
+
CONSENT_NOT_FOUND: 'Consent not found',
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The consent record has expired and is no longer valid.
|
|
55
|
+
* This may occur when attempting to use a consent record after its expiration date.
|
|
56
|
+
*/
|
|
57
|
+
CONSENT_EXPIRED: 'Consent has expired',
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* An error occurred while attempting to create a new consent record.
|
|
61
|
+
* This may be due to validation errors, storage issues, or other internal errors.
|
|
62
|
+
*/
|
|
63
|
+
FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* An error occurred while attempting to update an existing consent record.
|
|
67
|
+
* This may be due to validation errors, storage issues, or concurrent modifications.
|
|
68
|
+
*/
|
|
69
|
+
FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* An error occurred while attempting to retrieve a consent record.
|
|
73
|
+
* This may be due to storage issues, permissions, or other internal errors.
|
|
74
|
+
*/
|
|
75
|
+
FAILED_TO_GET_CONSENT: 'Failed to get consent',
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* An error occurred while attempting to create a new consent consentPurpose.
|
|
79
|
+
* This may be due to validation errors, duplicate consentPurpose IDs, or other internal errors.
|
|
80
|
+
*/
|
|
81
|
+
FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The requested consent consentPurpose could not be found.
|
|
85
|
+
* This may occur when attempting to retrieve, update, or delete a non-existent consentPurpose.
|
|
86
|
+
*/
|
|
87
|
+
PURPOSE_NOT_FOUND: 'Consent Purpose not found',
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The provided configuration is invalid or contains errors.
|
|
91
|
+
* This may occur when initializing the system with incorrect settings.
|
|
92
|
+
*/
|
|
93
|
+
INVALID_CONFIGURATION: 'Invalid configuration',
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* A required parameter is missing from the request.
|
|
97
|
+
* This may occur when API calls are made without all necessary data.
|
|
98
|
+
*/
|
|
99
|
+
MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The request requires authentication that was not provided or is invalid.
|
|
103
|
+
* This may occur when attempting to access protected resources without proper credentials.
|
|
104
|
+
*/
|
|
105
|
+
UNAUTHORIZED: 'Unauthorized',
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The requester does not have permission to perform the requested operation.
|
|
109
|
+
* This may occur when authenticated subjects attempt operations beyond their permission level.
|
|
110
|
+
*/
|
|
111
|
+
FORBIDDEN: 'Forbidden',
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* An unexpected internal error occurred on the server.
|
|
115
|
+
* This is a general error for unexpected exceptions during request processing.
|
|
116
|
+
*/
|
|
117
|
+
INTERNAL_SERVER_ERROR: 'Internal server error',
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Initialization of the system failed.
|
|
121
|
+
* This may occur when the system cannot be initialized due to configuration
|
|
122
|
+
* errors, missing dependencies, or other setup issues.
|
|
123
|
+
*/
|
|
124
|
+
INITIALIZATION_FAILED: 'Initialization failed',
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Plugin initialization failed.
|
|
128
|
+
* This may occur when a plugin cannot be initialized due to configuration
|
|
129
|
+
* errors, missing dependencies, or other setup issues.
|
|
130
|
+
*/
|
|
131
|
+
PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Database connection error.
|
|
135
|
+
* This may occur when the system cannot connect to the database due to
|
|
136
|
+
* connection issues, authentication failures, or other database-related problems.
|
|
137
|
+
*/
|
|
138
|
+
DATABASE_CONNECTION_ERROR: 'Database connection error',
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Database query error.
|
|
142
|
+
* This may occur when a database query fails due to syntax errors,
|
|
143
|
+
* constraint violations, or other database-related issues.
|
|
144
|
+
*/
|
|
145
|
+
DATABASE_QUERY_ERROR: 'Database query error',
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* An error occurred while attempting to handle a request.
|
|
149
|
+
* This may occur when a request cannot be processed due to invalid input,
|
|
150
|
+
* internal errors, or other issues.
|
|
151
|
+
*/
|
|
152
|
+
REQUEST_HANDLER_ERROR: 'Request handler error',
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Error retrieving API endpoints.
|
|
156
|
+
* This may occur when the system cannot retrieve API endpoints due to
|
|
157
|
+
* configuration errors or other internal issues.
|
|
158
|
+
*/
|
|
159
|
+
API_RETRIEVAL_ERROR: 'API retrieval error',
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* The request is invalid or malformed.
|
|
163
|
+
* This is a specific error for requests that do not meet the expected format.
|
|
164
|
+
*/
|
|
165
|
+
INVALID_REQUEST: 'Invalid request',
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Unknown or unclassified error.
|
|
169
|
+
* Used when an error occurs that doesn't match any other error code.
|
|
170
|
+
*/
|
|
171
|
+
UNKNOWN_ERROR: 'Unknown error',
|
|
172
|
+
} as const;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Error categories for organizing errors by domain
|
|
176
|
+
*/
|
|
177
|
+
export const ERROR_CATEGORIES = {
|
|
178
|
+
VALIDATION: 'validation',
|
|
179
|
+
AUTHORIZATION: 'authorization',
|
|
180
|
+
STORAGE: 'storage',
|
|
181
|
+
NETWORK: 'network',
|
|
182
|
+
PLUGIN: 'plugin',
|
|
183
|
+
CONFIGURATION: 'configuration',
|
|
184
|
+
UNEXPECTED: 'unexpected',
|
|
185
|
+
} as const;
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Type for error categories
|
|
189
|
+
*/
|
|
190
|
+
export type ErrorCategory =
|
|
191
|
+
(typeof ERROR_CATEGORIES)[keyof typeof ERROR_CATEGORIES];
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Type containing all possible error codes from the BASE_ERROR_CODES object
|
|
195
|
+
*/
|
|
196
|
+
export type ErrorCode = keyof typeof BASE_ERROR_CODES;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Type for the error message values in BASE_ERROR_CODES
|
|
200
|
+
*/
|
|
201
|
+
export type ErrorMessage = (typeof BASE_ERROR_CODES)[ErrorCode];
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BASE_ERROR_CODES,
|
|
3
|
+
type ErrorCategory,
|
|
4
|
+
type ErrorMessage,
|
|
5
|
+
} from './codes';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Custom error class for c15t consent management errors.
|
|
9
|
+
*
|
|
10
|
+
* This class extends the standard Error object with additional properties
|
|
11
|
+
* specific to the c15t consent management system, such as error codes,
|
|
12
|
+
* status codes, and contextual data.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Create and throw a c15t error
|
|
17
|
+
* throw new C15TError('Failed to update subject preferences', {
|
|
18
|
+
* code: BASE_ERROR_CODES.FAILED_TO_UPDATE_CONSENT,
|
|
19
|
+
* status: 400,
|
|
20
|
+
* data: { subjectId: 'sub_x1pftyoufsm7xgo1kv', preferences: { analytics: true } }
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // Create an error from an HTTP response
|
|
24
|
+
* const error = C15TError.fromResponse(response, await response.json());
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class C15TError extends Error {
|
|
28
|
+
/**
|
|
29
|
+
* The error code identifying the type of error
|
|
30
|
+
*/
|
|
31
|
+
code?: ErrorMessage;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* HTTP status code associated with this error
|
|
35
|
+
*/
|
|
36
|
+
status?: number;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Additional data providing context about the error
|
|
40
|
+
*/
|
|
41
|
+
data?: Record<string, unknown>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Category of the error for better organization
|
|
45
|
+
*/
|
|
46
|
+
category?: ErrorCategory;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new C15TError instance.
|
|
50
|
+
*
|
|
51
|
+
* @param message - Human-readable error message
|
|
52
|
+
* @param options - Additional error options including code, status, and data
|
|
53
|
+
*/
|
|
54
|
+
constructor(
|
|
55
|
+
message: string,
|
|
56
|
+
options?: {
|
|
57
|
+
/**
|
|
58
|
+
* The error code identifying the type of error
|
|
59
|
+
*/
|
|
60
|
+
code?: ErrorMessage;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* HTTP status code associated with this error
|
|
64
|
+
*/
|
|
65
|
+
status?: number;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Additional data providing context about the error
|
|
69
|
+
*/
|
|
70
|
+
data?: Record<string, unknown>;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Category of the error for better organization
|
|
74
|
+
*/
|
|
75
|
+
category?: ErrorCategory;
|
|
76
|
+
}
|
|
77
|
+
) {
|
|
78
|
+
super(message);
|
|
79
|
+
this.name = 'C15TError';
|
|
80
|
+
|
|
81
|
+
if (options) {
|
|
82
|
+
this.code = options.code;
|
|
83
|
+
this.status = options.status;
|
|
84
|
+
this.data = options.data;
|
|
85
|
+
this.category = options.category;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Ensure prototype chain works correctly
|
|
89
|
+
Object.setPrototypeOf(this, C15TError.prototype);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Creates a C15TError from an HTTP response and optional response data.
|
|
94
|
+
*
|
|
95
|
+
* @param response - The HTTP Response object
|
|
96
|
+
* @param data - Optional parsed response data
|
|
97
|
+
* @returns A new C15TError instance with appropriate properties
|
|
98
|
+
*/
|
|
99
|
+
static fromResponse(response: Response, data?: unknown): C15TError {
|
|
100
|
+
// Extract error message from response or data
|
|
101
|
+
let message = `HTTP error ${response.status}`;
|
|
102
|
+
let code: ErrorMessage | undefined;
|
|
103
|
+
let errorData: Record<string, unknown> | undefined;
|
|
104
|
+
|
|
105
|
+
// Try to extract more specific error details from the response data
|
|
106
|
+
if (data && typeof data === 'object' && data !== null) {
|
|
107
|
+
const errorObj = data as Record<string, unknown>;
|
|
108
|
+
|
|
109
|
+
if (typeof errorObj.message === 'string') {
|
|
110
|
+
message = errorObj.message;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (typeof errorObj.code === 'string') {
|
|
114
|
+
// Check if the code matches one of our known error codes
|
|
115
|
+
const isKnownCode = Object.values(BASE_ERROR_CODES).includes(
|
|
116
|
+
errorObj.code as ErrorMessage
|
|
117
|
+
);
|
|
118
|
+
if (isKnownCode) {
|
|
119
|
+
code = errorObj.code as ErrorMessage;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Include any additional error data
|
|
124
|
+
if (typeof errorObj.data === 'object' && errorObj.data !== null) {
|
|
125
|
+
errorData = errorObj.data as Record<string, unknown>;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return new C15TError(message, {
|
|
130
|
+
code,
|
|
131
|
+
status: response.status,
|
|
132
|
+
data: errorData,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Determines if an unknown error is a C15TError.
|
|
138
|
+
*
|
|
139
|
+
* @param error - The error to check
|
|
140
|
+
* @returns True if the error is a C15TError instance
|
|
141
|
+
*/
|
|
142
|
+
static isC15TError(error: unknown): error is C15TError {
|
|
143
|
+
return error instanceof C15TError;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { BASE_ERROR_CODES } from './codes';
|
|
2
|
+
export type { ErrorCategory, ErrorCode, ErrorMessage } from './codes';
|
|
3
|
+
export { C15TError } from './error';
|
|
4
|
+
export {
|
|
5
|
+
fail,
|
|
6
|
+
failAsync,
|
|
7
|
+
safeResult,
|
|
8
|
+
safeResultAsync,
|
|
9
|
+
} from './results';
|
|
10
|
+
export {
|
|
11
|
+
recoverFromCodes,
|
|
12
|
+
recoverFromCategory,
|
|
13
|
+
} from './recovery';
|
|
14
|
+
export {
|
|
15
|
+
logError,
|
|
16
|
+
logErrorAsync,
|
|
17
|
+
} from './logging';
|
|
18
|
+
export {
|
|
19
|
+
validationPipeline,
|
|
20
|
+
retrievalPipeline,
|
|
21
|
+
} from './pipeline';
|
|
22
|
+
|
|
23
|
+
export { fromPromise, okAsync, ok, Result } from 'neverthrow';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Result, ResultAsync } from 'neverthrow';
|
|
2
|
+
import type { C15TError } from './error';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Logs any errors in a Result without changing the Result
|
|
6
|
+
*
|
|
7
|
+
* @param result - The Result that may contain an error
|
|
8
|
+
* @param logger - Logger instance
|
|
9
|
+
* @param message - Optional message prefix
|
|
10
|
+
* @returns The original Result unchanged
|
|
11
|
+
*/
|
|
12
|
+
export const logError = <T>(
|
|
13
|
+
result: Result<T, C15TError>,
|
|
14
|
+
logger: { error: (message: string, ...args: unknown[]) => void },
|
|
15
|
+
message = 'Error occurred:'
|
|
16
|
+
): Result<T, C15TError> => {
|
|
17
|
+
return result.mapErr((error) => {
|
|
18
|
+
logger.error(`${message} ${error.message}`, {
|
|
19
|
+
code: error.code,
|
|
20
|
+
status: error.status,
|
|
21
|
+
data: error.data,
|
|
22
|
+
category: error.category,
|
|
23
|
+
stack: error.stack,
|
|
24
|
+
});
|
|
25
|
+
return error;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Logs any errors in a ResultAsync without changing the ResultAsync
|
|
31
|
+
*
|
|
32
|
+
* @param resultAsync - The ResultAsync that may contain an error
|
|
33
|
+
* @param logger - Logger instance
|
|
34
|
+
* @param message - Optional message prefix
|
|
35
|
+
* @returns The original ResultAsync unchanged
|
|
36
|
+
*/
|
|
37
|
+
export const logErrorAsync = <T>(
|
|
38
|
+
resultAsync: ResultAsync<T, C15TError>,
|
|
39
|
+
logger: { error: (message: string, ...args: unknown[]) => void },
|
|
40
|
+
message = 'Error occurred:'
|
|
41
|
+
): ResultAsync<T, C15TError> => {
|
|
42
|
+
return resultAsync.mapErr((error) => {
|
|
43
|
+
logger.error(`${message} ${error.message}`, {
|
|
44
|
+
code: error.code,
|
|
45
|
+
status: error.status,
|
|
46
|
+
data: error.data,
|
|
47
|
+
category: error.category,
|
|
48
|
+
stack: error.stack,
|
|
49
|
+
});
|
|
50
|
+
return error;
|
|
51
|
+
});
|
|
52
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Result, ResultAsync } from 'neverthrow';
|
|
2
|
+
import { BASE_ERROR_CODES } from './codes';
|
|
3
|
+
import type { C15TError } from './error';
|
|
4
|
+
import { safeResult, safeResultAsync } from './results';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Creates a standard validation pipeline
|
|
8
|
+
*
|
|
9
|
+
* @param validator - Function that validates input
|
|
10
|
+
* @param processor - Function that processes validated input
|
|
11
|
+
* @returns A function that validates and processes input in a Result chain
|
|
12
|
+
*/
|
|
13
|
+
export const validationPipeline = <Input, Output>(
|
|
14
|
+
validator: (input: Input) => boolean | string,
|
|
15
|
+
processor: (input: Input) => Output
|
|
16
|
+
): ((input: Input) => Result<Output, C15TError>) => {
|
|
17
|
+
return (input: Input) => {
|
|
18
|
+
const validationResult = safeResult(() => {
|
|
19
|
+
const validationOutcome = validator(input);
|
|
20
|
+
if (validationOutcome === false) {
|
|
21
|
+
throw new Error('Validation failed');
|
|
22
|
+
}
|
|
23
|
+
if (typeof validationOutcome === 'string') {
|
|
24
|
+
throw new Error(validationOutcome);
|
|
25
|
+
}
|
|
26
|
+
return input;
|
|
27
|
+
}, BASE_ERROR_CODES.INVALID_REQUEST);
|
|
28
|
+
|
|
29
|
+
return validationResult.andThen((validInput) =>
|
|
30
|
+
safeResult(() => processor(validInput))
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates a standard async data retrieval pipeline
|
|
37
|
+
*
|
|
38
|
+
* @param fetcher - Function that fetches data
|
|
39
|
+
* @param transformer - Function that transforms fetched data
|
|
40
|
+
* @returns A function that fetches and transforms data in a ResultAsync chain
|
|
41
|
+
*/
|
|
42
|
+
export const retrievalPipeline = <RawData, TransformedData>(
|
|
43
|
+
fetcher: () => Promise<RawData>,
|
|
44
|
+
transformer: (data: RawData) => TransformedData
|
|
45
|
+
): (() => ResultAsync<TransformedData, C15TError>) => {
|
|
46
|
+
return () => {
|
|
47
|
+
return safeResultAsync(
|
|
48
|
+
fetcher(),
|
|
49
|
+
BASE_ERROR_CODES.FAILED_TO_GET_CONSENT
|
|
50
|
+
).andThen((data) =>
|
|
51
|
+
safeResult(
|
|
52
|
+
() => transformer(data),
|
|
53
|
+
BASE_ERROR_CODES.INVALID_CONFIGURATION
|
|
54
|
+
)
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Result, err, ok } from 'neverthrow';
|
|
2
|
+
import type { ErrorCategory, ErrorMessage } from './codes';
|
|
3
|
+
import type { C15TError } from './error';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Recovers from specific error codes by transforming to a default value
|
|
7
|
+
*
|
|
8
|
+
* @param result - The result that may contain an error
|
|
9
|
+
* @param errorCodes - Array of error codes to recover from
|
|
10
|
+
* @param defaultValue - Value to use if error matches specified codes
|
|
11
|
+
* @returns A new Result with the error recovered if it matches specified codes
|
|
12
|
+
*/
|
|
13
|
+
export const recoverFromCodes = <T>(
|
|
14
|
+
result: Result<T, C15TError>,
|
|
15
|
+
errorCodes: ErrorMessage[],
|
|
16
|
+
defaultValue: T
|
|
17
|
+
): Result<T, C15TError> => {
|
|
18
|
+
return result.orElse((error) => {
|
|
19
|
+
if (error.code && errorCodes.includes(error.code)) {
|
|
20
|
+
return ok(defaultValue);
|
|
21
|
+
}
|
|
22
|
+
return err(error);
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Recovers from errors of a specific category
|
|
28
|
+
*
|
|
29
|
+
* @param result - The result that may contain an error
|
|
30
|
+
* @param category - Error category to recover from
|
|
31
|
+
* @param defaultValue - Value to use if error matches specified category
|
|
32
|
+
* @returns A new Result with the error recovered if it matches the category
|
|
33
|
+
*/
|
|
34
|
+
export const recoverFromCategory = <T>(
|
|
35
|
+
result: Result<T, C15TError>,
|
|
36
|
+
category: ErrorCategory,
|
|
37
|
+
defaultValue: T
|
|
38
|
+
): Result<T, C15TError> => {
|
|
39
|
+
return result.orElse((error) => {
|
|
40
|
+
if (error.category === category) {
|
|
41
|
+
return ok(defaultValue);
|
|
42
|
+
}
|
|
43
|
+
return err(error);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { type Result, ResultAsync, err, ok as neverOk } from 'neverthrow';
|
|
2
|
+
import { BASE_ERROR_CODES, type ErrorMessage } from './codes';
|
|
3
|
+
import { C15TError } from './error';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Type for C15T results that can contain any error
|
|
7
|
+
*/
|
|
8
|
+
export type C15TResult<T> = Result<T, C15TError>;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Type for C15T async results that can contain any error
|
|
12
|
+
*/
|
|
13
|
+
export type C15TResultAsync<T> = ResultAsync<T, C15TError>;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Creates a successful result
|
|
17
|
+
*/
|
|
18
|
+
export const ok = <T>(value: T): C15TResult<T> => neverOk(value);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates a standardized failure Result with a C15TError
|
|
22
|
+
*
|
|
23
|
+
* @param message - Error message
|
|
24
|
+
* @param options - Additional error options
|
|
25
|
+
* @returns A Result containing the error
|
|
26
|
+
*/
|
|
27
|
+
export const fail = <T>(
|
|
28
|
+
message: string,
|
|
29
|
+
options?: {
|
|
30
|
+
code?: ErrorMessage;
|
|
31
|
+
status?: number;
|
|
32
|
+
data?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
): Result<T, C15TError> => {
|
|
35
|
+
return err(new C15TError(message, options));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Creates a standardized failure ResultAsync with a C15TError
|
|
40
|
+
*
|
|
41
|
+
* @param message - Error message
|
|
42
|
+
* @param options - Additional error options
|
|
43
|
+
* @returns A ResultAsync containing the error
|
|
44
|
+
*/
|
|
45
|
+
export const failAsync = <T>(
|
|
46
|
+
message: string,
|
|
47
|
+
options?: {
|
|
48
|
+
code?: ErrorMessage;
|
|
49
|
+
status?: number;
|
|
50
|
+
data?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
): ResultAsync<T, C15TError> => {
|
|
53
|
+
return ResultAsync.fromSafePromise(
|
|
54
|
+
Promise.reject(new C15TError(message, options))
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Wraps a potentially throwing function in a Result
|
|
60
|
+
*
|
|
61
|
+
* @param fn - Function that might throw
|
|
62
|
+
* @param errorCode - Optional error code to use if fn throws
|
|
63
|
+
* @returns A Result containing either the function result or a C15TError
|
|
64
|
+
*/
|
|
65
|
+
export const safeResult = <T>(
|
|
66
|
+
fn: () => T,
|
|
67
|
+
errorCode: ErrorMessage = BASE_ERROR_CODES.UNKNOWN_ERROR
|
|
68
|
+
): Result<T, C15TError> => {
|
|
69
|
+
try {
|
|
70
|
+
return ok(fn());
|
|
71
|
+
} catch (error) {
|
|
72
|
+
return err(
|
|
73
|
+
new C15TError(error instanceof Error ? error.message : String(error), {
|
|
74
|
+
code: errorCode,
|
|
75
|
+
data: { originalError: error },
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Wraps a Promise in a ResultAsync
|
|
83
|
+
*
|
|
84
|
+
* @param promise - Promise that might reject
|
|
85
|
+
* @param errorCode - Optional error code to use if promise rejects
|
|
86
|
+
* @returns A ResultAsync containing either the promise result or a C15TError
|
|
87
|
+
*/
|
|
88
|
+
export const safeResultAsync = <T>(
|
|
89
|
+
promise: Promise<T>,
|
|
90
|
+
errorCode: ErrorMessage = BASE_ERROR_CODES.UNKNOWN_ERROR
|
|
91
|
+
): ResultAsync<T, C15TError> => {
|
|
92
|
+
return ResultAsync.fromPromise(
|
|
93
|
+
promise,
|
|
94
|
+
(error): C15TError =>
|
|
95
|
+
new C15TError(error instanceof Error ? error.message : String(error), {
|
|
96
|
+
code: errorCode,
|
|
97
|
+
data: { originalError: error },
|
|
98
|
+
})
|
|
99
|
+
);
|
|
100
|
+
};
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* c15t Consent Management System
|
|
3
|
+
*
|
|
4
|
+
* This is the main entry point for the c15t library, exporting all public APIs,
|
|
5
|
+
* components, and types needed to implement consent management in your application.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
//------------------------------------------------------------------------------
|
|
9
|
+
// Core API
|
|
10
|
+
//------------------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Core factory function and types for creating c15t instances
|
|
14
|
+
*/
|
|
15
|
+
export * from './core';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Error codes used throughout the system for consistent error handling
|
|
19
|
+
*/
|
|
20
|
+
export * from './error/codes';
|
|
21
|
+
|
|
22
|
+
//------------------------------------------------------------------------------
|
|
23
|
+
// Utilities and Helpers
|
|
24
|
+
//------------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* General utility functions used throughout the library
|
|
28
|
+
*/
|
|
29
|
+
export * from './utils';
|
|
30
|
+
|
|
31
|
+
//------------------------------------------------------------------------------
|
|
32
|
+
// Client
|
|
33
|
+
//------------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Client-side integration for implementing consent in browsers
|
|
37
|
+
*/
|
|
38
|
+
export * from './client';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* All client-related types bundled under a namespace to avoid conflicts
|
|
42
|
+
*/
|
|
43
|
+
export * as ClientTypes from './client/types';
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Selected client types needed for common use cases
|
|
47
|
+
*/
|
|
48
|
+
export type {
|
|
49
|
+
c15tClientOptions,
|
|
50
|
+
FetchOptions,
|
|
51
|
+
ResponseContext,
|
|
52
|
+
} from './client/types';
|
|
53
|
+
|
|
54
|
+
//------------------------------------------------------------------------------
|
|
55
|
+
// Plugins
|
|
56
|
+
//------------------------------------------------------------------------------
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Geo plugin for jurisdiction-based consent management
|
|
60
|
+
*/
|
|
61
|
+
export * from './plugins/geo';
|
|
62
|
+
|
|
63
|
+
//------------------------------------------------------------------------------
|
|
64
|
+
// Types
|
|
65
|
+
//------------------------------------------------------------------------------
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* All system types bundled under a namespace to avoid conflicts
|
|
69
|
+
*/
|
|
70
|
+
export * as Types from './types';
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Plugin type extension point for type augmentation
|
|
74
|
+
*/
|
|
75
|
+
declare module './types/plugins' {
|
|
76
|
+
interface PluginTypes {
|
|
77
|
+
// Plugin type interfaces will be added here
|
|
78
|
+
}
|
|
79
|
+
}
|