@xnetjs/data 2.4.0 → 3.0.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.
Files changed (42) hide show
  1. package/README.md +5 -0
  2. package/dist/auth/index.d.ts +4 -4
  3. package/dist/{chunk-56EXPOJ4.js → chunk-ANMAR3KY.js} +34 -19
  4. package/dist/chunk-GJAOMEQO.js +114 -0
  5. package/dist/chunk-KY62NUOI.js +67 -0
  6. package/dist/chunk-N37U6ZPI.js +789 -0
  7. package/dist/chunk-NFPEFD2I.js +42 -0
  8. package/dist/{chunk-EGGRKSRH.js → chunk-QKVIKVAL.js} +70 -31
  9. package/dist/{chunk-CY6EJUNV.js → chunk-S7SEN4LH.js} +5 -1
  10. package/dist/{chunk-4HJZJMPI.js → chunk-TN7LGV66.js} +1 -1
  11. package/dist/{chunk-YRFCXKJC.js → chunk-UQ2VFHU3.js} +2 -2
  12. package/dist/chunk-VZSEZNYA.js +83 -0
  13. package/dist/chunk-WSINZHSR.js +90 -0
  14. package/dist/{chunk-CNGEXCIH.js → chunk-YCBJDT23.js} +69 -55
  15. package/dist/{clone-BsoRt89i.d.ts → clone-ywzFVkID.d.ts} +16 -6
  16. package/dist/course-C5DXOIVO.js +24 -0
  17. package/dist/database/index.d.ts +17 -5
  18. package/dist/database/index.js +7 -7
  19. package/dist/event-VW3FBN4F.js +20 -0
  20. package/dist/{form-types-Dkqm9UO2.d.ts → form-types-BrHYdpi0.d.ts} +1 -1
  21. package/dist/{game-NEQP7OFX.js → game-7AXW7XKS.js} +1 -1
  22. package/dist/{grant-expiration-cleaner-BwdmRFua.d.ts → grant-expiration-cleaner-CRS9OyhV.d.ts} +3 -3
  23. package/dist/index.d.ts +10 -320
  24. package/dist/index.js +522 -1097
  25. package/dist/{moderation-HRMMBFVH.js → moderation-5Z4LKOKN.js} +5 -3
  26. package/dist/{page-RUS2BKMX.js → page-W4G6433H.js} +1 -1
  27. package/dist/portability/index.d.ts +330 -0
  28. package/dist/portability/index.js +34 -0
  29. package/dist/post-7IOO64MD.js +14 -0
  30. package/dist/{profile-5H6XWCK4.js → profile-KLHCAQY2.js} +1 -1
  31. package/dist/publication-3MN3WWKP.js +10 -0
  32. package/dist/{query-ast-DYGcKxoa.d.ts → query-ast-DQJO7yRV.d.ts} +1 -1
  33. package/dist/{registry-D_3b1Lg6.d.ts → registry-C9IRLLeR.d.ts} +1 -1
  34. package/dist/schema/index.d.ts +375 -26
  35. package/dist/schema/index.js +213 -167
  36. package/dist/space-GBTEHZOK.js +1 -1
  37. package/dist/store/index.d.ts +4 -4
  38. package/dist/store/index.js +4 -4
  39. package/dist/{store-BMnhBWzM.d.ts → store-D1oiFQuF.d.ts} +19 -2
  40. package/dist/{types-cycApzib.d.ts → types-gws1tSf-.d.ts} +1 -1
  41. package/package.json +27 -25
  42. package/dist/chunk-Y2XWK7AA.js +0 -50
package/dist/index.js CHANGED
@@ -6,6 +6,239 @@ import {
6
6
  signUpdate,
7
7
  verifyUpdate
8
8
  } from "./chunk-XHEA5UER.js";
