@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,458 @@
|
|
|
1
|
+
// client/types.ts
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for initializing a c15t client.
|
|
5
|
+
*
|
|
6
|
+
* This interface defines the required and optional parameters for creating
|
|
7
|
+
* a client that can interact with the c15t consent management API.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // Basic client configuration
|
|
12
|
+
* const options: c15tClientOptions = {
|
|
13
|
+
* baseURL: 'https://api.example.com/consent',
|
|
14
|
+
* headers: {
|
|
15
|
+
* 'X-API-Key': 'your-api-key',
|
|
16
|
+
* 'Authorization': 'Bearer token'
|
|
17
|
+
* }
|
|
18
|
+
* };
|
|
19
|
+
*
|
|
20
|
+
* // Advanced configuration with plugins and custom fetch
|
|
21
|
+
* const advancedOptions: c15tClientOptions = {
|
|
22
|
+
* baseURL: 'https://api.example.com/consent',
|
|
23
|
+
* headers: {
|
|
24
|
+
* 'X-API-Key': 'your-api-key',
|
|
25
|
+
* 'Authorization': 'Bearer token'
|
|
26
|
+
* },
|
|
27
|
+
* fetchOptions: {
|
|
28
|
+
* customFetchImpl: nodeFetch // Use node-fetch in Node.js environments
|
|
29
|
+
* },
|
|
30
|
+
* plugins: [
|
|
31
|
+
* analyticsPlugin({ trackConsent: true }),
|
|
32
|
+
* geoPlugin({ defaultJurisdiction: 'us-ca' })
|
|
33
|
+
* ]
|
|
34
|
+
* };
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export interface c15tClientOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Base URL for API endpoints.
|
|
40
|
+
*
|
|
41
|
+
* The URL should point to the root of the c15t API without a trailing slash.
|
|
42
|
+
* All endpoint paths will be appended to this base URL.
|
|
43
|
+
*
|
|
44
|
+
* @example 'https://api.example.com/consent'
|
|
45
|
+
*/
|
|
46
|
+
baseURL: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Default request headers to include with all API requests.
|
|
50
|
+
*
|
|
51
|
+
* Common headers include API keys, authorization tokens, and content type.
|
|
52
|
+
* These headers will be included in every request made by the client.
|
|
53
|
+
*
|
|
54
|
+
* @example { 'X-API-Key': 'your-api-key', 'Authorization': 'Bearer token' }
|
|
55
|
+
*/
|
|
56
|
+
headers?: Record<string, string>;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Additional configuration options for the fetch implementation.
|
|
60
|
+
*
|
|
61
|
+
* These options control the behavior of the underlying HTTP client.
|
|
62
|
+
*/
|
|
63
|
+
fetchOptions?: {
|
|
64
|
+
/**
|
|
65
|
+
* Custom fetch implementation to use instead of the global fetch.
|
|
66
|
+
*
|
|
67
|
+
* This can be useful for environments without a native fetch,
|
|
68
|
+
* or for using a fetch implementation with additional features.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* import nodeFetch from 'node-fetch';
|
|
73
|
+
*
|
|
74
|
+
* const options = {
|
|
75
|
+
* fetchOptions: {
|
|
76
|
+
* customFetchImpl: nodeFetch
|
|
77
|
+
* }
|
|
78
|
+
* };
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
customFetchImpl?: typeof fetch;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Client plugins to extend the core client functionality.
|
|
86
|
+
*
|
|
87
|
+
* Plugins can add additional methods and features to the client,
|
|
88
|
+
* such as analytics tracking, geo-location services, etc.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const options = {
|
|
93
|
+
* plugins: [
|
|
94
|
+
* analyticsPlugin({
|
|
95
|
+
* trackConsentChanges: true,
|
|
96
|
+
* eventPrefix: 'consent_'
|
|
97
|
+
* }),
|
|
98
|
+
* geoPlugin({
|
|
99
|
+
* defaultJurisdiction: 'us-ca',
|
|
100
|
+
* cacheResults: true
|
|
101
|
+
* })
|
|
102
|
+
* ]
|
|
103
|
+
* };
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
plugins?: c15tClientPlugin[];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Request configuration options for API requests.
|
|
111
|
+
*
|
|
112
|
+
* This interface defines the options that can be provided when making
|
|
113
|
+
* HTTP requests to the c15t API endpoints.
|
|
114
|
+
*
|
|
115
|
+
* @typeParam ResponseType - The expected response data type
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* // Basic GET request options
|
|
120
|
+
* const getOptions: FetchOptions<SubjectConsent> = {
|
|
121
|
+
* method: 'GET',
|
|
122
|
+
* query: { subjectId: 'sub_x1pftyoufsm7xgo1kv' }
|
|
123
|
+
* };
|
|
124
|
+
*
|
|
125
|
+
* // POST request with error handling
|
|
126
|
+
* const postOptions: FetchOptions<UpdateResult> = {
|
|
127
|
+
* method: 'POST',
|
|
128
|
+
* body: { preferences: { analytics: true } },
|
|
129
|
+
* throw: true,
|
|
130
|
+
* onError: ({ error }) => {
|
|
131
|
+
* console.error(`Error ${error.status}: ${error.message}`);
|
|
132
|
+
* }
|
|
133
|
+
* };
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export interface FetchOptions<ResponseType = unknown> {
|
|
137
|
+
/**
|
|
138
|
+
* HTTP method for the request.
|
|
139
|
+
*
|
|
140
|
+
* Defaults to 'GET' if not specified.
|
|
141
|
+
*/
|
|
142
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Request body to send with the request.
|
|
146
|
+
*
|
|
147
|
+
* For non-GET requests, this data will be serialized as JSON
|
|
148
|
+
* and sent in the request body.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* const options = {
|
|
153
|
+
* body: {
|
|
154
|
+
* preferences: { analytics: true, marketing: false },
|
|
155
|
+
* timestamp: new Date().toISOString()
|
|
156
|
+
* }
|
|
157
|
+
* };
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
body?: Record<string, unknown>;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Query parameters to include in the request URL.
|
|
164
|
+
*
|
|
165
|
+
* These parameters will be appended to the URL as query string parameters.
|
|
166
|
+
* Array values will result in multiple query parameters with the same name.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* const options = {
|
|
171
|
+
* query: {
|
|
172
|
+
* subjectId: 'sub_x1pftyoufsm7xgo1kv',
|
|
173
|
+
* purposes: ['pur_uvrr67my07m7xj2bta', 'pur_vv76m0rtb2dm7xj59gt'], // Results in ?purposes=analytics&purposes=marketing
|
|
174
|
+
* includeHistory: true
|
|
175
|
+
* }
|
|
176
|
+
* };
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
query?: Record<string, string | number | boolean | string[] | undefined>;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Custom headers to include with this specific request.
|
|
183
|
+
*
|
|
184
|
+
* These headers will be merged with the default headers
|
|
185
|
+
* configured for the client.
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* const options = {
|
|
190
|
+
* headers: {
|
|
191
|
+
* 'X-Request-ID': generateRequestId(),
|
|
192
|
+
* 'Cache-Control': 'no-cache'
|
|
193
|
+
* }
|
|
194
|
+
* };
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
headers?: Record<string, string>;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Whether to throw an error when the response is not successful.
|
|
201
|
+
*
|
|
202
|
+
* If true, the client will throw an error for non-2xx responses
|
|
203
|
+
* instead of returning a response context with the error.
|
|
204
|
+
*
|
|
205
|
+
* @default false
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* // This will throw an error if the request fails
|
|
210
|
+
* try {
|
|
211
|
+
* const result = await client.$fetch('/important-endpoint', {
|
|
212
|
+
* throw: true
|
|
213
|
+
* });
|
|
214
|
+
* // Only runs if request was successful
|
|
215
|
+
* processResult(result.data);
|
|
216
|
+
* } catch (error) {
|
|
217
|
+
* handleError(error);
|
|
218
|
+
* }
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
throw?: boolean;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Callback function to execute on successful response.
|
|
225
|
+
*
|
|
226
|
+
* This function will be called when the request completes successfully
|
|
227
|
+
* with a 2xx status code.
|
|
228
|
+
*
|
|
229
|
+
* @param context The response context containing the result data
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* const options = {
|
|
234
|
+
* onSuccess: ({ data }) => {
|
|
235
|
+
* console.log('Request succeeded:', data);
|
|
236
|
+
* updateUI(data);
|
|
237
|
+
* }
|
|
238
|
+
* };
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
onSuccess?: (context: ResponseContext<ResponseType>) => void | Promise<void>;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Callback function to execute on error response.
|
|
245
|
+
*
|
|
246
|
+
* This function will be called when the request fails with a non-2xx
|
|
247
|
+
* status code or when an exception occurs during the request.
|
|
248
|
+
*
|
|
249
|
+
* @param context The response context containing the error details
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* const options = {
|
|
254
|
+
* onError: ({ error }) => {
|
|
255
|
+
* console.error(`Request failed (${error.status}):`, error.message);
|
|
256
|
+
* showErrorNotification(error.message);
|
|
257
|
+
* }
|
|
258
|
+
* };
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
onError?: (context: ResponseContext<ResponseType>) => void | Promise<void>;
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Additional fetch options to include in the request.
|
|
265
|
+
*
|
|
266
|
+
* These options will be passed directly to the fetch implementation.
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```typescript
|
|
270
|
+
* const options = {
|
|
271
|
+
* fetchOptions: {
|
|
272
|
+
* credentials: 'include', // Send cookies with cross-origin requests
|
|
273
|
+
* mode: 'cors',
|
|
274
|
+
* cache: 'no-cache'
|
|
275
|
+
* }
|
|
276
|
+
* };
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
fetchOptions?: RequestInit;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Response context returned from API requests.
|
|
284
|
+
*
|
|
285
|
+
* This interface contains the complete information about an API response,
|
|
286
|
+
* including the data, response object, and any error information.
|
|
287
|
+
*
|
|
288
|
+
* @typeParam ResponseType - The expected response data type
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* ```typescript
|
|
292
|
+
* // Processing a response context
|
|
293
|
+
* const response: ResponseContext<SubjectData> = await client.$fetch('/subject/123');
|
|
294
|
+
*
|
|
295
|
+
* if (response.ok) {
|
|
296
|
+
* // Handle successful response
|
|
297
|
+
* console.log('Subject data:', response.data);
|
|
298
|
+
* // Access headers if needed
|
|
299
|
+
* const etag = response.response?.headers.get('ETag');
|
|
300
|
+
* } else {
|
|
301
|
+
* // Handle error response
|
|
302
|
+
* console.error(`Error ${response.error?.status}: ${response.error?.message}`);
|
|
303
|
+
* if (response.error?.status === 404) {
|
|
304
|
+
* console.log('Subject not found');
|
|
305
|
+
* }
|
|
306
|
+
* }
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
export interface ResponseContext<ResponseType = unknown> {
|
|
310
|
+
/**
|
|
311
|
+
* Response data returned by the API.
|
|
312
|
+
*
|
|
313
|
+
* For successful requests, this will contain the parsed JSON response.
|
|
314
|
+
* For failed requests or non-JSON responses, this will be null.
|
|
315
|
+
*/
|
|
316
|
+
data: ResponseType | null;
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Original fetch Response object.
|
|
320
|
+
*
|
|
321
|
+
* This contains the raw response information, such as status, headers, etc.
|
|
322
|
+
* For network errors or other exceptions, this may be null.
|
|
323
|
+
*/
|
|
324
|
+
response: Response | null;
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Error information if the request failed.
|
|
328
|
+
*
|
|
329
|
+
* This will be null for successful requests (2xx status codes).
|
|
330
|
+
* For failed requests, this contains the error details.
|
|
331
|
+
*/
|
|
332
|
+
error: {
|
|
333
|
+
/**
|
|
334
|
+
* Error message describing what went wrong
|
|
335
|
+
*/
|
|
336
|
+
message: string;
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* HTTP status code or custom error code
|
|
340
|
+
*/
|
|
341
|
+
status: number;
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Optional error code for more specific error identification
|
|
345
|
+
*/
|
|
346
|
+
code?: string;
|
|
347
|
+
} | null;
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Whether the request was successful.
|
|
351
|
+
*
|
|
352
|
+
* True for successful requests (2xx status codes), false otherwise.
|
|
353
|
+
*/
|
|
354
|
+
ok: boolean;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Client plugin interface for extending the c15t client functionality.
|
|
359
|
+
*
|
|
360
|
+
* Plugins can add additional methods and features to the client,
|
|
361
|
+
* such as analytics tracking, geo-location services, etc.
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
* ```typescript
|
|
365
|
+
* // Defining a custom plugin
|
|
366
|
+
* const analyticsPlugin = (options = {}): c15tClientPlugin => ({
|
|
367
|
+
* id: 'analytics',
|
|
368
|
+
*
|
|
369
|
+
* init: (client) => {
|
|
370
|
+
* console.log('Analytics plugin initialized');
|
|
371
|
+
* },
|
|
372
|
+
*
|
|
373
|
+
* methods: {
|
|
374
|
+
* trackEvent: async (eventName, properties) => {
|
|
375
|
+
* // Implementation logic
|
|
376
|
+
* return { success: true };
|
|
377
|
+
* },
|
|
378
|
+
*
|
|
379
|
+
* getAnalyticsConsent: async () => {
|
|
380
|
+
* // Get analytics-specific consent
|
|
381
|
+
* return { allowed: true };
|
|
382
|
+
* }
|
|
383
|
+
* }
|
|
384
|
+
* });
|
|
385
|
+
*
|
|
386
|
+
* // Using the plugin
|
|
387
|
+
* const client = createConsentClient({
|
|
388
|
+
* baseURL: 'https://api.example.com',
|
|
389
|
+
* plugins: [analyticsPlugin({ trackPageviews: true })]
|
|
390
|
+
* });
|
|
391
|
+
*
|
|
392
|
+
* // Now you can use the plugin methods
|
|
393
|
+
* client.trackEvent('button_click', { buttonId: 'submit' });
|
|
394
|
+
* ```
|
|
395
|
+
*/
|
|
396
|
+
export interface c15tClientPlugin {
|
|
397
|
+
/**
|
|
398
|
+
* Unique plugin identifier.
|
|
399
|
+
*
|
|
400
|
+
* This ID should be unique across all plugins to avoid conflicts.
|
|
401
|
+
*/
|
|
402
|
+
id: string;
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Plugin initialization function.
|
|
406
|
+
*
|
|
407
|
+
* This function is called when the plugin is registered with the client.
|
|
408
|
+
* It can be used to set up the plugin and perform any necessary initialization.
|
|
409
|
+
*
|
|
410
|
+
* @param client The c15t client instance this plugin is being initialized with
|
|
411
|
+
*/
|
|
412
|
+
init?: (client: c15tClient) => void;
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Extensions to client methods.
|
|
416
|
+
*
|
|
417
|
+
* These methods will be added to the client instance, allowing plugins
|
|
418
|
+
* to extend the client's functionality with additional methods.
|
|
419
|
+
*/
|
|
420
|
+
methods?: Record<string, (...args: unknown[]) => unknown>;
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Type inference for the server-side plugin implementation.
|
|
424
|
+
*
|
|
425
|
+
* This is used for type checking to ensure the client plugin is compatible
|
|
426
|
+
* with the server-side plugin implementation.
|
|
427
|
+
*
|
|
428
|
+
* @internal This property is primarily for TypeScript type checking
|
|
429
|
+
*/
|
|
430
|
+
$InferServerPlugin?: Record<string, unknown>;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Interface for c15t client instance.
|
|
435
|
+
* This is used for the plugin init type to avoid circular references.
|
|
436
|
+
*
|
|
437
|
+
* @internal This interface is primarily used internally for type definitions
|
|
438
|
+
*/
|
|
439
|
+
export interface c15tClient {
|
|
440
|
+
/**
|
|
441
|
+
* Makes a custom API request to any endpoint.
|
|
442
|
+
*
|
|
443
|
+
* @typeParam ResponseType - The expected response data type
|
|
444
|
+
* @param path - The API endpoint path
|
|
445
|
+
* @param options - Request configuration options
|
|
446
|
+
* @returns Response context containing the requested data if successful
|
|
447
|
+
*/
|
|
448
|
+
$fetch<ResponseType>(
|
|
449
|
+
path: string,
|
|
450
|
+
options?: FetchOptions<ResponseType>
|
|
451
|
+
): Promise<ResponseContext<ResponseType>>;
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Index signature to allow dynamic access to properties.
|
|
455
|
+
* This enables plugins to add methods to the client.
|
|
456
|
+
*/
|
|
457
|
+
[key: string]: unknown;
|
|
458
|
+
}
|