@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,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = function(exports1) {
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
toNextJsHandler: ()=>toNextJsHandler
|
|
28
|
+
});
|
|
29
|
+
const BASE_ERROR_CODES = {
|
|
30
|
+
NOT_FOUND: 'Resource not found',
|
|
31
|
+
BAD_REQUEST: 'Bad request',
|
|
32
|
+
CONFLICT: 'Conflict with current state',
|
|
33
|
+
CONSENT_NOT_FOUND: 'Consent not found',
|
|
34
|
+
CONSENT_EXPIRED: 'Consent has expired',
|
|
35
|
+
FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
|
|
36
|
+
FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
|
|
37
|
+
FAILED_TO_GET_CONSENT: 'Failed to get consent',
|
|
38
|
+
FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
|
|
39
|
+
PURPOSE_NOT_FOUND: 'Consent Purpose not found',
|
|
40
|
+
INVALID_CONFIGURATION: 'Invalid configuration',
|
|
41
|
+
MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
|
|
42
|
+
UNAUTHORIZED: 'Unauthorized',
|
|
43
|
+
FORBIDDEN: 'Forbidden',
|
|
44
|
+
INTERNAL_SERVER_ERROR: 'Internal server error',
|
|
45
|
+
INITIALIZATION_FAILED: 'Initialization failed',
|
|
46
|
+
PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
|
|
47
|
+
DATABASE_CONNECTION_ERROR: 'Database connection error',
|
|
48
|
+
DATABASE_QUERY_ERROR: 'Database query error',
|
|
49
|
+
REQUEST_HANDLER_ERROR: 'Request handler error',
|
|
50
|
+
API_RETRIEVAL_ERROR: 'API retrieval error',
|
|
51
|
+
INVALID_REQUEST: 'Invalid request',
|
|
52
|
+
UNKNOWN_ERROR: 'Unknown error'
|
|
53
|
+
};
|
|
54
|
+
function toNextJsHandler(instance) {
|
|
55
|
+
const handler = async (initialRequest)=>{
|
|
56
|
+
try {
|
|
57
|
+
const request = initialRequest;
|
|
58
|
+
if ('POST' === request.method) try {
|
|
59
|
+
const clonedRequest = request.clone();
|
|
60
|
+
await clonedRequest.json();
|
|
61
|
+
} catch (error) {
|
|
62
|
+
return new Response(JSON.stringify({
|
|
63
|
+
error: true,
|
|
64
|
+
code: BASE_ERROR_CODES.REQUEST_HANDLER_ERROR,
|
|
65
|
+
message: 'Invalid JSON in request body',
|
|
66
|
+
details: error instanceof Error ? error.message : 'Unknown error'
|
|
67
|
+
}), {
|
|
68
|
+
status: 400,
|
|
69
|
+
headers: {
|
|
70
|
+
'Content-Type': 'application/json'
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (instance.$context) {
|
|
75
|
+
const contextPromise = instance.$context;
|
|
76
|
+
try {
|
|
77
|
+
const contextResult = await contextPromise;
|
|
78
|
+
contextResult.match((context)=>{
|
|
79
|
+
if (!context.baseURL || '' === context.baseURL.trim()) {
|
|
80
|
+
const url = new URL(request.url);
|
|
81
|
+
const basePath = context.options?.basePath || '/api/c15t';
|
|
82
|
+
const baseURL = `${url.origin}${basePath}`;
|
|
83
|
+
context.baseURL = baseURL;
|
|
84
|
+
if (context.options) context.options.baseURL = baseURL;
|
|
85
|
+
}
|
|
86
|
+
}, ()=>{});
|
|
87
|
+
} catch {}
|
|
88
|
+
}
|
|
89
|
+
const result = await instance.handler(request);
|
|
90
|
+
return await result.match((response)=>response, (error)=>{
|
|
91
|
+
const status = error.status || 500;
|
|
92
|
+
const message = error.message || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
|
|
93
|
+
return new Response(JSON.stringify({
|
|
94
|
+
error: true,
|
|
95
|
+
code: error.code || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
96
|
+
message,
|
|
97
|
+
data: error.data
|
|
98
|
+
}), {
|
|
99
|
+
status,
|
|
100
|
+
headers: {
|
|
101
|
+
'Content-Type': 'application/json'
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
} catch (error) {
|
|
106
|
+
console.error('Unexpected error in c15t handler:', error);
|
|
107
|
+
return new Response(JSON.stringify({
|
|
108
|
+
error: true,
|
|
109
|
+
code: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
110
|
+
message: 'An unexpected error occurred',
|
|
111
|
+
data: {
|
|
112
|
+
error: String(error)
|
|
113
|
+
}
|
|
114
|
+
}), {
|
|
115
|
+
status: 500,
|
|
116
|
+
headers: {
|
|
117
|
+
'Content-Type': 'application/json'
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
return {
|
|
123
|
+
GET: handler,
|
|
124
|
+
POST: handler
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
var __webpack_export_target__ = exports;
|
|
128
|
+
for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
129
|
+
if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
130
|
+
value: true
|
|
131
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { C15TInstance } from '../core';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a c15t handler to a Next.js API route handler.
|
|
4
|
+
*
|
|
5
|
+
* This function adapts a c15t instance to work with Next.js App Router API routes,
|
|
6
|
+
* providing GET and POST handler functions. It handles the conversion between
|
|
7
|
+
* c15t's Result types and Next.js Response objects.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // app/api/c15t/route.ts
|
|
12
|
+
* import { toNextJsHandler } from '@c15t/integrations/next';
|
|
13
|
+
* import { c15t } from '@/lib/c15t';
|
|
14
|
+
*
|
|
15
|
+
* // Pass the entire c15t instance, not just the handler
|
|
16
|
+
* export const { GET, POST } = toNextJsHandler(c15t);
|
|
17
|
+
*
|
|
18
|
+
* // ❌ Don't do this:
|
|
19
|
+
* // export const { GET, POST } = toNextJsHandler(c15t.handler);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param instance - The complete c15t instance (not just the handler)
|
|
23
|
+
* @returns Next.js API route handler functions for GET and POST
|
|
24
|
+
*/
|
|
25
|
+
export declare function toNextJsHandler(instance: C15TInstance): {
|
|
26
|
+
GET: (initialRequest: Request) => Promise<Response>;
|
|
27
|
+
POST: (initialRequest: Request) => Promise<Response>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=next.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/integrations/next.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAI3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY;0BACd,OAAO;2BAAP,OAAO;EA2G9C"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const BASE_ERROR_CODES = {
|
|
2
|
+
NOT_FOUND: 'Resource not found',
|
|
3
|
+
BAD_REQUEST: 'Bad request',
|
|
4
|
+
CONFLICT: 'Conflict with current state',
|
|
5
|
+
CONSENT_NOT_FOUND: 'Consent not found',
|
|
6
|
+
CONSENT_EXPIRED: 'Consent has expired',
|
|
7
|
+
FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
|
|
8
|
+
FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
|
|
9
|
+
FAILED_TO_GET_CONSENT: 'Failed to get consent',
|
|
10
|
+
FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
|
|
11
|
+
PURPOSE_NOT_FOUND: 'Consent Purpose not found',
|
|
12
|
+
INVALID_CONFIGURATION: 'Invalid configuration',
|
|
13
|
+
MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
|
|
14
|
+
UNAUTHORIZED: 'Unauthorized',
|
|
15
|
+
FORBIDDEN: 'Forbidden',
|
|
16
|
+
INTERNAL_SERVER_ERROR: 'Internal server error',
|
|
17
|
+
INITIALIZATION_FAILED: 'Initialization failed',
|
|
18
|
+
PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
|
|
19
|
+
DATABASE_CONNECTION_ERROR: 'Database connection error',
|
|
20
|
+
DATABASE_QUERY_ERROR: 'Database query error',
|
|
21
|
+
REQUEST_HANDLER_ERROR: 'Request handler error',
|
|
22
|
+
API_RETRIEVAL_ERROR: 'API retrieval error',
|
|
23
|
+
INVALID_REQUEST: 'Invalid request',
|
|
24
|
+
UNKNOWN_ERROR: 'Unknown error'
|
|
25
|
+
};
|
|
26
|
+
function toNextJsHandler(instance) {
|
|
27
|
+
const handler = async (initialRequest)=>{
|
|
28
|
+
try {
|
|
29
|
+
const request = initialRequest;
|
|
30
|
+
if ('POST' === request.method) try {
|
|
31
|
+
const clonedRequest = request.clone();
|
|
32
|
+
await clonedRequest.json();
|
|
33
|
+
} catch (error) {
|
|
34
|
+
return new Response(JSON.stringify({
|
|
35
|
+
error: true,
|
|
36
|
+
code: BASE_ERROR_CODES.REQUEST_HANDLER_ERROR,
|
|
37
|
+
message: 'Invalid JSON in request body',
|
|
38
|
+
details: error instanceof Error ? error.message : 'Unknown error'
|
|
39
|
+
}), {
|
|
40
|
+
status: 400,
|
|
41
|
+
headers: {
|
|
42
|
+
'Content-Type': 'application/json'
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (instance.$context) {
|
|
47
|
+
const contextPromise = instance.$context;
|
|
48
|
+
try {
|
|
49
|
+
const contextResult = await contextPromise;
|
|
50
|
+
contextResult.match((context)=>{
|
|
51
|
+
if (!context.baseURL || '' === context.baseURL.trim()) {
|
|
52
|
+
const url = new URL(request.url);
|
|
53
|
+
const basePath = context.options?.basePath || '/api/c15t';
|
|
54
|
+
const baseURL = `${url.origin}${basePath}`;
|
|
55
|
+
context.baseURL = baseURL;
|
|
56
|
+
if (context.options) context.options.baseURL = baseURL;
|
|
57
|
+
}
|
|
58
|
+
}, ()=>{});
|
|
59
|
+
} catch {}
|
|
60
|
+
}
|
|
61
|
+
const result = await instance.handler(request);
|
|
62
|
+
return await result.match((response)=>response, (error)=>{
|
|
63
|
+
const status = error.status || 500;
|
|
64
|
+
const message = error.message || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
|
|
65
|
+
return new Response(JSON.stringify({
|
|
66
|
+
error: true,
|
|
67
|
+
code: error.code || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
68
|
+
message,
|
|
69
|
+
data: error.data
|
|
70
|
+
}), {
|
|
71
|
+
status,
|
|
72
|
+
headers: {
|
|
73
|
+
'Content-Type': 'application/json'
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.error('Unexpected error in c15t handler:', error);
|
|
79
|
+
return new Response(JSON.stringify({
|
|
80
|
+
error: true,
|
|
81
|
+
code: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
82
|
+
message: 'An unexpected error occurred',
|
|
83
|
+
data: {
|
|
84
|
+
error: String(error)
|
|
85
|
+
}
|
|
86
|
+
}), {
|
|
87
|
+
status: 500,
|
|
88
|
+
headers: {
|
|
89
|
+
'Content-Type': 'application/json'
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
return {
|
|
95
|
+
GET: handler,
|
|
96
|
+
POST: handler
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export { toNextJsHandler };
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = function(exports1) {
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
createConsentClient: ()=>createConsentClient
|
|
28
|
+
});
|
|
29
|
+
function createConsentClient(config = {}) {
|
|
30
|
+
const { baseUrl = '/api/c15t', refreshInterval = 0, defaultPreferences = {
|
|
31
|
+
analytics: true,
|
|
32
|
+
marketing: true,
|
|
33
|
+
preferences: true
|
|
34
|
+
} } = config;
|
|
35
|
+
function createStore(createState) {
|
|
36
|
+
let state;
|
|
37
|
+
const listeners = new Set();
|
|
38
|
+
const setState = (partial)=>{
|
|
39
|
+
const nextState = 'function' == typeof partial ? {
|
|
40
|
+
...state,
|
|
41
|
+
...partial(state)
|
|
42
|
+
} : {
|
|
43
|
+
...state,
|
|
44
|
+
...partial
|
|
45
|
+
};
|
|
46
|
+
state = nextState;
|
|
47
|
+
for (const listener of listeners)listener(state);
|
|
48
|
+
};
|
|
49
|
+
const getState = ()=>state;
|
|
50
|
+
const subscribe = (listener)=>{
|
|
51
|
+
listeners.add(listener);
|
|
52
|
+
return ()=>listeners.delete(listener);
|
|
53
|
+
};
|
|
54
|
+
state = createState(setState, getState);
|
|
55
|
+
return {
|
|
56
|
+
getState,
|
|
57
|
+
setState,
|
|
58
|
+
subscribe
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const consentStore = createStore((set, get)=>({
|
|
62
|
+
isLoading: true,
|
|
63
|
+
hasConsented: null,
|
|
64
|
+
preferences: null,
|
|
65
|
+
error: null,
|
|
66
|
+
lastUpdated: null,
|
|
67
|
+
setConsent: async (preferences)=>{
|
|
68
|
+
try {
|
|
69
|
+
set({
|
|
70
|
+
isLoading: true,
|
|
71
|
+
error: null
|
|
72
|
+
});
|
|
73
|
+
const response = await fetch(`${baseUrl}/set`, {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
'Content-Type': 'application/json'
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({
|
|
79
|
+
preferences
|
|
80
|
+
}),
|
|
81
|
+
credentials: 'same-origin'
|
|
82
|
+
});
|
|
83
|
+
if (!response.ok) throw new Error(`Failed to set consent: ${response.statusText}`);
|
|
84
|
+
const result = await response.json();
|
|
85
|
+
set({
|
|
86
|
+
isLoading: false,
|
|
87
|
+
hasConsented: true,
|
|
88
|
+
preferences: result.preferences || preferences,
|
|
89
|
+
lastUpdated: Date.now()
|
|
90
|
+
});
|
|
91
|
+
return result;
|
|
92
|
+
} catch (error) {
|
|
93
|
+
set({
|
|
94
|
+
isLoading: false,
|
|
95
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
96
|
+
});
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
acceptAll: async ()=>{
|
|
101
|
+
const cleanPreferences = Object.entries(defaultPreferences).filter(([_, value])=>void 0 !== value).reduce((acc, [key, value])=>{
|
|
102
|
+
acc[key] = value;
|
|
103
|
+
return acc;
|
|
104
|
+
}, {});
|
|
105
|
+
return await get().setConsent(cleanPreferences);
|
|
106
|
+
},
|
|
107
|
+
declineAll: async ()=>{
|
|
108
|
+
const minimalConsent = Object.keys(defaultPreferences).reduce((acc, key)=>{
|
|
109
|
+
acc[key] = false;
|
|
110
|
+
return acc;
|
|
111
|
+
}, {});
|
|
112
|
+
return await get().setConsent(minimalConsent);
|
|
113
|
+
},
|
|
114
|
+
refreshStatus: async ()=>{
|
|
115
|
+
try {
|
|
116
|
+
set({
|
|
117
|
+
isLoading: true,
|
|
118
|
+
error: null
|
|
119
|
+
});
|
|
120
|
+
const response = await fetch(`${baseUrl}/status`, {
|
|
121
|
+
credentials: 'same-origin'
|
|
122
|
+
});
|
|
123
|
+
if (!response.ok) throw new Error(`Failed to get consent status: ${response.statusText}`);
|
|
124
|
+
const { consented, preferences } = await response.json();
|
|
125
|
+
set({
|
|
126
|
+
isLoading: false,
|
|
127
|
+
hasConsented: consented,
|
|
128
|
+
preferences: preferences,
|
|
129
|
+
lastUpdated: Date.now()
|
|
130
|
+
});
|
|
131
|
+
} catch (error) {
|
|
132
|
+
set({
|
|
133
|
+
isLoading: false,
|
|
134
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
clearError: ()=>{
|
|
139
|
+
set({
|
|
140
|
+
error: null
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
const useConsent = ()=>{
|
|
145
|
+
const storeState = consentStore.getState();
|
|
146
|
+
if ('undefined' == typeof window) return storeState;
|
|
147
|
+
setTimeout(()=>{
|
|
148
|
+
if (null === storeState.hasConsented && !storeState.isLoading) storeState.refreshStatus();
|
|
149
|
+
if (refreshInterval > 0) {
|
|
150
|
+
const intervalId = setInterval(()=>{
|
|
151
|
+
storeState.refreshStatus();
|
|
152
|
+
}, refreshInterval);
|
|
153
|
+
window.addEventListener('unload', ()=>clearInterval(intervalId));
|
|
154
|
+
}
|
|
155
|
+
}, 0);
|
|
156
|
+
return storeState;
|
|
157
|
+
};
|
|
158
|
+
const useConditionalContent = (requiredConsent)=>{
|
|
159
|
+
const store = useConsent();
|
|
160
|
+
const canShow = ()=>{
|
|
161
|
+
if (store.isLoading || !store.hasConsented || !store.preferences) return false;
|
|
162
|
+
if (Array.isArray(requiredConsent)) return requiredConsent.every((key)=>store.preferences?.[key]);
|
|
163
|
+
return !!store.preferences[requiredConsent];
|
|
164
|
+
};
|
|
165
|
+
return {
|
|
166
|
+
isLoading: store.isLoading,
|
|
167
|
+
hasConsented: store.hasConsented,
|
|
168
|
+
canShow: canShow(),
|
|
169
|
+
preferences: store.preferences
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
return {
|
|
173
|
+
store: consentStore,
|
|
174
|
+
useConsent,
|
|
175
|
+
useConditionalContent
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
var __webpack_export_target__ = exports;
|
|
179
|
+
for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
180
|
+
if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
181
|
+
value: true
|
|
182
|
+
});
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React integration for c15t consent management system
|
|
3
|
+
*
|
|
4
|
+
* This module provides React hooks and state management for the c15t consent system.
|
|
5
|
+
* It implements a lightweight store and hooks for integrating consent management
|
|
6
|
+
* into React applications without requiring specific React dependencies.
|
|
7
|
+
*
|
|
8
|
+
* The implementation is designed to work in various React environments and can
|
|
9
|
+
* also function in non-React environments by providing a fallback pattern.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* // Initialize in your app
|
|
14
|
+
* import { createConsentClient } from '@c15t/integrations/react';
|
|
15
|
+
*
|
|
16
|
+
* const consentClient = createConsentClient({
|
|
17
|
+
* baseUrl: '/api/c15t',
|
|
18
|
+
* refreshInterval: 60000, // Check every minute
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Use in components
|
|
22
|
+
* function ConsentBanner() {
|
|
23
|
+
* const { isLoading, hasConsented, acceptAll, declineAll } = consentClient.useConsent();
|
|
24
|
+
*
|
|
25
|
+
* if (isLoading) return <div>Loading...</div>;
|
|
26
|
+
* if (hasConsented) return null;
|
|
27
|
+
*
|
|
28
|
+
* return (
|
|
29
|
+
* <div className="consent-banner">
|
|
30
|
+
* <h2>We use cookies</h2>
|
|
31
|
+
* <button onClick={acceptAll}>Accept All</button>
|
|
32
|
+
* <button onClick={declineAll}>Decline All</button>
|
|
33
|
+
* </div>
|
|
34
|
+
* );
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Type definition for a React-like hook function
|
|
40
|
+
*
|
|
41
|
+
* This type facilitates compatibility with React's hooks pattern
|
|
42
|
+
* without requiring a direct dependency on React.
|
|
43
|
+
*
|
|
44
|
+
* @template T The return type of the hook
|
|
45
|
+
*/
|
|
46
|
+
type ReactHook<T> = () => T;
|
|
47
|
+
/**
|
|
48
|
+
* State for the consent management store
|
|
49
|
+
*
|
|
50
|
+
* Contains the current consent status, preferences, and loading state.
|
|
51
|
+
*/
|
|
52
|
+
interface ConsentState {
|
|
53
|
+
/**
|
|
54
|
+
* Whether consent data is currently being loaded
|
|
55
|
+
*/
|
|
56
|
+
isLoading: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Whether the subject has provided consent
|
|
59
|
+
* - `true`: Subject has provided at least one consent
|
|
60
|
+
* - `false`: Subject has explicitly declined all consent
|
|
61
|
+
* - `null`: Consent status hasn't been determined yet
|
|
62
|
+
*/
|
|
63
|
+
hasConsented: boolean | null;
|
|
64
|
+
/**
|
|
65
|
+
* Map of consent purposes to their consent status
|
|
66
|
+
* Key is the consentPurpose ID, value is a boolean indicating consent
|
|
67
|
+
*/
|
|
68
|
+
preferences: Record<string, boolean> | null;
|
|
69
|
+
/**
|
|
70
|
+
* Error that occurred during consent operations
|
|
71
|
+
*/
|
|
72
|
+
error: Error | null;
|
|
73
|
+
/**
|
|
74
|
+
* Timestamp of when consent was last updated
|
|
75
|
+
*/
|
|
76
|
+
lastUpdated: number | null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Actions that can be performed on the consent store
|
|
80
|
+
*
|
|
81
|
+
* These actions allow modifying the consent state and interacting
|
|
82
|
+
* with the consent management backend.
|
|
83
|
+
*/
|
|
84
|
+
interface ConsentActions {
|
|
85
|
+
/**
|
|
86
|
+
* Set specific consent preferences
|
|
87
|
+
*
|
|
88
|
+
* @param preferences - Map of consentPurpose IDs to consent values
|
|
89
|
+
* @returns Promise that resolves when consent is updated
|
|
90
|
+
*/
|
|
91
|
+
setConsent: (preferences: Record<string, boolean>) => Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Accept all consent purposes
|
|
94
|
+
* Uses the default preferences defined in configuration
|
|
95
|
+
*
|
|
96
|
+
* @returns Promise that resolves when consent is updated
|
|
97
|
+
*/
|
|
98
|
+
acceptAll: () => Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Decline all consent purposes
|
|
101
|
+
* Sets all purposes to `false`
|
|
102
|
+
*
|
|
103
|
+
* @returns Promise that resolves when consent is updated
|
|
104
|
+
*/
|
|
105
|
+
declineAll: () => Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Refresh the consent status from the server
|
|
108
|
+
*
|
|
109
|
+
* @returns Promise that resolves when consent status is refreshed
|
|
110
|
+
*/
|
|
111
|
+
refreshStatus: () => Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Clear any error state in the store
|
|
114
|
+
*/
|
|
115
|
+
clearError: () => void;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Combined type for the consent store containing both state and actions
|
|
119
|
+
*/
|
|
120
|
+
type ConsentStore = ConsentState & ConsentActions;
|
|
121
|
+
/**
|
|
122
|
+
* Configuration options for the c15t React client
|
|
123
|
+
*/
|
|
124
|
+
interface c15tClientConfig {
|
|
125
|
+
/**
|
|
126
|
+
* Base URL for API endpoints
|
|
127
|
+
* @default '/api/c15t'
|
|
128
|
+
*/
|
|
129
|
+
baseUrl?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Auto-refresh interval in milliseconds
|
|
132
|
+
* Set to 0 to disable auto-refresh
|
|
133
|
+
* @default 0 (disabled)
|
|
134
|
+
*/
|
|
135
|
+
refreshInterval?: number;
|
|
136
|
+
/**
|
|
137
|
+
* Default preferences to use for acceptAll action
|
|
138
|
+
* These values determine what gets set when a subject accepts all consent
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* {
|
|
143
|
+
* analytics: true,
|
|
144
|
+
* marketing: true,
|
|
145
|
+
* preferences: true
|
|
146
|
+
* }
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
defaultPreferences?: {
|
|
150
|
+
analytics?: boolean;
|
|
151
|
+
marketing?: boolean;
|
|
152
|
+
preferences?: boolean;
|
|
153
|
+
[key: string]: boolean | undefined;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Interface for basic store operations
|
|
158
|
+
*
|
|
159
|
+
* Provides a minimal store API similar to common state management libraries
|
|
160
|
+
*
|
|
161
|
+
* @template T The type of state stored in the store
|
|
162
|
+
*/
|
|
163
|
+
interface StoreAPI<T> {
|
|
164
|
+
/**
|
|
165
|
+
* Get the current state
|
|
166
|
+
* @returns The current state
|
|
167
|
+
*/
|
|
168
|
+
getState: () => T;
|
|
169
|
+
/**
|
|
170
|
+
* Update the state
|
|
171
|
+
* @param partial - Partial state or function that returns partial state
|
|
172
|
+
*/
|
|
173
|
+
setState: (partial: Partial<T> | ((state: T) => Partial<T>)) => void;
|
|
174
|
+
/**
|
|
175
|
+
* Subscribe to state changes
|
|
176
|
+
* @param listener - Function to call when state changes
|
|
177
|
+
* @returns Unsubscribe function
|
|
178
|
+
*/
|
|
179
|
+
subscribe: (listener: (state: T) => void) => () => void;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Result of the useConditionalContent hook
|
|
183
|
+
*/
|
|
184
|
+
interface ConditionalContentResult {
|
|
185
|
+
/**
|
|
186
|
+
* Whether consent data is currently loading
|
|
187
|
+
*/
|
|
188
|
+
isLoading: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Whether the subject has given any consent
|
|
191
|
+
*/
|
|
192
|
+
hasConsented: boolean | null;
|
|
193
|
+
/**
|
|
194
|
+
* Whether content can be shown based on required consent
|
|
195
|
+
*/
|
|
196
|
+
canShow: boolean;
|
|
197
|
+
/**
|
|
198
|
+
* Current consent preferences
|
|
199
|
+
*/
|
|
200
|
+
preferences: Record<string, boolean> | null;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Result of the createConsentClient function
|
|
204
|
+
*/
|
|
205
|
+
interface ConsentClient {
|
|
206
|
+
/**
|
|
207
|
+
* Store for managing consent state
|
|
208
|
+
*/
|
|
209
|
+
store: StoreAPI<ConsentStore>;
|
|
210
|
+
/**
|
|
211
|
+
* Hook for accessing consent state and actions
|
|
212
|
+
*/
|
|
213
|
+
useConsent: ReactHook<ConsentStore>;
|
|
214
|
+
/**
|
|
215
|
+
* Hook for conditionally showing content based on consent
|
|
216
|
+
*/
|
|
217
|
+
useConditionalContent: (requiredConsent: string | string[]) => ConditionalContentResult;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Creates a c15t client for React applications
|
|
221
|
+
*
|
|
222
|
+
* This function creates a store and hooks for managing consent in React applications.
|
|
223
|
+
* It provides a lightweight implementation that works in various React environments
|
|
224
|
+
* and degrades gracefully in non-React environments.
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```tsx
|
|
228
|
+
* // Create a client
|
|
229
|
+
* const client = createConsentClient({
|
|
230
|
+
* baseUrl: '/api/c15t',
|
|
231
|
+
* refreshInterval: 60000,
|
|
232
|
+
* defaultPreferences: {
|
|
233
|
+
* analytics: true,
|
|
234
|
+
* marketing: false
|
|
235
|
+
* }
|
|
236
|
+
* });
|
|
237
|
+
*
|
|
238
|
+
* // Use in a component
|
|
239
|
+
* function ConsentStatus() {
|
|
240
|
+
* const { preferences, refreshStatus } = client.useConsent();
|
|
241
|
+
*
|
|
242
|
+
* return (
|
|
243
|
+
* <div>
|
|
244
|
+
* <h2>Your consent preferences:</h2>
|
|
245
|
+
* <pre>{JSON.stringify(preferences, null, 2)}</pre>
|
|
246
|
+
* <button onClick={refreshStatus}>Refresh</button>
|
|
247
|
+
* </div>
|
|
248
|
+
* );
|
|
249
|
+
* }
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @param config - Client configuration options
|
|
253
|
+
* @returns A client object with store and hooks
|
|
254
|
+
*/
|
|
255
|
+
export declare function createConsentClient(config?: c15tClientConfig): ConsentClient;
|
|
256
|
+
export {};
|
|
257
|
+
//# sourceMappingURL=react.d.ts.map
|