9
+ import {
10
+ CELL_PREFIX,
11
+ DATABASE_SCHEMA_NAMESPACE,
12
+ DATABASE_SCHEMA_PREFIX,
13
+ DEFAULT_DATABASE_SCHEMA_VERSION,
14
+ DEFAULT_ROW_HEIGHT,
15
+ FIELD_TYPES,
16
+ FormulaService,
17
+ MAX_VERSION_HISTORY,
18
+ OPERATORS_BY_TYPE,
19
+ OPERATOR_LABELS,
20
+ PUBLIC_SAFE_FORM_FIELD_TYPES,
21
+ RICHTEXT_PREFIX,
22
+ ROW_HEIGHTS,
23
+ ROW_HEIGHT_PX,
24
+ SELECT_COLORS,
25
+ SUMMARY_FUNCTIONS_BY_TYPE,
26
+ addDefaultTableView,
27
+ addDefaultTitleColumn,
28
+ addOrToggleSort,
29
+ addViewSort,
30
+ aggregate,
31
+ asRowHeight,
32
+ autoColor,
33
+ batchComputeRollups,
34
+ buildDatabaseSchema,
35
+ buildPublicFormDefinition,
36
+ buildSchemaFromFields,
37
+ buildSchemaIRI,
38
+ bumpSchemaVersion,
39
+ cellKey,
40
+ cellValueToText,
41
+ checkNeedsRebalancing,
42
+ clearViewFilters,
43
+ clearViewSorts,
44
+ cloneColumns,
45
+ cloneSampleRows,
46
+ cloneSchema,
47
+ collapseAllGroups,
48
+ columnIdFromKey,
49
+ combineFiltersAnd,
50
+ combineFiltersOr,
51
+ computeColumnSummary,
52
+ computeRollup,
53
+ convertCellValue,
54
+ createAnyOfFilter,
55
+ createColumn,
56
+ createCsvBlob,
57
+ createDatabaseSchemaResolver,
58
+ createEqualsFilter,
59
+ createExtensionField,
60
+ createField,
61
+ createFilterQuery,
62
+ createFormulaService,
63
+ createInitialSchemaMetadata,
64
+ createJsonBlob,
65
+ createNodeDatabaseSchemaResolver,
66
+ createPaginatedQuery,
67
+ createRow,
68
+ createSelectOption,
69
+ createSort,
70
+ createSortQuery,
71
+ createVersionEntry,
72
+ createView,
73
+ createView2,
74
+ deleteColumn,
75
+ deleteExtensionField,
76
+ deleteField,
77
+ deleteMeta,
78
+ deleteRichTextCell,
79
+ deleteRow,
80
+ deleteSelectOption,
81
+ deleteView,
82
+ deleteView2,
83
+ downloadCsv,
84
+ downloadJson,
85
+ duplicateColumn,
86
+ duplicateField,
87
+ duplicateView,
88
+ duplicateView2,
89
+ effectiveFieldSortKey,
90
+ ensureSchemaExtension,
91
+ escapeCSV,
92
+ executeQuery,
93
+ expandAllGroups,
94
+ exportToCsv,
95
+ exportToJson,
96
+ exportToJsonArray,
97
+ exportToNdjson,
98
+ extractSchemaFromDoc,
99
+ fieldsToStoredColumns,
100
+ filterRows,
101
+ flattenGroups,
102
+ formatValue,
103
+ fromCellProperties,
104
+ generateColumnIdMap,
105
+ getColumn,
106
+ getColumnIndex,
107
+ getColumns,
108
+ getDatabaseDocumentModel,
109
+ getDatabaseSchemaIRI,
110
+ getDatabaseSelectOptions,
111
+ getField,
112
+ getFields,
113
+ getMeta,
114
+ getOperatorLabel,
115
+ getOperatorsForType,
116
+ getRichTextCell,
117
+ getRichTextColumnIds,
118
+ getRichTextPlainText,
119
+ getRow,
120
+ getSchemaIRIFromDoc,
121
+ getSelectOptions,
122
+ getTitleColumn,
123
+ getTitleField,
124
+ getTotalFromGroups,
125
+ getVersionBumpType,
126
+ getView,
127
+ getView2,
128
+ getViewByType,
129
+ getViews,
130
+ getViews2,
131
+ groupRows,
132
+ guessColumnType,
133
+ hasRichTextColumns,
134
+ hasRichTextContent,
135
+ hideColumn,
136
+ inferColumnTypes,
137
+ inferColumnsFromRows,
138
+ inferTypeFromValues,
139
+ initializeDatabaseDoc,
140
+ isAutoColumnType,
141
+ isAutoFieldType,
142
+ isCellKey,
143
+ isCellValue,
144
+ isComputedColumnType,
145
+ isComputedFieldType,
146
+ isDatabaseDocInitialized,
147
+ isDatabaseSchemaIRI,
148
+ isDateRange,
149
+ isFieldType,
150
+ isFileRef,
151
+ isFilledValue,
152
+ isFilterCondition,
153
+ isFilterGroup,
154
+ isFormFieldTypeAllowed,
155
+ isFormQuestionVisible,
156
+ isGeoPoint as isGeoPoint2,
157
+ isNodeStoreColumnType,
158
+ isNodeStoreFieldType,
159
+ isSelectColor,
160
+ isValidOperator,
161
+ isYDocColumnType,
162
+ isYDocFieldType,
163
+ moveField,
164
+ moveRow,
165
+ moveSelectOption,
166
+ moveView,
167
+ operatorRequiresValue,
168
+ parseCSV,
169
+ parseCSVLine,
170
+ parseDatabaseSchemaIRI,
171
+ parseJSON,
172
+ parseRow,
173
+ parseValue,
174
+ parseVersion,
175
+ pruneVersionHistory,
176
+ queryRows,
177
+ rebalanceDatabase,
178
+ remapViewColumnIds,
179
+ removeSort,
180
+ removeViewSort,
181
+ renameExtensionField,
182
+ reorderColumn,
183
+ reorderViewColumns,
184
+ requiresDateColumn,
185
+ resolveRowHeightPx,
186
+ rowHeightLabel,
187
+ setColumnWidth,
188
+ setFieldHidden,
189
+ setMeta,
190
+ setViewFieldOrder,
191
+ setViewFieldWidth,
192
+ setViewFilters,
193
+ setViewFilters2,
194
+ setViewGroupBy,
195
+ setViewGroupBy2,
196
+ setViewSorts,
197
+ setViewSorts2,
198
+ setVisibleColumns,
199
+ setupDatabase,
200
+ setupNewDatabase,
201
+ showColumn,
202
+ sortRows,
203
+ submissionRowId,
204
+ summaryFunctionLabel,
205
+ supportsGrouping,
206
+ toCellProperties,
207
+ toColumnDefinitions,
208
+ toFieldNode,
209
+ toSelectOptionNode,
210
+ toggleGroupCollapsed,
211
+ toggleGroupCollapsed2,
212
+ toggleSortDirection,
213
+ toggleViewGroupCollapsed,
214
+ updateCell,
215
+ updateCells,
216
+ updateColumn,
217
+ updateField,
218
+ updateSelectOption,
219
+ updateView,
220
+ updateView2,
221
+ validateFormSubmission,
222
+ validateJsonData,
223
+ validateRollupConfig,
224
+ visibleFormQuestions
225
+ } from "./chunk-ANMAR3KY.js";
226
+ import {
227
+ BUNDLE_ENTRY,
228
+ BundleImportError,
229
+ MemoryBundleSink,
230
+ MemoryBundleSource,
231
+ XNETPACK_FORMAT_VERSION,
232
+ applyBundle,
233
+ blobEntryPath,
234
+ canonicalManifestBytes,
235
+ createStoreYjsPort,
236
+ fromPortableChangeRecord,
237
+ readBundleManifest,
238
+ toPortableChangeRecord,
239
+ verifyBundle,
240
+ writeBundle
241
+ } from "./chunk-N37U6ZPI.js";
9
242
  import {
10
243
  LensRegistry,
11
244
  MAX_LINK_PREVIEWS_PER_MESSAGE,
@@ -74,49 +307,7 @@ import {
74
307
  taskBranchName,
75
308
  transform,
76
309
  when
77
- } from "./chunk-CNGEXCIH.js";
78
- import {
79
- AbuseReportSchema,
80
- AppealSchema,
81
- CommunityNoteSchema,
82
- ContentProvenanceSchema,
83
- MessageRequestSchema,
84
- ModerationLabelSchema,
85
- NoteRatingSchema,
86
- PolicyListSchema,
87
- PolicySubscriptionSchema,
88
- PublicInteractionPolicySchema,
89
- QualitySignalSchema,
90
- ReviewTaskSchema
91
- } from "./chunk-CY6EJUNV.js";
92
- import {
93
- ACHIEVEMENT_SCHEMA_IRI,
94
- AchievementSchema,
95
- GAME_ASSET_FORMATS,
96
- GAME_ASSET_MIME_TYPES,
97
- GAME_ASSET_SCHEMA_IRI,
98
- GAME_ECONOMY_ENTRY_SCHEMA_IRI,
99
- GAME_ITEM_SCHEMA_IRI,
100
- GAME_NAMESPACE,
101
- GAME_SCHEMA_IRIS,
102
- GameAssetSchema,
103
- GameEconomyEntrySchema,
104
- GameItemSchema,
105
- INVENTORY_SCHEMA_IRI,
106
- ITEM_RARITIES,
107
- InventorySchema,
108
- MATCH_RESULTS,
109
- MATCH_SESSION_SCHEMA_IRI,
110
- MatchSessionSchema,
111
- PLAYER_IDENTITY_SCHEMA_IRI,
112
- PlayerIdentitySchema,
113
- gameSchemas
114
- } from "./chunk-YRFCXKJC.js";
115
- import {
116
- MEMORY_ITEM_SCHEMA_IRI,
117
- MEMORY_KINDS,
118
- MemoryItemSchema
119
- } from "./chunk-2DAVPHDV.js";
310
+ } from "./chunk-YCBJDT23.js";
120
311
  import {
121
312
  AGENT_ACTION_SCHEMA_IRI,
122
313
  AGENT_ACTION_STATUSES,
@@ -144,14 +335,6 @@ import {
144
335
  agentSessionId,
145
336
  redactInstruction
146
337
  } from "./chunk-2K6BLSNC.js";
147
- import {
148
- DEFAULT_CHANNEL_TIER,
149
- InboxStateSchema,
150
- inboxStateNodeId
151
- } from "./chunk-37PXEMYQ.js";
152
- import {
153
- GrantSchema
154
- } from "./chunk-TH2BJPDZ.js";
155
338
  import {
156
339
  SavedViewSchema
157
340
  } from "./chunk-IVCHWQY7.js";
@@ -165,16 +348,48 @@ import {
165
348
  DashboardSchema
166
349
  } from "./chunk-EUJR5QQC.js";
167
350
  import {
168
- ReactionSchema
169
- } from "./chunk-RAJNAD64.js";
351
+ AbuseReportSchema,
352
+ AppealSchema,
353
+ CommunityNoteSchema,
354
+ ContentProvenanceSchema,
355
+ MessageRequestSchema,
356
+ ModerationLabelSchema,
357
+ NoteRatingSchema,
358
+ PolicyListSchema,
359
+ PolicySubscriptionSchema,
360
+ PublicInteractionPolicySchema,
361
+ QualitySignalSchema,
362
+ ReviewTaskSchema,
363
+ publicInteractionPolicyId
364
+ } from "./chunk-S7SEN4LH.js";
170
365
  import {
171
- DebugReportSchema
172
- } from "./chunk-HXIEK5L6.js";
366
+ ACHIEVEMENT_SCHEMA_IRI,
367
+ AchievementSchema,
368
+ GAME_ASSET_FORMATS,
369
+ GAME_ASSET_MIME_TYPES,
370
+ GAME_ASSET_SCHEMA_IRI,
371
+ GAME_ECONOMY_ENTRY_SCHEMA_IRI,
372
+ GAME_ITEM_SCHEMA_IRI,
373
+ GAME_NAMESPACE,
374
+ GAME_SCHEMA_IRIS,
375
+ GameAssetSchema,
376
+ GameEconomyEntrySchema,
377
+ GameItemSchema,
378
+ INVENTORY_SCHEMA_IRI,
379
+ ITEM_RARITIES,
380
+ InventorySchema,
381
+ MATCH_RESULTS,
382
+ MATCH_SESSION_SCHEMA_IRI,
383
+ MatchSessionSchema,
384
+ PLAYER_IDENTITY_SCHEMA_IRI,
385
+ PlayerIdentitySchema,
386
+ gameSchemas
387
+ } from "./chunk-UQ2VFHU3.js";
173
388
  import {
174
- ProfileSchema,
175
- didFromProfileNodeId,
176
- profileNodeId
177
- } from "./chunk-4HJZJMPI.js";
389
+ MEMORY_ITEM_SCHEMA_IRI,
390
+ MEMORY_KINDS,
391
+ MemoryItemSchema
392
+ } from "./chunk-2DAVPHDV.js";
178
393
  import {
179
394
  CHANNEL_KINDS,
180
395
  ChannelSchema
@@ -196,20 +411,13 @@ import {
196
411
  ExternalItemSchema
197
412
  } from "./chunk-FTKHARBY.js";
198
413
  import {
199
- MediaAssetSchema
200
- } from "./chunk-LDKJDNSW.js";
201
- import {
202
- TRANSCRIPTION_SCHEMA_IRI,
203
- TranscriptionSchema
204
- } from "./chunk-CTQALHJM.js";
414
+ DEFAULT_CHANNEL_TIER,
415
+ InboxStateSchema,
416
+ inboxStateNodeId
417
+ } from "./chunk-37PXEMYQ.js";
205
418
  import {
206
- MEETING_CHANNELS,
207
- MEETING_SCHEMA_IRI,
208
- MEETING_TEMPLATE_IDS,
209
- MEETING_TRANSCRIPT_SCHEMA_IRI,
210
- MeetingSchema,
211
- MeetingTranscriptSchema
212
- } from "./chunk-QOTR4SGT.js";
419
+ GrantSchema
420
+ } from "./chunk-TH2BJPDZ.js";
213
421
  import {
214
422
  CanvasSchema
215
423
  } from "./chunk-O34JPX6Q.js";
@@ -228,45 +436,16 @@ import {
228
436
  DraftSchema
229
437
  } from "./chunk-6AKAZHVZ.js";
