@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,471 @@
|
|
|
1
|
+
import type { ConsentPurpose } from '~/db/schema/consent-purpose';
|
|
2
|
+
import type { FetchOptions, ResponseContext, c15tClientOptions } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Client for interacting with the c15t consent management API.
|
|
6
|
+
*
|
|
7
|
+
* This class provides methods for retrieving and updating consent preferences,
|
|
8
|
+
* listing consent purposes, and accessing consent history. It handles HTTP requests
|
|
9
|
+
* to the c15t API and provides a type-safe interface for working with consent data.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* The client abstracts away the details of making HTTP requests to the c15t API,
|
|
13
|
+
* handling authentication, error handling, and response parsing. It provides
|
|
14
|
+
* a clean, type-safe interface for working with consent data.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { createConsentClient } from '@c15t/client';
|
|
19
|
+
*
|
|
20
|
+
* const client = createConsentClient({
|
|
21
|
+
* baseURL: 'https://example.com/api',
|
|
22
|
+
* headers: { 'X-API-Key': 'your-api-key' }
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Get current consent
|
|
26
|
+
* const { data, error } = await client.getConsent();
|
|
27
|
+
*
|
|
28
|
+
* // Update consent
|
|
29
|
+
* await client.updateConsent({
|
|
30
|
+
* analytics: true,
|
|
31
|
+
* marketing: false
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class c15tClient {
|
|
36
|
+
/**
|
|
37
|
+
* Base URL for API requests (without trailing slash)
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
private baseURL: string;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Default headers to include with all requests
|
|
45
|
+
*
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
private headers: Record<string, string>;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Custom fetch implementation (if provided)
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
private customFetch?: typeof fetch;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Creates a new c15t client instance.
|
|
59
|
+
*
|
|
60
|
+
* @param options - Configuration options for the client
|
|
61
|
+
* @throws Will throw an error if the baseURL is invalid or if required options are missing
|
|
62
|
+
*/
|
|
63
|
+
constructor(options: c15tClientOptions) {
|
|
64
|
+
this.baseURL = options.baseURL.endsWith('/')
|
|
65
|
+
? options.baseURL.slice(0, -1)
|
|
66
|
+
: options.baseURL;
|
|
67
|
+
|
|
68
|
+
this.headers = {
|
|
69
|
+
'Content-Type': 'application/json',
|
|
70
|
+
...options.headers,
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
this.customFetch = options.fetchOptions?.customFetchImpl;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Generic method for making HTTP requests to the API.
|
|
78
|
+
*
|
|
79
|
+
* This internal method handles constructing the request, processing the response,
|
|
80
|
+
* and executing any callbacks based on the response status. It provides standardized
|
|
81
|
+
* error handling and response formatting.
|
|
82
|
+
*
|
|
83
|
+
* @typeParam ResponseType - The expected type of the response data
|
|
84
|
+
* @param path - API endpoint path (will be appended to the baseURL)
|
|
85
|
+
* @param options - Request configuration options
|
|
86
|
+
* @returns A response context object containing the data, response metadata, and any errors
|
|
87
|
+
* @throws Will throw an error if options.throw is true and the request fails
|
|
88
|
+
* @internal This method is not intended to be used directly, use the public API methods instead
|
|
89
|
+
*/
|
|
90
|
+
private async fetcher<ResponseType>(
|
|
91
|
+
path: string,
|
|
92
|
+
options: FetchOptions<ResponseType> = {}
|
|
93
|
+
): Promise<ResponseContext<ResponseType>> {
|
|
94
|
+
try {
|
|
95
|
+
const url = new URL(path, this.baseURL);
|
|
96
|
+
|
|
97
|
+
// Add query parameters
|
|
98
|
+
if (options.query) {
|
|
99
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
100
|
+
if (value !== undefined) {
|
|
101
|
+
if (Array.isArray(value)) {
|
|
102
|
+
for (const v of value) {
|
|
103
|
+
url.searchParams.append(key, String(v));
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
url.searchParams.append(key, String(value));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const fetchOptions: RequestInit = {
|
|
113
|
+
method: options.method || 'GET',
|
|
114
|
+
headers: {
|
|
115
|
+
...this.headers,
|
|
116
|
+
...options.headers,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// Add body for non-GET requests
|
|
121
|
+
if (options.body && fetchOptions.method !== 'GET') {
|
|
122
|
+
fetchOptions.body = JSON.stringify(options.body);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Use custom fetch if provided, otherwise use global fetch
|
|
126
|
+
const fetchImpl = this.customFetch || fetch;
|
|
127
|
+
const response = await fetchImpl(url.toString(), fetchOptions);
|
|
128
|
+
|
|
129
|
+
let data: ResponseType | null = null;
|
|
130
|
+
let error: Error | null = null;
|
|
131
|
+
|
|
132
|
+
// Parse response data
|
|
133
|
+
if (response.status !== 204) {
|
|
134
|
+
try {
|
|
135
|
+
data = await response.json();
|
|
136
|
+
} catch (err) {
|
|
137
|
+
if (response.ok) {
|
|
138
|
+
data = null;
|
|
139
|
+
} else {
|
|
140
|
+
error = new Error(
|
|
141
|
+
`Failed to parse response: ${(err as Error).message}`
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Create context object
|
|
148
|
+
const context: ResponseContext<ResponseType> = {
|
|
149
|
+
data,
|
|
150
|
+
response,
|
|
151
|
+
error: error
|
|
152
|
+
? {
|
|
153
|
+
message: error.message,
|
|
154
|
+
status: response.status,
|
|
155
|
+
}
|
|
156
|
+
: null,
|
|
157
|
+
ok: response.ok,
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// Handle callbacks
|
|
161
|
+
if (response.ok) {
|
|
162
|
+
if (options.onSuccess) {
|
|
163
|
+
await options.onSuccess(context);
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
if (options.onError) {
|
|
167
|
+
await options.onError(context);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Throw error if requested
|
|
171
|
+
if (options.throw) {
|
|
172
|
+
const error = new Error(
|
|
173
|
+
`Request failed with status ${response.status}`
|
|
174
|
+
);
|
|
175
|
+
Object.assign(error, { status: response.status, data });
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return context;
|
|
181
|
+
} catch (error: unknown) {
|
|
182
|
+
if (options.onError) {
|
|
183
|
+
const errorObj = error as Error;
|
|
184
|
+
const context: ResponseContext<ResponseType> = {
|
|
185
|
+
data: null,
|
|
186
|
+
error: {
|
|
187
|
+
message: errorObj.message || 'Request failed',
|
|
188
|
+
status: (error as { status?: number }).status || 500,
|
|
189
|
+
code: (error as { code?: string }).code,
|
|
190
|
+
},
|
|
191
|
+
ok: false,
|
|
192
|
+
response: null,
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
await options.onError(context);
|
|
196
|
+
|
|
197
|
+
if (options.throw) {
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return context;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (options.throw) {
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return {
|
|
209
|
+
data: null,
|
|
210
|
+
error: {
|
|
211
|
+
message: (error as Error).message || 'Request failed',
|
|
212
|
+
status: (error as { status?: number }).status || 500,
|
|
213
|
+
code: (error as { code?: string }).code,
|
|
214
|
+
},
|
|
215
|
+
ok: false,
|
|
216
|
+
response: null,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// /**
|
|
222
|
+
// * Retrieves the current consent preferences.
|
|
223
|
+
// *
|
|
224
|
+
// * This method fetches the current consent settings for the subject,
|
|
225
|
+
// * including which purposes they have consented to and when the
|
|
226
|
+
// * consent was last updated.
|
|
227
|
+
// *
|
|
228
|
+
// * @example
|
|
229
|
+
// * ```typescript
|
|
230
|
+
// * const { data, error } = await client.getConsent();
|
|
231
|
+
// *
|
|
232
|
+
// * if (data) {
|
|
233
|
+
// * console.log('Subject consented to analytics:', data.preferences.analytics);
|
|
234
|
+
// * console.log('Consent last updated:', data.updatedAt);
|
|
235
|
+
// * }
|
|
236
|
+
// * ```
|
|
237
|
+
// *
|
|
238
|
+
// * @param options - Optional fetch configuration options
|
|
239
|
+
// * @returns Response context containing the consent preferences if successful
|
|
240
|
+
// */
|
|
241
|
+
// async getConsent(
|
|
242
|
+
// options?: FetchOptions<ConsentPreference>
|
|
243
|
+
// ): Promise<ResponseContext<ConsentPreference>> {
|
|
244
|
+
// return this.fetcher<ConsentPreference>('/get-consent', {
|
|
245
|
+
// method: 'GET',
|
|
246
|
+
// ...options,
|
|
247
|
+
// });
|
|
248
|
+
// }
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Lists all available consent purposes.
|
|
252
|
+
*
|
|
253
|
+
* This method retrieves all consent purposes configured in the system,
|
|
254
|
+
* including their IDs, names, descriptions, and whether they are required
|
|
255
|
+
* or optional.
|
|
256
|
+
*
|
|
257
|
+
* @throws Will throw an error if options.throw is true and the request fails
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* const { data, error } = await client.listPurposes();
|
|
262
|
+
*
|
|
263
|
+
* if (error) {
|
|
264
|
+
* console.error('Failed to fetch purposes:', error.message);
|
|
265
|
+
* return;
|
|
266
|
+
* }
|
|
267
|
+
*
|
|
268
|
+
* if (data) {
|
|
269
|
+
* // Display available consent purposes to the subject
|
|
270
|
+
* data.forEach(consentPurpose => {
|
|
271
|
+
* console.log(`${consentPurpose.name}: ${consentPurpose.description}`);
|
|
272
|
+
* console.log(`Required: ${consentPurpose.required}`);
|
|
273
|
+
* });
|
|
274
|
+
* }
|
|
275
|
+
* ```
|
|
276
|
+
*
|
|
277
|
+
* @param options - Optional fetch configuration options
|
|
278
|
+
* @returns Response context containing the list of consent purposes if successful
|
|
279
|
+
*/
|
|
280
|
+
async listPurposes(
|
|
281
|
+
options?: FetchOptions<ConsentPurpose[]>
|
|
282
|
+
): Promise<ResponseContext<ConsentPurpose[]>> {
|
|
283
|
+
return this.fetcher<ConsentPurpose[]>('/list-purposes', {
|
|
284
|
+
method: 'GET',
|
|
285
|
+
...options,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// /**
|
|
290
|
+
// * Updates the subject's consent preferences.
|
|
291
|
+
// *
|
|
292
|
+
// * This method sends the subject's updated consent choices to the server,
|
|
293
|
+
// * recording which purposes they have agreed to and which they have declined.
|
|
294
|
+
// *
|
|
295
|
+
// * @example
|
|
296
|
+
// * ```typescript
|
|
297
|
+
// * const { data, error } = await client.updateConsent({
|
|
298
|
+
// * analytics: true,
|
|
299
|
+
// * marketing: false,
|
|
300
|
+
// * preferences: true
|
|
301
|
+
// * });
|
|
302
|
+
// *
|
|
303
|
+
// * if (data) {
|
|
304
|
+
// * console.log('Consent updated successfully');
|
|
305
|
+
// * console.log('New preferences:', data.preferences);
|
|
306
|
+
// * }
|
|
307
|
+
// * ```
|
|
308
|
+
// *
|
|
309
|
+
// * @param preferences - Record mapping consentPurpose IDs to boolean consent values
|
|
310
|
+
// * @param options - Optional fetch configuration options
|
|
311
|
+
// * @returns Response context containing the updated consent preferences if successful
|
|
312
|
+
// */
|
|
313
|
+
// async updateConsent(
|
|
314
|
+
// preferences: Record<string, boolean>,
|
|
315
|
+
// options?: FetchOptions<ConsentPreference>
|
|
316
|
+
// ): Promise<ResponseContext<ConsentPreference>> {
|
|
317
|
+
// return this.fetcher<ConsentPreference>('/update-consent', {
|
|
318
|
+
// method: 'POST',
|
|
319
|
+
// body: { preferences },
|
|
320
|
+
// ...options,
|
|
321
|
+
// });
|
|
322
|
+
// }
|
|
323
|
+
|
|
324
|
+
// /**
|
|
325
|
+
// * Retrieves the history of consent changes.
|
|
326
|
+
// *
|
|
327
|
+
// * This method fetches a chronological record of consent preference changes,
|
|
328
|
+
// * showing when and how consent settings were modified.
|
|
329
|
+
// *
|
|
330
|
+
// * @example
|
|
331
|
+
// * ```typescript
|
|
332
|
+
// * // Get consent history for a specific subject
|
|
333
|
+
// * const { data } = await client.getConsentHistory({
|
|
334
|
+
// * subjectId: 'sub_x1pftyoufsm7xgo1kv',
|
|
335
|
+
// * limit: 10
|
|
336
|
+
// * });
|
|
337
|
+
// *
|
|
338
|
+
// * if (data) {
|
|
339
|
+
// * data.forEach(event => {
|
|
340
|
+
// * console.log(`Change at ${event.timestamp}`);
|
|
341
|
+
// * console.log(`Changed purposes: ${Object.keys(event.changes).join(', ')}`);
|
|
342
|
+
// * });
|
|
343
|
+
// * }
|
|
344
|
+
// * ```
|
|
345
|
+
// *
|
|
346
|
+
// * @param query - Query parameters to filter the history results
|
|
347
|
+
// * @param options - Optional fetch configuration options
|
|
348
|
+
// * @returns Response context containing the list of consent change events if successful
|
|
349
|
+
// */
|
|
350
|
+
// async getConsentHistory(
|
|
351
|
+
// query?: {
|
|
352
|
+
// recordId?: string;
|
|
353
|
+
// subjectId?: string;
|
|
354
|
+
// deviceId?: string;
|
|
355
|
+
// limit?: number;
|
|
356
|
+
// offset?: number;
|
|
357
|
+
// },
|
|
358
|
+
// options?: FetchOptions<ConsentChangeEvent[]>
|
|
359
|
+
// ): Promise<ResponseContext<ConsentChangeEvent[]>> {
|
|
360
|
+
// return this.fetcher<ConsentChangeEvent[]>('/consent-history', {
|
|
361
|
+
// method: 'GET',
|
|
362
|
+
// query,
|
|
363
|
+
// ...options,
|
|
364
|
+
// });
|
|
365
|
+
// }
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Makes a custom API request to any endpoint.
|
|
369
|
+
*
|
|
370
|
+
* This method allows for making requests to custom endpoints not covered
|
|
371
|
+
* by the standard methods, such as plugin-specific endpoints.
|
|
372
|
+
*
|
|
373
|
+
* @typeParam ResponseType - The expected type of the response data
|
|
374
|
+
* @param path - The API endpoint path
|
|
375
|
+
* @param options - Request configuration options
|
|
376
|
+
* @returns Response context containing the requested data if successful
|
|
377
|
+
* @throws Will throw an error if options.throw is true and the request fails
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* ```typescript
|
|
381
|
+
* // Call a custom analytics endpoint with error handling
|
|
382
|
+
* try {
|
|
383
|
+
* const { data, error } = await client.$fetch<AnalyticsResponse>('/analytics/track', {
|
|
384
|
+
* method: 'POST',
|
|
385
|
+
* body: {
|
|
386
|
+
* event: 'page_view',
|
|
387
|
+
* properties: { page: '/home' }
|
|
388
|
+
* },
|
|
389
|
+
* throw: true // Automatically throw on error
|
|
390
|
+
* });
|
|
391
|
+
*
|
|
392
|
+
* console.log('Event tracked successfully:', data);
|
|
393
|
+
* } catch (error) {
|
|
394
|
+
* console.error('Failed to track event:', error);
|
|
395
|
+
* }
|
|
396
|
+
*
|
|
397
|
+
* // Using callbacks for success/error handling
|
|
398
|
+
* await client.$fetch('/analytics/track', {
|
|
399
|
+
* method: 'POST',
|
|
400
|
+
* body: { event: 'button_click' },
|
|
401
|
+
* onSuccess: ({ data }) => console.log('Tracked:', data),
|
|
402
|
+
* onError: ({ error }) => console.error('Failed:', error.message)
|
|
403
|
+
* });
|
|
404
|
+
* ```
|
|
405
|
+
*/
|
|
406
|
+
async $fetch<ResponseType>(
|
|
407
|
+
path: string,
|
|
408
|
+
options?: FetchOptions<ResponseType>
|
|
409
|
+
): Promise<ResponseContext<ResponseType>> {
|
|
410
|
+
return this.fetcher<ResponseType>(path, options);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Creates and returns a new c15t client instance.
|
|
416
|
+
*
|
|
417
|
+
* This is the recommended way to create a client for interacting with the c15t API.
|
|
418
|
+
* It provides a convenient factory function that instantiates a properly configured
|
|
419
|
+
* client based on the provided options.
|
|
420
|
+
*
|
|
421
|
+
* @throws Will throw an error if the baseURL is invalid or if required options are missing
|
|
422
|
+
*
|
|
423
|
+
* @example
|
|
424
|
+
* ```typescript
|
|
425
|
+
* import { createConsentClient } from '@c15t/client';
|
|
426
|
+
*
|
|
427
|
+
* // Create a client for your application
|
|
428
|
+
* const client = createConsentClient({
|
|
429
|
+
* baseURL: 'https://api.example.com/consent',
|
|
430
|
+
* headers: {
|
|
431
|
+
* 'X-API-Key': process.env.API_KEY,
|
|
432
|
+
* 'user-agent': 'MyConsentApp/1.0'
|
|
433
|
+
* },
|
|
434
|
+
* fetchOptions: {
|
|
435
|
+
* // Optional custom fetch implementation
|
|
436
|
+
* customFetchImpl: customFetch
|
|
437
|
+
* }
|
|
438
|
+
* });
|
|
439
|
+
*
|
|
440
|
+
* // Use the client in your application
|
|
441
|
+
* async function handleConsentFlow() {
|
|
442
|
+
* // Get available purposes
|
|
443
|
+
* const { data: purposes, error } = await client.listPurposes();
|
|
444
|
+
*
|
|
445
|
+
* if (error) {
|
|
446
|
+
* console.error('Failed to load consent purposes:', error.message);
|
|
447
|
+
* return;
|
|
448
|
+
* }
|
|
449
|
+
*
|
|
450
|
+
* // Display purposes to subject and collect their choices
|
|
451
|
+
* // ...
|
|
452
|
+
*
|
|
453
|
+
* // Then update their consent
|
|
454
|
+
* const userChoices = {
|
|
455
|
+
* analytics: true,
|
|
456
|
+
* marketing: false
|
|
457
|
+
* };
|
|
458
|
+
*
|
|
459
|
+
* await client.$fetch('/update-consent', {
|
|
460
|
+
* method: 'POST',
|
|
461
|
+
* body: { preferences: userChoices }
|
|
462
|
+
* });
|
|
463
|
+
* }
|
|
464
|
+
* ```
|
|
465
|
+
*
|
|
466
|
+
* @param options - Configuration options for the client
|
|
467
|
+
* @returns A new c15tClient instance
|
|
468
|
+
*/
|
|
469
|
+
export function createConsentClient(options: c15tClientOptions): c15tClient {
|
|
470
|
+
return new c15tClient(options);
|
|
471
|
+
}
|