@prosopo/types-database 5.4.0 → 5.5.0

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/types-database@5.4.0 build:cjs
2
+ > @prosopo/types-database@5.5.0 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -43,9 +43,9 @@ dist/cjs/types/userAgent.cjs 0.00 kB │ gzip: 0.02 kB
43
43
  dist/cjs/types/bannedDomain.cjs 0.23 kB │ gzip: 0.16 kB
44
44
  dist/cjs/types/spamEmailDomain.cjs 0.25 kB │ gzip: 0.17 kB
45
45
  dist/cjs/types/captcha.cjs 0.99 kB │ gzip: 0.27 kB
46
- dist/cjs/types/index.cjs 2.42 kB │ gzip: 0.48 kB
47
- dist/cjs/index.cjs 2.52 kB │ gzip: 0.53 kB
48
- dist/cjs/types/client.cjs 6.94 kB │ gzip: 1.52 kB
49
- dist/cjs/types/provider.cjs 28.98 kB │ gzip: 4.55 kB
46
+ dist/cjs/types/index.cjs 2.50 kB │ gzip: 0.49 kB
47
+ dist/cjs/index.cjs 2.60 kB │ gzip: 0.54 kB
48
+ dist/cjs/types/client.cjs 8.03 kB │ gzip: 1.67 kB
49
+ dist/cjs/types/provider.cjs 29.10 kB │ gzip: 4.57 kB
50
50
 
51
- ✓ built in 67ms
51
+ ✓ built in 46ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/types-database@5.4.0 build:tsc
2
+ > @prosopo/types-database@5.5.0 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 10:39:37 PM - Projects in this build:
5
+ 11:40:55 AM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../locale/tsconfig.json
8
8
  * ../util/tsconfig.json
@@ -16,29 +16,29 @@
16
16
  * ../user-access-policy/tsconfig.json
17
17
  * tsconfig.json
18
18
 
19
- 10:39:37 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/NodejsPolarsNativeFilePlugin.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
19
+ 11:40:56 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/vite.backend.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
20
20
 
21
- 10:39:37 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
21
+ 11:40:56 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
22
22
 
23
- 10:39:37 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
23
+ 11:40:56 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
24
24
 
25
- 10:39:37 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
25
+ 11:40:56 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
26
26
 
27
- 10:39:37 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
27
+ 11:40:56 AM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
28
28
 
29
- 10:39:37 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
29
+ 11:40:56 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
30
30
 
31
- 10:39:37 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
31
+ 11:40:56 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
32
32
 
33
- 10:39:37 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/index.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
33
+ 11:40:56 AM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
34
34
 
35
- 10:39:37 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
35
+ 11:40:56 AM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
36
36
 
37
- 10:39:37 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
37
+ 11:40:56 AM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
38
38
 
39
- 10:39:37 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
39
+ 11:40:56 AM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
40
40
 
41
- 10:39:37 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
41
+ 11:40:56 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
42
42
 
43
- 10:39:37 PM - Building project '/home/runner/work/captcha/captcha/packages/types-database/tsconfig.json'...
43
+ 11:40:56 AM - Building project '/home/runner/work/captcha/captcha/packages/types-database/tsconfig.json'...
44
44
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/types-database@5.4.0 build
2
+ > @prosopo/types-database@5.5.0 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/types-database@5.4.0 build:cross-env
6
+ > @prosopo/types-database@5.5.0 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -48,9 +48,9 @@ dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
48
48
  dist/types/bannedDomain.js 0.22 kB │ gzip: 0.17 kB
49
49
  dist/types/spamEmailDomain.js 0.23 kB │ gzip: 0.17 kB
50
50
  dist/types/captcha.js 0.82 kB │ gzip: 0.25 kB