230
438
  import {
231
- ACTIVITY_KINDS,
232
- ACTIVITY_SCHEMA_IRI,
233
- ActivitySchema,
234
- CONTACT_LIFECYCLE,
235
- CONTACT_SCHEMA_IRI,
236
- CRM_NAMESPACE,
237
- ContactSchema,
238
- DEAL_CONTACT_ROLES,
239
- DEAL_CONTACT_ROLE_SCHEMA_IRI,
240
- DEAL_SCHEMA_IRI,
241
- DEAL_SOURCES,
242
- DealContactRoleSchema,
243
- DealSchema,
244
- FORECAST_CATEGORIES,
245
- LINE_ITEM_SCHEMA_IRI,
246
- LineItemSchema,
247
- ORGANIZATION_SCHEMA_IRI,
248
- ORGANIZATION_SIZES,
249
- OrganizationSchema,
250
- PIPELINE_SCHEMA_IRI,
251
- PRODUCT_KINDS,
252
- PRODUCT_SCHEMA_IRI,
253
- PipelineSchema,
254
- ProductSchema,
255
- RELATIONSHIP_KINDS,
256
- RELATIONSHIP_SCHEMA_IRI,
257
- RelationshipSchema,
258
- STAGE_SCHEMA_IRI,
259
- StageSchema,
260
- crmSchemas
261
- } from "./chunk-WOBZDEKQ.js";
439
+ ReactionSchema
440
+ } from "./chunk-RAJNAD64.js";
262
441
  import {
263
- ACCOUNT_SCHEMA_IRI,
264
- AccountSchema
265
- } from "./chunk-L6DF76E2.js";
442
+ DebugReportSchema
443
+ } from "./chunk-HXIEK5L6.js";
266
444
  import {
267
- TRANSACTION_SCHEMA_IRI,
268
- TransactionSchema
269
- } from "./chunk-PKLHOQSO.js";
445
+ ProfileSchema,
446
+ didFromProfileNodeId,
447
+ profileNodeId
448
+ } from "./chunk-TN7LGV66.js";
270
449
  import {
271
450
  POSTING_SCHEMA_IRI,
272
451
  PostingSchema
@@ -301,14 +480,20 @@ import {
301
480
  ExternalReferenceSchema
302
481
  } from "./chunk-XFOUIAJF.js";
303
482
  import {
304
- TASK_STATUS_CATEGORIES,
305
- TaskSchema,
306
- getTaskStatusCategory,
307
- isCompletedTaskStatus
308
- } from "./chunk-CM57A2GS.js";
483
+ MediaAssetSchema
484
+ } from "./chunk-LDKJDNSW.js";
309
485
  import {
310
- TaskViewSchema
311
- } from "./chunk-4SIMTLCC.js";
486
+ TRANSCRIPTION_SCHEMA_IRI,
487
+ TranscriptionSchema
488
+ } from "./chunk-CTQALHJM.js";
489
+ import {
490
+ MEETING_CHANNELS,
491
+ MEETING_SCHEMA_IRI,
492
+ MEETING_TEMPLATE_IDS,
493
+ MEETING_TRANSCRIPT_SCHEMA_IRI,
494
+ MeetingSchema,
495
+ MeetingTranscriptSchema
496
+ } from "./chunk-QOTR4SGT.js";
312
497
  import {
313
498
  ProjectSchema
314
499
  } from "./chunk-3FWYS6AW.js";
@@ -325,9 +510,87 @@ import {
325
510
  MILESTONE_SCHEMA_IRI,
326
511
  MilestoneSchema
327
512
  } from "./chunk-R2AZXT3D.js";
