@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,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for validating consent record entities.
|
|
4
|
+
*
|
|
5
|
+
* This defines the structure and validation rules for consent records:
|
|
6
|
+
* - Required fields: subjectId, actionType (given, withdrawn, updated, etc.)
|
|
7
|
+
* - Optional fields: consentId, details
|
|
8
|
+
* - Default current date/time for creation and update timestamps
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const recordData = {
|
|
13
|
+
* id: 'rec_w5qufx2a66m7xkn3ty',
|
|
14
|
+
* subjectId: 'sub_x1pftyoufsm7xgo1kv',
|
|
15
|
+
* consentId: 'cns_hadt8w7nngm7xmx2bn',
|
|
16
|
+
* actionType: 'given',
|
|
17
|
+
* details: { ip: '192.168.1.1', userAgent: 'Mozilla/5.0...' }
|
|
18
|
+
* };
|
|
19
|
+
*
|
|
20
|
+
* // Validate and parse the record data
|
|
21
|
+
* const validRecord = consentRecordSchema.parse(recordData);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare const consentRecordSchema: z.ZodObject<{
|
|
25
|
+
id: z.ZodString;
|
|
26
|
+
subjectId: z.ZodString;
|
|
27
|
+
consentId: z.ZodOptional<z.ZodString>;
|
|
28
|
+
actionType: z.ZodString;
|
|
29
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
30
|
+
createdAt: z.ZodDefault<z.ZodDate>;
|
|
31
|
+
updatedAt: z.ZodDefault<z.ZodDate>;
|
|
32
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
|
+
id: string;
|
|
34
|
+
actionType: string;
|
|
35
|
+
subjectId: string;
|
|
36
|
+
createdAt: Date;
|
|
37
|
+
updatedAt: Date;
|
|
38
|
+
details?: Record<string, unknown> | undefined;
|
|
39
|
+
consentId?: string | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
id: string;
|
|
42
|
+
actionType: string;
|
|
43
|
+
subjectId: string;
|
|
44
|
+
createdAt?: Date | undefined;
|
|
45
|
+
details?: Record<string, unknown> | undefined;
|
|
46
|
+
consentId?: string | undefined;
|
|
47
|
+
updatedAt?: Date | undefined;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Type definition for Record
|
|
51
|
+
*
|
|
52
|
+
* This type represents the structure of a consent record
|
|
53
|
+
* as defined by the consentRecordSchema. It includes all fields
|
|
54
|
+
* that are part of the consent record entity.
|
|
55
|
+
*/
|
|
56
|
+
export type ConsentRecord = z.infer<typeof consentRecordSchema>;
|
|
57
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-record/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { Field } from '../../core/fields';
|
|
2
|
+
import type { C15TOptions } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Generates the database table configuration for the consent record entity.
|
|
5
|
+
*
|
|
6
|
+
* This function creates a schema definition that includes all standard consent record fields
|
|
7
|
+
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
8
|
+
* for database migrations, schema validation, and query building.
|
|
9
|
+
*
|
|
10
|
+
* @param options - C15T configuration options that may contain consent record table customizations
|
|
11
|
+
* @param recordFields - Additional fields from plugins to include in the consent record table
|
|
12
|
+
* @returns A complete table schema definition with fields, model name, and metadata
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const recordTableSchema = getConsentRecordTable(c15tOptions);
|
|
17
|
+
* // Use the schema for migrations or data access
|
|
18
|
+
* const migrationPlans = generateMigrations(recordTableSchema);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function getConsentRecordTable(options: C15TOptions, recordFields?: Record<string, Field>): {
|
|
22
|
+
/**
|
|
23
|
+
* The name of the consent record table in the database, configurable through options
|
|
24
|
+
*/
|
|
25
|
+
entityName: string;
|
|
26
|
+
/**
|
|
27
|
+
* The ID prefix for the consent record table
|
|
28
|
+
* Used to generate unique prefixed IDs for records
|
|
29
|
+
*/
|
|
30
|
+
entityPrefix: string;
|
|
31
|
+
/**
|
|
32
|
+
* The schema for the consent record table
|
|
33
|
+
*/
|
|
34
|
+
schema: import("zod").ZodObject<{
|
|
35
|
+
id: import("zod").ZodString;
|
|
36
|
+
subjectId: import("zod").ZodString;
|
|
37
|
+
consentId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
38
|
+
actionType: import("zod").ZodString;
|
|
39
|
+
details: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
40
|
+
createdAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
41
|
+
updatedAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
42
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
43
|
+
id: string;
|
|
44
|
+
actionType: string;
|
|
45
|
+
subjectId: string;
|
|
46
|
+
createdAt: Date;
|
|
47
|
+
updatedAt: Date;
|
|
48
|
+
details?: Record<string, unknown> | undefined;
|
|
49
|
+
consentId?: string | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
id: string;
|
|
52
|
+
actionType: string;
|
|
53
|
+
subjectId: string;
|
|
54
|
+
createdAt?: Date | undefined;
|
|
55
|
+
details?: Record<string, unknown> | undefined;
|
|
56
|
+
consentId?: string | undefined;
|
|
57
|
+
updatedAt?: Date | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Field definitions for the consent record table
|
|
61
|
+
*/
|
|
62
|
+
fields: {
|
|
63
|
+
/**
|
|
64
|
+
* Reference to the subject associated with this consent record
|
|
65
|
+
*/
|
|
66
|
+
subjectId: {
|
|
67
|
+
type: string;
|
|
68
|
+
required: boolean;
|
|
69
|
+
fieldName: string;
|
|
70
|
+
references: {
|
|
71
|
+
model: string;
|
|
72
|
+
field: string;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Optional reference to the specific consent this record is about
|
|
77
|
+
* May be null for general consent actions not related to a specific consent
|
|
78
|
+
*/
|
|
79
|
+
consentId: {
|
|
80
|
+
type: string;
|
|
81
|
+
required: boolean;
|
|
82
|
+
fieldName: string;
|
|
83
|
+
references: {
|
|
84
|
+
model: string;
|
|
85
|
+
field: string;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Type of consent action this record represents
|
|
90
|
+
* Common values: 'given', 'withdrawn', 'updated', 'expired', 'requested'
|
|
91
|
+
*/
|
|
92
|
+
actionType: {
|
|
93
|
+
type: string;
|
|
94
|
+
required: boolean;
|
|
95
|
+
fieldName: string;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Additional details about the consent action
|
|
99
|
+
* May include IP address, subject agent, reason for withdrawal, etc.
|
|
100
|
+
*/
|
|
101
|
+
details: {
|
|
102
|
+
type: string;
|
|
103
|
+
required: boolean;
|
|
104
|
+
fieldName: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* When the consent record was created
|
|
108
|
+
* Automatically set to current time by default
|
|
109
|
+
*/
|
|
110
|
+
createdAt: {
|
|
111
|
+
type: string;
|
|
112
|
+
defaultValue: () => Date;
|
|
113
|
+
required: boolean;
|
|
114
|
+
fieldName: string;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Execution order during migrations (lower numbers run first)
|
|
119
|
+
* Consent record table needs to be created after the subject and consent tables it references
|
|
120
|
+
*/
|
|
121
|
+
order: number;
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-record/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,WAAW,EACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAQnC;;OAEG;;IAGH;;;OAGG;;IAGH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;OAEG;;QAEF;;WAEG;;;;;;;;;;QAWH;;;WAGG;;;;;;;;;;QAWH;;;WAGG;;;;;;QAOH;;;WAGG;;;;;;QAOH;;;WAGG;;;;;;;;IAeJ;;;OAGG;;EAGJ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record Entity Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* This module contains type definitions specific to the record entity.
|
|
5
|
+
*/
|
|
6
|
+
import type { BaseEntityConfig } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Record entity configuration
|
|
9
|
+
* @default entityName: "record", entityPrefix: "rec"
|
|
10
|
+
*/
|
|
11
|
+
export interface ConsentRecordEntityConfig extends BaseEntityConfig {
|
|
12
|
+
fields?: Record<string, string> & {
|
|
13
|
+
id?: string;
|
|
14
|
+
subjectId?: string;
|
|
15
|
+
consentId?: string;
|
|
16
|
+
actionType?: string;
|
|
17
|
+
details?: string;
|
|
18
|
+
createdAt?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-record/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QACjC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-withdrawal/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { RegistryContext } from '../../../types';
|
|
2
|
+
import type { GenericEndpointContext } from '../../../types';
|
|
3
|
+
import type { Withdrawal } from './schema';
|
|
4
|
+
/**
|
|
5
|
+
* Creates and returns a set of consent withdrawal adapter methods to interact with the database.
|
|
6
|
+
* These methods provide a consistent interface for creating and querying consentWithdrawal records
|
|
7
|
+
* while applying hooks and enforcing data validation rules.
|
|
8
|
+
*
|
|
9
|
+
* @param adapter - The database adapter used for direct database operations
|
|
10
|
+
* @param ctx - The context object containing the database adapter, hooks, and options
|
|
11
|
+
* @returns An object containing type-safe consent withdrawal operations
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const withdrawalAdapter = createConsentWithdrawalAdapter(
|
|
16
|
+
* databaseAdapter,
|
|
17
|
+
* createWithHooks,
|
|
18
|
+
* c15tOptions
|
|
19
|
+
* );
|
|
20
|
+
*
|
|
21
|
+
* // Create a new consentWithdrawal record
|
|
22
|
+
* const consentWithdrawal = await withdrawalAdapter.createConsentWithdrawal({
|
|
23
|
+
* consentId: 'cns_hadt8w7nngm7xmx2bn',
|
|
24
|
+
* subjectId: 'sub_x1pftyoufsm7xgo1kv',
|
|
25
|
+
* withdrawalReason: 'No longer wish to receive marketing emails',
|
|
26
|
+
* withdrawalMethod: 'subject-initiated'
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function consentWithdrawalRegistry({ adapter, ...ctx }: RegistryContext): {
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new consent withdrawal record in the database.
|
|
33
|
+
* Automatically sets creation timestamp and applies any
|
|
34
|
+
* configured hooks during the creation process.
|
|
35
|
+
*
|
|
36
|
+
* @param consentWithdrawal - Withdrawal data to create (without id and timestamp)
|
|
37
|
+
* @param context - Optional endpoint context for hooks
|
|
38
|
+
* @returns The created consentWithdrawal record with all fields populated
|
|
39
|
+
* @throws May throw an error if hooks prevent creation or if database operations fail
|
|
40
|
+
*/
|
|
41
|
+
createConsentWithdrawal: (consentWithdrawal: Omit<Withdrawal, "id" | "createdAt"> & Partial<Withdrawal>, context?: GenericEndpointContext) => Promise<{
|
|
42
|
+
id: string;
|
|
43
|
+
subjectId: string;
|
|
44
|
+
createdAt: Date;
|
|
45
|
+
consentId: string;
|
|
46
|
+
updatedAt: Date;
|
|
47
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
48
|
+
ipAddress?: string | undefined;
|
|
49
|
+
userAgent?: string | undefined;
|
|
50
|
+
metadata?: Record<string, unknown> | undefined;
|
|
51
|
+
withdrawalReason?: string | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Finds all consentWithdrawal records matching specified filters.
|
|
55
|
+
* Returns consentWithdrawals with processed output fields according to the schema configuration.
|
|
56
|
+
*
|
|
57
|
+
* @param subjectId - Optional subject ID to filter consentWithdrawals
|
|
58
|
+
* @param consentId - Optional consent ID to filter consentWithdrawals
|
|
59
|
+
* @param limit - Optional maximum number of records to return
|
|
60
|
+
* @returns Array of consentWithdrawal records matching the criteria
|
|
61
|
+
*/
|
|
62
|
+
findConsentWithdrawals: (subjectId?: string, consentId?: string, limit?: number) => Promise<{
|
|
63
|
+
id: string;
|
|
64
|
+
subjectId: string;
|
|
65
|
+
createdAt: Date;
|
|
66
|
+
consentId: string;
|
|
67
|
+
updatedAt: Date;
|
|
68
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
69
|
+
ipAddress?: string | undefined;
|
|
70
|
+
userAgent?: string | undefined;
|
|
71
|
+
metadata?: Record<string, unknown> | undefined;
|
|
72
|
+
withdrawalReason?: string | undefined;
|
|
73
|
+
}[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Finds a consentWithdrawal record by its unique ID.
|
|
76
|
+
* Returns the consentWithdrawal with processed output fields according to the schema configuration.
|
|
77
|
+
*
|
|
78
|
+
* @param withdrawalId - The unique identifier of the consentWithdrawal record
|
|
79
|
+
* @returns The consentWithdrawal object if found, null otherwise
|
|
80
|
+
*/
|
|
81
|
+
findConsentWithdrawalById: (withdrawalId: string) => Promise<{
|
|
82
|
+
id: string;
|
|
83
|
+
subjectId: string;
|
|
84
|
+
createdAt: Date;
|
|
85
|
+
consentId: string;
|
|
86
|
+
updatedAt: Date;
|
|
87
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
88
|
+
ipAddress?: string | undefined;
|
|
89
|
+
userAgent?: string | undefined;
|
|
90
|
+
metadata?: Record<string, unknown> | undefined;
|
|
91
|
+
withdrawalReason?: string | undefined;
|
|
92
|
+
} | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Finds all consentWithdrawal records for a specific subject.
|
|
95
|
+
* Returns consentWithdrawals with processed output fields according to the schema configuration.
|
|
96
|
+
*
|
|
97
|
+
* @param subjectId - The subject ID to find consentWithdrawals for
|
|
98
|
+
* @param limit - Optional maximum number of records to return
|
|
99
|
+
* @returns Array of consentWithdrawal records associated with the subject
|
|
100
|
+
*/
|
|
101
|
+
findConsentWithdrawalsBySubjectId: (subjectId: string, limit?: number) => Promise<{
|
|
102
|
+
id: string;
|
|
103
|
+
subjectId: string;
|
|
104
|
+
createdAt: Date;
|
|
105
|
+
consentId: string;
|
|
106
|
+
updatedAt: Date;
|
|
107
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
108
|
+
ipAddress?: string | undefined;
|
|
109
|
+
userAgent?: string | undefined;
|
|
110
|
+
metadata?: Record<string, unknown> | undefined;
|
|
111
|
+
withdrawalReason?: string | undefined;
|
|
112
|
+
}[]>;
|
|
113
|
+
/**
|
|
114
|
+
* Finds a consentWithdrawal record for a specific consent.
|
|
115
|
+
* Returns the consentWithdrawal with processed output fields according to the schema configuration.
|
|
116
|
+
* This is useful when you need to know if and why a specific consent was withdrawn.
|
|
117
|
+
*
|
|
118
|
+
* @param consentId - The consent ID to find consentWithdrawal for
|
|
119
|
+
* @returns The consentWithdrawal record if found, null otherwise
|
|
120
|
+
*/
|
|
121
|
+
findConsentWithdrawalByConsentId: (consentId: string) => Promise<{
|
|
122
|
+
id: string;
|
|
123
|
+
subjectId: string;
|
|
124
|
+
createdAt: Date;
|
|
125
|
+
consentId: string;
|
|
126
|
+
updatedAt: Date;
|
|
127
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
128
|
+
ipAddress?: string | undefined;
|
|
129
|
+
userAgent?: string | undefined;
|
|
130
|
+
metadata?: Record<string, unknown> | undefined;
|
|
131
|
+
withdrawalReason?: string | undefined;
|
|
132
|
+
} | null>;
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-withdrawal/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,yBAAyB,CAAC,EACzC,OAAO,EACP,GAAG,GAAG,EACN,EAAE,eAAe;IAGhB;;;;;;;;;OASG;iDAEiB,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GACtD,OAAO,CAAC,UAAU,CAAC,YACV,sBAAsB;;;;;;;;;;;;IAyBjC;;;;;;;;OAQG;yCAEU,MAAM,cACN,MAAM,UACV,MAAM;;;;;;;;;;;;IAqCf;;;;;;OAMG;8CAC6C,MAAM;;;;;;;;;;;;IAmBtD;;;;;;;OAOG;mDAES,MAAM,UACT,MAAM;;;;;;;;;;;;IAyBf;;;;;;;OAOG;kDACiD,MAAM;;;;;;;;;;;;EAuB3D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for validating consent withdrawal entities.
|
|
4
|
+
*
|
|
5
|
+
* This defines the structure and validation rules for consentWithdrawal records:
|
|
6
|
+
* - Required fields: consentId, subjectId
|
|
7
|
+
* - Optional fields: withdrawalReason, withdrawalMethod, ipAddress, metadata
|
|
8
|
+
* - Default current date/time for creation and update timestamps
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const withdrawalData = {
|
|
13
|
+
* id: 'wdr_w5qufx2a66m7xkn3ty',
|
|
14
|
+
* consentId: 'cns_hadt8w7nngm7xmx2bn',
|
|
15
|
+
* subjectId: 'sub_x1pftyoufsm7xgo1kv',
|
|
16
|
+
* withdrawalReason: 'No longer wish to receive marketing emails',
|
|
17
|
+
* withdrawalMethod: 'subject-initiated',
|
|
18
|
+
* ipAddress: '192.168.1.1'
|
|
19
|
+
* };
|
|
20
|
+
*
|
|
21
|
+
* // Validate and parse the consentWithdrawal data
|
|
22
|
+
* const validWithdrawal = consentWithdrawalSchema.parse(withdrawalData);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const consentWithdrawalSchema: z.ZodObject<{
|
|
26
|
+
id: z.ZodString;
|
|
27
|
+
consentId: z.ZodString;
|
|
28
|
+
subjectId: z.ZodString;
|
|
29
|
+
withdrawalReason: z.ZodOptional<z.ZodString>;
|
|
30
|
+
withdrawalMethod: z.ZodDefault<z.ZodEnum<["subject-initiated", "automatic-expiry", "admin", "api", "other"]>>;
|
|
31
|
+
ipAddress: z.ZodOptional<z.ZodString>;
|
|
32
|
+
userAgent: z.ZodOptional<z.ZodString>;
|
|
33
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
34
|
+
createdAt: z.ZodDefault<z.ZodDate>;
|
|
35
|
+
updatedAt: z.ZodDefault<z.ZodDate>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
id: string;
|
|
38
|
+
subjectId: string;
|
|
39
|
+
createdAt: Date;
|
|
40
|
+
consentId: string;
|
|
41
|
+
updatedAt: Date;
|
|
42
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
43
|
+
ipAddress?: string | undefined;
|
|
44
|
+
userAgent?: string | undefined;
|
|
45
|
+
metadata?: Record<string, unknown> | undefined;
|
|
46
|
+
withdrawalReason?: string | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
id: string;
|
|
49
|
+
subjectId: string;
|
|
50
|
+
consentId: string;
|
|
51
|
+
ipAddress?: string | undefined;
|
|
52
|
+
userAgent?: string | undefined;
|
|
53
|
+
metadata?: Record<string, unknown> | undefined;
|
|
54
|
+
createdAt?: Date | undefined;
|
|
55
|
+
withdrawalReason?: string | undefined;
|
|
56
|
+
updatedAt?: Date | undefined;
|
|
57
|
+
withdrawalMethod?: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other" | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Type definition for Withdrawal
|
|
61
|
+
*
|
|
62
|
+
* This type represents the structure of a consent withdrawal record
|
|
63
|
+
* as defined by the consentWithdrawalSchema. It includes all fields
|
|
64
|
+
* that are part of the consentWithdrawal entity.
|
|
65
|
+
*/
|
|
66
|
+
export type Withdrawal = z.infer<typeof consentWithdrawalSchema>;
|
|
67
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-withdrawal/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAalC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type { Field } from '../../core/fields';
|
|
2
|
+
import type { C15TOptions } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Generates the database table configuration for the consent withdrawal entity.
|
|
5
|
+
*
|
|
6
|
+
* This function creates a schema definition that includes all standard consentWithdrawal fields
|
|
7
|
+
* and any additional fields from plugins or configuration. The resulting schema is used
|
|
8
|
+
* for database migrations, schema validation, and query building.
|
|
9
|
+
*
|
|
10
|
+
* @param options - C15T configuration options that may contain consentWithdrawal table customizations
|
|
11
|
+
* @param withdrawalFields - Additional fields from plugins to include in the consentWithdrawal table
|
|
12
|
+
* @returns A complete table schema definition with fields, model name, and metadata
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const withdrawalTableSchema = getConsentWithdrawalTable(c15tOptions);
|
|
17
|
+
* // Use the schema for migrations or data access
|
|
18
|
+
* const migrationPlans = generateMigrations(withdrawalTableSchema);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function getConsentWithdrawalTable(options: C15TOptions, withdrawalFields?: Record<string, Field>): {
|
|
22
|
+
/**
|
|
23
|
+
* The name of the consentWithdrawal table in the database, configurable through options
|
|
24
|
+
*/
|
|
25
|
+
entityName: string;
|
|
26
|
+
/**
|
|
27
|
+
* The ID prefix for the consentWithdrawal table
|
|
28
|
+
* Used to generate unique prefixed IDs for consentWithdrawals
|
|
29
|
+
*/
|
|
30
|
+
entityPrefix: string;
|
|
31
|
+
/**
|
|
32
|
+
* The schema for the consent withdrawal table
|
|
33
|
+
*/
|
|
34
|
+
schema: import("zod").ZodObject<{
|
|
35
|
+
id: import("zod").ZodString;
|
|
36
|
+
consentId: import("zod").ZodString;
|
|
37
|
+
subjectId: import("zod").ZodString;
|
|
38
|
+
withdrawalReason: import("zod").ZodOptional<import("zod").ZodString>;
|
|
39
|
+
withdrawalMethod: import("zod").ZodDefault<import("zod").ZodEnum<["subject-initiated", "automatic-expiry", "admin", "api", "other"]>>;
|
|
40
|
+
ipAddress: import("zod").ZodOptional<import("zod").ZodString>;
|
|
41
|
+
userAgent: import("zod").ZodOptional<import("zod").ZodString>;
|
|
42
|
+
metadata: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
43
|
+
createdAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
44
|
+
updatedAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
45
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
46
|
+
id: string;
|
|
47
|
+
subjectId: string;
|
|
48
|
+
createdAt: Date;
|
|
49
|
+
consentId: string;
|
|
50
|
+
updatedAt: Date;
|
|
51
|
+
withdrawalMethod: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other";
|
|
52
|
+
ipAddress?: string | undefined;
|
|
53
|
+
userAgent?: string | undefined;
|
|
54
|
+
metadata?: Record<string, unknown> | undefined;
|
|
55
|
+
withdrawalReason?: string | undefined;
|
|
56
|
+
}, {
|
|
57
|
+
id: string;
|
|
58
|
+
subjectId: string;
|
|
59
|
+
consentId: string;
|
|
60
|
+
ipAddress?: string | undefined;
|
|
61
|
+
userAgent?: string | undefined;
|
|
62
|
+
metadata?: Record<string, unknown> | undefined;
|
|
63
|
+
createdAt?: Date | undefined;
|
|
64
|
+
withdrawalReason?: string | undefined;
|
|
65
|
+
updatedAt?: Date | undefined;
|
|
66
|
+
withdrawalMethod?: "subject-initiated" | "automatic-expiry" | "admin" | "api" | "other" | undefined;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Field definitions for the consent withdrawal table
|
|
70
|
+
*/
|
|
71
|
+
fields: {
|
|
72
|
+
/**
|
|
73
|
+
* Reference to the consent that was withdrawn
|
|
74
|
+
*/
|
|
75
|
+
consentId: {
|
|
76
|
+
type: string;
|
|
77
|
+
required: boolean;
|
|
78
|
+
fieldName: string;
|
|
79
|
+
references: {
|
|
80
|
+
model: string;
|
|
81
|
+
field: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Reference to the subject who withdrew consent
|
|
86
|
+
*/
|
|
87
|
+
subjectId: {
|
|
88
|
+
type: string;
|
|
89
|
+
required: boolean;
|
|
90
|
+
fieldName: string;
|
|
91
|
+
references: {
|
|
92
|
+
model: string;
|
|
93
|
+
field: string;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Reason provided for withdrawing consent
|
|
98
|
+
*/
|
|
99
|
+
withdrawalReason: {
|
|
100
|
+
type: string;
|
|
101
|
+
required: boolean;
|
|
102
|
+
fieldName: string;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Method by which consent was withdrawn
|
|
106
|
+
* Common values: 'subject-initiated', 'automatic-expiry', 'admin'
|
|
107
|
+
*/
|
|
108
|
+
withdrawalMethod: {
|
|
109
|
+
type: string;
|
|
110
|
+
defaultValue: () => string;
|
|
111
|
+
required: boolean;
|
|
112
|
+
fieldName: string;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* IP address from which the consentWithdrawal was initiated
|
|
116
|
+
*/
|
|
117
|
+
ipAddress: {
|
|
118
|
+
type: string;
|
|
119
|
+
required: boolean;
|
|
120
|
+
fieldName: string;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Subject agent (browser/device) from which the consentWithdrawal was initiated
|
|
124
|
+
*/
|
|
125
|
+
userAgent: {
|
|
126
|
+
type: string;
|
|
127
|
+
required: boolean;
|
|
128
|
+
fieldName: string;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Additional metadata about the consentWithdrawal
|
|
132
|
+
*/
|
|
133
|
+
metadata: {
|
|
134
|
+
type: string;
|
|
135
|
+
required: boolean;
|
|
136
|
+
fieldName: string;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* When the consentWithdrawal record was created
|
|
140
|
+
* Automatically set to current time by default
|
|
141
|
+
*/
|
|
142
|
+
createdAt: {
|
|
143
|
+
type: string;
|
|
144
|
+
defaultValue: () => Date;
|
|
145
|
+
required: boolean;
|
|
146
|
+
fieldName: string;
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Add unique constraint to ensure a consent can only be withdrawn once
|
|
151
|
+
* (If this constraint is not desired, it can be disabled in options)
|
|
152
|
+
*/
|
|
153
|
+
uniqueConstraints: {
|
|
154
|
+
name: string;
|
|
155
|
+
fields: string[];
|
|
156
|
+
}[];
|
|
157
|
+
/**
|
|
158
|
+
* Add indexes for better query performance
|
|
159
|
+
*/
|
|
160
|
+
indexes: {
|
|
161
|
+
name: string;
|
|
162
|
+
fields: string[];
|
|
163
|
+
}[];
|
|
164
|
+
/**
|
|
165
|
+
* Execution order during migrations (lower numbers run first)
|
|
166
|
+
* Withdrawal table needs to be created after the consent and subject tables it references
|
|
167
|
+
*/
|
|
168
|
+
order: number;
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-withdrawal/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,WAAW,EACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAOvC;;OAEG;;IAGH;;;OAGG;;IAGH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;OAEG;;QAEF;;WAEG;;;;;;;;;;QAWH;;WAEG;;;;;;;;;;QAWH;;WAEG;;;;;;QASH;;;WAGG;;;;;;;QAUH;;WAEG;;;;;;QAOH;;WAEG;;;;;;QAOH;;WAEG;;;;;;QAOH;;;WAGG;;;;;;;;IAeJ;;;OAGG;;;;;IAWH;;OAEG;;;;;IAYH;;;OAGG;;EAGJ"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BaseEntityConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Withdrawal entity configuration
|
|
4
|
+
* @default entityName: "consentWithdrawal", entityPrefix: "wdr"
|
|
5
|
+
*/
|
|
6
|
+
export interface ConsentWithdrawalEntityConfig extends BaseEntityConfig {
|
|
7
|
+
fields?: Record<string, string> & {
|
|
8
|
+
id?: string;
|
|
9
|
+
consentId?: string;
|
|
10
|
+
revokedAt?: string;
|
|
11
|
+
revocationReason?: string;
|
|
12
|
+
method?: string;
|
|
13
|
+
actor?: string;
|
|
14
|
+
metadata?: string;
|
|
15
|
+
createdAt?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Prevent multiple consentWithdrawals for the same consent
|
|
19
|
+
*
|
|
20
|
+
* If true, a subject can only have one consentWithdrawal record per consent,
|
|
21
|
+
* preventing multiple revocation records for the same consent.
|
|
22
|
+
* This helps maintain data integrity and clearer consent history.
|
|
23
|
+
*
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
preventMultipleWithdrawals?: boolean;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/db/schema/consent-withdrawal/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,gBAAgB;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QACjC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;;;;;;;OAQG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACrC"}
|