@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
package/dist/init.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type C15TResult } from './error/results';
|
|
2
|
+
/**
|
|
3
|
+
* c15t Initialization Module
|
|
4
|
+
*
|
|
5
|
+
* This module handles the initialization of the c15t consent management system.
|
|
6
|
+
* It sets up the consent context, configures storage adapters, initializes plugins,
|
|
7
|
+
* and establishes security settings like secrets and trusted origins.
|
|
8
|
+
*
|
|
9
|
+
* The initialization process includes:
|
|
10
|
+
* - Setting up storage adapters for consent data
|
|
11
|
+
* - Configuring security credentials and trusted origins
|
|
12
|
+
* - Initializing core and custom plugins
|
|
13
|
+
* - Creating the consent context object that serves as the foundation for the system
|
|
14
|
+
*
|
|
15
|
+
* This is an internal module typically not used directly by consumers of the c15t library.
|
|
16
|
+
*/
|
|
17
|
+
import type { C15TContext, C15TOptions, C15TPlugin } from './types';
|
|
18
|
+
/**
|
|
19
|
+
* Initializes the c15t consent management system using Result pattern
|
|
20
|
+
*
|
|
21
|
+
* This function creates and configures the consent context based on the provided options.
|
|
22
|
+
* It sets up storage adapters, initializes plugins, configures security settings,
|
|
23
|
+
* and establishes the foundation for the consent management system.
|
|
24
|
+
*
|
|
25
|
+
* This version uses the neverthrow Result pattern for error handling.
|
|
26
|
+
*
|
|
27
|
+
* @template P - The plugin types used in the configuration
|
|
28
|
+
* @param options - Configuration options for the c15t instance
|
|
29
|
+
* @returns A Promise resolving to a Result containing the initialized consent context
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const contextResult = await init({
|
|
34
|
+
* secret: process.env.CONSENT_SECRET,
|
|
35
|
+
* storage: memoryAdapter(),
|
|
36
|
+
* plugins: [geoPlugin()]
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // Handle success and error cases explicitly
|
|
40
|
+
* contextResult.match(
|
|
41
|
+
* (context) => {
|
|
42
|
+
* // Use the successfully initialized context
|
|
43
|
+
* },
|
|
44
|
+
* (error) => {
|
|
45
|
+
* // Handle the initialization error
|
|
46
|
+
* console.error('Failed to initialize:', error.message);
|
|
47
|
+
* }
|
|
48
|
+
* );
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare const init: <P extends C15TPlugin[]>(options: C15TOptions<P>) => Promise<C15TResult<C15TContext>>;
|
|
52
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,iBAAiB,CAAC;AAC5D;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACX,WAAW,EACX,WAAW,EACX,UAAU,EAEV,MAAM,SAAS,CAAC;AA2BjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,IAAI,GAAU,CAAC,SAAS,UAAU,EAAE,EAChD,SAAS,WAAW,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CA4EjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../src/init.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,281 @@
|
|
|
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
|
+
createConsentClient: ()=>createConsentClient
|
|
29
|
+
});
|
|
30
|
+
const BASE_ERROR_CODES = {
|
|
31
|
+
NOT_FOUND: 'Resource not found',
|
|
32
|
+
BAD_REQUEST: 'Bad request',
|
|
33
|
+
CONFLICT: 'Conflict with current state',
|
|
34
|
+
CONSENT_NOT_FOUND: 'Consent not found',
|
|
35
|
+
CONSENT_EXPIRED: 'Consent has expired',
|
|
36
|
+
FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
|
|
37
|
+
FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
|
|
38
|
+
FAILED_TO_GET_CONSENT: 'Failed to get consent',
|
|
39
|
+
FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
|
|
40
|
+
PURPOSE_NOT_FOUND: 'Consent Purpose not found',
|
|
41
|
+
INVALID_CONFIGURATION: 'Invalid configuration',
|
|
42
|
+
MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
|
|
43
|
+
UNAUTHORIZED: 'Unauthorized',
|
|
44
|
+
FORBIDDEN: 'Forbidden',
|
|
45
|
+
INTERNAL_SERVER_ERROR: 'Internal server error',
|
|
46
|
+
INITIALIZATION_FAILED: 'Initialization failed',
|
|
47
|
+
PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
|
|
48
|
+
DATABASE_CONNECTION_ERROR: 'Database connection error',
|
|
49
|
+
DATABASE_QUERY_ERROR: 'Database query error',
|
|
50
|
+
REQUEST_HANDLER_ERROR: 'Request handler error',
|
|
51
|
+
API_RETRIEVAL_ERROR: 'API retrieval error',
|
|
52
|
+
INVALID_REQUEST: 'Invalid request',
|
|
53
|
+
UNKNOWN_ERROR: 'Unknown error'
|
|
54
|
+
};
|
|
55
|
+
function toNextJsHandler(instance) {
|
|
56
|
+
const handler = async (initialRequest)=>{
|
|
57
|
+
try {
|
|
58
|
+
const request = initialRequest;
|
|
59
|
+
if ('POST' === request.method) try {
|
|
60
|
+
const clonedRequest = request.clone();
|
|
61
|
+
await clonedRequest.json();
|
|
62
|
+
} catch (error) {
|
|
63
|
+
return new Response(JSON.stringify({
|
|
64
|
+
error: true,
|
|
65
|
+
code: BASE_ERROR_CODES.REQUEST_HANDLER_ERROR,
|
|
66
|
+
message: 'Invalid JSON in request body',
|
|
67
|
+
details: error instanceof Error ? error.message : 'Unknown error'
|
|
68
|
+
}), {
|
|
69
|
+
status: 400,
|
|
70
|
+
headers: {
|
|
71
|
+
'Content-Type': 'application/json'
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (instance.$context) {
|
|
76
|
+
const contextPromise = instance.$context;
|
|
77
|
+
try {
|
|
78
|
+
const contextResult = await contextPromise;
|
|
79
|
+
contextResult.match((context)=>{
|
|
80
|
+
if (!context.baseURL || '' === context.baseURL.trim()) {
|
|
81
|
+
const url = new URL(request.url);
|
|
82
|
+
const basePath = context.options?.basePath || '/api/c15t';
|
|
83
|
+
const baseURL = `${url.origin}${basePath}`;
|
|
84
|
+
context.baseURL = baseURL;
|
|
85
|
+
if (context.options) context.options.baseURL = baseURL;
|
|
86
|
+
}
|
|
87
|
+
}, ()=>{});
|
|
88
|
+
} catch {}
|
|
89
|
+
}
|
|
90
|
+
const result = await instance.handler(request);
|
|
91
|
+
return await result.match((response)=>response, (error)=>{
|
|
92
|
+
const status = error.status || 500;
|
|
93
|
+
const message = error.message || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
|
|
94
|
+
return new Response(JSON.stringify({
|
|
95
|
+
error: true,
|
|
96
|
+
code: error.code || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
97
|
+
message,
|
|
98
|
+
data: error.data
|
|
99
|
+
}), {
|
|
100
|
+
status,
|
|
101
|
+
headers: {
|
|
102
|
+
'Content-Type': 'application/json'
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.error('Unexpected error in c15t handler:', error);
|
|
108
|
+
return new Response(JSON.stringify({
|
|
109
|
+
error: true,
|
|
110
|
+
code: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
111
|
+
message: 'An unexpected error occurred',
|
|
112
|
+
data: {
|
|
113
|
+
error: String(error)
|
|
114
|
+
}
|
|
115
|
+
}), {
|
|
116
|
+
status: 500,
|
|
117
|
+
headers: {
|
|
118
|
+
'Content-Type': 'application/json'
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
return {
|
|
124
|
+
GET: handler,
|
|
125
|
+
POST: handler
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function createConsentClient(config = {}) {
|
|
129
|
+
const { baseUrl = '/api/c15t', refreshInterval = 0, defaultPreferences = {
|
|
130
|
+
analytics: true,
|
|
131
|
+
marketing: true,
|
|
132
|
+
preferences: true
|
|
133
|
+
} } = config;
|
|
134
|
+
function createStore(createState) {
|
|
135
|
+
let state;
|
|
136
|
+
const listeners = new Set();
|
|
137
|
+
const setState = (partial)=>{
|
|
138
|
+
const nextState = 'function' == typeof partial ? {
|
|
139
|
+
...state,
|
|
140
|
+
...partial(state)
|
|
141
|
+
} : {
|
|
142
|
+
...state,
|
|
143
|
+
...partial
|
|
144
|
+
};
|
|
145
|
+
state = nextState;
|
|
146
|
+
for (const listener of listeners)listener(state);
|
|
147
|
+
};
|
|
148
|
+
const getState = ()=>state;
|
|
149
|
+
const subscribe = (listener)=>{
|
|
150
|
+
listeners.add(listener);
|
|
151
|
+
return ()=>listeners.delete(listener);
|
|
152
|
+
};
|
|
153
|
+
state = createState(setState, getState);
|
|
154
|
+
return {
|
|
155
|
+
getState,
|
|
156
|
+
setState,
|
|
157
|
+
subscribe
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const consentStore = createStore((set, get)=>({
|
|
161
|
+
isLoading: true,
|
|
162
|
+
hasConsented: null,
|
|
163
|
+
preferences: null,
|
|
164
|
+
error: null,
|
|
165
|
+
lastUpdated: null,
|
|
166
|
+
setConsent: async (preferences)=>{
|
|
167
|
+
try {
|
|
168
|
+
set({
|
|
169
|
+
isLoading: true,
|
|
170
|
+
error: null
|
|
171
|
+
});
|
|
172
|
+
const response = await fetch(`${baseUrl}/set`, {
|
|
173
|
+
method: 'POST',
|
|
174
|
+
headers: {
|
|
175
|
+
'Content-Type': 'application/json'
|
|
176
|
+
},
|
|
177
|
+
body: JSON.stringify({
|
|
178
|
+
preferences
|
|
179
|
+
}),
|
|
180
|
+
credentials: 'same-origin'
|
|
181
|
+
});
|
|
182
|
+
if (!response.ok) throw new Error(`Failed to set consent: ${response.statusText}`);
|
|
183
|
+
const result = await response.json();
|
|
184
|
+
set({
|
|
185
|
+
isLoading: false,
|
|
186
|
+
hasConsented: true,
|
|
187
|
+
preferences: result.preferences || preferences,
|
|
188
|
+
lastUpdated: Date.now()
|
|
189
|
+
});
|
|
190
|
+
return result;
|
|
191
|
+
} catch (error) {
|
|
192
|
+
set({
|
|
193
|
+
isLoading: false,
|
|
194
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
195
|
+
});
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
acceptAll: async ()=>{
|
|
200
|
+
const cleanPreferences = Object.entries(defaultPreferences).filter(([_, value])=>void 0 !== value).reduce((acc, [key, value])=>{
|
|
201
|
+
acc[key] = value;
|
|
202
|
+
return acc;
|
|
203
|
+
}, {});
|
|
204
|
+
return await get().setConsent(cleanPreferences);
|
|
205
|
+
},
|
|
206
|
+
declineAll: async ()=>{
|
|
207
|
+
const minimalConsent = Object.keys(defaultPreferences).reduce((acc, key)=>{
|
|
208
|
+
acc[key] = false;
|
|
209
|
+
return acc;
|
|
210
|
+
}, {});
|
|
211
|
+
return await get().setConsent(minimalConsent);
|
|
212
|
+
},
|
|
213
|
+
refreshStatus: async ()=>{
|
|
214
|
+
try {
|
|
215
|
+
set({
|
|
216
|
+
isLoading: true,
|
|
217
|
+
error: null
|
|
218
|
+
});
|
|
219
|
+
const response = await fetch(`${baseUrl}/status`, {
|
|
220
|
+
credentials: 'same-origin'
|
|
221
|
+
});
|
|
222
|
+
if (!response.ok) throw new Error(`Failed to get consent status: ${response.statusText}`);
|
|
223
|
+
const { consented, preferences } = await response.json();
|
|
224
|
+
set({
|
|
225
|
+
isLoading: false,
|
|
226
|
+
hasConsented: consented,
|
|
227
|
+
preferences: preferences,
|
|
228
|
+
lastUpdated: Date.now()
|
|
229
|
+
});
|
|
230
|
+
} catch (error) {
|
|
231
|
+
set({
|
|
232
|
+
isLoading: false,
|
|
233
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
clearError: ()=>{
|
|
238
|
+
set({
|
|
239
|
+
error: null
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}));
|
|
243
|
+
const useConsent = ()=>{
|
|
244
|
+
const storeState = consentStore.getState();
|
|
245
|
+
if ('undefined' == typeof window) return storeState;
|
|
246
|
+
setTimeout(()=>{
|
|
247
|
+
if (null === storeState.hasConsented && !storeState.isLoading) storeState.refreshStatus();
|
|
248
|
+
if (refreshInterval > 0) {
|
|
249
|
+
const intervalId = setInterval(()=>{
|
|
250
|
+
storeState.refreshStatus();
|
|
251
|
+
}, refreshInterval);
|
|
252
|
+
window.addEventListener('unload', ()=>clearInterval(intervalId));
|
|
253
|
+
}
|
|
254
|
+
}, 0);
|
|
255
|
+
return storeState;
|
|
256
|
+
};
|
|
257
|
+
const useConditionalContent = (requiredConsent)=>{
|
|
258
|
+
const store = useConsent();
|
|
259
|
+
const canShow = ()=>{
|
|
260
|
+
if (store.isLoading || !store.hasConsented || !store.preferences) return false;
|
|
261
|
+
if (Array.isArray(requiredConsent)) return requiredConsent.every((key)=>store.preferences?.[key]);
|
|
262
|
+
return !!store.preferences[requiredConsent];
|
|
263
|
+
};
|
|
264
|
+
return {
|
|
265
|
+
isLoading: store.isLoading,
|
|
266
|
+
hasConsented: store.hasConsented,
|
|
267
|
+
canShow: canShow(),
|
|
268
|
+
preferences: store.preferences
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
return {
|
|
272
|
+
store: consentStore,
|
|
273
|
+
useConsent,
|
|
274
|
+
useConditionalContent
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
var __webpack_export_target__ = exports;
|
|
278
|
+
for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
279
|
+
if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
|
|
280
|
+
value: true
|
|
281
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,248 @@
|
|
|
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
|
+
function createConsentClient(config = {}) {
|
|
100
|
+
const { baseUrl = '/api/c15t', refreshInterval = 0, defaultPreferences = {
|
|
101
|
+
analytics: true,
|
|
102
|
+
marketing: true,
|
|
103
|
+
preferences: true
|
|
104
|
+
} } = config;
|
|
105
|
+
function createStore(createState) {
|
|
106
|
+
let state;
|
|
107
|
+
const listeners = new Set();
|
|
108
|
+
const setState = (partial)=>{
|
|
109
|
+
const nextState = 'function' == typeof partial ? {
|
|
110
|
+
...state,
|
|
111
|
+
...partial(state)
|
|
112
|
+
} : {
|
|
113
|
+
...state,
|
|
114
|
+
...partial
|
|
115
|
+
};
|
|
116
|
+
state = nextState;
|
|
117
|
+
for (const listener of listeners)listener(state);
|
|
118
|
+
};
|
|
119
|
+
const getState = ()=>state;
|
|
120
|
+
const subscribe = (listener)=>{
|
|
121
|
+
listeners.add(listener);
|
|
122
|
+
return ()=>listeners.delete(listener);
|
|
123
|
+
};
|
|
124
|
+
state = createState(setState, getState);
|
|
125
|
+
return {
|
|
126
|
+
getState,
|
|
127
|
+
setState,
|
|
128
|
+
subscribe
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const consentStore = createStore((set, get)=>({
|
|
132
|
+
isLoading: true,
|
|
133
|
+
hasConsented: null,
|
|
134
|
+
preferences: null,
|
|
135
|
+
error: null,
|
|
136
|
+
lastUpdated: null,
|
|
137
|
+
setConsent: async (preferences)=>{
|
|
138
|
+
try {
|
|
139
|
+
set({
|
|
140
|
+
isLoading: true,
|
|
141
|
+
error: null
|
|
142
|
+
});
|
|
143
|
+
const response = await fetch(`${baseUrl}/set`, {
|
|
144
|
+
method: 'POST',
|
|
145
|
+
headers: {
|
|
146
|
+
'Content-Type': 'application/json'
|
|
147
|
+
},
|
|
148
|
+
body: JSON.stringify({
|
|
149
|
+
preferences
|
|
150
|
+
}),
|
|
151
|
+
credentials: 'same-origin'
|
|
152
|
+
});
|
|
153
|
+
if (!response.ok) throw new Error(`Failed to set consent: ${response.statusText}`);
|
|
154
|
+
const result = await response.json();
|
|
155
|
+
set({
|
|
156
|
+
isLoading: false,
|
|
157
|
+
hasConsented: true,
|
|
158
|
+
preferences: result.preferences || preferences,
|
|
159
|
+
lastUpdated: Date.now()
|
|
160
|
+
});
|
|
161
|
+
return result;
|
|
162
|
+
} catch (error) {
|
|
163
|
+
set({
|
|
164
|
+
isLoading: false,
|
|
165
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
166
|
+
});
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
acceptAll: async ()=>{
|
|
171
|
+
const cleanPreferences = Object.entries(defaultPreferences).filter(([_, value])=>void 0 !== value).reduce((acc, [key, value])=>{
|
|
172
|
+
acc[key] = value;
|
|
173
|
+
return acc;
|
|
174
|
+
}, {});
|
|
175
|
+
return await get().setConsent(cleanPreferences);
|
|
176
|
+
},
|
|
177
|
+
declineAll: async ()=>{
|
|
178
|
+
const minimalConsent = Object.keys(defaultPreferences).reduce((acc, key)=>{
|
|
179
|
+
acc[key] = false;
|
|
180
|
+
return acc;
|
|
181
|
+
}, {});
|
|
182
|
+
return await get().setConsent(minimalConsent);
|
|
183
|
+
},
|
|
184
|
+
refreshStatus: async ()=>{
|
|
185
|
+
try {
|
|
186
|
+
set({
|
|
187
|
+
isLoading: true,
|
|
188
|
+
error: null
|
|
189
|
+
});
|
|
190
|
+
const response = await fetch(`${baseUrl}/status`, {
|
|
191
|
+
credentials: 'same-origin'
|
|
192
|
+
});
|
|
193
|
+
if (!response.ok) throw new Error(`Failed to get consent status: ${response.statusText}`);
|
|
194
|
+
const { consented, preferences } = await response.json();
|
|
195
|
+
set({
|
|
196
|
+
isLoading: false,
|
|
197
|
+
hasConsented: consented,
|
|
198
|
+
preferences: preferences,
|
|
199
|
+
lastUpdated: Date.now()
|
|
200
|
+
});
|
|
201
|
+
} catch (error) {
|
|
202
|
+
set({
|
|
203
|
+
isLoading: false,
|
|
204
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
clearError: ()=>{
|
|
209
|
+
set({
|
|
210
|
+
error: null
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}));
|
|
214
|
+
const useConsent = ()=>{
|
|
215
|
+
const storeState = consentStore.getState();
|
|
216
|
+
if ('undefined' == typeof window) return storeState;
|
|
217
|
+
setTimeout(()=>{
|
|
218
|
+
if (null === storeState.hasConsented && !storeState.isLoading) storeState.refreshStatus();
|
|
219
|
+
if (refreshInterval > 0) {
|
|
220
|
+
const intervalId = setInterval(()=>{
|
|
221
|
+
storeState.refreshStatus();
|
|
222
|
+
}, refreshInterval);
|
|
223
|
+
window.addEventListener('unload', ()=>clearInterval(intervalId));
|
|
224
|
+
}
|
|
225
|
+
}, 0);
|
|
226
|
+
return storeState;
|
|
227
|
+
};
|
|
228
|
+
const useConditionalContent = (requiredConsent)=>{
|
|
229
|
+
const store = useConsent();
|
|
230
|
+
const canShow = ()=>{
|
|
231
|
+
if (store.isLoading || !store.hasConsented || !store.preferences) return false;
|
|
232
|
+
if (Array.isArray(requiredConsent)) return requiredConsent.every((key)=>store.preferences?.[key]);
|
|
233
|
+
return !!store.preferences[requiredConsent];
|
|
234
|
+
};
|
|
235
|
+
return {
|
|
236
|
+
isLoading: store.isLoading,
|
|
237
|
+
hasConsented: store.hasConsented,
|
|
238
|
+
canShow: canShow(),
|
|
239
|
+
preferences: store.preferences
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
return {
|
|
243
|
+
store: consentStore,
|
|
244
|
+
useConsent,
|
|
245
|
+
useConditionalContent
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
export { createConsentClient, toNextJsHandler };
|