513
+ import {
514
+ ACTIVITY_KINDS,
515
+ ACTIVITY_SCHEMA_IRI,
516
+ ActivitySchema,
517
+ CONTACT_LIFECYCLE,
518
+ CONTACT_SCHEMA_IRI,
519
+ CRM_NAMESPACE,
520
+ ContactSchema,
521
+ DEAL_CONTACT_ROLES,
522
+ DEAL_CONTACT_ROLE_SCHEMA_IRI,
523
+ DEAL_SCHEMA_IRI,
524
+ DEAL_SOURCES,
525
+ DealContactRoleSchema,
526
+ DealSchema,
527
+ FORECAST_CATEGORIES,
528
+ LINE_ITEM_SCHEMA_IRI,
529
+ LineItemSchema,
530
+ ORGANIZATION_SCHEMA_IRI,
531
+ ORGANIZATION_SIZES,
532
+ OrganizationSchema,
533
+ PIPELINE_SCHEMA_IRI,
534
+ PRODUCT_KINDS,
535
+ PRODUCT_SCHEMA_IRI,
536
+ PipelineSchema,
537
+ ProductSchema,
538
+ RELATIONSHIP_KINDS,
539
+ RELATIONSHIP_SCHEMA_IRI,
540
+ RelationshipSchema,
541
+ STAGE_SCHEMA_IRI,
542
+ StageSchema,
543
+ crmSchemas
544
+ } from "./chunk-WOBZDEKQ.js";
545
+ import {
546
+ ACCOUNT_SCHEMA_IRI,
547
+ AccountSchema
548
+ } from "./chunk-L6DF76E2.js";
549
+ import {
550
+ TRANSACTION_SCHEMA_IRI,
551
+ TransactionSchema
552
+ } from "./chunk-PKLHOQSO.js";
553
+ import {
554
+ DatabaseSchema
555
+ } from "./chunk-JB6BPIVP.js";
556
+ import {
557
+ TASK_STATUS_CATEGORIES,
558
+ TaskSchema,
559
+ getTaskStatusCategory,
560
+ isCompletedTaskStatus
561
+ } from "./chunk-CM57A2GS.js";
562
+ import {
563
+ TaskViewSchema
564
+ } from "./chunk-4SIMTLCC.js";
328
565
  import {
329
566
  PageSchema
330
- } from "./chunk-Y2XWK7AA.js";
567
+ } from "./chunk-WSINZHSR.js";
568
+ import {
569
+ POST_SCHEMA_IRI,
570
+ PostSchema,
571
+ comparePostsForFeed
572
+ } from "./chunk-KY62NUOI.js";
573
+ import {
574
+ COURSE_SCHEMA_IRI,
575
+ CourseSchema,
576
+ LESSON_PROGRESS_SCHEMA_IRI,
577
+ LESSON_SCHEMA_IRI,
578
+ LessonProgressSchema,
579
+ LessonSchema,
580
+ courseCompletion,
581
+ lessonProgressId
582
+ } from "./chunk-GJAOMEQO.js";
583
+ import {
584
+ EVENT_SCHEMA_IRI,
585
+ EventSchema,
586
+ RSVP_SCHEMA_IRI,
587
+ RsvpSchema,
588
+ rsvpId,
589
+ upcomingEvents
590
+ } from "./chunk-VZSEZNYA.js";
591
+ import {
592
+ PublicationSchema
593
+ } from "./chunk-NFPEFD2I.js";
331
594
  import {
332
595
  FOLDER_SCHEMA_IRI,
333
596
  FolderSchema,
@@ -345,334 +608,23 @@ import {
345
608
  normalizeTagName
346
609
  } from "./chunk-YFLL3CME.js";
347
610
  import {
348
- DatabaseSchema
349
- } from "./chunk-JB6BPIVP.js";
611
+ EXT_PREFIX,
612
+ extKey,
613
+ isExtKey,
614
+ parseExtKey
615
+ } from "./chunk-PMUQACPY.js";
350
616
  import {
351
- MemoryNodeStorageAdapter,
352
- NodeStore,
353
- PermissionError,
354
- QUERY_AST_VERSION,
355
- SQLiteNodeStorageAdapter,
356
- TEMP_ID_PREFIX,
357
- and,
358
- avg,
359
- between,
360
- contains,
361
- count,
362
- countDistinct,
363
- createNodeStorageAdapter,
364
- createSchemaLookup,
365
- dashboardQuerySet,
366
- defineNodeQueryAST,
367
- defineQuerySetAST,
368
- defineSavedViewDescriptor,
369
- eq,
370
- evaluateQueryASTPlannerGate,
371
- executeQueryASTLoadedAggregates,
372
- filterQueryASTLoadedRows,
373
- follow,
374
- from,
375
- getQueryASTRelationIndexRequirements,
376
- groupBy,
377
- gt,
378
- gte,
379
- having,
380
- includesAny,
381
- isNotNull,
382
- isNull,
383
- isTempId,
384
- lt,
385
- lte,
386
- matchesQueryASTLoadedRow,
387
- max,
388
- min,
389
- neq,
390
- not,
391
- or,
392
- planQueryASTAggregates,
393
- queryOperators,
394
- querySetCount,
395
- resolveTempIds,
396
- startsWith,
397
- sum,
398
- validateQueryAST,
399
- validateSavedViewDescriptor
400
- } from "./chunk-EGGRKSRH.js";
401
- import {
402
- evaluateLedgerWrite,
403
- foldAccountRecord,
404
- ledgerAccountId,
405
- ledgerWriteKind
406
- } from "./chunk-3UOUVEZW.js";
407
- import {
408
- ACCOUNT_RECORD_SCHEMA_IRI,
409
- AccountRecordSchema,
410
- DEVICE_RECORD_SCHEMA_IRI,
411
- DeviceRecordSchema,
412
- RECOVERY_RECORD_SCHEMA_IRI,
413
- REVOCATION_RECORD_SCHEMA_IRI,
414
- RecoveryRecordSchema,
415
- RevocationRecordSchema,
416
- accountRecordId,
417
- deviceRecipientExpander,
418
- deviceRecordId,
419
- isDeviceAuthorized,
420
- recoveryRecordId,
421
- resolveActiveDevices,
422
- revocationRecordId,
423
- revokedSubjects
424
- } from "./chunk-5ECIKN6Z.js";
425
- import {
426
- PresenceSummarySchema,
427
- SYSTEM_NAMESPACE_KINDS,
428
- SYSTEM_SCHEMA_BASE_IRIS,
429
- SYSTEM_SCHEMA_IRIS,
430
- SchemaCompatibilitySchema,
431
- SchemaDefinitionSchema,
432
- SyncPolicySchema,
433
- buildSystemNamespace,
434
- buildSystemNodeId,
435
- computeSchemaDefinitionContentHash,
436
- createSchemaDefinitionSigningPayload,
437
- isSystemNamespaceResource,
438
- isSystemSchemaIri,
439
- parseSystemNamespaceResource,
440
- resolveSchemaAuthority,
441
- validateSchemaDefinitionNode
442
- } from "./chunk-ZNHLH7SC.js";
617
+ DatabaseRowSchema
618
+ } from "./chunk-AKKBG7HW.js";
443
619
  import {
444
- clearLocalPresence,
445
- createAwareness,
446
- generateUserColor,
447
- getAllPresences,
448
- getLocalClientId,
449
- getRemotePresences,
450
- onPresenceChange,
451
- setLocalPresence
452
- } from "./chunk-7PDRDSFH.js";
620
+ DatabaseFieldSchema
621
+ } from "./chunk-IKREWSCX.js";
453
622
  import {
454
- CELL_PREFIX,
455
- DATABASE_SCHEMA_NAMESPACE,
456
- DATABASE_SCHEMA_PREFIX,
457
- DEFAULT_DATABASE_SCHEMA_VERSION,
458
- DEFAULT_ROW_HEIGHT,
459
- FIELD_TYPES,
460
- FormulaService,
461
- MAX_VERSION_HISTORY,
462
- OPERATORS_BY_TYPE,
463
- OPERATOR_LABELS,
464
- PUBLIC_SAFE_FORM_FIELD_TYPES,
465
- RICHTEXT_PREFIX,
466
- ROW_HEIGHTS,
467
- ROW_HEIGHT_PX,
468
- SELECT_COLORS,
469
- SUMMARY_FUNCTIONS_BY_TYPE,
470
- addDefaultTableView,
471
- addDefaultTitleColumn,
472
- addOrToggleSort,
473
- addViewSort,
474
- aggregate,
475
- asRowHeight,
476
- autoColor,
477
- batchComputeRollups,
478
- buildDatabaseSchema,
479
- buildPublicFormDefinition,
480
- buildSchemaFromFields,
481
- buildSchemaIRI,
482
- bumpSchemaVersion,
483
- cellKey,
484
- cellValueToText,
485
- checkNeedsRebalancing,
486
- clearViewFilters,
487
- clearViewSorts,
488
- cloneColumns,
489
- cloneSampleRows,
490
- cloneSchema,
491
- collapseAllGroups,
492
- columnIdFromKey,
493
- combineFiltersAnd,
494
- combineFiltersOr,
495
- computeColumnSummary,
496
- computeRollup,
497
- convertCellValue,
498
- createAnyOfFilter,
499
- createColumn,
500
- createCsvBlob,
501
- createDatabaseSchemaResolver,
502
- createEqualsFilter,
503
- createExtensionField,
504
- createField,
505
- createFilterQuery,
506
- createFormulaService,
507
- createInitialSchemaMetadata,
508
- createJsonBlob,
509
- createNodeDatabaseSchemaResolver,
510
- createPaginatedQuery,
511
- createRow,
512
- createSelectOption,
513
- createSort,
514
- createSortQuery,
515
- createVersionEntry,
516
- createView,
517
- createView2,
518
- deleteColumn,
519
- deleteExtensionField,
520
- deleteField,
521
- deleteMeta,
522
- deleteRichTextCell,
523
- deleteRow,
524
- deleteSelectOption,
525
- deleteView,
526
- deleteView2,
527
- downloadCsv,
528
- downloadJson,
529
- duplicateColumn,
530
- duplicateField,
531
- duplicateView,
532
- duplicateView2,
533
- effectiveFieldSortKey,
534
- ensureSchemaExtension,
535
- escapeCSV,
536
- executeQuery,
537
- expandAllGroups,
538
- exportToCsv,
539
- exportToJson,
540
- exportToJsonArray,
541
- exportToNdjson,
542
- extractSchemaFromDoc,
543
- fieldsToStoredColumns,
544
- filterRows,
545
- flattenGroups,
546
- formatValue,
547
- fromCellProperties,
548
- generateColumnIdMap,
549
- getColumn,
550
- getColumnIndex,
551
- getColumns,
552
- getDatabaseDocumentModel,
553
- getDatabaseSchemaIRI,
554
- getDatabaseSelectOptions,
555
- getField,
556
- getFields,
557
- getMeta,
558
- getOperatorLabel,
559
- getOperatorsForType,
560
- getRichTextCell,
561
- getRichTextColumnIds,
562
- getRichTextPlainText,
563
- getRow,
564
- getSchemaIRIFromDoc,
565
- getSelectOptions,
566
- getTitleColumn,
567
- getTitleField,
568
- getTotalFromGroups,
569
- getVersionBumpType,
570
- getView,
571
- getView2,
572
- getViewByType,
573
- getViews,
574
- getViews2,
575
- groupRows,
576
- guessColumnType,
577
- hasRichTextColumns,
578
- hasRichTextContent,
579
- hideColumn,
580
- inferColumnTypes,
581
- inferColumnsFromRows,
582
- inferTypeFromValues,
583
- initializeDatabaseDoc,
584
- isAutoColumnType,
585
- isAutoFieldType,
586
- isCellKey,
587
- isCellValue,
588
- isComputedColumnType,
589
- isComputedFieldType,
590
- isDatabaseDocInitialized,
591
- isDatabaseSchemaIRI,
592
- isDateRange,
593
- isFieldType,
594
- isFileRef,
595
- isFilledValue,
596
- isFilterCondition,
597
- isFilterGroup,
598
- isFormFieldTypeAllowed,
599
- isFormQuestionVisible,
600
- isGeoPoint as isGeoPoint2,
601
- isNodeStoreColumnType,
602
- isNodeStoreFieldType,
603
- isSelectColor,
604
- isValidOperator,
605
- isYDocColumnType,
606
- isYDocFieldType,
607
- moveField,
608
- moveRow,
609
- moveSelectOption,
610
- moveView,
611
- operatorRequiresValue,
612
- parseCSV,
613
- parseCSVLine,
614
- parseDatabaseSchemaIRI,
615
- parseJSON,
616
- parseRow,
617
- parseValue,
618
- parseVersion,
619
- pruneVersionHistory,
620
- queryRows,
621
- rebalanceDatabase,
622
- remapViewColumnIds,
623
- removeSort,
624
- removeViewSort,
625
- renameExtensionField,
626
- reorderColumn,
627
- reorderViewColumns,
628
- requiresDateColumn,
629
- resolveRowHeightPx,
630
- rowHeightLabel,
631
- setColumnWidth,
632
- setFieldHidden,
633
- setMeta,
634
- setViewFieldOrder,
635
- setViewFieldWidth,
636
- setViewFilters,
637
- setViewFilters2,
638
- setViewGroupBy,
639
- setViewGroupBy2,
640
- setViewSorts,
641
- setViewSorts2,
642
- setVisibleColumns,
643
- setupDatabase,
644
- setupNewDatabase,
645
- showColumn,
646
- sortRows,
647
- submissionRowId,
648
- summaryFunctionLabel,
649
- supportsGrouping,
650
- toCellProperties,
651
- toColumnDefinitions,
652
- toFieldNode,
653
- toSelectOptionNode,
654
- toggleGroupCollapsed,
655
- toggleGroupCollapsed2,
656
- toggleSortDirection,
657
- toggleViewGroupCollapsed,
658
- updateCell,
659
- updateCells,
660
- updateColumn,
661
- updateField,
662
- updateSelectOption,
663
- updateView,
664
- updateView2,
665
- validateFormSubmission,
666
- validateJsonData,
667
- validateRollupConfig,
668
- visibleFormQuestions
669
- } from "./chunk-56EXPOJ4.js";
623
+ DatabaseSelectOptionSchema
624
+ } from "./chunk-XP3VSSXD.js";
670
625
  import {
671
- EXT_PREFIX,
672
- extKey,
673
- isExtKey,
674
- parseExtKey
675
- } from "./chunk-PMUQACPY.js";
626
+ DatabaseViewSchema
627
+ } from "./chunk-UFV5QWCL.js";
676
628
  import {
677
629
  EXTENSION_FIELD_SCHEMA_IRI,
678
630
  ExtensionFieldSchema,
@@ -680,6 +632,13 @@ import {
680
632
  SchemaExtensionSchema,
681
633
  schemaExtensionId
682
634
  } from "./chunk-2JROE7ML.js";
635
+ import "./chunk-RLRAWZJE.js";
636
+ import {
637
+ SPACE_MEMBERSHIP_SCHEMA_IRI,
638
+ SpaceMembershipSchema,
639
+ isSpaceRole,
640
+ spaceMembershipId
641
+ } from "./chunk-GSLOK5KV.js";
683
642
  import {
684
643
  MAX_KEY_LENGTH,
685
644
  compareSortKeys,
@@ -690,18 +649,56 @@ import {
690
649
  rebalanceSortKeys
691
650
  } from "./chunk-QWFTRZQT.js";
692
651
  import {
693
- DatabaseRowSchema
694
- } from "./chunk-AKKBG7HW.js";
695
- import {
696
- DatabaseFieldSchema
697
- } from "./chunk-IKREWSCX.js";
698
- import {
699
- DatabaseSelectOptionSchema
700
- } from "./chunk-XP3VSSXD.js";
701
- import {
702
- DatabaseViewSchema
703
- } from "./chunk-UFV5QWCL.js";
704
- import "./chunk-RLRAWZJE.js";
652
+ MemoryNodeStorageAdapter,
653
+ NodeStore,
654
+ PermissionError,
655
+ QUERY_AST_VERSION,
656
+ SQLiteNodeStorageAdapter,
657
+ TEMP_ID_PREFIX,
658
+ and,
659
+ avg,
660
+ between,
661
+ contains,
662
+ count,
663
+ countDistinct,
664
+ createNodeStorageAdapter,
665
+ createSchemaLookup,
666
+ dashboardQuerySet,
667
+ defineNodeQueryAST,
668
+ defineQuerySetAST,
669
+ defineSavedViewDescriptor,
670
+ eq,
671
+ evaluateQueryASTPlannerGate,
672
+ executeQueryASTLoadedAggregates,
673
+ filterQueryASTLoadedRows,
674
+ follow,
675
+ from,
676
+ getQueryASTRelationIndexRequirements,
677
+ groupBy,
678
+ gt,
679
+ gte,
680
+ having,
681
+ includesAny,
682
+ isNotNull,
683
+ isNull,
684
+ isTempId,
685
+ lt,
686
+ lte,
687
+ matchesQueryASTLoadedRow,
688
+ max,
689
+ min,
690
+ neq,
691
+ not,
692
+ or,
693
+ planQueryASTAggregates,
694
+ queryOperators,
695
+ querySetCount,
696
+ resolveTempIds,
697
+ startsWith,
698
+ sum,
699
+ validateQueryAST,
700
+ validateSavedViewDescriptor
701
+ } from "./chunk-QKVIKVAL.js";
705
702
  import {
706
703
  applyNodeQueryDescriptor,
707
704
  createNodeQueryDescriptor,
@@ -718,11 +715,47 @@ import {
718
715
  withoutNodeQueryPagination
719
716
  } from "./chunk-WOEFYS7Y.js";
720
717
  import {
721
- SPACE_MEMBERSHIP_SCHEMA_IRI,
722
- SpaceMembershipSchema,
723
- isSpaceRole,
724
- spaceMembershipId
725
- } from "./chunk-GSLOK5KV.js";
718
+ evaluateLedgerWrite,
719
+ foldAccountRecord,
720
+ ledgerAccountId,
721
+ ledgerWriteKind
722
+ } from "./chunk-3UOUVEZW.js";
723
+ import {
724
+ PresenceSummarySchema,
725
+ SYSTEM_NAMESPACE_KINDS,
726
+ SYSTEM_SCHEMA_BASE_IRIS,
727
+ SYSTEM_SCHEMA_IRIS,
728
+ SchemaCompatibilitySchema,
729
+ SchemaDefinitionSchema,
730
+ SyncPolicySchema,
731
+ buildSystemNamespace,
732
+ buildSystemNodeId,
733
+ computeSchemaDefinitionContentHash,
734
+ createSchemaDefinitionSigningPayload,
735
+ isSystemNamespaceResource,
736
+ isSystemSchemaIri,
737
+ parseSystemNamespaceResource,
738
+ resolveSchemaAuthority,
739
+ validateSchemaDefinitionNode
740
+ } from "./chunk-ZNHLH7SC.js";
741
+ import {
742
+ ACCOUNT_RECORD_SCHEMA_IRI,
743
+ AccountRecordSchema,
744
+ DEVICE_RECORD_SCHEMA_IRI,
745
+ DeviceRecordSchema,
746
+ RECOVERY_RECORD_SCHEMA_IRI,
747
+ REVOCATION_RECORD_SCHEMA_IRI,
748
+ RecoveryRecordSchema,
749
+ RevocationRecordSchema,
750
+ accountRecordId,
751
+ deviceRecipientExpander,
752
+ deviceRecordId,
753
+ isDeviceAuthorized,
754
+ recoveryRecordId,
755
+ resolveActiveDevices,
756
+ revocationRecordId,
757
+ revokedSubjects
758
+ } from "./chunk-5ECIKN6Z.js";
726
759
  import {
727
760
  checkbox,
728
761
  createNodeId,
@@ -768,6 +801,16 @@ import {
768
801
  mergeOfflinePolicy,
769
802
  schemaToHubPolicy
770
803
  } from "./chunk-D4LUUZYD.js";
804
+ import {
805
+ clearLocalPresence,
806
+ createAwareness,
807
+ generateUserColor,
808
+ getAllPresences,
809
+ getLocalClientId,
810
+ getRemotePresences,
811
+ onPresenceChange,
812
+ setLocalPresence
813
+ } from "./chunk-7PDRDSFH.js";
771
814
 
772
815
  // src/external-references.ts
773
816
  var EMBED_PROVIDERS = [
@@ -2049,646 +2092,9 @@ var BlobService = class {
2049
2092
  }
2050
2093
  };
2051
2094
 
2052
- // src/portability/types.ts
2053
- var XNETPACK_FORMAT_VERSION = "xnetpack/1";
2054
- var BUNDLE_ENTRY = {
2055
- manifest: "manifest.json",
2056
- changes: "changes.ndjson",
2057
- blobIndex: "blobs.ndjson",
2058
- yjsDocs: "yjs/docs.ndjson"
2059
- };
2060
- var FRONTIER_HEADS_CAP = 32;
2061
-
2062
- // src/portability/serialize.ts
2063
- import { bytesToBase64, base64ToBytes, hash, hashHex } from "@xnetjs/crypto";
2064
- var textEncoder = new TextEncoder();
2065
- var textDecoder = new TextDecoder();
2066
- function toPortableChangeRecord(change) {
2067
- const record = {
2068
- id: change.id,
2069
- type: change.type,
2070
- hash: change.hash,
2071
- nodeId: change.payload.nodeId,
2072
- schemaId: change.payload.schemaId,
2073
- lamportTime: change.lamport,
2074
- authorDid: change.authorDID,
2075
- wallTime: change.wallTime,
2076
- parentHash: change.parentHash,
2077
- payload: change.payload,
2078
- signatureB64: bytesToBase64(change.signature),
2079
- // protocolVersion is part of the hashed fields — dropping it makes the
2080
- // record fail verifyChangeHash on the importing side.
2081
- protocolVersion: change.protocolVersion,
2082
- batchId: change.batchId,
2083
- batchIndex: change.batchIndex,
2084
- batchSize: change.batchSize
2085
- };
2086
- return record;
2087
- }
2088
- function fromPortableChangeRecord(record) {
2089
- const payload = record.payload && !record.payload.schemaId && record.schemaId ? { ...record.payload, schemaId: record.schemaId } : record.payload;
2090
- return {
2091
- id: record.id,
2092
- type: record.type,
2093
- hash: record.hash,
2094
- parentHash: record.parentHash,
2095
- authorDID: record.authorDid,
2096
- signature: base64ToBytes(record.signatureB64),
2097
- wallTime: record.wallTime,
2098
- lamport: record.lamportTime,
2099
- payload,
2100
- protocolVersion: record.protocolVersion,
2101
- batchId: record.batchId,
2102
- batchIndex: record.batchIndex,
2103
- batchSize: record.batchSize
2104
- };
2105
- }
2106
- function sortObjectKeys(obj) {
2107
- if (obj === null || typeof obj !== "object") return obj;
2108
- if (Array.isArray(obj)) return obj.map(sortObjectKeys);
2109
- const sorted = {};
2110
- for (const key of Object.keys(obj).sort()) {
2111
- sorted[key] = sortObjectKeys(obj[key]);
2112
- }
2113
- return sorted;
2114
- }
2115
- function canonicalManifestBytes(manifest) {
2116
- const unsigned = { ...manifest };
2117
- delete unsigned.signatureB64;
2118
- return textEncoder.encode(JSON.stringify(sortObjectKeys(unsigned)));
2119
- }
2120
- function createNdjsonDigest() {
2121
- const lineDigests = [];
2122
- return {
2123
- addLine(line) {
2124
- lineDigests.push(hash(textEncoder.encode(line)));
2125
- },
2126
- finish() {
2127
- const concat = new Uint8Array(lineDigests.length * 32);
2128
- lineDigests.forEach((d, i) => concat.set(d, i * 32));
2129
- return hashHex(concat);
2130
- },
2131
- lineCount() {
2132
- return lineDigests.length;
2133
- }
2134
- };
2135
- }
2136
- function digestEntryBytes(bytes) {
2137
- return hashHex(bytes);
2138
- }
2139
- function combineEntryDigests(entries) {
2140
- const lines = [...entries.entries()].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([path, digest]) => `${path}
2141
- ${digest}
2142
- `);
2143
- return hashHex(textEncoder.encode(lines.join("")));
2144
- }
2145
- function encodeNdjsonLine(value) {
2146
- return JSON.stringify(value);
2147
- }
2148
- function decodeUtf8(bytes) {
2149
- return textDecoder.decode(bytes);
2150
- }
2151
- function encodeUtf8(text2) {
2152
- return textEncoder.encode(text2);
2153
- }
2154
-
2155
- // src/portability/write.ts
2156
- import { compareChangeApplicationOrder } from "@xnetjs/core";
2157
- import { CURRENT_PROTOCOL_VERSION } from "@xnetjs/sync";
2158
- import { bytesToBase64 as bytesToBase642 } from "@xnetjs/crypto";
2159
- function blobEntryPath(cid) {
2160
- const match = /^cid:([a-z0-9-]+):([0-9a-f]+)$/i.exec(cid);
2161
- if (match) return `blobs/${match[1]}/${match[2]}`;
2162
- return `blobs/raw/${encodeURIComponent(cid)}`;
2163
- }
2164
- function frontierOf(changes) {
2165
- let lamport = 0;
2166
- for (const change of changes) if (change.lamport > lamport) lamport = change.lamport;
2167
- const heads = changes.filter((c) => c.lamport === lamport).slice(0, FRONTIER_HEADS_CAP).map((c) => c.hash);
2168
- return { lamport, heads, changeCount: changes.length };
2169
- }
2170
- function spaceOf(properties) {
2171
- return properties["space"];
2172
- }
2173
- async function collectScopedNodeIds(store, scope) {
2174
- if (scope.kind === "nodes") return [...scope.nodeIds];
2175
- if (scope.kind === "schemas") {
2176
- const ids2 = [];
2177
- for (const schemaId of scope.schemaIds) {
2178
- const nodes = await store.list({ schemaId, includeDeleted: true });
2179
- for (const node of nodes) ids2.push(node.id);
2180
- }
2181
- return ids2;
2182
- }
2183
- if (scope.kind !== "space") return [];
2184
- const all = await store.list({ includeDeleted: true });
2185
- const ids = [];
2186
- for (const node of all) {
2187
- if (node.id === scope.spaceId) {
2188
- ids.push(node.id);
2189
- continue;
2190
- }
2191
- const space = spaceOf(node.properties);
2192
- if (space === scope.spaceId) ids.push(node.id);
2193
- else if (Array.isArray(space) && space.includes(scope.spaceId)) ids.push(node.id);
2194
- }
2195
- return ids;
2196
- }
2197
- async function collectChanges(store, scope, since) {
2198
- let changes;
2199
- if (scope.kind === "full") {
2200
- changes = since ? await store.getChangesSince(since.lamport) : await store.getAllChanges();
2201
- } else {
2202
- const nodeIds = await collectScopedNodeIds(store, scope);
2203
- const byHash = /* @__PURE__ */ new Map();
2204
- for (const nodeId of nodeIds) {
2205
- for (const change of await store.getChanges(nodeId)) {
2206
- if (!since || change.lamport > since.lamport) byHash.set(change.hash, change);
2207
- }
2208
- }
2209
- changes = [...byHash.values()];
2210
- }
2211
- return changes.sort(
2212
- (a, b) => compareChangeApplicationOrder(
2213
- { lamport: a.lamport, author: a.authorDID },
2214
- { lamport: b.lamport, author: b.authorDID }
2215
- )
2216
- );
2217
- }
2218
- async function writeBundle(store, scope, sink, options) {
2219
- const entryDigests = /* @__PURE__ */ new Map();
2220
- const changes = await collectChanges(store, scope, options.since);
2221
- const changesDigest = createNdjsonDigest();
2222
- const changeLines = [];
2223
- for (const change of changes) {
2224
- const line = encodeNdjsonLine(toPortableChangeRecord(change));
2225
- changesDigest.addLine(line);
2226
- changeLines.push(line);
2227
- }
2228
- await sink.writeEntry(
2229
- BUNDLE_ENTRY.changes,
2230
- encodeUtf8(changeLines.join("\n") + (changeLines.length ? "\n" : ""))
2231
- );
2232
- entryDigests.set(BUNDLE_ENTRY.changes, changesDigest.finish());
2233
- let blobCount = 0;
2234
- const blobIndexDigest = createNdjsonDigest();
2235
- const blobIndexLines = [];
2236
- if (options.blobPort) {
2237
- for await (const blob of options.blobPort.list()) {
2238
- const path = blobEntryPath(blob.cid);
2239
- await sink.writeEntry(path, blob.bytes);
2240
- entryDigests.set(path, digestEntryBytes(blob.bytes));
2241
- const record = {
2242
- cid: blob.cid,
2243
- path,
2244
- size: blob.bytes.byteLength,
2245
- mimeType: blob.mimeType
2246
- };
2247
- const line = encodeNdjsonLine(record);
2248
- blobIndexDigest.addLine(line);
2249
- blobIndexLines.push(line);
2250
- blobCount++;
2251
- }
2252
- }
2253
- await sink.writeEntry(
2254
- BUNDLE_ENTRY.blobIndex,
2255
- encodeUtf8(blobIndexLines.join("\n") + (blobIndexLines.length ? "\n" : ""))
2256
- );
2257
- entryDigests.set(BUNDLE_ENTRY.blobIndex, blobIndexDigest.finish());
2258
- let yjsCount = 0;
2259
- const yjsDigest = createNdjsonDigest();
2260
- const yjsLines = [];
2261
- if (options.yjsPort) {
2262
- for await (const doc of options.yjsPort.list()) {
2263
- const line = encodeNdjsonLine({ nodeId: doc.nodeId, updateB64: bytesToBase642(doc.update) });
2264
- yjsDigest.addLine(line);
2265
- yjsLines.push(line);
2266
- yjsCount++;
2267
- }
2268
- }
2269
- await sink.writeEntry(
2270
- BUNDLE_ENTRY.yjsDocs,
2271
- encodeUtf8(yjsLines.join("\n") + (yjsLines.length ? "\n" : ""))
2272
- );
2273
- entryDigests.set(BUNDLE_ENTRY.yjsDocs, yjsDigest.finish());
2274
- const manifest = {
2275
- formatVersion: XNETPACK_FORMAT_VERSION,
2276
- protocolVersion: { change: CURRENT_PROTOCOL_VERSION },
2277
- ownerDid: options.ownerDid,
2278
- scope,
2279
- createdAt: Date.now(),
2280
- frontier: frontierOf(changes),
2281
- prerequisites: options.since,
2282
- counts: { changes: changes.length, blobs: blobCount, yjsDocs: yjsCount },
2283
- contentDigest: combineEntryDigests(entryDigests)
2284
- };
2285
- if (options.manifestSigner) {
2286
- const signature = await options.manifestSigner(canonicalManifestBytes(manifest));
2287
- manifest.signatureB64 = bytesToBase642(signature);
2288
- }
2289
- await sink.writeEntry(BUNDLE_ENTRY.manifest, encodeUtf8(JSON.stringify(manifest, null, 2)));
2290
- return manifest;
2291
- }
2292
-
2293
- // src/portability/verify.ts
2294
- import { verifyChange, verifyChangeHash, CURRENT_PROTOCOL_VERSION as CURRENT_PROTOCOL_VERSION2 } from "@xnetjs/sync";
2295
- import { base64ToBytes as base64ToBytes2, verify as verifySignature } from "@xnetjs/crypto";
2296
- import { parseDID } from "@xnetjs/identity";
2297
- function parseCidHex(path) {
2298
- const match = /^blobs\/([a-z0-9-]+)\/([0-9a-f]+)$/i.exec(path);
2299
- if (!match || match[1] === "raw") return null;
2300
- return { algo: match[1], hex: match[2] };
2301
- }
2302
- async function verifyBundle(source, options = {}) {
2303
- const verifyChangeSignatures = options.verifyChangeSignatures ?? true;
2304
- const issues = [];
2305
- const error = (code, detail, subject) => issues.push({ severity: "error", code, detail, subject });
2306
- const warning = (code, detail, subject) => issues.push({ severity: "warning", code, detail, subject });
2307
- const manifestBytes = await source.readEntry(BUNDLE_ENTRY.manifest);
2308
- if (!manifestBytes) {
2309
- error("unknown-format", "bundle has no manifest.json");
2310
- return { ok: false, manifest: null, issues, danglingParents: 0 };
2311
- }
2312
- let manifest;
2313
- try {
2314
- manifest = JSON.parse(decodeUtf8(manifestBytes));
2315
- } catch (err) {
2316
- error("unknown-format", `manifest.json is not valid JSON: ${err.message}`);
2317
- return { ok: false, manifest: null, issues, danglingParents: 0 };
2318
- }
2319
- if (manifest.formatVersion !== XNETPACK_FORMAT_VERSION) {
2320
- error("unknown-format", `unsupported formatVersion "${manifest.formatVersion}"`);
2321
- return { ok: false, manifest, issues, danglingParents: 0 };
2322
- }
2323
- if ((manifest.protocolVersion?.change ?? 0) > CURRENT_PROTOCOL_VERSION2) {
2324
- error(
2325
- "future-protocol",
2326
- `bundle uses change protocol v${manifest.protocolVersion.change}, this build supports v${CURRENT_PROTOCOL_VERSION2}`
2327
- );
2328
- }
2329
- if (!manifest.signatureB64) {
2330
- warning("manifest-unsigned", "manifest carries no signature");
2331
- } else {
2332
- try {
2333
- const publicKey = parseDID(manifest.ownerDid);
2334
- const signature = base64ToBytes2(manifest.signatureB64);
2335
- if (!verifySignature(canonicalManifestBytes(manifest), signature, publicKey)) {
2336
- error(
2337
- "manifest-signature-invalid",
2338
- `manifest signature does not verify against ${manifest.ownerDid}`
2339
- );
2340
- }
2341
- } catch (err) {
2342
- error(
2343
- "manifest-signature-invalid",
2344
- `cannot verify manifest signature: ${err.message}`
2345
- );
2346
- }
2347
- }
2348
- const entryDigests = /* @__PURE__ */ new Map();
2349
- const changesDigest = createNdjsonDigest();
2350
- const presentHashes = /* @__PURE__ */ new Set();
2351
- const parentHashes = [];
2352
- let lineNumber = 0;
2353
- for await (const line of source.readLines(BUNDLE_ENTRY.changes)) {
2354
- lineNumber++;
2355
- changesDigest.addLine(line);
2356
- let record;
2357
- try {
2358
- record = JSON.parse(line);
2359
- } catch {
2360
- error(
2361
- "change-unparseable",
2362
- `changes.ndjson line ${lineNumber} is not valid JSON`,
2363
- `line:${lineNumber}`
2364
- );
2365
- continue;
2366
- }
2367
- let change;
2368
- try {
2369
- change = fromPortableChangeRecord(record);
2370
- } catch (err) {
2371
- error("change-unparseable", `line ${lineNumber}: ${err.message}`, record.hash);
2372
- continue;
2373
- }
2374
- if (verifyChangeSignatures) {
2375
- if (!verifyChangeHash(change)) {
2376
- error(
2377
- "change-hash-invalid",
2378
- `change ${change.id} fails hash re-computation (tampered?)`,
2379
- record.hash
2380
- );
2381
- continue;
2382
- }
2383
- try {
2384
- const publicKey = parseDID(change.authorDID);
2385
- if (!verifyChange(change, publicKey)) {
2386
- error(
2387
- "change-signature-invalid",
2388
- `change ${change.id} signature does not match ${change.authorDID}`,
2389
- record.hash
2390
- );
2391
- continue;
2392
- }
2393
- } catch (err) {
2394
- error(
2395
- "change-signature-invalid",
2396
- `change ${change.id}: ${err.message}`,
2397
- record.hash
2398
- );
2399
- continue;
2400
- }
2401
- }
2402
- presentHashes.add(change.hash);
2403
- parentHashes.push(change.parentHash);
2404
- }
2405
- entryDigests.set(BUNDLE_ENTRY.changes, changesDigest.finish());
2406
- if (changesDigest.lineCount() !== manifest.counts.changes) {
2407
- error(
2408
- "count-mismatch",
2409
- `manifest declares ${manifest.counts.changes} changes, bundle has ${changesDigest.lineCount()}`
2410
- );
2411
- }
2412
- const prerequisiteHeads = new Set(manifest.prerequisites?.heads ?? []);
2413
- let danglingParents = 0;
2414
- for (const parent of parentHashes) {
2415
- if (parent !== null && !presentHashes.has(parent) && !prerequisiteHeads.has(parent)) {
2416
- danglingParents++;
2417
- }
2418
- }
2419
- if (danglingParents > 0) {
2420
- warning(
2421
- "dangling-parent",
2422
- `${danglingParents} change(s) reference parents outside the bundle (expected for scoped/incremental exports)`
2423
- );
2424
- }
2425
- const blobIndexDigest = createNdjsonDigest();
2426
- const indexedPaths = /* @__PURE__ */ new Set();
2427
- for await (const line of source.readLines(BUNDLE_ENTRY.blobIndex)) {
2428
- blobIndexDigest.addLine(line);
2429
- try {
2430
- const record = JSON.parse(line);
2431
- indexedPaths.add(record.path);
2432
- } catch {
2433
- error("change-unparseable", "blobs.ndjson contains an unparseable line");
2434
- }
2435
- }
2436
- entryDigests.set(BUNDLE_ENTRY.blobIndex, blobIndexDigest.finish());
2437
- if (blobIndexDigest.lineCount() !== manifest.counts.blobs) {
2438
- error(
2439
- "count-mismatch",
2440
- `manifest declares ${manifest.counts.blobs} blobs, index has ${blobIndexDigest.lineCount()}`
2441
- );
2442
- }
2443
- for (const path of await source.listEntries("blobs/")) {
2444
- if (path === BUNDLE_ENTRY.blobIndex) continue;
2445
- const bytes = await source.readEntry(path);
2446
- if (!bytes) continue;
2447
- entryDigests.set(path, digestEntryBytes(bytes));
2448
- const cid = parseCidHex(path);
2449
- if (cid && cid.algo === "blake3" && digestEntryBytes(bytes) !== cid.hex.toLowerCase()) {
2450
- error("blob-digest-mismatch", `blob ${path} bytes do not hash to their filename`, path);
2451
- }
2452
- if (!indexedPaths.has(path)) {
2453
- warning("count-mismatch", `blob entry ${path} is not listed in blobs.ndjson`, path);
2454
- }
2455
- }
2456
- const yjsDigest = createNdjsonDigest();
2457
- for await (const line of source.readLines(BUNDLE_ENTRY.yjsDocs)) {
2458
- yjsDigest.addLine(line);
2459
- }
2460
- entryDigests.set(BUNDLE_ENTRY.yjsDocs, yjsDigest.finish());
2461
- if (yjsDigest.lineCount() !== manifest.counts.yjsDocs) {
2462
- error(
2463
- "count-mismatch",
2464
- `manifest declares ${manifest.counts.yjsDocs} yjs docs, bundle has ${yjsDigest.lineCount()}`
2465
- );
2466
- }
2467
- if (combineEntryDigests(entryDigests) !== manifest.contentDigest) {
2468
- error("content-digest-mismatch", "entry digests do not match manifest.contentDigest");
2469
- }
2470
- return {
2471
- ok: !issues.some((i) => i.severity === "error"),
2472
- manifest,
2473
- issues,
2474
- danglingParents
2475
- };
2476
- }
2477
-
2478
- // src/portability/apply.ts
2479
- import { compareChangeApplicationOrder as compareChangeApplicationOrder2 } from "@xnetjs/core";
2480
- import { base64ToBytes as base64ToBytes3 } from "@xnetjs/crypto";
2481
- var BundleImportError = class extends Error {
2482
- constructor(message, code) {
2483
- super(message);
2484
- this.code = code;
2485
- this.name = "BundleImportError";
2486
- }
2487
- };
2488
- var APPLY_BATCH_SIZE = 500;
2489
- async function applyBundle(store, source, options) {
2490
- const verifyReport = await verifyBundle(source, { verifyChangeSignatures: false });
2491
- if (!verifyReport.ok || !verifyReport.manifest) {
2492
- const details = verifyReport.issues.filter((i) => i.severity === "error").map((i) => i.detail).join("; ");
2493
- throw new BundleImportError(`bundle failed verification: ${details}`, "verify-failed");
2494
- }
2495
- const manifest = verifyReport.manifest;
2496
- if (!manifest.signatureB64 && !options.allowUnsigned) {
2497
- throw new BundleImportError(
2498
- "bundle manifest is unsigned \u2014 pass allowUnsigned to import anyway",
2499
- "unsigned-manifest"
2500
- );
2501
- }
2502
- if (manifest.ownerDid !== options.importerDid && !options.allowForeignOwner) {
2503
- throw new BundleImportError(
2504
- `bundle is owned by ${manifest.ownerDid} but the importer is ${options.importerDid} \u2014 pass allowForeignOwner to import a bundle from another identity`,
2505
- "foreign-owner"
2506
- );
2507
- }
2508
- const missingPrerequisites = [];
2509
- if (manifest.prerequisites) {
2510
- for (const head of manifest.prerequisites.heads) {
2511
- if (!await store.hasChange(head)) missingPrerequisites.push(head);
2512
- }
2513
- if (missingPrerequisites.length > 0 && !options.ignoreMissingPrerequisites) {
2514
- throw new BundleImportError(
2515
- `store is missing ${missingPrerequisites.length} prerequisite head(s) \u2014 this incremental bundle needs its base bundle imported first (or pass ignoreMissingPrerequisites)`,
2516
- "missing-prerequisites"
2517
- );
2518
- }
2519
- }
2520
- const quarantined = [];
2521
- const quarantine = (record) => {
2522
- quarantined.push(record);
2523
- options.onQuarantine?.(record);
2524
- };
2525
- const changes = [];
2526
- for await (const line of source.readLines(BUNDLE_ENTRY.changes)) {
2527
- try {
2528
- changes.push(fromPortableChangeRecord(JSON.parse(line)));
2529
- } catch (err) {
2530
- quarantine({ kind: "change", subject: line.slice(0, 80), reason: err.message });
2531
- }
2532
- }
2533
- changes.sort(
2534
- (a, b) => compareChangeApplicationOrder2(
2535
- { lamport: a.lamport, author: a.authorDID },
2536
- { lamport: b.lamport, author: b.authorDID }
2537
- )
2538
- );
2539
- let applied = 0;
2540
- let duplicates = 0;
2541
- for (let i = 0; i < changes.length; i += APPLY_BATCH_SIZE) {
2542
- for (const change of changes.slice(i, i + APPLY_BATCH_SIZE)) {
2543
- try {
2544
- if (await store.hasChange(change.hash)) {
2545
- duplicates++;
2546
- continue;
2547
- }
2548
- await store.applyRemoteChange(change);
2549
- applied++;
2550
- } catch (err) {
2551
- quarantine({
2552
- kind: "change",
2553
- subject: change.hash,
2554
- reason: err instanceof Error ? err.message : String(err)
2555
- });
2556
- }
2557
- }
2558
- }
2559
- let blobsInstalled = 0;
2560
- if (options.blobPort) {
2561
- for await (const line of source.readLines(BUNDLE_ENTRY.blobIndex)) {
2562
- let record;
2563
- try {
2564
- record = JSON.parse(line);
2565
- } catch (err) {
2566
- quarantine({ kind: "blob", subject: line.slice(0, 80), reason: err.message });
2567
- continue;
2568
- }
2569
- try {
2570
- if (await options.blobPort.has(record.cid)) continue;
2571
- const bytes = await source.readEntry(record.path);
2572
- if (!bytes) {
2573
- quarantine({
2574
- kind: "blob",
2575
- subject: record.cid,
2576
- reason: `bundle entry ${record.path} missing`
2577
- });
2578
- continue;
2579
- }
2580
- await options.blobPort.put(bytes, { cid: record.cid, mimeType: record.mimeType });
2581
- blobsInstalled++;
2582
- } catch (err) {
2583
- quarantine({ kind: "blob", subject: record.cid, reason: err.message });
2584
- }
2585
- }
2586
- }
2587
- let yjsDocsApplied = 0;
2588
- if (options.yjsPort) {
2589
- for await (const line of source.readLines(BUNDLE_ENTRY.yjsDocs)) {
2590
- let record;
2591
- try {
2592
- record = JSON.parse(line);
2593
- } catch (err) {
2594
- quarantine({ kind: "yjs-doc", subject: line.slice(0, 80), reason: err.message });
2595
- continue;
2596
- }
2597
- try {
2598
- await options.yjsPort.apply(record.nodeId, base64ToBytes3(record.updateB64));
2599
- yjsDocsApplied++;
2600
- } catch (err) {
2601
- quarantine({ kind: "yjs-doc", subject: record.nodeId, reason: err.message });
2602
- }
2603
- }
2604
- }
2605
- return { applied, duplicates, quarantined, blobsInstalled, yjsDocsApplied, missingPrerequisites };
2606
- }
2607
- async function readBundleManifest(source) {
2608
- const bytes = await source.readEntry(BUNDLE_ENTRY.manifest);
2609
- if (!bytes) return null;
2610
- try {
2611
- return JSON.parse(decodeUtf8(bytes));
2612
- } catch {
2613
- return null;
2614
- }
2615
- }
2616
-
2617
- // src/portability/memory-bundle.ts
2618
- var MemoryBundleSink = class {
2619
- entries = /* @__PURE__ */ new Map();
2620
- writeEntry(path, data) {
2621
- this.entries.set(path, data);
2622
- }
2623
- toSource() {
2624
- return new MemoryBundleSource(this.entries);
2625
- }
2626
- };
2627
- var MemoryBundleSource = class {
2628
- constructor(entries) {
2629
- this.entries = entries;
2630
- }
2631
- async readEntry(path) {
2632
- return this.entries.get(path) ?? null;
2633
- }
2634
- async *readLines(path) {
2635
- const bytes = this.entries.get(path);
2636
- if (!bytes) return;
2637
- let start = 0;
2638
- const text2 = decodeUtf8(bytes);
2639
- while (start < text2.length) {
2640
- let end = text2.indexOf("\n", start);
2641
- if (end === -1) end = text2.length;
2642
- const line = text2.slice(start, end);
2643
- if (line.length > 0) yield line;
2644
- start = end + 1;
2645
- }
2646
- }
2647
- async listEntries(prefix) {
2648
- return [...this.entries.keys()].filter((p) => p.startsWith(prefix)).sort();
2649
- }
2650
- };
2651
-
2652
- // src/portability/store-yjs-port.ts
2653
- import * as Y2 from "yjs";
2654
- function createStoreYjsPort(store) {
2655
- return {
2656
- async *list() {
2657
- const nodes = await store.list({ includeDeleted: true });
2658
- for (const node of nodes) {
2659
- const content = await store.getDocumentContent(node.id);
2660
- if (content && content.byteLength > 0) {
2661
- yield { nodeId: node.id, update: content };
2662
- }
2663
- }
2664
- },
2665
- async apply(nodeId, update) {
2666
- const existing = await store.getDocumentContent(nodeId);
2667
- if (!existing || existing.byteLength === 0) {
2668
- await store.setDocumentContent(nodeId, update);
2669
- return;
2670
- }
2671
- let merged;
2672
- const doc = new Y2.Doc();
2673
- try {
2674
- Y2.applyUpdate(doc, existing);
2675
- Y2.applyUpdate(doc, update);
2676
- merged = Y2.encodeStateAsUpdate(doc);
2677
- } catch (err) {
2678
- throw new Error(
2679
- `document content for ${nodeId} is not a mergeable Yjs update (${err.message}); left the existing content untouched`
2680
- );
2681
- } finally {
2682
- doc.destroy();
2683
- }
2684
- await store.setDocumentContent(nodeId, merged);
2685
- }
2686
- };
2687
- }
2688
-
2689
2095
  // src/index.ts
2690
2096
  import {
2691
- Doc as Doc2,
2097
+ Doc,
2692
2098
  Map as Map3,
2693
2099
  Array as Array2,
2694
2100
  Text,
@@ -2738,6 +2144,7 @@ export {
2738
2144
  CHECKPOINT_SCHEMA_IRI,
2739
2145
  CONTACT_LIFECYCLE,
2740
2146
  CONTACT_SCHEMA_IRI,
2147
+ COURSE_SCHEMA_IRI,
2741
2148
  CRM_NAMESPACE,
2742
2149
  CanvasSchema,
2743
2150
  ChannelSchema,
@@ -2747,6 +2154,7 @@ export {
2747
2154
  CommunityNoteSchema,
2748
2155
  ContactSchema,
2749
2156
  ContentProvenanceSchema,
2157
+ CourseSchema,
2750
2158
  DATABASE_SCHEMA_NAMESPACE,
2751
2159
  DATABASE_SCHEMA_PREFIX,
2752
2160
  DEAL_CONTACT_ROLES,
@@ -2775,10 +2183,12 @@ export {
2775
2183
  DeviceRecordSchema,
2776
2184
  DraftSchema,
2777
2185
  EMBED_PROVIDERS,
2186
+ EVENT_SCHEMA_IRI,
2778
2187
  EXTENSION_FIELD_SCHEMA_IRI,
2779
2188
  EXTERNAL_ITEM_SCHEMA_IRI,
2780
2189
  EXTERNAL_ITEM_SOURCES,
2781
2190
  EXT_PREFIX,
2191
+ EventSchema,
2782
2192
  ExperimentSchema,
2783
2193
  ExtensionFieldSchema,
2784
2194
  ExternalItemSchema,
@@ -2813,8 +2223,12 @@ export {
2813
2223
  ImportBatchSchema,
2814
2224
  InboxStateSchema,
2815
2225
  InventorySchema,
2226
+ LESSON_PROGRESS_SCHEMA_IRI,
2227
+ LESSON_SCHEMA_IRI,
2816
2228
  LINE_ITEM_SCHEMA_IRI,
2817
2229
  LensRegistry,
2230
+ LessonProgressSchema,
2231
+ LessonSchema,
2818
2232
  LineItemSchema,
2819
2233
  MATCH_RESULTS,
2820
2234
  MATCH_SESSION_SCHEMA_IRI,
@@ -2856,6 +2270,7 @@ export {
2856
2270
  PIPELINE_SCHEMA_IRI,
2857
2271
  PLAYER_IDENTITY_SCHEMA_IRI,
2858
2272
  POSTING_SCHEMA_IRI,
2273
+ POST_SCHEMA_IRI,
2859
2274
  PRODUCT_KINDS,
2860
2275
  PRODUCT_SCHEMA_IRI,
2861
2276
  PUBLIC_SAFE_FORM_FIELD_TYPES,
@@ -2865,6 +2280,7 @@ export {
2865
2280
  PlayerIdentitySchema,
2866
2281
  PolicyListSchema,
2867
2282
  PolicySubscriptionSchema,
2283
+ PostSchema,
2868
2284
  PostingSchema,
2869
2285
  PresenceAggregator,
2870
2286
  PresenceSummarySchema,
@@ -2872,6 +2288,7 @@ export {
2872
2288
  ProfileSchema,
2873
2289
  ProjectSchema,
2874
2290
  PublicInteractionPolicySchema,
2291
+ PublicationSchema,
2875
2292
  QUERY_AST_VERSION,
2876
2293
  QualitySignalSchema,
2877
2294
  RECOVERY_RECORD_SCHEMA_IRI,
@@ -2881,11 +2298,13 @@ export {
2881
2298
  RICHTEXT_PREFIX,
2882
2299
  ROW_HEIGHTS,
2883
2300
  ROW_HEIGHT_PX,
2301
+ RSVP_SCHEMA_IRI,
2884
2302
  ReactionSchema,
2885
2303
  RecoveryRecordSchema,
2886
2304
  RelationshipSchema,
2887
2305
  ReviewTaskSchema,
2888
2306
  RevocationRecordSchema,
2307
+ RsvpSchema,
2889
2308
  SCHEMA_EXTENSION_SCHEMA_IRI,
2890
2309
  SELECT_COLORS,
2891
2310
  SIDECAR_PREFIX,
@@ -2927,7 +2346,7 @@ export {
2927
2346
  WorkspaceSchema,
2928
2347
  XNETPACK_FORMAT_VERSION,
2929
2348
  Array2 as YArray,
2930
- Doc2 as YDoc,
2349
+ Doc as YDoc,
2931
2350
  Map3 as YMap,
2932
2351
  Text as YText,
2933
2352
  XmlElement as YXmlElement,
@@ -2989,6 +2408,7 @@ export {
2989
2408
  columnIdFromKey,
2990
2409
  combineFiltersAnd,
2991
2410
  combineFiltersOr,
2411
+ comparePostsForFeed,
2992
2412
  compareSortKeys,
2993
2413
  compareSpaceRoles,
2994
2414
  composeLens,
@@ -3001,6 +2421,7 @@ export {
3001
2421
  copy,
3002
2422
  count,
3003
2423
  countDistinct,
2424
+ courseCompletion,
3004
2425
  createAccountRecord,
3005
2426
  createAnyOfFilter,
3006
2427
  createAwareness,
@@ -3219,6 +2640,7 @@ export {
3219
2640
  ledgerAccountId,
3220
2641
  ledgerWriteKind,
3221
2642
  lensRegistry,
2643
+ lessonProgressId,
3222
2644
  loadExtensionFields,
3223
2645
  lockedPropertyKeys,
3224
2646
  lt,
@@ -3270,6 +2692,7 @@ export {
3270
2692
  profileNodeId,
3271
2693
  promoteOverlay,
3272
2694
  pruneVersionHistory,
2695
+ publicInteractionPolicyId,
3273
2696
  queryOperators,
3274
2697
  queryRows,
3275
2698
  querySetCount,
@@ -3300,6 +2723,7 @@ export {
3300
2723
  revokeSubjectRecord,
3301
2724
  revokedSubjects,
3302
2725
  rowHeightLabel,
2726
+ rsvpId,
3303
2727
  sanitizeLinkPreviews,
3304
2728
  schemaExtensionId,
3305
2729
  schemaRegistry,
@@ -3352,6 +2776,7 @@ export {
3352
2776
  toggleSortDirection,
3353
2777
  toggleViewGroupCollapsed,
3354
2778
  transform,
2779
+ upcomingEvents,
3355
2780
  updateCell,
3356
2781
  updateCells,
3357
2782
  updateColumn,