@ttt-productions/ttt-core 0.79.81 → 0.79.84
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/dist/doc-schemas/media-assets.d.ts +3 -3
- package/dist/doc-schemas/media-copy-intents.d.ts +2 -2
- package/dist/doc-schemas/moderation.d.ts +1 -1
- package/dist/doc-schemas/ncii/requests.d.ts +1 -1
- package/dist/doc-schemas/payments.d.ts +2 -2
- package/dist/doc-schemas/public-documents.d.ts +122 -100
- package/dist/doc-schemas/public-documents.d.ts.map +1 -1
- package/dist/doc-schemas/public-documents.js +16 -8
- package/dist/doc-schemas/public-documents.js.map +1 -1
- package/dist/doc-schemas/registry.d.ts +10 -10
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/doc-schemas/registry.js +10 -12
- package/dist/doc-schemas/registry.js.map +1 -1
- package/dist/doc-schemas/safety/case.d.ts +3 -3
- package/dist/doc-schemas/safety/evidence.d.ts +4 -4
- package/dist/doc-schemas/safety/foundation.d.ts +2 -2
- package/dist/doc-schemas/safety/holds.d.ts +1 -1
- package/dist/media/hall-library-target-fields.d.ts +14 -2
- package/dist/media/hall-library-target-fields.d.ts.map +1 -1
- package/dist/media/hall-library-target-fields.js +20 -3
- package/dist/media/hall-library-target-fields.js.map +1 -1
- package/dist/schemas/admin.d.ts +2 -2
- package/dist/schemas/auditions.d.ts +2 -2
- package/dist/schemas/safety.d.ts +12 -12
- package/package.json +1 -1
|
@@ -57,8 +57,8 @@ export type ContentMediaKind = z.infer<typeof ContentMediaKindSchema>;
|
|
|
57
57
|
export declare const MEDIA_VARIANT_KEYS: readonly ["full", "medium", "small", "main", "poster"];
|
|
58
58
|
export declare const MediaVariantKeySchema: z.ZodEnum<{
|
|
59
59
|
full: "full";
|
|
60
|
-
poster: "poster";
|
|
61
60
|
small: "small";
|
|
61
|
+
poster: "poster";
|
|
62
62
|
medium: "medium";
|
|
63
63
|
main: "main";
|
|
64
64
|
}>;
|
|
@@ -101,8 +101,8 @@ export declare const MediaOriginLineageV1Schema: z.ZodObject<{
|
|
|
101
101
|
originalSha256: z.ZodOptional<z.ZodString>;
|
|
102
102
|
variantSha256s: z.ZodRecord<z.ZodEnum<{
|
|
103
103
|
full: "full";
|
|
104
|
-
poster: "poster";
|
|
105
104
|
small: "small";
|
|
105
|
+
poster: "poster";
|
|
106
106
|
medium: "medium";
|
|
107
107
|
main: "main";
|
|
108
108
|
}> & z.core.$partial, z.ZodString>;
|
|
@@ -481,8 +481,8 @@ export declare const MediaAssetSchema: z.ZodObject<{
|
|
|
481
481
|
originalSha256: z.ZodOptional<z.ZodString>;
|
|
482
482
|
variantSha256s: z.ZodRecord<z.ZodEnum<{
|
|
483
483
|
full: "full";
|
|
484
|
-
poster: "poster";
|
|
485
484
|
small: "small";
|
|
485
|
+
poster: "poster";
|
|
486
486
|
medium: "medium";
|
|
487
487
|
main: "main";
|
|
488
488
|
}> & z.core.$partial, z.ZodString>;
|
|
@@ -33,8 +33,8 @@ export declare const MediaAssetCopyIntentSchema: z.ZodObject<{
|
|
|
33
33
|
ownerId: z.ZodString;
|
|
34
34
|
variantKeys: z.ZodArray<z.ZodEnum<{
|
|
35
35
|
full: "full";
|
|
36
|
-
poster: "poster";
|
|
37
36
|
small: "small";
|
|
37
|
+
poster: "poster";
|
|
38
38
|
medium: "medium";
|
|
39
39
|
main: "main";
|
|
40
40
|
}>>;
|
|
@@ -93,8 +93,8 @@ export declare const MediaCopyIntentSchema: z.ZodDiscriminatedUnion<[z.ZodObject
|
|
|
93
93
|
ownerId: z.ZodString;
|
|
94
94
|
variantKeys: z.ZodArray<z.ZodEnum<{
|
|
95
95
|
full: "full";
|
|
96
|
-
poster: "poster";
|
|
97
96
|
small: "small";
|
|
97
|
+
poster: "poster";
|
|
98
98
|
medium: "medium";
|
|
99
99
|
main: "main";
|
|
100
100
|
}>>;
|
|
@@ -33,8 +33,8 @@ export declare const ContentViolationSchema: z.ZodObject<{
|
|
|
33
33
|
userId: z.ZodString;
|
|
34
34
|
fileType: z.ZodString;
|
|
35
35
|
violationType: z.ZodOptional<z.ZodEnum<{
|
|
36
|
-
media: "media";
|
|
37
36
|
text: "text";
|
|
37
|
+
media: "media";
|
|
38
38
|
}>>;
|
|
39
39
|
reason: z.ZodString;
|
|
40
40
|
timestamp: z.ZodNumber;
|
|
@@ -13,6 +13,7 @@ export declare const TakeItDownRequestRootV1Schema: z.ZodObject<{
|
|
|
13
13
|
workProject: "workProject";
|
|
14
14
|
workRealm: "workRealm";
|
|
15
15
|
audition: "audition";
|
|
16
|
+
url: "url";
|
|
16
17
|
username: "username";
|
|
17
18
|
mediaAsset: "mediaAsset";
|
|
18
19
|
hallItem: "hallItem";
|
|
@@ -26,7 +27,6 @@ export declare const TakeItDownRequestRootV1Schema: z.ZodObject<{
|
|
|
26
27
|
guildInviteMessage: "guildInviteMessage";
|
|
27
28
|
conversationFile: "conversationFile";
|
|
28
29
|
guildChatMessage: "guildChatMessage";
|
|
29
|
-
url: "url";
|
|
30
30
|
additionalText: "additionalText";
|
|
31
31
|
}>;
|
|
32
32
|
surfaceLabel: z.ZodString;
|
|
@@ -10,8 +10,8 @@ export type PledgeRefundState = z.infer<typeof PledgeRefundStateSchema>;
|
|
|
10
10
|
/** Where a chargeback dispute stands: `underReview` while open, then `won` or `lost` once closed. */
|
|
11
11
|
export declare const PLEDGE_DISPUTE_STATES: readonly ["none", "underReview", "won", "lost"];
|
|
12
12
|
export declare const PledgeDisputeStateSchema: z.ZodEnum<{
|
|
13
|
-
underReview: "underReview";
|
|
14
13
|
none: "none";
|
|
14
|
+
underReview: "underReview";
|
|
15
15
|
won: "won";
|
|
16
16
|
lost: "lost";
|
|
17
17
|
}>;
|
|
@@ -78,8 +78,8 @@ export declare const PledgePaymentSchema: z.ZodObject<{
|
|
|
78
78
|
partial: "partial";
|
|
79
79
|
}>;
|
|
80
80
|
disputeState: z.ZodEnum<{
|
|
81
|
-
underReview: "underReview";
|
|
82
81
|
none: "none";
|
|
82
|
+
underReview: "underReview";
|
|
83
83
|
won: "won";
|
|
84
84
|
lost: "lost";
|
|
85
85
|
}>;
|
|
@@ -238,63 +238,52 @@ export declare const PUBLIC_DOCUMENT_CONTENT_SCHEMAS: {
|
|
|
238
238
|
};
|
|
239
239
|
/** The content of document `D`. */
|
|
240
240
|
export type PublicDocumentContent<D extends PublicDocumentId = PublicDocumentId> = z.infer<(typeof PUBLIC_DOCUMENT_CONTENT_SCHEMAS)[D]>;
|
|
241
|
-
/**
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
hallWingType: z.ZodOptional<z.ZodEnum<{
|
|
281
|
-
entertainment: "entertainment";
|
|
282
|
-
educational: "educational";
|
|
283
|
-
newsPolitical: "newsPolitical";
|
|
284
|
-
}>>;
|
|
285
|
-
id: z.ZodString;
|
|
286
|
-
title: z.ZodString;
|
|
287
|
-
description: z.ZodString;
|
|
288
|
-
group: z.ZodEnum<{
|
|
241
|
+
/**
|
|
242
|
+
* Each document's current projection (`_appConfig/{documentId}`): its path and its schema in one
|
|
243
|
+
* entry, so a writer that looks the document up once writes that document with that document's
|
|
244
|
+
* schema. COLLECTION_SCHEMAS registers each projection's schema from here.
|
|
245
|
+
*/
|
|
246
|
+
export declare const PUBLIC_DOCUMENT_PROJECTIONS: {
|
|
247
|
+
readonly termsOfService: {
|
|
248
|
+
path: () => [string, string];
|
|
249
|
+
schema: z.ZodObject<{
|
|
250
|
+
version: z.ZodNumber;
|
|
251
|
+
lastUpdated: z.ZodNumber;
|
|
252
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
253
|
+
id: z.ZodString;
|
|
254
|
+
heading: z.ZodString;
|
|
255
|
+
level: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
|
|
256
|
+
body: z.ZodString;
|
|
257
|
+
order: z.ZodNumber;
|
|
258
|
+
}, z.core.$strip>>;
|
|
259
|
+
}, z.core.$strip>;
|
|
260
|
+
};
|
|
261
|
+
readonly privacyPolicy: {
|
|
262
|
+
path: () => [string, string];
|
|
263
|
+
schema: z.ZodObject<{
|
|
264
|
+
version: z.ZodNumber;
|
|
265
|
+
lastUpdated: z.ZodNumber;
|
|
266
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
267
|
+
id: z.ZodString;
|
|
268
|
+
heading: z.ZodString;
|
|
269
|
+
level: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
|
|
270
|
+
body: z.ZodString;
|
|
271
|
+
order: z.ZodNumber;
|
|
272
|
+
}, z.core.$strip>>;
|
|
273
|
+
}, z.core.$strip>;
|
|
274
|
+
};
|
|
275
|
+
readonly rulesAndAgreements: {
|
|
276
|
+
path: () => [string, string];
|
|
277
|
+
schema: z.ZodObject<{
|
|
278
|
+
intro: z.ZodOptional<z.ZodString>;
|
|
279
|
+
groupIntentions: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
289
280
|
workRealm: "workRealm";
|
|
290
281
|
generic: "generic";
|
|
291
282
|
merchandising: "merchandising";
|
|
292
283
|
hallWing: "hallWing";
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
intention: z.ZodOptional<z.ZodString>;
|
|
297
|
-
points: z.ZodArray<z.ZodObject<{
|
|
284
|
+
}> & z.core.$partial, z.ZodString>>;
|
|
285
|
+
rules: z.ZodArray<z.ZodObject<{
|
|
286
|
+
order: z.ZodNumber;
|
|
298
287
|
workProjectType: z.ZodOptional<z.ZodEnum<{
|
|
299
288
|
Tales: "Tales";
|
|
300
289
|
Tunes: "Tunes";
|
|
@@ -306,58 +295,91 @@ export declare const PUBLIC_DOCUMENT_PROJECTION_SCHEMAS: {
|
|
|
306
295
|
newsPolitical: "newsPolitical";
|
|
307
296
|
}>>;
|
|
308
297
|
id: z.ZodString;
|
|
309
|
-
|
|
298
|
+
title: z.ZodString;
|
|
299
|
+
description: z.ZodString;
|
|
300
|
+
group: z.ZodEnum<{
|
|
301
|
+
workRealm: "workRealm";
|
|
302
|
+
generic: "generic";
|
|
303
|
+
merchandising: "merchandising";
|
|
304
|
+
hallWing: "hallWing";
|
|
305
|
+
}>;
|
|
310
306
|
}, z.core.$strip>>;
|
|
307
|
+
agreements: z.ZodObject<{
|
|
308
|
+
intention: z.ZodOptional<z.ZodString>;
|
|
309
|
+
points: z.ZodArray<z.ZodObject<{
|
|
310
|
+
workProjectType: z.ZodOptional<z.ZodEnum<{
|
|
311
|
+
Tales: "Tales";
|
|
312
|
+
Tunes: "Tunes";
|
|
313
|
+
Television: "Television";
|
|
314
|
+
}>>;
|
|
315
|
+
hallWingType: z.ZodOptional<z.ZodEnum<{
|
|
316
|
+
entertainment: "entertainment";
|
|
317
|
+
educational: "educational";
|
|
318
|
+
newsPolitical: "newsPolitical";
|
|
319
|
+
}>>;
|
|
320
|
+
id: z.ZodString;
|
|
321
|
+
text: z.ZodString;
|
|
322
|
+
}, z.core.$strip>>;
|
|
323
|
+
}, z.core.$strip>;
|
|
324
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
325
|
+
lastUpdated: z.ZodOptional<z.ZodNumber>;
|
|
311
326
|
}, z.core.$strip>;
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
id: z.ZodString;
|
|
320
|
-
name: z.ZodString;
|
|
321
|
-
order: z.ZodNumber;
|
|
322
|
-
intention: z.ZodOptional<z.ZodString>;
|
|
323
|
-
}, z.core.$strip>>;
|
|
324
|
-
plans: z.ZodArray<z.ZodObject<{
|
|
325
|
-
id: z.ZodString;
|
|
326
|
-
title: z.ZodString;
|
|
327
|
-
description: z.ZodString;
|
|
328
|
-
groupId: z.ZodString;
|
|
329
|
-
order: z.ZodNumber;
|
|
330
|
-
}, z.core.$strip>>;
|
|
331
|
-
version: z.ZodOptional<z.ZodNumber>;
|
|
332
|
-
}, z.core.$strip>;
|
|
333
|
-
readonly dmcaPolicy: z.ZodObject<{
|
|
334
|
-
version: z.ZodNumber;
|
|
335
|
-
lastUpdated: z.ZodNumber;
|
|
336
|
-
intro: z.ZodString;
|
|
337
|
-
contactBlocks: z.ZodArray<z.ZodObject<{
|
|
338
|
-
id: z.ZodString;
|
|
339
|
-
heading: z.ZodString;
|
|
340
|
-
order: z.ZodNumber;
|
|
341
|
-
rows: z.ZodArray<z.ZodObject<{
|
|
327
|
+
};
|
|
328
|
+
readonly futurePlans: {
|
|
329
|
+
path: () => [string, string];
|
|
330
|
+
schema: z.ZodObject<{
|
|
331
|
+
lastUpdated: z.ZodNumber;
|
|
332
|
+
intro: z.ZodOptional<z.ZodString>;
|
|
333
|
+
groups: z.ZodArray<z.ZodObject<{
|
|
342
334
|
id: z.ZodString;
|
|
343
|
-
|
|
344
|
-
value: z.ZodString;
|
|
335
|
+
name: z.ZodString;
|
|
345
336
|
order: z.ZodNumber;
|
|
337
|
+
intention: z.ZodOptional<z.ZodString>;
|
|
346
338
|
}, z.core.$strip>>;
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
339
|
+
plans: z.ZodArray<z.ZodObject<{
|
|
340
|
+
id: z.ZodString;
|
|
341
|
+
title: z.ZodString;
|
|
342
|
+
description: z.ZodString;
|
|
343
|
+
groupId: z.ZodString;
|
|
344
|
+
order: z.ZodNumber;
|
|
345
|
+
}, z.core.$strip>>;
|
|
346
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
347
|
+
}, z.core.$strip>;
|
|
348
|
+
};
|
|
349
|
+
readonly dmcaPolicy: {
|
|
350
|
+
path: () => [string, string];
|
|
351
|
+
schema: z.ZodObject<{
|
|
352
|
+
version: z.ZodNumber;
|
|
353
|
+
lastUpdated: z.ZodNumber;
|
|
354
|
+
intro: z.ZodString;
|
|
355
|
+
contactBlocks: z.ZodArray<z.ZodObject<{
|
|
356
|
+
id: z.ZodString;
|
|
357
|
+
heading: z.ZodString;
|
|
358
|
+
order: z.ZodNumber;
|
|
359
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
360
|
+
id: z.ZodString;
|
|
361
|
+
label: z.ZodString;
|
|
362
|
+
value: z.ZodString;
|
|
363
|
+
order: z.ZodNumber;
|
|
364
|
+
}, z.core.$strip>>;
|
|
365
|
+
}, z.core.$strip>>;
|
|
366
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
367
|
+
id: z.ZodString;
|
|
368
|
+
heading: z.ZodString;
|
|
369
|
+
level: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
|
|
370
|
+
body: z.ZodString;
|
|
371
|
+
order: z.ZodNumber;
|
|
372
|
+
}, z.core.$strip>>;
|
|
373
|
+
}, z.core.$strip>;
|
|
374
|
+
};
|
|
375
|
+
readonly takeItDownPageCopy: {
|
|
376
|
+
path: () => [string, string];
|
|
377
|
+
schema: z.ZodObject<{
|
|
378
|
+
version: z.ZodNumber;
|
|
379
|
+
lastUpdated: z.ZodNumber;
|
|
380
|
+
strings: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
381
|
+
}, z.core.$strip>;
|
|
382
|
+
};
|
|
361
383
|
};
|
|
362
384
|
/**
|
|
363
385
|
* The current projection the publish writes for document `D`: its content plus the version and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-documents.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/public-documents.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"public-documents.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/public-documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
// Acceptance HISTORY lives only in the append-only `publicDocuments.accepted` audit events.
|
|
17
17
|
import { z } from 'zod';
|
|
18
18
|
import { SPECIAL_DOCS } from '../paths/collections.js';
|
|
19
|
+
import { PATH_BUILDERS } from '../paths/path-builders.js';
|
|
19
20
|
import { PUBLIC_DOCUMENT_IDS } from '../constants/public-documents.js';
|
|
20
21
|
import { LegalPageDocumentSchema, RulesAndAgreementsSchema, FuturePlansDocumentSchema, TakeItDownPageCopySchema, DmcaPolicyDocumentSchema, } from './content.js';
|
|
21
22
|
import { LegalReviewNoticeRevisionSchema } from './legal-review-notice.js';
|
|
@@ -62,14 +63,21 @@ export const PUBLIC_DOCUMENT_CONTENT_SCHEMAS = {
|
|
|
62
63
|
[SPECIAL_DOCS.DMCA_POLICY]: DmcaPolicyContentSchema,
|
|
63
64
|
[SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY]: TakeItDownPageCopyContentSchema,
|
|
64
65
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
66
|
+
function projection(documentId, schema) {
|
|
67
|
+
return { path: () => PATH_BUILDERS.publicDocumentProjection(documentId), schema };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Each document's current projection (`_appConfig/{documentId}`): its path and its schema in one
|
|
71
|
+
* entry, so a writer that looks the document up once writes that document with that document's
|
|
72
|
+
* schema. COLLECTION_SCHEMAS registers each projection's schema from here.
|
|
73
|
+
*/
|
|
74
|
+
export const PUBLIC_DOCUMENT_PROJECTIONS = {
|
|
75
|
+
[SPECIAL_DOCS.TERMS_PAGE]: projection(SPECIAL_DOCS.TERMS_PAGE, LegalPageDocumentSchema),
|
|
76
|
+
[SPECIAL_DOCS.PRIVACY_PAGE]: projection(SPECIAL_DOCS.PRIVACY_PAGE, LegalPageDocumentSchema),
|
|
77
|
+
[SPECIAL_DOCS.RULES_AND_AGREEMENTS]: projection(SPECIAL_DOCS.RULES_AND_AGREEMENTS, RulesAndAgreementsSchema),
|
|
78
|
+
[SPECIAL_DOCS.FUTURE_PLANS]: projection(SPECIAL_DOCS.FUTURE_PLANS, FuturePlansDocumentSchema),
|
|
79
|
+
[SPECIAL_DOCS.DMCA_POLICY]: projection(SPECIAL_DOCS.DMCA_POLICY, DmcaPolicyDocumentSchema),
|
|
80
|
+
[SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY]: projection(SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY, TakeItDownPageCopySchema),
|
|
73
81
|
};
|
|
74
82
|
// One discriminated branch per document, so a version or draft's `content` is typed by its
|
|
75
83
|
// `documentId`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-documents.js","sourceRoot":"","sources":["../../src/doc-schemas/public-documents.ts"],"names":[],"mappings":"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","sourcesContent":["// Versioned public documents — the Firestore contracts of the release system.\n//\n// _appConfig/{documentId} current projection (public; the\n// existing page readers read it)\n// publicDocuments/{documentId}/publicDocumentVersions/v{n} immutable published version\n// publicDocumentDrafts/{documentId} the private working copy\n// publicDocumentReleases/{releaseId} one release record per publish\n// _appConfig/app.publicDocumentVersions the version block every session\n// already reads live\n// userProfiles/{uid}/privateData/{uid}.publicDocumentAcceptance\n// what the person last accepted\n//\n// All are backend-written. Versions are whole numbers v1, v2, … per document, assigned by the\n// one publish transaction; a correction is a new version, never an edit. \"Require acceptance\"\n// is recorded on the release and in the version block — never as a second version number.\n// Acceptance HISTORY lives only in the append-only `publicDocuments.accepted` audit events.\n\nimport { z } from 'zod';\nimport { SPECIAL_DOCS } from '../paths/collections.js';\nimport { PUBLIC_DOCUMENT_IDS, type PublicDocumentId } from '../constants/public-documents.js';\nimport {\n LegalPageDocumentSchema,\n RulesAndAgreementsSchema,\n FuturePlansDocumentSchema,\n TakeItDownPageCopySchema,\n DmcaPolicyDocumentSchema,\n} from './content.js';\nimport { LegalReviewNoticeRevisionSchema } from './legal-review-notice.js';\n\nexport const PublicDocumentIdSchema = z.enum(PUBLIC_DOCUMENT_IDS);\n\n/** A published version number: v1 is the first. */\nexport const PublicDocumentVersionNumberSchema = z.number().int().positive();\n\n/**\n * A version reference where 0 means \"none yet\" (never accepted / never required / no base / never\n * published). Every recorded \"which version was accepted\" field derives from it.\n */\nexport const PublicDocumentVersionOrNoneSchema = z.number().int().nonnegative();\n\n/** An acceptance level: 0 = nothing required / nothing accepted; each requiring release adds 1. */\nexport const PublicDocumentAcceptanceLevelSchema = z.number().int().nonnegative();\n\n/** A document paired with one of its published versions. */\nexport const PublicDocumentVersionRefSchema = z\n .object({\n documentId: PublicDocumentIdSchema,\n version: PublicDocumentVersionNumberSchema,\n })\n .strict();\nexport type PublicDocumentVersionRef = z.infer<typeof PublicDocumentVersionRefSchema>;\n\n// ── Content ──────────────────────────────────────────────────────────────────\n// A document's CONTENT is its current-projection shape minus `version` / `lastUpdated`, so the\n// existing page readers, the working copy, and the immutable version all share one shape.\n\nexport const LegalPageContentSchema = LegalPageDocumentSchema.pick({ sections: true });\nexport const RulesAndAgreementsContentSchema = RulesAndAgreementsSchema.pick({\n intro: true,\n groupIntentions: true,\n rules: true,\n agreements: true,\n});\nexport const FuturePlansContentSchema = FuturePlansDocumentSchema.pick({ intro: true, groups: true, plans: true });\nexport const TakeItDownPageCopyContentSchema = TakeItDownPageCopySchema.pick({ strings: true });\nexport const DmcaPolicyContentSchema = DmcaPolicyDocumentSchema.pick({\n intro: true,\n contactBlocks: true,\n sections: true,\n});\n\n/** Each document's stored content schema. */\nexport const PUBLIC_DOCUMENT_CONTENT_SCHEMAS = {\n [SPECIAL_DOCS.TERMS_PAGE]: LegalPageContentSchema,\n [SPECIAL_DOCS.PRIVACY_PAGE]: LegalPageContentSchema,\n [SPECIAL_DOCS.RULES_AND_AGREEMENTS]: RulesAndAgreementsContentSchema,\n [SPECIAL_DOCS.FUTURE_PLANS]: FuturePlansContentSchema,\n [SPECIAL_DOCS.DMCA_POLICY]: DmcaPolicyContentSchema,\n [SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY]: TakeItDownPageCopyContentSchema,\n} as const satisfies Record<PublicDocumentId, z.ZodType>;\n\n/** The content of document `D`. */\nexport type PublicDocumentContent<D extends PublicDocumentId = PublicDocumentId> = z.infer<\n (typeof PUBLIC_DOCUMENT_CONTENT_SCHEMAS)[D]\n>;\n\n/** Each document's current-projection schema (`_appConfig/{documentId}`). */\nexport const PUBLIC_DOCUMENT_PROJECTION_SCHEMAS = {\n [SPECIAL_DOCS.TERMS_PAGE]: LegalPageDocumentSchema,\n [SPECIAL_DOCS.PRIVACY_PAGE]: LegalPageDocumentSchema,\n [SPECIAL_DOCS.RULES_AND_AGREEMENTS]: RulesAndAgreementsSchema,\n [SPECIAL_DOCS.FUTURE_PLANS]: FuturePlansDocumentSchema,\n [SPECIAL_DOCS.DMCA_POLICY]: DmcaPolicyDocumentSchema,\n [SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY]: TakeItDownPageCopySchema,\n} as const satisfies Record<PublicDocumentId, z.ZodType>;\n\n/**\n * The current projection the publish writes for document `D`: its content plus the version and\n * the publish time. Assignable to the page's existing document type.\n */\nexport type PublicDocumentProjection<D extends PublicDocumentId = PublicDocumentId> =\n PublicDocumentContent<D> & { version: number; lastUpdated: number };\n\n// One discriminated branch per document, so a version or draft's `content` is typed by its\n// `documentId`.\nfunction perDocument<const S extends z.ZodRawShape>(shape: S) {\n const branch = <const D extends PublicDocumentId>(documentId: D) =>\n z.object({ documentId: z.literal(documentId), content: PUBLIC_DOCUMENT_CONTENT_SCHEMAS[documentId], ...shape });\n return z.discriminatedUnion('documentId', [\n branch(SPECIAL_DOCS.TERMS_PAGE),\n branch(SPECIAL_DOCS.PRIVACY_PAGE),\n branch(SPECIAL_DOCS.RULES_AND_AGREEMENTS),\n branch(SPECIAL_DOCS.FUTURE_PLANS),\n branch(SPECIAL_DOCS.DMCA_POLICY),\n branch(SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY),\n ]);\n}\n\n// ── Immutable version ────────────────────────────────────────────────────────\n\n/**\n * `publicDocuments/{documentId}/publicDocumentVersions/v{version}` — one published version,\n * written once by the publish transaction and never edited: the full content, the version,\n * the release that published it, the publisher's uid, and the server time.\n */\nexport const PublicDocumentVersionSchema = perDocument({\n version: PublicDocumentVersionNumberSchema,\n releaseId: z.string().min(1),\n publishedBy: z.string().min(1),\n publishedAt: z.number(),\n});\nexport type PublicDocumentVersion = z.infer<typeof PublicDocumentVersionSchema>;\n\n// ── Working copy ─────────────────────────────────────────────────────────────\n\n/** A working copy's revision: its first save writes 1 and every later save the next number. */\nexport const PublicDocumentDraftRevisionSchema = z.number().int().positive();\n\n/** A working-copy revision where 0 means \"no working copy\". */\nexport const PublicDocumentDraftRevisionOrNoneSchema = z.number().int().nonnegative();\n\n/**\n * `publicDocumentDrafts/{documentId}` — the one private working copy of a document, saved from\n * its Admin editor. `baseVersion` is the published version the edit started from (0 when the\n * document has never been published): the publish rejects a draft whose base is no longer the\n * current version, and one whose content equals the current version. `revision` counts its\n * saves: a save or a publish names the revision it saw and is refused when another admin's save\n * has moved it since, so one admin's save never silently replaces another's.\n */\nexport const PublicDocumentDraftSchema = perDocument({\n baseVersion: PublicDocumentVersionOrNoneSchema,\n revision: PublicDocumentDraftRevisionSchema,\n savedBy: z.string().min(1),\n savedAt: z.number(),\n});\nexport type PublicDocumentDraft = z.infer<typeof PublicDocumentDraftSchema>;\n\n// ── Release record ───────────────────────────────────────────────────────────\n\n/**\n * `publicDocumentReleases/{releaseId}` — one record per publish: which documents moved to\n * which versions, whether the release requires acceptance, the required-acceptance level in\n * force after it (raised by one only when it requires acceptance), and who published it when.\n */\nexport const PublicDocumentReleaseSchema = z.object({\n releaseId: z.string().min(1),\n documents: z.array(PublicDocumentVersionRefSchema).min(1),\n requireAcceptance: z.boolean(),\n requiredAcceptanceLevel: PublicDocumentAcceptanceLevelSchema,\n publishedBy: z.string().min(1),\n publishedAt: z.number(),\n});\nexport type PublicDocumentRelease = z.infer<typeof PublicDocumentReleaseSchema>;\n\n// ── Version block on _appConfig/app ──────────────────────────────────────────\n\n/**\n * One document's entry in the version block: its current published version and the latest\n * version a release REQUIRED acceptance of (0 when none has).\n */\nexport const PublicDocumentVersionStateSchema = z\n .object({\n currentVersion: PublicDocumentVersionNumberSchema,\n requiredVersion: PublicDocumentVersionOrNoneSchema,\n })\n .strict()\n .refine((state) => state.requiredVersion <= state.currentVersion, {\n message: 'requiredVersion cannot exceed currentVersion',\n });\nexport type PublicDocumentVersionState = z.infer<typeof PublicDocumentVersionStateSchema>;\n\n/**\n * `_appConfig/app.publicDocumentVersions` — written only by the publish transaction. A document\n * never published has no entry. `requiredAcceptanceLevel` rises by one with every release that\n * requires acceptance; a session whose accepted level is below it is asked to accept.\n */\nexport const PublicDocumentVersionBlockSchema = z\n .object({\n documents: z.partialRecord(PublicDocumentIdSchema, PublicDocumentVersionStateSchema),\n requiredAcceptanceLevel: PublicDocumentAcceptanceLevelSchema,\n })\n .strict();\nexport type PublicDocumentVersionBlock = z.infer<typeof PublicDocumentVersionBlockSchema>;\n\n// ── The person's acceptance summary (private doc) ────────────────────────────\n\n/**\n * `privateData/{uid}.publicDocumentAcceptance` — the LATEST accepted version of each document\n * and the accepted level, replaced whole on every acceptance (registration or the re-acceptance\n * prompt). A document absent from `documentVersions` counts as version 0. The notice revision in\n * force at that acceptance is recorded when the notice was active. History is not kept here — it\n * is the `publicDocuments.accepted` audit events.\n */\nexport const PublicDocumentAcceptanceSchema = z\n .object({\n documentVersions: z.partialRecord(PublicDocumentIdSchema, PublicDocumentVersionOrNoneSchema),\n acceptedLevel: PublicDocumentAcceptanceLevelSchema,\n legalReviewNoticeRevision: LegalReviewNoticeRevisionSchema.optional(),\n acceptedAt: z.number(),\n })\n .strict();\nexport type PublicDocumentAcceptance = z.infer<typeof PublicDocumentAcceptanceSchema>;\n"]}
|
|
1
|
+
{"version":3,"file":"public-documents.js","sourceRoot":"","sources":["../../src/doc-schemas/public-documents.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,8FAA8F;AAC9F,6FAA6F;AAC7F,0FAA0F;AAC1F,uFAAuF;AACvF,6FAA6F;AAC7F,8FAA8F;AAC9F,iFAAiF;AACjF,kEAAkE;AAClE,4FAA4F;AAC5F,EAAE;AACF,8FAA8F;AAC9F,8FAA8F;AAC9F,0FAA0F;AAC1F,4FAA4F;AAE5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAyB,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAElE,mDAAmD;AACnD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AAEhF,mGAAmG;AACnG,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AAElF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC;KAC5C,MAAM,CAAC;IACN,UAAU,EAAE,sBAAsB;IAClC,OAAO,EAAE,iCAAiC;CAC3C,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,gFAAgF;AAChF,+FAA+F;AAC/F,0FAA0F;AAE1F,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC,IAAI,CAAC;IAC3E,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnH,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC,IAAI,CAAC;IACnE,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,sBAAsB;IACjD,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,sBAAsB;IACnD,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,+BAA+B;IACpE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,wBAAwB;IACrD,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,uBAAuB;IACnD,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,+BAA+B;CAChB,CAAC;AAOzD,SAAS,UAAU,CAA8D,UAAa,EAAE,MAAS;IACvG,OAAO,EAAE,IAAI,EAAE,GAAqB,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;AACtG,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,uBAAuB,CAAC;IACvF,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAC3F,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;IAC5G,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,yBAAyB,CAAC;IAC7F,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC1F,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;CACb,CAAC;AAStG,2FAA2F;AAC3F,gBAAgB;AAChB,SAAS,WAAW,CAAgC,KAAQ;IAC1D,MAAM,MAAM,GAAG,CAAmC,UAAa,EAAE,EAAE,CACjE,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,+BAA+B,CAAC,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAClH,OAAO,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACxC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QAC/B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;QACjC,MAAM,CAAC,YAAY,CAAC,oBAAoB,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;QACjC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC;QAChC,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;IACrD,OAAO,EAAE,iCAAiC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,gFAAgF;AAEhF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE7E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AAEtF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;IACnD,WAAW,EAAE,iCAAiC;IAC9C,QAAQ,EAAE,iCAAiC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAGH,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC9B,uBAAuB,EAAE,mCAAmC;IAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC;KAC9C,MAAM,CAAC;IACN,cAAc,EAAE,iCAAiC;IACjD,eAAe,EAAE,iCAAiC;CACnD,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,cAAc,EAAE;IAChE,OAAO,EAAE,8CAA8C;CACxD,CAAC,CAAC;AAGL;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC;KAC9C,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,sBAAsB,EAAE,gCAAgC,CAAC;IACpF,uBAAuB,EAAE,mCAAmC;CAC7D,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC;KAC5C,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,aAAa,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;IAC5F,aAAa,EAAE,mCAAmC;IAClD,yBAAyB,EAAE,+BAA+B,CAAC,QAAQ,EAAE;IACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC;KACD,MAAM,EAAE,CAAC","sourcesContent":["// Versioned public documents — the Firestore contracts of the release system.\n//\n// _appConfig/{documentId} current projection (public; the\n// existing page readers read it)\n// publicDocuments/{documentId}/publicDocumentVersions/v{n} immutable published version\n// publicDocumentDrafts/{documentId} the private working copy\n// publicDocumentReleases/{releaseId} one release record per publish\n// _appConfig/app.publicDocumentVersions the version block every session\n// already reads live\n// userProfiles/{uid}/privateData/{uid}.publicDocumentAcceptance\n// what the person last accepted\n//\n// All are backend-written. Versions are whole numbers v1, v2, … per document, assigned by the\n// one publish transaction; a correction is a new version, never an edit. \"Require acceptance\"\n// is recorded on the release and in the version block — never as a second version number.\n// Acceptance HISTORY lives only in the append-only `publicDocuments.accepted` audit events.\n\nimport { z } from 'zod';\nimport { SPECIAL_DOCS } from '../paths/collections.js';\nimport { PATH_BUILDERS } from '../paths/path-builders.js';\nimport { PUBLIC_DOCUMENT_IDS, type PublicDocumentId } from '../constants/public-documents.js';\nimport {\n LegalPageDocumentSchema,\n RulesAndAgreementsSchema,\n FuturePlansDocumentSchema,\n TakeItDownPageCopySchema,\n DmcaPolicyDocumentSchema,\n} from './content.js';\nimport { LegalReviewNoticeRevisionSchema } from './legal-review-notice.js';\n\nexport const PublicDocumentIdSchema = z.enum(PUBLIC_DOCUMENT_IDS);\n\n/** A published version number: v1 is the first. */\nexport const PublicDocumentVersionNumberSchema = z.number().int().positive();\n\n/**\n * A version reference where 0 means \"none yet\" (never accepted / never required / no base / never\n * published). Every recorded \"which version was accepted\" field derives from it.\n */\nexport const PublicDocumentVersionOrNoneSchema = z.number().int().nonnegative();\n\n/** An acceptance level: 0 = nothing required / nothing accepted; each requiring release adds 1. */\nexport const PublicDocumentAcceptanceLevelSchema = z.number().int().nonnegative();\n\n/** A document paired with one of its published versions. */\nexport const PublicDocumentVersionRefSchema = z\n .object({\n documentId: PublicDocumentIdSchema,\n version: PublicDocumentVersionNumberSchema,\n })\n .strict();\nexport type PublicDocumentVersionRef = z.infer<typeof PublicDocumentVersionRefSchema>;\n\n// ── Content ──────────────────────────────────────────────────────────────────\n// A document's CONTENT is its current-projection shape minus `version` / `lastUpdated`, so the\n// existing page readers, the working copy, and the immutable version all share one shape.\n\nexport const LegalPageContentSchema = LegalPageDocumentSchema.pick({ sections: true });\nexport const RulesAndAgreementsContentSchema = RulesAndAgreementsSchema.pick({\n intro: true,\n groupIntentions: true,\n rules: true,\n agreements: true,\n});\nexport const FuturePlansContentSchema = FuturePlansDocumentSchema.pick({ intro: true, groups: true, plans: true });\nexport const TakeItDownPageCopyContentSchema = TakeItDownPageCopySchema.pick({ strings: true });\nexport const DmcaPolicyContentSchema = DmcaPolicyDocumentSchema.pick({\n intro: true,\n contactBlocks: true,\n sections: true,\n});\n\n/** Each document's stored content schema. */\nexport const PUBLIC_DOCUMENT_CONTENT_SCHEMAS = {\n [SPECIAL_DOCS.TERMS_PAGE]: LegalPageContentSchema,\n [SPECIAL_DOCS.PRIVACY_PAGE]: LegalPageContentSchema,\n [SPECIAL_DOCS.RULES_AND_AGREEMENTS]: RulesAndAgreementsContentSchema,\n [SPECIAL_DOCS.FUTURE_PLANS]: FuturePlansContentSchema,\n [SPECIAL_DOCS.DMCA_POLICY]: DmcaPolicyContentSchema,\n [SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY]: TakeItDownPageCopyContentSchema,\n} as const satisfies Record<PublicDocumentId, z.ZodType>;\n\n/** The content of document `D`. */\nexport type PublicDocumentContent<D extends PublicDocumentId = PublicDocumentId> = z.infer<\n (typeof PUBLIC_DOCUMENT_CONTENT_SCHEMAS)[D]\n>;\n\nfunction projection<const D extends PublicDocumentId, const S extends z.ZodType>(documentId: D, schema: S) {\n return { path: (): [string, string] => PATH_BUILDERS.publicDocumentProjection(documentId), schema };\n}\n\n/**\n * Each document's current projection (`_appConfig/{documentId}`): its path and its schema in one\n * entry, so a writer that looks the document up once writes that document with that document's\n * schema. COLLECTION_SCHEMAS registers each projection's schema from here.\n */\nexport const PUBLIC_DOCUMENT_PROJECTIONS = {\n [SPECIAL_DOCS.TERMS_PAGE]: projection(SPECIAL_DOCS.TERMS_PAGE, LegalPageDocumentSchema),\n [SPECIAL_DOCS.PRIVACY_PAGE]: projection(SPECIAL_DOCS.PRIVACY_PAGE, LegalPageDocumentSchema),\n [SPECIAL_DOCS.RULES_AND_AGREEMENTS]: projection(SPECIAL_DOCS.RULES_AND_AGREEMENTS, RulesAndAgreementsSchema),\n [SPECIAL_DOCS.FUTURE_PLANS]: projection(SPECIAL_DOCS.FUTURE_PLANS, FuturePlansDocumentSchema),\n [SPECIAL_DOCS.DMCA_POLICY]: projection(SPECIAL_DOCS.DMCA_POLICY, DmcaPolicyDocumentSchema),\n [SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY]: projection(SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY, TakeItDownPageCopySchema),\n} as const satisfies { [D in PublicDocumentId]: { path: () => [string, string]; schema: z.ZodType } };\n\n/**\n * The current projection the publish writes for document `D`: its content plus the version and\n * the publish time. Assignable to the page's existing document type.\n */\nexport type PublicDocumentProjection<D extends PublicDocumentId = PublicDocumentId> =\n PublicDocumentContent<D> & { version: number; lastUpdated: number };\n\n// One discriminated branch per document, so a version or draft's `content` is typed by its\n// `documentId`.\nfunction perDocument<const S extends z.ZodRawShape>(shape: S) {\n const branch = <const D extends PublicDocumentId>(documentId: D) =>\n z.object({ documentId: z.literal(documentId), content: PUBLIC_DOCUMENT_CONTENT_SCHEMAS[documentId], ...shape });\n return z.discriminatedUnion('documentId', [\n branch(SPECIAL_DOCS.TERMS_PAGE),\n branch(SPECIAL_DOCS.PRIVACY_PAGE),\n branch(SPECIAL_DOCS.RULES_AND_AGREEMENTS),\n branch(SPECIAL_DOCS.FUTURE_PLANS),\n branch(SPECIAL_DOCS.DMCA_POLICY),\n branch(SPECIAL_DOCS.TAKE_IT_DOWN_PAGE_COPY),\n ]);\n}\n\n// ── Immutable version ────────────────────────────────────────────────────────\n\n/**\n * `publicDocuments/{documentId}/publicDocumentVersions/v{version}` — one published version,\n * written once by the publish transaction and never edited: the full content, the version,\n * the release that published it, the publisher's uid, and the server time.\n */\nexport const PublicDocumentVersionSchema = perDocument({\n version: PublicDocumentVersionNumberSchema,\n releaseId: z.string().min(1),\n publishedBy: z.string().min(1),\n publishedAt: z.number(),\n});\nexport type PublicDocumentVersion = z.infer<typeof PublicDocumentVersionSchema>;\n\n// ── Working copy ─────────────────────────────────────────────────────────────\n\n/** A working copy's revision: its first save writes 1 and every later save the next number. */\nexport const PublicDocumentDraftRevisionSchema = z.number().int().positive();\n\n/** A working-copy revision where 0 means \"no working copy\". */\nexport const PublicDocumentDraftRevisionOrNoneSchema = z.number().int().nonnegative();\n\n/**\n * `publicDocumentDrafts/{documentId}` — the one private working copy of a document, saved from\n * its Admin editor. `baseVersion` is the published version the edit started from (0 when the\n * document has never been published): the publish rejects a draft whose base is no longer the\n * current version, and one whose content equals the current version. `revision` counts its\n * saves: a save or a publish names the revision it saw and is refused when another admin's save\n * has moved it since, so one admin's save never silently replaces another's.\n */\nexport const PublicDocumentDraftSchema = perDocument({\n baseVersion: PublicDocumentVersionOrNoneSchema,\n revision: PublicDocumentDraftRevisionSchema,\n savedBy: z.string().min(1),\n savedAt: z.number(),\n});\nexport type PublicDocumentDraft = z.infer<typeof PublicDocumentDraftSchema>;\n\n// ── Release record ───────────────────────────────────────────────────────────\n\n/**\n * `publicDocumentReleases/{releaseId}` — one record per publish: which documents moved to\n * which versions, whether the release requires acceptance, the required-acceptance level in\n * force after it (raised by one only when it requires acceptance), and who published it when.\n */\nexport const PublicDocumentReleaseSchema = z.object({\n releaseId: z.string().min(1),\n documents: z.array(PublicDocumentVersionRefSchema).min(1),\n requireAcceptance: z.boolean(),\n requiredAcceptanceLevel: PublicDocumentAcceptanceLevelSchema,\n publishedBy: z.string().min(1),\n publishedAt: z.number(),\n});\nexport type PublicDocumentRelease = z.infer<typeof PublicDocumentReleaseSchema>;\n\n// ── Version block on _appConfig/app ──────────────────────────────────────────\n\n/**\n * One document's entry in the version block: its current published version and the latest\n * version a release REQUIRED acceptance of (0 when none has).\n */\nexport const PublicDocumentVersionStateSchema = z\n .object({\n currentVersion: PublicDocumentVersionNumberSchema,\n requiredVersion: PublicDocumentVersionOrNoneSchema,\n })\n .strict()\n .refine((state) => state.requiredVersion <= state.currentVersion, {\n message: 'requiredVersion cannot exceed currentVersion',\n });\nexport type PublicDocumentVersionState = z.infer<typeof PublicDocumentVersionStateSchema>;\n\n/**\n * `_appConfig/app.publicDocumentVersions` — written only by the publish transaction. A document\n * never published has no entry. `requiredAcceptanceLevel` rises by one with every release that\n * requires acceptance; a session whose accepted level is below it is asked to accept.\n */\nexport const PublicDocumentVersionBlockSchema = z\n .object({\n documents: z.partialRecord(PublicDocumentIdSchema, PublicDocumentVersionStateSchema),\n requiredAcceptanceLevel: PublicDocumentAcceptanceLevelSchema,\n })\n .strict();\nexport type PublicDocumentVersionBlock = z.infer<typeof PublicDocumentVersionBlockSchema>;\n\n// ── The person's acceptance summary (private doc) ────────────────────────────\n\n/**\n * `privateData/{uid}.publicDocumentAcceptance` — the LATEST accepted version of each document\n * and the accepted level, replaced whole on every acceptance (registration or the re-acceptance\n * prompt). A document absent from `documentVersions` counts as version 0. The notice revision in\n * force at that acceptance is recorded when the notice was active. History is not kept here — it\n * is the `publicDocuments.accepted` audit events.\n */\nexport const PublicDocumentAcceptanceSchema = z\n .object({\n documentVersions: z.partialRecord(PublicDocumentIdSchema, PublicDocumentVersionOrNoneSchema),\n acceptedLevel: PublicDocumentAcceptanceLevelSchema,\n legalReviewNoticeRevision: LegalReviewNoticeRevisionSchema.optional(),\n acceptedAt: z.number(),\n })\n .strict();\nexport type PublicDocumentAcceptance = z.infer<typeof PublicDocumentAcceptanceSchema>;\n"]}
|
|
@@ -911,8 +911,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
911
911
|
partial: "partial";
|
|
912
912
|
}>;
|
|
913
913
|
disputeState: z.ZodEnum<{
|
|
914
|
-
underReview: "underReview";
|
|
915
914
|
none: "none";
|
|
915
|
+
underReview: "underReview";
|
|
916
916
|
won: "won";
|
|
917
917
|
lost: "lost";
|
|
918
918
|
}>;
|
|
@@ -1755,8 +1755,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
1755
1755
|
userId: z.ZodString;
|
|
1756
1756
|
fileType: z.ZodString;
|
|
1757
1757
|
violationType: z.ZodOptional<z.ZodEnum<{
|
|
1758
|
-
media: "media";
|
|
1759
1758
|
text: "text";
|
|
1759
|
+
media: "media";
|
|
1760
1760
|
}>>;
|
|
1761
1761
|
reason: z.ZodString;
|
|
1762
1762
|
timestamp: z.ZodNumber;
|
|
@@ -4092,8 +4092,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
4092
4092
|
originalSha256: z.ZodOptional<z.ZodString>;
|
|
4093
4093
|
variantSha256s: z.ZodRecord<z.ZodEnum<{
|
|
4094
4094
|
full: "full";
|
|
4095
|
-
poster: "poster";
|
|
4096
4095
|
small: "small";
|
|
4096
|
+
poster: "poster";
|
|
4097
4097
|
medium: "medium";
|
|
4098
4098
|
main: "main";
|
|
4099
4099
|
}> & z.core.$partial, z.ZodString>;
|
|
@@ -4357,8 +4357,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
4357
4357
|
ownerId: z.ZodString;
|
|
4358
4358
|
variantKeys: z.ZodArray<z.ZodEnum<{
|
|
4359
4359
|
full: "full";
|
|
4360
|
-
poster: "poster";
|
|
4361
4360
|
small: "small";
|
|
4361
|
+
poster: "poster";
|
|
4362
4362
|
medium: "medium";
|
|
4363
4363
|
main: "main";
|
|
4364
4364
|
}>>;
|
|
@@ -5572,8 +5572,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
5572
5572
|
}, z.core.$strict>;
|
|
5573
5573
|
readonly 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}': z.ZodObject<{
|
|
5574
5574
|
role: z.ZodEnum<{
|
|
5575
|
-
uploader: "uploader";
|
|
5576
5575
|
requester: "requester";
|
|
5576
|
+
uploader: "uploader";
|
|
5577
5577
|
distributor: "distributor";
|
|
5578
5578
|
questionable: "questionable";
|
|
5579
5579
|
}>;
|
|
@@ -5595,8 +5595,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
5595
5595
|
}, z.core.$strict>;
|
|
5596
5596
|
readonly 'childSafetyCases/{caseId}/childSafetyCaseAccounts/{uid}/childSafetyCaseAccountHistory/{historyId}': z.ZodObject<{
|
|
5597
5597
|
role: z.ZodEnum<{
|
|
5598
|
-
uploader: "uploader";
|
|
5599
5598
|
requester: "requester";
|
|
5599
|
+
uploader: "uploader";
|
|
5600
5600
|
distributor: "distributor";
|
|
5601
5601
|
questionable: "questionable";
|
|
5602
5602
|
}>;
|
|
@@ -5796,6 +5796,7 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
5796
5796
|
workProject: "workProject";
|
|
5797
5797
|
workRealm: "workRealm";
|
|
5798
5798
|
audition: "audition";
|
|
5799
|
+
url: "url";
|
|
5799
5800
|
username: "username";
|
|
5800
5801
|
mediaAsset: "mediaAsset";
|
|
5801
5802
|
hallItem: "hallItem";
|
|
@@ -5809,7 +5810,6 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
5809
5810
|
guildInviteMessage: "guildInviteMessage";
|
|
5810
5811
|
conversationFile: "conversationFile";
|
|
5811
5812
|
guildChatMessage: "guildChatMessage";
|
|
5812
|
-
url: "url";
|
|
5813
5813
|
additionalText: "additionalText";
|
|
5814
5814
|
}>;
|
|
5815
5815
|
authorizedFor: z.ZodObject<{
|
|
@@ -5888,8 +5888,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
5888
5888
|
originalSha256: z.ZodOptional<z.ZodString>;
|
|
5889
5889
|
variantSha256s: z.ZodRecord<z.ZodEnum<{
|
|
5890
5890
|
full: "full";
|
|
5891
|
-
poster: "poster";
|
|
5892
5891
|
small: "small";
|
|
5892
|
+
poster: "poster";
|
|
5893
5893
|
medium: "medium";
|
|
5894
5894
|
main: "main";
|
|
5895
5895
|
}> & z.core.$partial, z.ZodString>;
|
|
@@ -6043,8 +6043,8 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
6043
6043
|
originalSha256: z.ZodOptional<z.ZodString>;
|
|
6044
6044
|
variantSha256s: z.ZodRecord<z.ZodEnum<{
|
|
6045
6045
|
full: "full";
|
|
6046
|
-
poster: "poster";
|
|
6047
6046
|
small: "small";
|
|
6047
|
+
poster: "poster";
|
|
6048
6048
|
medium: "medium";
|
|
6049
6049
|
main: "main";
|
|
6050
6050
|
}> & z.core.$partial, z.ZodString>;
|
|
@@ -6559,6 +6559,7 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
6559
6559
|
workProject: "workProject";
|
|
6560
6560
|
workRealm: "workRealm";
|
|
6561
6561
|
audition: "audition";
|
|
6562
|
+
url: "url";
|
|
6562
6563
|
username: "username";
|
|
6563
6564
|
mediaAsset: "mediaAsset";
|
|
6564
6565
|
hallItem: "hallItem";
|
|
@@ -6572,7 +6573,6 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
6572
6573
|
guildInviteMessage: "guildInviteMessage";
|
|
6573
6574
|
conversationFile: "conversationFile";
|
|
6574
6575
|
guildChatMessage: "guildChatMessage";
|
|
6575
|
-
url: "url";
|
|
6576
6576
|
additionalText: "additionalText";
|
|
6577
6577
|
}>;
|
|
6578
6578
|
surfaceLabel: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiN7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqQkB,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEvE;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;CAmBiC,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAOvC,CAAC"}
|