51
- dist/types/index.js 1.60 kB │ gzip: 0.38 kB
52
- dist/index.js 1.67 kB │ gzip: 0.40 kB
53
- dist/types/client.js 6.79 kB │ gzip: 1.56 kB
54
- dist/types/provider.js 27.83 kB │ gzip: 4.52 kB
51
+ dist/types/index.js 1.65 kB │ gzip: 0.39 kB
52
+ dist/index.js 1.72 kB │ gzip: 0.42 kB
53
+ dist/types/client.js 7.86 kB │ gzip: 1.71 kB
54
+ dist/types/provider.js 27.95 kB │ gzip: 4.54 kB
55
55
 
56
- ✓ built in 169ms
56
+ ✓ built in 68ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,90 @@
1
1
  # @prosopo/types-database
2
2
 
3
+ ## 5.5.0
4
+ ### Minor Changes
5
+
6
+ - af267c2: Web Bot Auth verifier and an authenticated frictionless flow for pre-verified agents.
7
+
8
+ **`@prosopo/web-bot-auth`** — a new package: an RFC 9421 HTTP Message Signatures verifier built on `@noble/curves/ed25519`, with no Cloudflare dependency. It parses `Signature-Agent` in both its bare-string and dictionary forms, resolves the signer's JWKS at `/.well-known/http-message-signatures-directory` honouring the response's cache-control TTL, and verifies the Ed25519 signature over the RFC 9421 signature base.
9
+
10
+ **Provider fast path.** `/captcha/frictionless` returns `captchaType: authenticated` when a non-`deferToVerify` `AccessPolicyType.Allow` rule matches the request's user scope, and writes a session with `serverChecked: false`, `agent: true` and the issuing IP frozen for verify-time binding. Decrypt, bot score and the decision machine are all skipped. A verified `Signature-Agent` is one way to qualify — the userScope gains a `webBotAuthAgent` field, set only when signature verification succeeded so a rule scoped to a signer can never be matched by a spoofed header — but an IP CIDR, JA4, user agent, ASN or country rule qualifies the same way. A `Block` or `Restrict` on the same match set always wins, because severity outranks Allow.
11
+
12
+ **`/client/authenticated/verify`.** A separate router with mandatory IP binding — the operator must forward the client IP (`API.AUTHENTICATED_IP_REQUIRED`) and it must match the one the session was issued to (`API.AUTHENTICATED_IP_MISMATCH`), so a leaked token cannot be replayed from elsewhere. Single use is enforced through `serverChecked`, and `captchaType` is checked so an ordinary captcha token cannot be redeemed on this route. `clientSessionId` correlation goes through the same `isClientSessionMismatch` helper as pow / image / puzzle, so the authenticated path cannot drift from the others.
13
+
14
+ **Surface.** `AccessPolicyType.Allow` and `CaptchaType.authenticated`; `webBotAuthAgent` on the user scope (indexed, normalised at parse time to a lowercase scheme+host with no trailing slash); `Session.agent` / `Session.webBotAuthAgent` for the Traffic view's "pre-verified pass" filter; `submitAuthenticatedCaptchaVerify` on `ProviderApi` and the matching branch in `@prosopo/server.verifyProvider`; `AuthenticatedBadge` and a dispatch branch in `procaptcha-frictionless`.
15
+
16
+ Three fixes the new end-to-end coverage turned up, each of which broke the flow outright:
17
+
18
+ - `ipMatchesSession` compared the operator's parsed IP against the session's composite halves with `===`. A session read back from Mongo carries BSON (`Decimal128`, or `Long` on pre-migration records), not the `bigint` the type claims, so the comparison was false for every session that had been through the database — every legitimate redemption was rejected as `API.AUTHENTICATED_IP_MISMATCH`. Both halves are now normalised before comparison, and an unparseable half fails closed rather than defaulting to `0n`, so garbage still cannot match garbage.
19
+ - `serverChecked` was never written onto the authenticated session, so "never set" and "consumed" were distinguishable only by an absence. It is now written as `false` at issuance.
20
+ - `serverChecked` was missing from `SESSION_PROJECTION`. Left out, the single-use check reads `undefined` and an authenticated token verifies an unlimited number of times.
21
+
22
+ ### Patch Changes
23
+
24
+ - 929d99b: Default `trafficFilter.abuserScoreThreshold` to 0.2.
25
+
26
+ The mongoose default was `0`. The abuser score runs 0..1 with 0 meaning "clean", so a `0` threshold applies the `abuser` category to every IP carrying any non-zero score, which is the widest the field can be set. A site that had never opened the traffic filter got that by default.
27
+
28
+ `trafficFilterAbuserScoreThresholdDefault` moves from 0.5 to 0.2 and `@prosopo/types-database` now reads it instead of its own literal, so the zod default, the mongoose default and the provider's runtime fallbacks (`checkTrafficFilter`, `enrichDnsEvent`) all resolve to one number.
29
+
30
+ `trafficFilter` is optional on `ClientSettingsSchema` and no create-site path sends one, so the mongoose default is what a new site key actually gets — the zod default only applies once a caller supplies a `trafficFilter` object.
31
+
32
+ Existing sites keep whatever value is stored; only records with no value are affected.
33
+ - b2183f9: Fix the client-list poll, which has never carried site settings to a provider.
34
+
35
+ `getUpdatedClients` read `record.sites.siteKey` off the portal's `accounts` documents, where `sites` is an array. That property does not exist on an array, so every record came back as `{ account: undefined }`. `updateClientRecords` upserts filtered on `account`, so a whole poll's worth of sites matched nothing, inserted, and collapsed into a single `account: null` row that each run overwrote. An `as ClientRecord` cast on the mapping is what kept tsc quiet about it.
36
+
37
+ Observed on a production node: `GetClientList` completing every 2 minutes with `clientRecords: 1247`, one `account: null` row in `clients`, and 1,610 site keys still holding settings the portal had changed. Direct registration via the admin `SiteKeyRegister` endpoint was the only path actually updating providers.
38
+
39
+ - `getUpdatedClients` now flattens account → sites and emits one record per site, applying the `updatedAt` cutoff per site rather than relying on the document-level match. The account's `tier` is projected and attached; it was previously projected as `sites.tier`, which does not exist, so `tier` was undefined too.
40
+ - The cast is gone. `getUpdatedClients` returns `IUserDataSlim[]` and `updateClientRecords` accepts it — these are plain objects built from portal documents, never mongoose Documents, and the declared types now say so.
41
+ - `updateClientRecords` drops records with no account and logs the count instead of upserting them, so a future mapping bug cannot silently overwrite one row with every client's settings.
42
+
43
+ Adds an integration test covering the flattening, the per-site cutoff, and the active-user filter; it fails with `account: undefined` against the old mapping.
44
+ - 27f525e: Stop the puzzle difficulty ladder silently replacing a site's own puzzle settings.
45
+
46
+ An escalated puzzle session samples its render settings from a difficulty band, and a sampled band sets every knob — decoy count, edge darkness, hole darken, piece scale and tolerance. While that is happening the site's configured `puzzle` block and `puzzleTolerance` are not consulted at all. For a site using escalation that is the intent; for a site that deliberately configured an easier puzzle it means the settings it saved never render, which reads as "my settings aren't being saved".
47
+
48
+ Two changes:
49
+
50
+ `puzzleMaxDifficulty` is a new client setting — the puzzle counterpart to `imageMaxRounds`. It caps how far automatic escalation may climb the ladder, and `0` pins the site to level 0, the documented "nothing escalated" case where the session is left bare and the site's own settings render every time. It defaults to `MAX_AUTO_ESCALATION_LEVEL`, so sites that never set it keep the behaviour they have.
51
+
52
+ Separately, the paths that measured nothing about a client — `MISSING_TOKEN`, `MISSING_HEAD_HASH` and `DECRYPTION_FAILED` — no longer feed the ladder. Each sizes its challenge from a fixed constant chosen to be short ("prove you're human quickly", per their own comments), not from any signal the client produced, but those constants sit above the default baseline of `DEFAULT_SOLVED_COUNT` and so scored as an escalation. A site whose CSP blocks the detector bundle sends no token on every request, so every one of its users was permanently escalated. `OLD_TIMESTAMP` deliberately keeps the ladder: its round count comes from `timestampDecayFunction`, which scales with staleness and is a real graduated measurement.
53
+
54
+ Explicit router and traffic-filter overrides are unaffected in both cases — an operator naming a value still gets it.
55
+ - Updated dependencies [929d99b]
56
+ - Updated dependencies [934fa5d]
57
+ - Updated dependencies [27f525e]
58
+ - Updated dependencies [af267c2]
59
+ - @prosopo/types@5.8.0
60
+ - @prosopo/user-access-policy@3.14.0
61
+
62
+ ## 5.4.1
63
+ ### Patch Changes
64
+
65
+ - b6918c0: fix: declare the puzzle render settings on the mongoose user-settings schema
66
+
67
+ `UserSettingsSchema` never declared the `puzzle` block that
68
+ `ClientSettingsSchema` has carried since the puzzle render tunables shipped.
69
+ Mongoose is strict by default, so every site-wide override — decoy count,
70
+ decoy edge/body shading, hole darken, decoy hole darken, piece scale — round
71
+ tripped through zod, reached the database and was silently dropped on write.
72
+ The same omission on `TrafficCategoryPolicySchema` did the same to the
73
+ per-category puzzle overrides a traffic-filter challenge can carry.
74
+
75
+ Identical failure mode to `frictionlessTypes`, which carries the comment
76
+ explaining it. Bounds mirror the zod field schemas, and the block has no
77
+ default so an unconfigured site stays free of an empty subdocument rather
78
+ than gaining one on every save.
79
+ - Updated dependencies [6f57ee9]
80
+ - Updated dependencies [6f57ee9]
81
+ - Updated dependencies [e22d5fb]
82
+ - Updated dependencies [d288371]
83
+ - @prosopo/user-access-policy@3.13.0
84
+ - @prosopo/types@5.7.0
85
+ - @prosopo/common@3.1.54
86
+ - @prosopo/logger@2.0.9
87
+
3
88
  ## 5.4.0
