@c15t/backend 2.0.0-rc.1 → 2.0.0-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/README.md +3 -3
- package/dist/302.js +473 -0
- package/dist/583.js +540 -0
- package/dist/915.js +1771 -0
- package/dist/cache.cjs +5 -5
- package/dist/cache.js +4 -415
- package/dist/core.cjs +1356 -120
- package/dist/core.js +163 -1981
- package/dist/db/adapters/drizzle.cjs +1 -1
- package/dist/db/adapters/drizzle.js +1 -2
- package/dist/db/adapters/kysely.cjs +1 -1
- package/dist/db/adapters/kysely.js +1 -2
- package/dist/db/adapters/mongo.cjs +1 -1
- package/dist/db/adapters/mongo.js +1 -2
- package/dist/db/adapters/prisma.cjs +1 -1
- package/dist/db/adapters/prisma.js +1 -2
- package/dist/db/adapters/typeorm.cjs +1 -1
- package/dist/db/adapters/typeorm.js +1 -2
- package/dist/db/adapters.cjs +1 -1
- package/dist/db/migrator.cjs +1 -1
- package/dist/db/schema.cjs +43 -3
- package/dist/db/schema.js +35 -4
- package/dist/define-config.cjs +1 -1
- package/dist/edge.cjs +1106 -0
- package/dist/edge.js +190 -0
- package/dist/router.cjs +885 -123
- package/dist/router.js +1 -1507
- package/dist/{types.cjs → types/index.cjs} +1 -1
- package/{dist → dist-types}/cache/adapters/cloudflare-kv.d.ts +0 -1
- package/{dist → dist-types}/cache/adapters/index.d.ts +0 -1
- package/{dist → dist-types}/cache/adapters/memory.d.ts +0 -1
- package/{dist → dist-types}/cache/adapters/upstash-redis.d.ts +0 -1
- package/{dist → dist-types}/cache/gvl-resolver.d.ts +0 -1
- package/{dist → dist-types}/cache/index.d.ts +0 -1
- package/{dist → dist-types}/cache/keys.d.ts +0 -1
- package/{dist → dist-types}/cache/types.d.ts +0 -1
- package/{dist → dist-types}/core.d.ts +8 -1
- package/{dist → dist-types}/db/migrator/index.d.ts +0 -1
- package/dist-types/db/registry/consent-policy.d.ts +78 -0
- package/{dist → dist-types}/db/registry/consent-purpose.d.ts +0 -1
- package/{dist → dist-types}/db/registry/domain.d.ts +0 -1
- package/dist-types/db/registry/index.d.ts +118 -0
- package/dist-types/db/registry/runtime-policy-decision.d.ts +60 -0
- package/{dist → dist-types}/db/registry/subject.d.ts +0 -2
- package/{dist → dist-types}/db/registry/types.d.ts +1 -1
- package/{dist → dist-types}/db/registry/utils/generate-id.d.ts +0 -1
- package/{dist → dist-types}/db/registry/utils.d.ts +0 -1
- package/{dist → dist-types}/db/schema/1.0.0/audit-log.d.ts +0 -1
- package/{dist → dist-types}/db/schema/1.0.0/consent-policy.d.ts +0 -1
- package/{dist → dist-types}/db/schema/1.0.0/consent-purpose.d.ts +0 -1
- package/{dist → dist-types}/db/schema/1.0.0/consent-record.d.ts +0 -1
- package/{dist → dist-types}/db/schema/1.0.0/consent.d.ts +1 -2
- package/{dist → dist-types}/db/schema/1.0.0/domain.d.ts +0 -1
- package/{dist → dist-types}/db/schema/1.0.0/index.d.ts +0 -32
- package/{dist → dist-types}/db/schema/1.0.0/subject.d.ts +0 -2
- package/{dist → dist-types}/db/schema/2.0.0/audit-log.d.ts +1 -2
- package/{dist → dist-types}/db/schema/2.0.0/consent-policy.d.ts +3 -3
- package/{dist → dist-types}/db/schema/2.0.0/consent-purpose.d.ts +1 -2
- package/{dist → dist-types}/db/schema/2.0.0/consent.d.ts +7 -2
- package/{dist → dist-types}/db/schema/2.0.0/domain.d.ts +1 -2
- package/{dist → dist-types}/db/schema/2.0.0/index.d.ts +455 -28
- package/dist-types/db/schema/2.0.0/runtime-policy-decision.d.ts +23 -0
- package/{dist → dist-types}/db/schema/2.0.0/subject.d.ts +1 -3
- package/{dist → dist-types}/db/schema/index.d.ts +908 -86
- package/{dist → dist-types}/db/tenant-scope.d.ts +0 -1
- package/dist-types/define-config.d.ts +17 -0
- package/dist-types/edge/index.d.ts +5 -0
- package/dist-types/edge/init-handler.d.ts +40 -0
- package/dist-types/edge/resolve-consent.d.ts +80 -0
- package/dist-types/edge/types.d.ts +13 -0
- package/{dist → dist-types}/handlers/consent/check.handler.d.ts +0 -1
- package/{src/handlers/consent/index.ts → dist-types/handlers/consent/index.d.ts} +0 -1
- package/{dist → dist-types}/handlers/init/geo.d.ts +2 -3
- package/{dist → dist-types}/handlers/init/index.d.ts +2 -3
- package/dist-types/handlers/init/policy.d.ts +26 -0
- package/dist-types/handlers/init/resolve-init.d.ts +44 -0
- package/dist-types/handlers/init/translations.d.ts +48 -0
- package/dist-types/handlers/legal-document/current.handler.d.ts +11 -0
- package/dist-types/handlers/legal-document/snapshot.d.ts +39 -0
- package/dist-types/handlers/policy/snapshot.d.ts +99 -0
- package/{src/handlers/status/index.ts → dist-types/handlers/status/index.d.ts} +0 -1
- package/{dist → dist-types}/handlers/status/status.handler.d.ts +0 -1
- package/{dist → dist-types}/handlers/subject/get.handler.d.ts +3 -2
- package/{src/handlers/subject/index.ts → dist-types/handlers/subject/index.d.ts} +0 -1
- package/{dist → dist-types}/handlers/subject/list.handler.d.ts +3 -2
- package/{dist → dist-types}/handlers/subject/patch.handler.d.ts +0 -2
- package/{dist → dist-types}/handlers/subject/post.handler.d.ts +12 -1
- package/{dist → dist-types}/handlers/utils/consent-enrichment.d.ts +3 -1
- package/{dist → dist-types}/init.d.ts +4 -7
- package/{dist → dist-types}/middleware/auth/index.d.ts +0 -1
- package/{dist → dist-types}/middleware/auth/validate-api-key.d.ts +0 -1
- package/{dist → dist-types}/middleware/cors/cors.d.ts +0 -1
- package/{src/middleware/cors/index.ts → dist-types/middleware/cors/index.d.ts} +0 -1
- package/{dist → dist-types}/middleware/cors/is-origin-trusted.d.ts +0 -1
- package/{dist → dist-types}/middleware/cors/process-cors.d.ts +0 -1
- package/{dist → dist-types}/middleware/openapi/config.d.ts +0 -1
- package/{dist → dist-types}/middleware/openapi/handlers.d.ts +0 -1
- package/{src/middleware/openapi/index.ts → dist-types/middleware/openapi/index.d.ts} +0 -1
- package/{dist → dist-types}/middleware/process-ip/index.d.ts +0 -1
- package/dist-types/policies/builder.d.ts +127 -0
- package/dist-types/policies/defaults.d.ts +2 -0
- package/dist-types/policies/matchers.d.ts +3 -0
- package/{dist → dist-types}/router.d.ts +0 -1
- package/{dist → dist-types}/routes/consent.d.ts +0 -1
- package/{dist → dist-types}/routes/index.d.ts +1 -1
- package/{dist → dist-types}/routes/init.d.ts +0 -1
- package/dist-types/routes/legal-document.d.ts +7 -0
- package/{dist → dist-types}/routes/status.d.ts +0 -1
- package/{dist → dist-types}/routes/subject.d.ts +0 -1
- package/{dist → dist-types}/types/api.d.ts +0 -1
- package/dist-types/types/index.d.ts +464 -0
- package/dist-types/utils/background.d.ts +6 -0
- package/{dist → dist-types}/utils/create-telemetry-options.d.ts +1 -2
- package/{dist → dist-types}/utils/env.d.ts +0 -1
- package/{dist → dist-types}/utils/extract-error-message.d.ts +0 -1
- package/{dist → dist-types}/utils/instrumentation.d.ts +2 -3
- package/{dist → dist-types}/utils/logger.d.ts +0 -1
- package/{dist → dist-types}/utils/metrics.d.ts +0 -1
- package/dist-types/version.d.ts +1 -0
- package/docs/README.md +49 -0
- package/docs/api/configuration.md +208 -0
- package/docs/api/endpoints.md +211 -0
- package/docs/guides/caching.md +85 -0
- package/docs/guides/database-setup.md +128 -0
- package/docs/guides/edge-deployment.md +251 -0
- package/docs/guides/framework-integration.md +142 -0
- package/docs/guides/iab-tcf.md +89 -0
- package/docs/guides/observability.md +96 -0
- package/docs/guides/policy-packs.md +396 -0
- package/docs/quickstart.md +129 -0
- package/package.json +51 -37
- package/.turbo/turbo-build.log +0 -49
- package/CHANGELOG.md +0 -99
- package/dist/cache/adapters/cloudflare-kv.d.ts.map +0 -1
- package/dist/cache/adapters/index.d.ts.map +0 -1
- package/dist/cache/adapters/memory.d.ts.map +0 -1
- package/dist/cache/adapters/upstash-redis.d.ts.map +0 -1
- package/dist/cache/gvl-resolver.d.ts.map +0 -1
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/keys.d.ts.map +0 -1
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/core.d.ts.map +0 -1
- package/dist/db/adapters/drizzle.d.ts +0 -2
- package/dist/db/adapters/drizzle.d.ts.map +0 -1
- package/dist/db/adapters/index.d.ts +0 -2
- package/dist/db/adapters/index.d.ts.map +0 -1
- package/dist/db/adapters/kysely.d.ts +0 -2
- package/dist/db/adapters/kysely.d.ts.map +0 -1
- package/dist/db/adapters/mongo.d.ts +0 -2
- package/dist/db/adapters/mongo.d.ts.map +0 -1
- package/dist/db/adapters/prisma.d.ts +0 -2
- package/dist/db/adapters/prisma.d.ts.map +0 -1
- package/dist/db/adapters/typeorm.d.ts +0 -2
- package/dist/db/adapters/typeorm.d.ts.map +0 -1
- package/dist/db/migrator/index.d.ts.map +0 -1
- package/dist/db/registry/consent-policy.d.ts +0 -23
- package/dist/db/registry/consent-policy.d.ts.map +0 -1
- package/dist/db/registry/consent-purpose.d.ts.map +0 -1
- package/dist/db/registry/domain.d.ts.map +0 -1
- package/dist/db/registry/index.d.ts +0 -57
- package/dist/db/registry/index.d.ts.map +0 -1
- package/dist/db/registry/subject.d.ts.map +0 -1
- package/dist/db/registry/types.d.ts.map +0 -1
- package/dist/db/registry/utils/generate-id.d.ts.map +0 -1
- package/dist/db/registry/utils.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/audit-log.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/consent-policy.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/consent-purpose.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/consent-record.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/consent.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/domain.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/index.d.ts.map +0 -1
- package/dist/db/schema/1.0.0/subject.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/audit-log.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/consent-policy.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/consent-purpose.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/consent.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/domain.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/index.d.ts.map +0 -1
- package/dist/db/schema/2.0.0/subject.d.ts.map +0 -1
- package/dist/db/schema/index.d.ts.map +0 -1
- package/dist/db/tenant-scope.d.ts.map +0 -1
- package/dist/define-config.d.ts +0 -5
- package/dist/define-config.d.ts.map +0 -1
- package/dist/handlers/consent/check.handler.d.ts.map +0 -1
- package/dist/handlers/consent/index.d.ts +0 -12
- package/dist/handlers/consent/index.d.ts.map +0 -1
- package/dist/handlers/init/geo.d.ts.map +0 -1
- package/dist/handlers/init/index.d.ts.map +0 -1
- package/dist/handlers/init/translations.d.ts +0 -28
- package/dist/handlers/init/translations.d.ts.map +0 -1
- package/dist/handlers/status/index.d.ts +0 -7
- package/dist/handlers/status/index.d.ts.map +0 -1
- package/dist/handlers/status/status.handler.d.ts.map +0 -1
- package/dist/handlers/subject/get.handler.d.ts.map +0 -1
- package/dist/handlers/subject/index.d.ts +0 -10
- package/dist/handlers/subject/index.d.ts.map +0 -1
- package/dist/handlers/subject/list.handler.d.ts.map +0 -1
- package/dist/handlers/subject/patch.handler.d.ts.map +0 -1
- package/dist/handlers/subject/post.handler.d.ts.map +0 -1
- package/dist/handlers/utils/consent-enrichment.d.ts.map +0 -1
- package/dist/init.d.ts.map +0 -1
- package/dist/middleware/auth/index.d.ts.map +0 -1
- package/dist/middleware/auth/validate-api-key.d.ts.map +0 -1
- package/dist/middleware/cors/cors.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.map +0 -1
- package/dist/middleware/cors/process-cors.d.ts.map +0 -1
- package/dist/middleware/openapi/config.d.ts.map +0 -1
- package/dist/middleware/openapi/handlers.d.ts.map +0 -1
- package/dist/middleware/openapi/index.d.ts +0 -12
- package/dist/middleware/openapi/index.d.ts.map +0 -1
- package/dist/middleware/process-ip/index.d.ts.map +0 -1
- package/dist/router.d.ts.map +0 -1
- package/dist/routes/consent.d.ts.map +0 -1
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/init.d.ts.map +0 -1
- package/dist/routes/status.d.ts.map +0 -1
- package/dist/routes/subject.d.ts.map +0 -1
- package/dist/types/api.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -255
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/create-telemetry-options.d.ts.map +0 -1
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/extract-error-message.d.ts.map +0 -1
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/instrumentation.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/metrics.d.ts.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/knip.json +0 -31
- package/rslib.config.ts +0 -93
- package/src/cache/adapters/cloudflare-kv.ts +0 -71
- package/src/cache/adapters/index.ts +0 -22
- package/src/cache/adapters/memory.ts +0 -111
- package/src/cache/adapters/upstash-redis.ts +0 -113
- package/src/cache/gvl-resolver.ts +0 -289
- package/src/cache/index.ts +0 -34
- package/src/cache/keys.ts +0 -68
- package/src/cache/types.ts +0 -66
- package/src/core.ts +0 -368
- package/src/db/migrator/index.ts +0 -80
- package/src/db/registry/consent-policy.test.ts +0 -451
- package/src/db/registry/consent-policy.ts +0 -82
- package/src/db/registry/consent-purpose.test.ts +0 -428
- package/src/db/registry/consent-purpose.ts +0 -61
- package/src/db/registry/domain.test.ts +0 -445
- package/src/db/registry/domain.ts +0 -91
- package/src/db/registry/index.ts +0 -14
- package/src/db/registry/subject.test.ts +0 -388
- package/src/db/registry/subject.ts +0 -129
- package/src/db/registry/types.ts +0 -10
- package/src/db/registry/utils/generate-id.test.ts +0 -216
- package/src/db/registry/utils/generate-id.ts +0 -133
- package/src/db/registry/utils.ts +0 -133
- package/src/db/schema/1.0.0/audit-log.ts +0 -15
- package/src/db/schema/1.0.0/consent-policy.ts +0 -14
- package/src/db/schema/1.0.0/consent-purpose.ts +0 -14
- package/src/db/schema/1.0.0/consent-record.ts +0 -10
- package/src/db/schema/1.0.0/consent.ts +0 -20
- package/src/db/schema/1.0.0/domain.ts +0 -12
- package/src/db/schema/1.0.0/index.ts +0 -48
- package/src/db/schema/1.0.0/subject.ts +0 -12
- package/src/db/schema/2.0.0/audit-log.ts +0 -18
- package/src/db/schema/2.0.0/consent-policy.ts +0 -28
- package/src/db/schema/2.0.0/consent-purpose.ts +0 -12
- package/src/db/schema/2.0.0/consent.ts +0 -26
- package/src/db/schema/2.0.0/domain.ts +0 -12
- package/src/db/schema/2.0.0/index.ts +0 -47
- package/src/db/schema/2.0.0/subject.ts +0 -14
- package/src/db/schema/index.ts +0 -15
- package/src/db/tenant-scope.test.ts +0 -750
- package/src/db/tenant-scope.ts +0 -103
- package/src/define-config.ts +0 -5
- package/src/handlers/consent/check.handler.ts +0 -126
- package/src/handlers/init/geo.test.ts +0 -317
- package/src/handlers/init/geo.ts +0 -195
- package/src/handlers/init/index.test.ts +0 -205
- package/src/handlers/init/index.ts +0 -114
- package/src/handlers/init/translations.test.ts +0 -121
- package/src/handlers/init/translations.ts +0 -72
- package/src/handlers/status/status.handler.test.ts +0 -155
- package/src/handlers/status/status.handler.ts +0 -51
- package/src/handlers/subject/get.handler.ts +0 -93
- package/src/handlers/subject/list.handler.ts +0 -93
- package/src/handlers/subject/patch.handler.ts +0 -122
- package/src/handlers/subject/post.handler.test.ts +0 -294
- package/src/handlers/subject/post.handler.ts +0 -254
- package/src/handlers/utils/consent-enrichment.test.ts +0 -380
- package/src/handlers/utils/consent-enrichment.ts +0 -218
- package/src/init.test.ts +0 -126
- package/src/init.ts +0 -87
- package/src/middleware/auth/index.ts +0 -11
- package/src/middleware/auth/validate-api-key.test.ts +0 -86
- package/src/middleware/auth/validate-api-key.ts +0 -107
- package/src/middleware/cors/cors.test.ts +0 -135
- package/src/middleware/cors/cors.ts +0 -186
- package/src/middleware/cors/is-origin-trusted.test.ts +0 -164
- package/src/middleware/cors/is-origin-trusted.ts +0 -130
- package/src/middleware/cors/process-cors.ts +0 -91
- package/src/middleware/openapi/config.ts +0 -29
- package/src/middleware/openapi/handlers.ts +0 -34
- package/src/middleware/process-ip/index.test.ts +0 -195
- package/src/middleware/process-ip/index.ts +0 -199
- package/src/router.ts +0 -15
- package/src/routes/consent.ts +0 -52
- package/src/routes/index.ts +0 -10
- package/src/routes/init.ts +0 -102
- package/src/routes/status.ts +0 -46
- package/src/routes/subject.ts +0 -152
- package/src/types/api.ts +0 -48
- package/src/types/index.ts +0 -288
- package/src/utils/create-telemetry-options.test.ts +0 -302
- package/src/utils/create-telemetry-options.ts +0 -229
- package/src/utils/env.ts +0 -84
- package/src/utils/extract-error-message.ts +0 -21
- package/src/utils/instrumentation.test.ts +0 -185
- package/src/utils/instrumentation.ts +0 -196
- package/src/utils/logger.ts +0 -41
- package/src/utils/metrics.test.ts +0 -323
- package/src/utils/metrics.ts +0 -402
- package/src/utils/telemetry-pii.test.ts +0 -325
- package/src/version.ts +0 -2
- package/tsconfig.json +0 -11
- package/vitest.config.ts +0 -28
- /package/dist/{types.js → types/index.js} +0 -0
- /package/{src/db/adapters/drizzle.ts → dist-types/db/adapters/drizzle.d.ts} +0 -0
- /package/{src/db/adapters/index.ts → dist-types/db/adapters/index.d.ts} +0 -0
- /package/{src/db/adapters/kysely.ts → dist-types/db/adapters/kysely.d.ts} +0 -0
- /package/{src/db/adapters/mongo.ts → dist-types/db/adapters/mongo.d.ts} +0 -0
- /package/{src/db/adapters/prisma.ts → dist-types/db/adapters/prisma.d.ts} +0 -0
- /package/{src/db/adapters/typeorm.ts → dist-types/db/adapters/typeorm.d.ts} +0 -0
- /package/{src/utils/index.ts → dist-types/utils/index.d.ts} +0 -0
package/src/types/index.ts
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import type { createLogger, LoggerOptions } from '@c15t/logger';
|
|
2
|
-
import {
|
|
3
|
-
type Branding,
|
|
4
|
-
brandingValues,
|
|
5
|
-
type GlobalVendorList,
|
|
6
|
-
type NonIABVendor,
|
|
7
|
-
} from '@c15t/schema/types';
|
|
8
|
-
import type { Translations } from '@c15t/translations';
|
|
9
|
-
import type { Meter, Tracer } from '@opentelemetry/api';
|
|
10
|
-
import type { FumaDB, InferFumaDB } from 'fumadb';
|
|
11
|
-
import type { CacheAdapter } from '../cache/types';
|
|
12
|
-
import type { createRegistry } from '../db/registry';
|
|
13
|
-
import type { DB, LatestDB } from '../db/schema';
|
|
14
|
-
|
|
15
|
-
export * from './api';
|
|
16
|
-
|
|
17
|
-
// Re-export from @c15t/schema for backward compatibility
|
|
18
|
-
export const branding = brandingValues;
|
|
19
|
-
export type { Branding };
|
|
20
|
-
|
|
21
|
-
export interface DatabaseOptions {
|
|
22
|
-
/**
|
|
23
|
-
* The database adapter to use.
|
|
24
|
-
*/
|
|
25
|
-
adapter: FumaDB<FumaDBSchema>['adapter'];
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Tenant ID for multi-tenant deployments.
|
|
29
|
-
* When set, all database queries are automatically scoped to this tenant.
|
|
30
|
-
*/
|
|
31
|
-
tenantId?: string;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Optional prefix for all database table names.
|
|
35
|
-
* Useful when sharing a database with other applications to avoid naming conflicts.
|
|
36
|
-
*
|
|
37
|
-
* @example 'c15t_' // tables become: c15t_subject, c15t_consent, etc.
|
|
38
|
-
*/
|
|
39
|
-
tablePrefix?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface AdvancedOptions {
|
|
43
|
-
/**
|
|
44
|
-
* Disables the use of Geo Location to determine the jurisdiction
|
|
45
|
-
*
|
|
46
|
-
* When enabled, the jurisdiction will be set to "GDPR" to show the strictest version of the banner as we don't know the jurisdiction in this case
|
|
47
|
-
*
|
|
48
|
-
* @default false
|
|
49
|
-
*/
|
|
50
|
-
disableGeoLocation?: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Override base translations
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```ts
|
|
56
|
-
* {
|
|
57
|
-
* en: enTranslations,
|
|
58
|
-
* de: deTranslations,
|
|
59
|
-
* }
|
|
60
|
-
* ```
|
|
61
|
-
*/
|
|
62
|
-
customTranslations?: Record<string, Partial<Translations>>;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Select which branding to show in the consent banner.
|
|
66
|
-
* Use "none" to hide branding.
|
|
67
|
-
* @default "c15t"
|
|
68
|
-
*/
|
|
69
|
-
branding?: Branding;
|
|
70
|
-
|
|
71
|
-
openapi?: {
|
|
72
|
-
/**
|
|
73
|
-
* Enable/disable OpenAPI spec generation
|
|
74
|
-
* @default true
|
|
75
|
-
*/
|
|
76
|
-
enabled?: boolean;
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Path to serve the OpenAPI JSON spec
|
|
80
|
-
* @default "/spec.json"
|
|
81
|
-
*/
|
|
82
|
-
specPath?: string;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Path to serve the API documentation UI
|
|
86
|
-
* @default "/docs"
|
|
87
|
-
*/
|
|
88
|
-
docsPath?: string;
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* OpenAPI specification options
|
|
92
|
-
*/
|
|
93
|
-
options?: {
|
|
94
|
-
info?: {
|
|
95
|
-
title?: string;
|
|
96
|
-
version?: string;
|
|
97
|
-
description?: string;
|
|
98
|
-
};
|
|
99
|
-
servers?: Array<{ url: string; description?: string }>;
|
|
100
|
-
security?: Array<Record<string, string[]>>;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Custom template for rendering the API documentation UI
|
|
105
|
-
* If provided, this will be used instead of the default Scalar UI
|
|
106
|
-
*/
|
|
107
|
-
customUiTemplate?: string;
|
|
108
|
-
};
|
|
109
|
-
/**
|
|
110
|
-
* OpenTelemetry configuration for tracing and metrics.
|
|
111
|
-
* Telemetry is opt-in and disabled by default.
|
|
112
|
-
* Users must provide their own SDK setup (Node, Bun, edge, etc.).
|
|
113
|
-
*/
|
|
114
|
-
telemetry?: {
|
|
115
|
-
/**
|
|
116
|
-
* Enable telemetry (tracing and metrics).
|
|
117
|
-
* Must be explicitly set to true to activate.
|
|
118
|
-
* @default false
|
|
119
|
-
*/
|
|
120
|
-
enabled?: boolean;
|
|
121
|
-
/**
|
|
122
|
-
* User-provided tracer instance.
|
|
123
|
-
* Users should set up their own OpenTelemetry SDK and pass the tracer here.
|
|
124
|
-
* @example trace.getTracer('my-app')
|
|
125
|
-
*/
|
|
126
|
-
tracer?: Tracer;
|
|
127
|
-
/**
|
|
128
|
-
* User-provided meter instance for metrics.
|
|
129
|
-
* Users should set up their own OpenTelemetry SDK and pass the meter here.
|
|
130
|
-
* @example metrics.getMeter('my-app')
|
|
131
|
-
*/
|
|
132
|
-
meter?: Meter;
|
|
133
|
-
/**
|
|
134
|
-
* Default attributes to include on all spans and metrics.
|
|
135
|
-
*/
|
|
136
|
-
defaultAttributes?: Record<string, string | number | boolean>;
|
|
137
|
-
};
|
|
138
|
-
ipAddress?: {
|
|
139
|
-
/**
|
|
140
|
-
* Enable/disable IP address tracking.
|
|
141
|
-
* When disabled, all IP addresses will be stored as null.
|
|
142
|
-
* @default true
|
|
143
|
-
*/
|
|
144
|
-
tracking?: boolean;
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Enable/disable IP address masking to reduce PII collection.
|
|
148
|
-
* - IPv4: Last octet is replaced with 0 (e.g., 192.168.1.100 -> 192.168.1.0)
|
|
149
|
-
* - IPv6: Last 80 bits are masked (e.g., 2001:db8:85a3::1 -> 2001:db8:85a3::)
|
|
150
|
-
* @default true
|
|
151
|
-
*/
|
|
152
|
-
masking?: boolean;
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Override the default IP address headers used to extract client IP.
|
|
156
|
-
* Headers are checked in order, first match wins.
|
|
157
|
-
*/
|
|
158
|
-
ipAddressHeaders?: string[];
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Cache configuration for external persistent storage.
|
|
163
|
-
* Used for caching GVL and other data.
|
|
164
|
-
*/
|
|
165
|
-
cache?: {
|
|
166
|
-
/**
|
|
167
|
-
* External cache adapter (Redis, KV, etc.).
|
|
168
|
-
* If not provided, only in-memory cache is used.
|
|
169
|
-
*/
|
|
170
|
-
adapter?: CacheAdapter;
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* API keys for authenticated endpoints.
|
|
175
|
-
* Used for server-side endpoints like GET /subjects.
|
|
176
|
-
*
|
|
177
|
-
* @example
|
|
178
|
-
* ```ts
|
|
179
|
-
* apiKeys: ['sk_live_abc123', 'sk_live_def456']
|
|
180
|
-
* ```
|
|
181
|
-
*/
|
|
182
|
-
apiKeys?: string[];
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* GVL (Global Vendor List) configuration for IAB TCF compliance.
|
|
186
|
-
* Disabled by default - most users don't need IAB TCF.
|
|
187
|
-
* Set enabled: true to activate GVL support.
|
|
188
|
-
*/
|
|
189
|
-
gvl?: {
|
|
190
|
-
/**
|
|
191
|
-
* Enable GVL support.
|
|
192
|
-
* When false or not provided, /init returns gvl: null.
|
|
193
|
-
*/
|
|
194
|
-
enabled: true;
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Bundled GVL translations by language code.
|
|
198
|
-
* These are checked first before any cache or fetch.
|
|
199
|
-
*
|
|
200
|
-
* @example
|
|
201
|
-
* ```ts
|
|
202
|
-
* import enGVL from './gvl/en.json';
|
|
203
|
-
* import deGVL from './gvl/de.json';
|
|
204
|
-
*
|
|
205
|
-
* gvl: {
|
|
206
|
-
* enabled: true,
|
|
207
|
-
* bundled: { en: enGVL, de: deGVL }
|
|
208
|
-
* }
|
|
209
|
-
* ```
|
|
210
|
-
*/
|
|
211
|
-
bundled?: Record<string, GlobalVendorList>;
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Vendor IDs to filter when fetching non-bundled languages.
|
|
215
|
-
* Reduces payload size.
|
|
216
|
-
*/
|
|
217
|
-
vendorIds?: number[];
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Override the default GVL endpoint.
|
|
221
|
-
* @default 'https://gvl.consent.io'
|
|
222
|
-
*/
|
|
223
|
-
endpoint?: string;
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Custom vendors not registered with IAB.
|
|
227
|
-
* These are synced to the frontend via the /init endpoint.
|
|
228
|
-
*
|
|
229
|
-
* @example
|
|
230
|
-
* ```ts
|
|
231
|
-
* customVendors: [
|
|
232
|
-
* {
|
|
233
|
-
* id: 'internal-analytics',
|
|
234
|
-
* name: 'Our Analytics',
|
|
235
|
-
* privacyPolicyUrl: 'https://example.com/privacy',
|
|
236
|
-
* purposes: [1, 8],
|
|
237
|
-
* }
|
|
238
|
-
* ]
|
|
239
|
-
* ```
|
|
240
|
-
*/
|
|
241
|
-
customVendors?: NonIABVendor[];
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
export interface BaseOptions {
|
|
246
|
-
/** Display name for your application, used in consent records. */
|
|
247
|
-
appName?: string;
|
|
248
|
-
/** Base path prefix for all API routes (e.g. `/api/consent`). */
|
|
249
|
-
basePath?: string;
|
|
250
|
-
/** Allowed origins for CORS. Required for browser-based consent collection. */
|
|
251
|
-
trustedOrigins: string[];
|
|
252
|
-
/** Advanced configuration options. */
|
|
253
|
-
advanced?: AdvancedOptions;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
type FumaDBSchema = InferFumaDB<typeof DB>['schemas'];
|
|
257
|
-
export interface C15TOptions extends BaseOptions, DatabaseOptions {
|
|
258
|
-
logger?: LoggerOptions;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
export interface C15TContext extends BaseOptions {
|
|
262
|
-
appName: string;
|
|
263
|
-
logger: ReturnType<typeof createLogger>;
|
|
264
|
-
registry: ReturnType<typeof createRegistry>;
|
|
265
|
-
db: ReturnType<InferFumaDB<typeof LatestDB>['orm']>;
|
|
266
|
-
|
|
267
|
-
// Resolved from request
|
|
268
|
-
ipAddress?: string | null;
|
|
269
|
-
userAgent?: string;
|
|
270
|
-
origin?: string;
|
|
271
|
-
trustedOrigin?: boolean;
|
|
272
|
-
path?: string;
|
|
273
|
-
method?: string;
|
|
274
|
-
headers?: Headers;
|
|
275
|
-
|
|
276
|
-
// Authentication state
|
|
277
|
-
/**
|
|
278
|
-
* Whether the request was authenticated with a valid API key.
|
|
279
|
-
* Set to true when a valid Bearer token is provided in the Authorization header.
|
|
280
|
-
*/
|
|
281
|
-
apiKeyAuthenticated?: boolean;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
export type DeepPartial<T> = T extends (...args: unknown[]) => unknown
|
|
285
|
-
? T
|
|
286
|
-
: T extends object
|
|
287
|
-
? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
288
|
-
: T;
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import type { C15TOptions } from '../types';
|
|
3
|
-
import {
|
|
4
|
-
createRequestSpan,
|
|
5
|
-
createTelemetryOptions,
|
|
6
|
-
getDefaultAttributes,
|
|
7
|
-
getMeter,
|
|
8
|
-
getTraceContext,
|
|
9
|
-
getTracer,
|
|
10
|
-
isTelemetryEnabled,
|
|
11
|
-
resetTelemetryConfig,
|
|
12
|
-
withRequestSpan,
|
|
13
|
-
} from './create-telemetry-options';
|
|
14
|
-
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
resetTelemetryConfig();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
describe('createTelemetryOptions', () => {
|
|
20
|
-
it('returns disabled by default (opt-in)', () => {
|
|
21
|
-
const options = createTelemetryOptions('test-app');
|
|
22
|
-
|
|
23
|
-
expect(options?.enabled).toBe(false);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('sets enabled when explicitly configured', () => {
|
|
27
|
-
const options = createTelemetryOptions('test-app', { enabled: true });
|
|
28
|
-
|
|
29
|
-
expect(options?.enabled).toBe(true);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('includes default attributes with service name and version', () => {
|
|
33
|
-
const options = createTelemetryOptions('my-app');
|
|
34
|
-
|
|
35
|
-
expect(options?.defaultAttributes).toMatchObject({
|
|
36
|
-
'service.name': 'my-app',
|
|
37
|
-
});
|
|
38
|
-
expect(options?.defaultAttributes?.['service.version']).toBeDefined();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('merges user-provided default attributes', () => {
|
|
42
|
-
const options = createTelemetryOptions('my-app', {
|
|
43
|
-
defaultAttributes: {
|
|
44
|
-
environment: 'production',
|
|
45
|
-
region: 'us-east-1',
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
expect(options?.defaultAttributes).toMatchObject({
|
|
50
|
-
'service.name': 'my-app',
|
|
51
|
-
environment: 'production',
|
|
52
|
-
region: 'us-east-1',
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('preserves user-provided tracer', () => {
|
|
57
|
-
const mockTracer = { startSpan: vi.fn() };
|
|
58
|
-
type TelemetryConfig = NonNullable<
|
|
59
|
-
NonNullable<C15TOptions['advanced']>['telemetry']
|
|
60
|
-
>;
|
|
61
|
-
const options = createTelemetryOptions('my-app', {
|
|
62
|
-
tracer: mockTracer as unknown as TelemetryConfig['tracer'],
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
expect(options?.tracer).toBe(mockTracer);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('isTelemetryEnabled', () => {
|
|
70
|
-
it('returns false when no options provided', () => {
|
|
71
|
-
expect(isTelemetryEnabled()).toBe(false);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it('returns false when telemetry is not configured', () => {
|
|
75
|
-
const options: C15TOptions = {
|
|
76
|
-
trustedOrigins: [],
|
|
77
|
-
adapter: {} as C15TOptions['adapter'],
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
expect(isTelemetryEnabled(options)).toBe(false);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('returns false when enabled is not set', () => {
|
|
84
|
-
const options: C15TOptions = {
|
|
85
|
-
trustedOrigins: [],
|
|
86
|
-
adapter: {} as C15TOptions['adapter'],
|
|
87
|
-
advanced: {
|
|
88
|
-
telemetry: {},
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
expect(isTelemetryEnabled(options)).toBe(false);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it('returns true when enabled is true', () => {
|
|
96
|
-
const options: C15TOptions = {
|
|
97
|
-
trustedOrigins: [],
|
|
98
|
-
adapter: {} as C15TOptions['adapter'],
|
|
99
|
-
advanced: {
|
|
100
|
-
telemetry: {
|
|
101
|
-
enabled: true,
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
expect(isTelemetryEnabled(options)).toBe(true);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
describe('getTracer', () => {
|
|
111
|
-
it('returns a tracer even when telemetry is disabled', () => {
|
|
112
|
-
const tracer = getTracer();
|
|
113
|
-
|
|
114
|
-
expect(tracer).toBeDefined();
|
|
115
|
-
expect(tracer.startSpan).toBeDefined();
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('uses user-provided tracer when available', () => {
|
|
119
|
-
const mockTracer = { startSpan: vi.fn() };
|
|
120
|
-
type TelemetryConfig = NonNullable<
|
|
121
|
-
NonNullable<C15TOptions['advanced']>['telemetry']
|
|
122
|
-
>;
|
|
123
|
-
const options: C15TOptions = {
|
|
124
|
-
trustedOrigins: [],
|
|
125
|
-
adapter: {} as C15TOptions['adapter'],
|
|
126
|
-
advanced: {
|
|
127
|
-
telemetry: {
|
|
128
|
-
enabled: true,
|
|
129
|
-
tracer: mockTracer as unknown as TelemetryConfig['tracer'],
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
const tracer = getTracer(options);
|
|
135
|
-
expect(tracer).toBe(mockTracer);
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
describe('getMeter', () => {
|
|
140
|
-
it('returns a meter even when telemetry is disabled', () => {
|
|
141
|
-
const meter = getMeter();
|
|
142
|
-
|
|
143
|
-
expect(meter).toBeDefined();
|
|
144
|
-
expect(meter.createCounter).toBeDefined();
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it('returns meter with expected interface when telemetry is enabled', () => {
|
|
148
|
-
const options: C15TOptions = {
|
|
149
|
-
trustedOrigins: [],
|
|
150
|
-
adapter: {} as C15TOptions['adapter'],
|
|
151
|
-
advanced: {
|
|
152
|
-
telemetry: {
|
|
153
|
-
enabled: true,
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
const meter = getMeter(options);
|
|
159
|
-
// Verify the meter has the expected interface
|
|
160
|
-
expect(meter.createCounter).toBeDefined();
|
|
161
|
-
expect(meter.createHistogram).toBeDefined();
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
describe('createRequestSpan', () => {
|
|
166
|
-
it('returns null when telemetry is disabled', () => {
|
|
167
|
-
const span = createRequestSpan('GET', '/test');
|
|
168
|
-
|
|
169
|
-
expect(span).toBeNull();
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
it('creates span when telemetry is enabled', () => {
|
|
173
|
-
const options: C15TOptions = {
|
|
174
|
-
trustedOrigins: [],
|
|
175
|
-
adapter: {} as C15TOptions['adapter'],
|
|
176
|
-
advanced: {
|
|
177
|
-
telemetry: {
|
|
178
|
-
enabled: true,
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
const span = createRequestSpan('GET', '/test', options);
|
|
184
|
-
|
|
185
|
-
expect(span).toBeDefined();
|
|
186
|
-
// Clean up
|
|
187
|
-
span?.end();
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
describe('withRequestSpan', () => {
|
|
192
|
-
it('executes operation without span when telemetry is disabled', async () => {
|
|
193
|
-
const operation = vi.fn().mockResolvedValue('result');
|
|
194
|
-
|
|
195
|
-
const result = await withRequestSpan('GET', '/test', operation);
|
|
196
|
-
|
|
197
|
-
expect(result).toBe('result');
|
|
198
|
-
expect(operation).toHaveBeenCalledTimes(1);
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it('wraps operation in span when telemetry is enabled', async () => {
|
|
202
|
-
const options: C15TOptions = {
|
|
203
|
-
trustedOrigins: [],
|
|
204
|
-
adapter: {} as C15TOptions['adapter'],
|
|
205
|
-
advanced: {
|
|
206
|
-
telemetry: {
|
|
207
|
-
enabled: true,
|
|
208
|
-
},
|
|
209
|
-
},
|
|
210
|
-
};
|
|
211
|
-
const operation = vi.fn().mockResolvedValue('result');
|
|
212
|
-
|
|
213
|
-
const result = await withRequestSpan('GET', '/test', operation, options);
|
|
214
|
-
|
|
215
|
-
expect(result).toBe('result');
|
|
216
|
-
expect(operation).toHaveBeenCalledTimes(1);
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
it('propagates errors from operation', async () => {
|
|
220
|
-
const error = new Error('Test error');
|
|
221
|
-
const operation = vi.fn().mockRejectedValue(error);
|
|
222
|
-
|
|
223
|
-
await expect(withRequestSpan('GET', '/test', operation)).rejects.toThrow(
|
|
224
|
-
'Test error'
|
|
225
|
-
);
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
describe('getTraceContext', () => {
|
|
230
|
-
it('returns null when no active span', () => {
|
|
231
|
-
const context = getTraceContext();
|
|
232
|
-
|
|
233
|
-
expect(context).toBeNull();
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
describe('cached telemetry config', () => {
|
|
238
|
-
it('isTelemetryEnabled returns false before init', () => {
|
|
239
|
-
expect(isTelemetryEnabled()).toBe(false);
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
it('isTelemetryEnabled returns cached value after init', () => {
|
|
243
|
-
createTelemetryOptions('test-app', { enabled: true });
|
|
244
|
-
|
|
245
|
-
expect(isTelemetryEnabled()).toBe(true);
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
it('getDefaultAttributes returns empty before init', () => {
|
|
249
|
-
const attrs = getDefaultAttributes();
|
|
250
|
-
|
|
251
|
-
expect(Object.keys(attrs)).toHaveLength(0);
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
it('getDefaultAttributes returns cached attributes after init', () => {
|
|
255
|
-
createTelemetryOptions('test-app', {
|
|
256
|
-
defaultAttributes: { environment: 'test' },
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
const attrs = getDefaultAttributes();
|
|
260
|
-
expect(attrs['service.name']).toBe('test-app');
|
|
261
|
-
expect(attrs['environment']).toBe('test');
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
it('includes tenantId in default attributes when provided', () => {
|
|
265
|
-
createTelemetryOptions('test-app', {}, 'tenant-123');
|
|
266
|
-
|
|
267
|
-
const attrs = getDefaultAttributes();
|
|
268
|
-
expect(attrs['tenant.id']).toBe('tenant-123');
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
it('does not include tenant.id when tenantId is undefined', () => {
|
|
272
|
-
createTelemetryOptions('test-app');
|
|
273
|
-
|
|
274
|
-
const attrs = getDefaultAttributes();
|
|
275
|
-
expect(attrs['tenant.id']).toBeUndefined();
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
it('resetTelemetryConfig clears the cache', () => {
|
|
279
|
-
createTelemetryOptions('test-app', { enabled: true });
|
|
280
|
-
expect(isTelemetryEnabled()).toBe(true);
|
|
281
|
-
|
|
282
|
-
resetTelemetryConfig();
|
|
283
|
-
expect(isTelemetryEnabled()).toBe(false);
|
|
284
|
-
expect(Object.keys(getDefaultAttributes())).toHaveLength(0);
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
it('getTracer returns a tracer without explicit options after init', () => {
|
|
288
|
-
createTelemetryOptions('test-app', { enabled: true });
|
|
289
|
-
|
|
290
|
-
const tracer = getTracer();
|
|
291
|
-
expect(tracer).toBeDefined();
|
|
292
|
-
expect(tracer.startSpan).toBeDefined();
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
it('getMeter returns a meter without explicit options after init', () => {
|
|
296
|
-
createTelemetryOptions('test-app', { enabled: true });
|
|
297
|
-
|
|
298
|
-
const meter = getMeter();
|
|
299
|
-
expect(meter).toBeDefined();
|
|
300
|
-
expect(meter.createCounter).toBeDefined();
|
|
301
|
-
});
|
|
302
|
-
});
|