@c15t/backend 1.2.0-canary.13 → 1.2.0-canary.2
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 +20 -22
- package/.turbo/turbo-fmt.log +4 -4
- package/.turbo/turbo-test.log +531 -0
- package/coverage/coverage-final.json +84 -0
- package/coverage/coverage-summary.json +85 -0
- package/coverage/html/backend/index.html +116 -0
- package/coverage/html/backend/rslib.config.ts.html +415 -0
- package/coverage/html/backend/src/contracts/consent/index.html +161 -0
- package/coverage/html/backend/src/contracts/consent/index.ts.html +112 -0
- package/coverage/html/backend/src/contracts/consent/post.contract.ts.html +559 -0
- package/coverage/html/backend/src/contracts/consent/show-banner.contract.ts.html +220 -0
- package/coverage/html/backend/src/contracts/consent/verify.contract.ts.html +463 -0
- package/coverage/html/backend/src/contracts/index.html +116 -0
- package/coverage/html/backend/src/contracts/index.ts.html +139 -0
- package/coverage/html/backend/src/contracts/meta/index.html +131 -0
- package/coverage/html/backend/src/contracts/meta/index.ts.html +100 -0
- package/coverage/html/backend/src/contracts/meta/status.contract.ts.html +196 -0
- package/coverage/html/backend/src/contracts/shared/index.html +116 -0
- package/coverage/html/backend/src/contracts/shared/jurisdiction.schema.ts.html +175 -0
- package/coverage/html/backend/src/core.ts.html +1624 -0
- package/coverage/html/backend/src/handlers/consent/index.html +161 -0
- package/coverage/html/backend/src/handlers/consent/index.ts.html +112 -0
- package/coverage/html/backend/src/handlers/consent/post.handler.ts.html +889 -0
- package/coverage/html/backend/src/handlers/consent/show-banner.handler.ts.html +535 -0
- package/coverage/html/backend/src/handlers/consent/verify.handler.ts.html +1000 -0
- package/coverage/html/backend/src/handlers/meta/index.html +131 -0
- package/coverage/html/backend/src/handlers/meta/index.ts.html +100 -0
- package/coverage/html/backend/src/handlers/meta/status.handler.ts.html +226 -0
- package/coverage/html/backend/src/index.html +161 -0
- package/coverage/html/backend/src/init.ts.html +1018 -0
- package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +116 -0
- package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +544 -0
- package/coverage/html/backend/src/pkgs/api-router/index.html +116 -0
- package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +334 -0
- package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +304 -0
- package/coverage/html/backend/src/pkgs/api-router/utils/index.html +131 -0
- package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +361 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +709 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +256 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/index.html +161 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +136 -0
- package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +496 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +349 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +176 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +358 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +613 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +538 -0
- package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +289 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +289 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +2203 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +670 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +131 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +3634 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +1417 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +2071 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +116 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +1834 -0
- package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +316 -0
- package/coverage/html/backend/src/pkgs/db-adapters/index.html +131 -0
- package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +238 -0
- package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +343 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +217 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +146 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +280 -0
- package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +289 -0
- package/coverage/html/backend/src/pkgs/migrations/index.html +176 -0
- package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +595 -0
- package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +301 -0
- package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +694 -0
- package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +817 -0
- package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +976 -0
- package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +703 -0
- package/coverage/html/backend/src/pkgs/results/core/index.html +146 -0
- package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +280 -0
- package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +271 -0
- package/coverage/html/backend/src/pkgs/results/index.html +131 -0
- package/coverage/html/backend/src/pkgs/results/orpc-error-handler.ts.html +496 -0
- package/coverage/html/backend/src/pkgs/results/results/index.html +131 -0
- package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +628 -0
- package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +1234 -0
- package/coverage/html/backend/src/pkgs/utils/env.ts.html +337 -0
- package/coverage/html/backend/src/pkgs/utils/index.html +146 -0
- package/coverage/html/backend/src/pkgs/utils/logger.ts.html +199 -0
- package/coverage/html/backend/src/pkgs/utils/url.ts.html +400 -0
- package/coverage/html/backend/src/router.ts.html +109 -0
- package/coverage/html/backend/src/schema/audit-log/index.html +146 -0
- package/coverage/html/backend/src/schema/audit-log/registry.ts.html +436 -0
- package/coverage/html/backend/src/schema/audit-log/schema.ts.html +223 -0
- package/coverage/html/backend/src/schema/audit-log/table.ts.html +640 -0
- package/coverage/html/backend/src/schema/consent/index.html +146 -0
- package/coverage/html/backend/src/schema/consent/registry.ts.html +616 -0
- package/coverage/html/backend/src/schema/consent/schema.ts.html +238 -0
- package/coverage/html/backend/src/schema/consent/table.ts.html +748 -0
- package/coverage/html/backend/src/schema/consent-policy/index.html +146 -0
- package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +1063 -0
- package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +265 -0
- package/coverage/html/backend/src/schema/consent-policy/table.ts.html +535 -0
- package/coverage/html/backend/src/schema/consent-purpose/index.html +146 -0
- package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +589 -0
- package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +259 -0
- package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +547 -0
- package/coverage/html/backend/src/schema/consent-record/index.html +131 -0
- package/coverage/html/backend/src/schema/consent-record/schema.ts.html +211 -0
- package/coverage/html/backend/src/schema/consent-record/table.ts.html +457 -0
- package/coverage/html/backend/src/schema/create-registry.ts.html +148 -0
- package/coverage/html/backend/src/schema/definition.ts.html +685 -0
- package/coverage/html/backend/src/schema/domain/index.html +146 -0
- package/coverage/html/backend/src/schema/domain/registry.ts.html +973 -0
- package/coverage/html/backend/src/schema/domain/schema.ts.html +214 -0
- package/coverage/html/backend/src/schema/domain/table.ts.html +496 -0
- package/coverage/html/backend/src/schema/index.html +146 -0
- package/coverage/html/backend/src/schema/schemas.ts.html +166 -0
- package/coverage/html/backend/src/schema/subject/index.html +146 -0
- package/coverage/html/backend/src/schema/subject/registry.ts.html +973 -0
- package/coverage/html/backend/src/schema/subject/schema.ts.html +208 -0
- package/coverage/html/backend/src/schema/subject/table.ts.html +499 -0
- package/coverage/html/backend/src/server.ts.html +475 -0
- package/coverage/html/backend/src/testing/contract-testing.ts.html +1348 -0
- package/coverage/html/backend/src/testing/index.html +116 -0
- package/coverage/html/base.css +224 -0
- package/coverage/html/block-navigation.js +87 -0
- package/coverage/html/favicon.png +0 -0
- package/coverage/html/index.html +626 -0
- package/coverage/html/prettify.css +1 -0
- package/coverage/html/prettify.js +2 -0
- package/coverage/html/sort-arrow-sprite.png +0 -0
- package/coverage/html/sorter.js +196 -0
- package/dist/contracts/consent/index.d.ts +2 -2
- package/dist/contracts/consent/post.contract.d.ts +2 -2
- package/dist/contracts/consent/post.contract.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +5 -5
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/core.cjs +244 -388
- package/dist/core.d.ts +5 -3
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +244 -388
- package/dist/handlers/consent/index.d.ts +2 -2
- package/dist/handlers/consent/post.handler.d.ts +2 -2
- package/dist/handlers/consent/show-banner.handler.d.ts.map +1 -1
- package/dist/pkgs/api-router/utils/core.test.d.ts +2 -0
- package/dist/pkgs/api-router/utils/core.test.d.ts.map +1 -0
- package/dist/pkgs/api-router/utils/cors.d.ts +14 -0
- package/dist/pkgs/api-router/utils/cors.d.ts.map +1 -0
- package/dist/pkgs/data-model/fields/zod-fields.d.ts +32 -32
- package/dist/pkgs/data-model/index.cjs +39 -59
- package/dist/pkgs/data-model/index.js +39 -59
- package/dist/pkgs/data-model/schema/index.cjs +39 -59
- package/dist/pkgs/data-model/schema/index.js +39 -59
- package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.cjs +1 -0
- package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.js +1 -0
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.cjs +1 -0
- package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.js +1 -0
- package/dist/pkgs/db-adapters/adapters/memory-adapter/index.cjs +1 -0
- package/dist/pkgs/db-adapters/adapters/memory-adapter/index.js +1 -0
- package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.cjs +1 -0
- package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.js +1 -0
- package/dist/pkgs/db-adapters/index.cjs +1 -0
- package/dist/pkgs/db-adapters/index.js +1 -0
- package/dist/pkgs/migrations/index.cjs +1 -0
- package/dist/pkgs/migrations/index.js +1 -0
- package/dist/router.cjs +5 -3
- package/dist/router.d.ts +2 -2
- package/dist/router.js +5 -3
- package/dist/schema/consent-policy/registry.d.ts +4 -4
- package/dist/schema/consent-policy/registry.d.ts.map +1 -1
- package/dist/schema/consent-policy/schema.d.ts +2 -2
- package/dist/schema/consent-policy/table.d.ts +2 -2
- package/dist/schema/consent-purpose/registry.d.ts +2 -2
- package/dist/schema/consent-purpose/schema.d.ts +2 -2
- package/dist/schema/consent-purpose/table.d.ts +2 -2
- package/dist/schema/create-registry.d.ts +6 -6
- package/dist/schema/create-registry.d.ts.map +1 -1
- package/dist/schema/definition.d.ts +4 -4
- package/dist/schema/index.cjs +39 -59
- package/dist/schema/index.js +39 -59
- package/dist/schema/schemas.d.ts +4 -4
- package/package.json +2 -8
- package/rslib.config.ts +0 -1
- package/src/contracts/consent/post.contract.ts +6 -1
- package/src/contracts/index.ts +0 -2
- package/src/core.ts +195 -96
- package/src/handlers/consent/show-banner.handler.test.ts +1 -1
- package/src/handlers/consent/show-banner.handler.ts +2 -1
- package/src/{middleware/cors/is-origin-trusted.test.ts → pkgs/api-router/utils/core.test.ts} +1 -1
- package/src/pkgs/api-router/utils/cors.ts +73 -0
- package/src/schema/consent-policy/registry.ts +50 -76
- package/src/server.ts +5 -1
- package/dist/__tests__/server.test.d.ts +0 -2
- package/dist/__tests__/server.test.d.ts.map +0 -1
- package/dist/contracts.cjs +0 -708
- package/dist/contracts.js +0 -661
- package/dist/middleware/cors/cors.d.ts +0 -37
- package/dist/middleware/cors/cors.d.ts.map +0 -1
- package/dist/middleware/cors/cors.test.d.ts +0 -2
- package/dist/middleware/cors/cors.test.d.ts.map +0 -1
- package/dist/middleware/cors/index.d.ts +0 -30
- package/dist/middleware/cors/index.d.ts.map +0 -1
- package/dist/middleware/cors/is-origin-trusted.d.ts +0 -49
- package/dist/middleware/cors/is-origin-trusted.d.ts.map +0 -1
- package/dist/middleware/cors/is-origin-trusted.test.d.ts +0 -2
- package/dist/middleware/cors/is-origin-trusted.test.d.ts.map +0 -1
- package/dist/middleware/cors/process-cors.d.ts +0 -31
- package/dist/middleware/cors/process-cors.d.ts.map +0 -1
- package/dist/middleware/openapi/config.d.ts +0 -28
- package/dist/middleware/openapi/config.d.ts.map +0 -1
- package/dist/middleware/openapi/handlers.d.ts +0 -29
- package/dist/middleware/openapi/handlers.d.ts.map +0 -1
- package/dist/middleware/openapi/index.d.ts +0 -11
- package/dist/middleware/openapi/index.d.ts.map +0 -1
- package/src/__tests__/server.test.ts +0 -96
- package/src/middleware/cors/cors.test.ts +0 -419
- package/src/middleware/cors/cors.ts +0 -192
- package/src/middleware/cors/index.ts +0 -30
- package/src/middleware/cors/is-origin-trusted.ts +0 -126
- package/src/middleware/cors/process-cors.ts +0 -91
- package/src/middleware/openapi/config.ts +0 -28
- package/src/middleware/openapi/handlers.ts +0 -132
- package/src/middleware/openapi/index.ts +0 -11
|
@@ -42,8 +42,8 @@ export declare const createRegistry: (ctx: RegistryContext) => {
|
|
|
42
42
|
lastIpAddress?: string | undefined;
|
|
43
43
|
} | null>;
|
|
44
44
|
createConsentPolicy: (policy: Omit<import("./consent-policy").ConsentPolicy, "id" | "createdAt"> & Partial<import("./consent-policy").ConsentPolicy>, context?: import("../pkgs/types").GenericEndpointContext) => Promise<{
|
|
45
|
-
name: string;
|
|
46
45
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
46
|
+
name: string;
|
|
47
47
|
id: string;
|
|
48
48
|
createdAt: Date;
|
|
49
49
|
updatedAt: Date;
|
|
@@ -59,8 +59,8 @@ export declare const createRegistry: (ctx: RegistryContext) => {
|
|
|
59
59
|
version?: string;
|
|
60
60
|
includeInactive?: boolean;
|
|
61
61
|
}) => Promise<{
|
|
62
|
-
name: string;
|
|
63
62
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
63
|
+
name: string;
|
|
64
64
|
id: string;
|
|
65
65
|
createdAt: Date;
|
|
66
66
|
updatedAt: Date;
|
|
@@ -72,8 +72,8 @@ export declare const createRegistry: (ctx: RegistryContext) => {
|
|
|
72
72
|
expirationDate?: Date | null | undefined;
|
|
73
73
|
}[]>;
|
|
74
74
|
findConsentPolicyById: (policyId: string) => Promise<{
|
|
75
|
-
name: string;
|
|
76
75
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
76
|
+
name: string;
|
|
77
77
|
id: string;
|
|
78
78
|
createdAt: Date;
|
|
79
79
|
updatedAt: Date;
|
|
@@ -85,8 +85,8 @@ export declare const createRegistry: (ctx: RegistryContext) => {
|
|
|
85
85
|
expirationDate?: Date | null | undefined;
|
|
86
86
|
} | null>;
|
|
87
87
|
findOrCreatePolicy: (type: import("./consent-policy").PolicyType) => Promise<{
|
|
88
|
-
name: string;
|
|
89
88
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
89
|
+
name: string;
|
|
90
90
|
id: string;
|
|
91
91
|
createdAt: Date;
|
|
92
92
|
updatedAt: Date;
|
|
@@ -98,9 +98,9 @@ export declare const createRegistry: (ctx: RegistryContext) => {
|
|
|
98
98
|
expirationDate?: Date | null | undefined;
|
|
99
99
|
}>;
|
|
100
100
|
createConsentPurpose: (consentPurpose: Omit<import("./consent-purpose").ConsentPurpose, "id" | "createdAt" | "updatedAt"> & Partial<import("./consent-purpose").ConsentPurpose>, context?: import("../pkgs/types").GenericEndpointContext) => Promise<{
|
|
101
|
+
description: string;
|
|
101
102
|
code: string;
|
|
102
103
|
name: string;
|
|
103
|
-
description: string;
|
|
104
104
|
id: string;
|
|
105
105
|
createdAt: Date;
|
|
106
106
|
updatedAt: Date;
|
|
@@ -110,9 +110,9 @@ export declare const createRegistry: (ctx: RegistryContext) => {
|
|
|
110
110
|
legalBasis?: string | undefined;
|
|
111
111
|
}>;
|
|
112
112
|
findConsentPurposeByCode: (code: string) => Promise<{
|
|
113
|
+
description: string;
|
|
113
114
|
code: string;
|
|
114
115
|
name: string;
|
|
115
|
-
description: string;
|
|
116
116
|
id: string;
|
|
117
117
|
createdAt: Date;
|
|
118
118
|
updatedAt: Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-registry.d.ts","sourceRoot":"","sources":["../../src/schema/create-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAWpD,eAAO,MAAM,cAAc,GAAI,KAAK,eAAe;;;;;;;;;;;iBAUmtE,CAAC;yBAA8B,CAAC;iBAAsB,CAAC;eAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create-registry.d.ts","sourceRoot":"","sources":["../../src/schema/create-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAWpD,eAAO,MAAM,cAAc,GAAI,KAAK,eAAe;;;;;;;;;;;iBAUmtE,CAAC;yBAA8B,CAAC;iBAAsB,CAAC;eAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAilH,CAAC;eAAqB,CAAC;uBAA6B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CADv9L,CAAC"}
|
|
@@ -112,9 +112,9 @@ export declare const getConsentTables: (options: C15TOptions) => {
|
|
|
112
112
|
createdAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
113
113
|
updatedAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
114
114
|
}, "strip", import("zod").ZodTypeAny, {
|
|
115
|
+
description: string;
|
|
115
116
|
code: string;
|
|
116
117
|
name: string;
|
|
117
|
-
description: string;
|
|
118
118
|
id: string;
|
|
119
119
|
createdAt: Date;
|
|
120
120
|
updatedAt: Date;
|
|
@@ -123,9 +123,9 @@ export declare const getConsentTables: (options: C15TOptions) => {
|
|
|
123
123
|
dataCategory?: string | undefined;
|
|
124
124
|
legalBasis?: string | undefined;
|
|
125
125
|
}, {
|
|
126
|
+
description: string;
|
|
126
127
|
code: string;
|
|
127
128
|
name: string;
|
|
128
|
-
description: string;
|
|
129
129
|
id: string;
|
|
130
130
|
createdAt?: Date | undefined;
|
|
131
131
|
updatedAt?: Date | undefined;
|
|
@@ -203,8 +203,8 @@ export declare const getConsentTables: (options: C15TOptions) => {
|
|
|
203
203
|
createdAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
204
204
|
updatedAt: import("zod").ZodDefault<import("zod").ZodDate>;
|
|
205
205
|
}, "strip", import("zod").ZodTypeAny, {
|
|
206
|
-
name: string;
|
|
207
206
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
207
|
+
name: string;
|
|
208
208
|
id: string;
|
|
209
209
|
createdAt: Date;
|
|
210
210
|
updatedAt: Date;
|
|
@@ -215,8 +215,8 @@ export declare const getConsentTables: (options: C15TOptions) => {
|
|
|
215
215
|
contentHash: string;
|
|
216
216
|
expirationDate?: Date | null | undefined;
|
|
217
217
|
}, {
|
|
218
|
-
name: string;
|
|
219
218
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
219
|
+
name: string;
|
|
220
220
|
id: string;
|
|
221
221
|
version: string;
|
|
222
222
|
effectiveDate: Date;
|
package/dist/schema/index.cjs
CHANGED
|
@@ -1137,21 +1137,10 @@ function consentRegistry({ adapter, ...ctx }) {
|
|
|
1137
1137
|
};
|
|
1138
1138
|
return registry;
|
|
1139
1139
|
}
|
|
1140
|
-
|
|
1140
|
+
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
1141
|
+
function generatePolicyPlaceholder(name, date) {
|
|
1141
1142
|
const content = `[PLACEHOLDER] This is an automatically generated version of the ${name} policy.\n\nThis placeholder content should be replaced with actual policy terms before being presented to users.\n\nGenerated on: ${date.toISOString()}`;
|
|
1142
|
-
|
|
1143
|
-
try {
|
|
1144
|
-
const encoder = new TextEncoder();
|
|
1145
|
-
const data = encoder.encode(content);
|
|
1146
|
-
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
1147
|
-
contentHash = Array.from(new Uint8Array(hashBuffer)).map((b)=>b.toString(16).padStart(2, '0')).join('');
|
|
1148
|
-
} catch (error) {
|
|
1149
|
-
throw new error_class_DoubleTieError('Failed to generate policy content hash', {
|
|
1150
|
-
code: error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
1151
|
-
status: 500,
|
|
1152
|
-
cause: error instanceof Error ? error : new Error(String(error))
|
|
1153
|
-
});
|
|
1154
|
-
}
|
|
1143
|
+
const contentHash = (0, external_node_crypto_namespaceObject.createHash)('sha256').update(content).digest('hex');
|
|
1155
1144
|
return {
|
|
1156
1145
|
content,
|
|
1157
1146
|
contentHash
|
|
@@ -1211,53 +1200,44 @@ function policyRegistry({ adapter, ...ctx }) {
|
|
|
1211
1200
|
});
|
|
1212
1201
|
return policy ? validateEntityOutput('consentPolicy', policy, ctx.options) : null;
|
|
1213
1202
|
},
|
|
1214
|
-
findOrCreatePolicy: async (type)=>
|
|
1203
|
+
findOrCreatePolicy: async (type)=>adapter.transaction({
|
|
1215
1204
|
callback: async (txAdapter)=>{
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
value: type
|
|
1232
|
-
}
|
|
1233
|
-
],
|
|
1234
|
-
sortBy: {
|
|
1235
|
-
field: 'effectiveDate',
|
|
1236
|
-
direction: 'desc'
|
|
1205
|
+
const now = new Date();
|
|
1206
|
+
const txRegistry = policyRegistry({
|
|
1207
|
+
adapter: txAdapter,
|
|
1208
|
+
...ctx
|
|
1209
|
+
});
|
|
1210
|
+
const rawLatestPolicy = await txAdapter.findOne({
|
|
1211
|
+
model: 'consentPolicy',
|
|
1212
|
+
where: [
|
|
1213
|
+
{
|
|
1214
|
+
field: 'isActive',
|
|
1215
|
+
value: true
|
|
1216
|
+
},
|
|
1217
|
+
{
|
|
1218
|
+
field: 'type',
|
|
1219
|
+
value: type
|
|
1237
1220
|
}
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
cause: error instanceof Error ? error : new Error(String(error))
|
|
1259
|
-
});
|
|
1260
|
-
}
|
|
1221
|
+
],
|
|
1222
|
+
sortBy: {
|
|
1223
|
+
field: 'effectiveDate',
|
|
1224
|
+
direction: 'desc'
|
|
1225
|
+
}
|
|
1226
|
+
});
|
|
1227
|
+
const latestPolicy = rawLatestPolicy ? validateEntityOutput('consentPolicy', rawLatestPolicy, ctx.options) : null;
|
|
1228
|
+
if (latestPolicy) return latestPolicy;
|
|
1229
|
+
const { content: defaultContent, contentHash } = generatePolicyPlaceholder(type, now);
|
|
1230
|
+
return txRegistry.createConsentPolicy({
|
|
1231
|
+
version: '1.0.0',
|
|
1232
|
+
type,
|
|
1233
|
+
name: type,
|
|
1234
|
+
effectiveDate: now,
|
|
1235
|
+
content: defaultContent,
|
|
1236
|
+
contentHash,
|
|
1237
|
+
isActive: true,
|
|
1238
|
+
updatedAt: now,
|
|
1239
|
+
expirationDate: null
|
|
1240
|
+
});
|
|
1261
1241
|
}
|
|
1262
1242
|
})
|
|
1263
1243
|
};
|
package/dist/schema/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import "neverthrow";
|
|
|
4
4
|
import * as __WEBPACK_EXTERNAL_MODULE__orpc_server_0dae8408__ from "@orpc/server";
|
|
5
5
|
import * as __WEBPACK_EXTERNAL_MODULE__opentelemetry_api_87359e78__ from "@opentelemetry/api";
|
|
6
6
|
import * as __WEBPACK_EXTERNAL_MODULE__doubletie_logger_91c58a8f__ from "@doubletie/logger";
|
|
7
|
+
import * as __WEBPACK_EXTERNAL_MODULE_node_crypto_9ba42079__ from "node:crypto";
|
|
7
8
|
const COMMON_TIMEZONES = {
|
|
8
9
|
UTC: 'UTC',
|
|
9
10
|
GMT: 'GMT',
|
|
@@ -1077,21 +1078,9 @@ function consentRegistry({ adapter, ...ctx }) {
|
|
|
1077
1078
|
};
|
|
1078
1079
|
return registry;
|
|
1079
1080
|
}
|
|
1080
|
-
|
|
1081
|
+
function generatePolicyPlaceholder(name, date) {
|
|
1081
1082
|
const content = `[PLACEHOLDER] This is an automatically generated version of the ${name} policy.\n\nThis placeholder content should be replaced with actual policy terms before being presented to users.\n\nGenerated on: ${date.toISOString()}`;
|
|
1082
|
-
|
|
1083
|
-
try {
|
|
1084
|
-
const encoder = new TextEncoder();
|
|
1085
|
-
const data = encoder.encode(content);
|
|
1086
|
-
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
1087
|
-
contentHash = Array.from(new Uint8Array(hashBuffer)).map((b)=>b.toString(16).padStart(2, '0')).join('');
|
|
1088
|
-
} catch (error) {
|
|
1089
|
-
throw new error_class_DoubleTieError('Failed to generate policy content hash', {
|
|
1090
|
-
code: error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
|
|
1091
|
-
status: 500,
|
|
1092
|
-
cause: error instanceof Error ? error : new Error(String(error))
|
|
1093
|
-
});
|
|
1094
|
-
}
|
|
1083
|
+
const contentHash = (0, __WEBPACK_EXTERNAL_MODULE_node_crypto_9ba42079__.createHash)('sha256').update(content).digest('hex');
|
|
1095
1084
|
return {
|
|
1096
1085
|
content,
|
|
1097
1086
|
contentHash
|
|
@@ -1151,53 +1140,44 @@ function policyRegistry({ adapter, ...ctx }) {
|
|
|
1151
1140
|
});
|
|
1152
1141
|
return policy ? validateEntityOutput('consentPolicy', policy, ctx.options) : null;
|
|
1153
1142
|
},
|
|
1154
|
-
findOrCreatePolicy: async (type)=>
|
|
1143
|
+
findOrCreatePolicy: async (type)=>adapter.transaction({
|
|
1155
1144
|
callback: async (txAdapter)=>{
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
value: type
|
|
1172
|
-
}
|
|
1173
|
-
],
|
|
1174
|
-
sortBy: {
|
|
1175
|
-
field: 'effectiveDate',
|
|
1176
|
-
direction: 'desc'
|
|
1145
|
+
const now = new Date();
|
|
1146
|
+
const txRegistry = policyRegistry({
|
|
1147
|
+
adapter: txAdapter,
|
|
1148
|
+
...ctx
|
|
1149
|
+
});
|
|
1150
|
+
const rawLatestPolicy = await txAdapter.findOne({
|
|
1151
|
+
model: 'consentPolicy',
|
|
1152
|
+
where: [
|
|
1153
|
+
{
|
|
1154
|
+
field: 'isActive',
|
|
1155
|
+
value: true
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
field: 'type',
|
|
1159
|
+
value: type
|
|
1177
1160
|
}
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
cause: error instanceof Error ? error : new Error(String(error))
|
|
1199
|
-
});
|
|
1200
|
-
}
|
|
1161
|
+
],
|
|
1162
|
+
sortBy: {
|
|
1163
|
+
field: 'effectiveDate',
|
|
1164
|
+
direction: 'desc'
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
const latestPolicy = rawLatestPolicy ? validateEntityOutput('consentPolicy', rawLatestPolicy, ctx.options) : null;
|
|
1168
|
+
if (latestPolicy) return latestPolicy;
|
|
1169
|
+
const { content: defaultContent, contentHash } = generatePolicyPlaceholder(type, now);
|
|
1170
|
+
return txRegistry.createConsentPolicy({
|
|
1171
|
+
version: '1.0.0',
|
|
1172
|
+
type,
|
|
1173
|
+
name: type,
|
|
1174
|
+
effectiveDate: now,
|
|
1175
|
+
content: defaultContent,
|
|
1176
|
+
contentHash,
|
|
1177
|
+
isActive: true,
|
|
1178
|
+
updatedAt: now,
|
|
1179
|
+
expirationDate: null
|
|
1180
|
+
});
|
|
1201
1181
|
}
|
|
1202
1182
|
})
|
|
1203
1183
|
};
|
package/dist/schema/schemas.d.ts
CHANGED
|
@@ -90,8 +90,8 @@ export declare const schemas: {
|
|
|
90
90
|
createdAt: z.ZodDefault<z.ZodDate>;
|
|
91
91
|
updatedAt: z.ZodDefault<z.ZodDate>;
|
|
92
92
|
}, "strip", z.ZodTypeAny, {
|
|
93
|
-
name: string;
|
|
94
93
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
94
|
+
name: string;
|
|
95
95
|
id: string;
|
|
96
96
|
createdAt: Date;
|
|
97
97
|
updatedAt: Date;
|
|
@@ -102,8 +102,8 @@ export declare const schemas: {
|
|
|
102
102
|
contentHash: string;
|
|
103
103
|
expirationDate?: Date | null | undefined;
|
|
104
104
|
}, {
|
|
105
|
-
name: string;
|
|
106
105
|
type: "cookie_banner" | "privacy_policy" | "dpa" | "terms_and_conditions" | "marketing_communications" | "age_verification" | "other";
|
|
106
|
+
name: string;
|
|
107
107
|
id: string;
|
|
108
108
|
version: string;
|
|
109
109
|
effectiveDate: Date;
|
|
@@ -126,9 +126,9 @@ export declare const schemas: {
|
|
|
126
126
|
createdAt: z.ZodDefault<z.ZodDate>;
|
|
127
127
|
updatedAt: z.ZodDefault<z.ZodDate>;
|
|
128
128
|
}, "strip", z.ZodTypeAny, {
|
|
129
|
+
description: string;
|
|
129
130
|
code: string;
|
|
130
131
|
name: string;
|
|
131
|
-
description: string;
|
|
132
132
|
id: string;
|
|
133
133
|
createdAt: Date;
|
|
134
134
|
updatedAt: Date;
|
|
@@ -137,9 +137,9 @@ export declare const schemas: {
|
|
|
137
137
|
dataCategory?: string | undefined;
|
|
138
138
|
legalBasis?: string | undefined;
|
|
139
139
|
}, {
|
|
140
|
+
description: string;
|
|
140
141
|
code: string;
|
|
141
142
|
name: string;
|
|
142
|
-
description: string;
|
|
143
143
|
id: string;
|
|
144
144
|
createdAt?: Date | undefined;
|
|
145
145
|
updatedAt?: Date | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c15t/backend",
|
|
3
|
-
"version": "1.2.0-canary.
|
|
3
|
+
"version": "1.2.0-canary.2",
|
|
4
4
|
"license": "GPL-3.0-only",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -19,11 +19,6 @@
|
|
|
19
19
|
"import": "./dist/schema/index.js",
|
|
20
20
|
"require": "./dist/schema/index.cjs"
|
|
21
21
|
},
|
|
22
|
-
"./contracts": {
|
|
23
|
-
"types": "./dist/contracts/index.d.ts",
|
|
24
|
-
"import": "./dist/contracts.js",
|
|
25
|
-
"require": "./dist/contracts.cjs"
|
|
26
|
-
},
|
|
27
22
|
"./pkgs/data-model/fields": {
|
|
28
23
|
"types": "./dist/pkgs/data-model/fields/index.d.ts",
|
|
29
24
|
"import": "./dist/pkgs/data-model/fields/index.js",
|
|
@@ -109,7 +104,6 @@
|
|
|
109
104
|
"@types/node": "20.14.13",
|
|
110
105
|
"@types/pg": "8.11.6",
|
|
111
106
|
"kysely-pglite": "^0.6.1",
|
|
112
|
-
"msw": "^2.7.6",
|
|
113
107
|
"typescript": "^5.8.3",
|
|
114
108
|
"vitest": "^3.1.1",
|
|
115
109
|
"@c15t/typescript-config": "0.0.1-beta.1",
|
|
@@ -122,7 +116,7 @@
|
|
|
122
116
|
"build": "rslib build",
|
|
123
117
|
"check-types": "tsc --noEmit",
|
|
124
118
|
"dev": "rslib build --watch",
|
|
125
|
-
"fmt": "pnpm biome format --write . &&
|
|
119
|
+
"fmt": "pnpm biome format --write . && biome check --formatter-enabled=false --linter-enabled=false --organize-imports-enabled=true --write",
|
|
126
120
|
"knip": "knip",
|
|
127
121
|
"lint": "pnpm biome lint ./src",
|
|
128
122
|
"start": "node dist/server.cjs",
|
package/rslib.config.ts
CHANGED
|
@@ -62,7 +62,6 @@ export default defineConfig({
|
|
|
62
62
|
entry: {
|
|
63
63
|
core: ['./src/core.ts'],
|
|
64
64
|
router: ['./src/router.ts'],
|
|
65
|
-
contracts: ['./src/contracts/index.ts'],
|
|
66
65
|
'schema/index': ['./src/schema/index.ts'],
|
|
67
66
|
'pkgs/data-model/fields/index': ['./src/pkgs/data-model/fields/index.ts'],
|
|
68
67
|
'pkgs/data-model/index': ['./src/pkgs/data-model/index.ts'],
|
|
@@ -6,7 +6,12 @@ import { PolicyTypeSchema } from '~/schema';
|
|
|
6
6
|
const baseConsentSchema = z.object({
|
|
7
7
|
subjectId: z.string().optional(),
|
|
8
8
|
externalSubjectId: z.string().optional(),
|
|
9
|
-
domain: z
|
|
9
|
+
domain: z
|
|
10
|
+
.string()
|
|
11
|
+
.regex(
|
|
12
|
+
/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i,
|
|
13
|
+
'invalid domain'
|
|
14
|
+
),
|
|
10
15
|
type: PolicyTypeSchema,
|
|
11
16
|
metadata: z.record(z.unknown()).optional(),
|
|
12
17
|
});
|