4
89
  ### Minor Changes
5
90
 
@@ -16,6 +16,7 @@ exports.DecisionMachineArtifactRecordSchema = require_provider.DecisionMachineAr
16
16
  exports.IPValidationRulesSchema = require_client.IPValidationRulesSchema;
17
17
  exports.PoWCaptchaRecordSchema = require_provider.PoWCaptchaRecordSchema;
18
18
  exports.PuzzleCaptchaRecordSchema = require_provider.PuzzleCaptchaRecordSchema;
19
+ exports.PuzzleRenderSettingsSchema = require_client.PuzzleRenderSettingsSchema;
19
20
  exports.SESSION_PROJECTION = require_provider.SESSION_PROJECTION;
20
21
  exports.ScheduledTaskRecordSchema = require_provider.ScheduledTaskRecordSchema;
21
22
  exports.ScheduledTaskSchema = require_provider.ScheduledTaskSchema;
@@ -70,6 +70,55 @@ var IPValidationRulesSchema = new mongoose.Schema({
70
70
  default: void 0
71
71
  }
72
72
  });
73
+ var PuzzleRenderSettingsSchema = new mongoose.Schema({
74
+ decoyCount: {
75
+ type: Number,
76
+ min: 0,
77
+ max: 200,
78
+ required: false
79
+ },
80
+ decoyEdgeDarkness: {
81
+ type: Number,
82
+ min: 0,
83
+ max: 40,
84
+ required: false
85
+ },
86
+ decoyBodyBrightness: {
87
+ type: Number,
88
+ min: -20,
89
+ max: 20,
90
+ required: false
91
+ },
92
+ decoyHoleDarken: {
93
+ type: Number,
94
+ min: 0,
95
+ max: 1,
96
+ required: false
97
+ },
98
+ holeDarken: {
99
+ type: Number,
100
+ min: 0,
101
+ max: 1,
102
+ required: false
103
+ },
104
+ pieceScale: {
105
+ type: new mongoose.Schema({
106
+ min: {
107
+ type: Number,
108
+ min: .05,
109
+ max: .95,
110
+ required: false
111
+ },
112
+ max: {
113
+ type: Number,
114
+ min: .05,
115
+ max: .95,
116
+ required: false
117
+ }
118
+ }, { _id: false }),
119
+ required: false
120
+ }
121
+ }, { _id: false });
73
122
  var TrafficCategoryPolicySchema = new mongoose.Schema({
74
123
  action: {
75
124
  type: String,
@@ -92,6 +141,10 @@ var TrafficCategoryPolicySchema = new mongoose.Schema({
92
141
  puzzleTolerance: {
93
142
  type: Number,
94
143
  required: false
144
+ },
145
+ puzzle: {
146
+ type: PuzzleRenderSettingsSchema,
147
+ required: false
95
148
  }
96
149
  }, { _id: false });
97
150
  var UserSettingsSchema = new mongoose.Schema({
@@ -147,6 +200,16 @@ var UserSettingsSchema = new mongoose.Schema({
147
200
  type: Number,
148
201
  required: false
149
202
  },
203
+ puzzleMaxDifficulty: {
204
+ type: Number,
205
+ min: 0,
206
+ max: _prosopo_types.puzzleMaxDifficultyMax,
207
+ required: false
208
+ },
209
+ puzzle: {
210
+ type: PuzzleRenderSettingsSchema,
211
+ required: false
212
+ },
150
213
  ipValidationRules: IPValidationRulesSchema,
151
214
  domains: {
152
215
  type: [String],
@@ -220,7 +283,7 @@ var UserSettingsSchema = new mongoose.Schema({
220
283
  type: Number,
221
284
  min: 0,
222
285
  max: 1,
223
- default: 0
286
+ default: _prosopo_types.trafficFilterAbuserScoreThresholdDefault
224
287
  },
225
288
  datacenter: {
226
289
  type: TrafficCategoryPolicySchema,
@@ -327,6 +390,7 @@ var TableNames = /* @__PURE__ */ function(TableNames) {
327
390
  //#endregion
328
391
  exports.AccountSchema = AccountSchema;
329
392
  exports.IPValidationRulesSchema = IPValidationRulesSchema;
393
+ exports.PuzzleRenderSettingsSchema = PuzzleRenderSettingsSchema;
330
394
  exports.TableNames = TableNames;
331
395
  exports.TrafficCategoryPolicySchema = TrafficCategoryPolicySchema;
332
396
  exports.UserDataSchema = UserDataSchema;
@@ -15,6 +15,7 @@ exports.DecisionMachineArtifactRecordSchema = require_provider.DecisionMachineAr
15
15
  exports.IPValidationRulesSchema = require_client.IPValidationRulesSchema;
16
16
  exports.PoWCaptchaRecordSchema = require_provider.PoWCaptchaRecordSchema;
17
17
  exports.PuzzleCaptchaRecordSchema = require_provider.PuzzleCaptchaRecordSchema;
18
+ exports.PuzzleRenderSettingsSchema = require_client.PuzzleRenderSettingsSchema;
18
19
  exports.SESSION_PROJECTION = require_provider.SESSION_PROJECTION;
19
20
  exports.ScheduledTaskRecordSchema = require_provider.ScheduledTaskRecordSchema;
20
21
  exports.ScheduledTaskSchema = require_provider.ScheduledTaskSchema;
@@ -1142,6 +1142,14 @@ var SessionRecordSchema = new mongoose.Schema({
1142
1142
  type: Boolean,
1143
1143
  required: false
1144
1144
  },
1145
+ agent: {
1146
+ type: Boolean,
1147
+ required: false
1148
+ },
1149
+ webBotAuthAgent: {
1150
+ type: String,
1151
+ required: false
1152
+ },
1145
1153
  simdReadings: {
1146
1154
  type: mongoose.Schema.Types.Mixed,
1147
1155
  required: false
@@ -1498,6 +1506,7 @@ var SESSION_PROJECTION = {
1498
1506
  iframeUrl: 1,
1499
1507
  clientMetaData: 1,
1500
1508
  captchaType: 1,
1509
+ serverChecked: 1,
1501
1510
  synNs: 1,
1502
1511
  synackNs: 1,
1503
1512
  ackNs: 1,
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "./_virtual/_rolldown/runtime.js";
2
- import { AccountSchema, IPValidationRulesSchema, TableNames, TrafficCategoryPolicySchema, UserDataSchema, UserSettingsSchema } from "./types/client.js";
2
+ import { AccountSchema, IPValidationRulesSchema, PuzzleRenderSettingsSchema, TableNames, TrafficCategoryPolicySchema, UserDataSchema, UserSettingsSchema } from "./types/client.js";
3
3
  import { CaptchaRecordSchema, ClientContextEntropyRecordSchema, ClientMetaDataRecordSchemaObj, ClientRecordSchema, CompositeIpAddressRecordSchemaObj, DatasetRecordSchema, DecisionMachineArtifactRecordSchema, PoWCaptchaRecordSchema, PuzzleCaptchaRecordSchema, SESSION_PROJECTION, ScheduledTaskRecordSchema, ScheduledTaskSchema, SessionRecordSchema, SolutionRecordSchema, UserCommitmentRecordSchema, UserSolutionRecordSchema } from "./types/provider.js";
4
4
  import { StoredPoWCaptchaRecordSchema, StoredPuzzleCaptchaRecordSchema, StoredSessionRecordSchema, StoredUserCommitmentRecordSchema } from "./types/captcha.js";
5
5
  import { SpamEmailDomainRecordSchema } from "./types/spamEmailDomain.js";
6
6
  import { BannedDomainRecordSchema } from "./types/bannedDomain.js";
7
- export { AccountSchema, BannedDomainRecordSchema, CaptchaRecordSchema, ClientContextEntropyRecordSchema, ClientMetaDataRecordSchemaObj, ClientRecordSchema, CompositeIpAddressRecordSchemaObj, DatasetRecordSchema, DecisionMachineArtifactRecordSchema, IPValidationRulesSchema, PoWCaptchaRecordSchema, PuzzleCaptchaRecordSchema, SESSION_PROJECTION, ScheduledTaskRecordSchema, ScheduledTaskSchema, SessionRecordSchema, SolutionRecordSchema, SpamEmailDomainRecordSchema, StoredPoWCaptchaRecordSchema, StoredPuzzleCaptchaRecordSchema, StoredSessionRecordSchema, StoredUserCommitmentRecordSchema, TableNames, TrafficCategoryPolicySchema, UserCommitmentRecordSchema, UserDataSchema, UserSettingsSchema, UserSolutionRecordSchema };
7
+ export { AccountSchema, BannedDomainRecordSchema, CaptchaRecordSchema, ClientContextEntropyRecordSchema, ClientMetaDataRecordSchemaObj, ClientRecordSchema, CompositeIpAddressRecordSchemaObj, DatasetRecordSchema, DecisionMachineArtifactRecordSchema, IPValidationRulesSchema, PoWCaptchaRecordSchema, PuzzleCaptchaRecordSchema, PuzzleRenderSettingsSchema, SESSION_PROJECTION, ScheduledTaskRecordSchema, ScheduledTaskSchema, SessionRecordSchema, SolutionRecordSchema, SpamEmailDomainRecordSchema, StoredPoWCaptchaRecordSchema, StoredPuzzleCaptchaRecordSchema, StoredSessionRecordSchema, StoredUserCommitmentRecordSchema, TableNames, TrafficCategoryPolicySchema, UserCommitmentRecordSchema, UserDataSchema, UserSettingsSchema, UserSolutionRecordSchema };