@xnetjs/data 2.5.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 (41) hide show
  1. package/README.md +5 -0
  2. package/dist/auth/index.d.ts +4 -4
  3. package/dist/chunk-GJAOMEQO.js +114 -0
  4. package/dist/chunk-KY62NUOI.js +67 -0
  5. package/dist/chunk-N37U6ZPI.js +789 -0
  6. package/dist/chunk-NFPEFD2I.js +42 -0
  7. package/dist/{chunk-ODOPVGUX.js → chunk-QKVIKVAL.js} +65 -26
  8. package/dist/{chunk-CY6EJUNV.js → chunk-S7SEN4LH.js} +5 -1
  9. package/dist/{chunk-4HJZJMPI.js → chunk-TN7LGV66.js} +1 -1
  10. package/dist/{chunk-YRFCXKJC.js → chunk-UQ2VFHU3.js} +2 -2
  11. package/dist/chunk-VZSEZNYA.js +83 -0
  12. package/dist/{chunk-JF4VCZER.js → chunk-WSINZHSR.js} +27 -1
  13. package/dist/{chunk-MAB662PR.js → chunk-YCBJDT23.js} +62 -48
  14. package/dist/{clone-VRVODkBn.d.ts → clone-ywzFVkID.d.ts} +4 -4
  15. package/dist/course-C5DXOIVO.js +24 -0
  16. package/dist/database/index.d.ts +5 -5
  17. package/dist/database/index.js +8 -8
  18. package/dist/event-VW3FBN4F.js +20 -0
  19. package/dist/{form-types-Dkqm9UO2.d.ts → form-types-BrHYdpi0.d.ts} +1 -1
  20. package/dist/{game-NEQP7OFX.js → game-7AXW7XKS.js} +1 -1
  21. package/dist/{grant-expiration-cleaner-CTsW0hvU.d.ts → grant-expiration-cleaner-CRS9OyhV.d.ts} +3 -3
  22. package/dist/index.d.ts +10 -320
  23. package/dist/index.js +292 -867
  24. package/dist/{moderation-HRMMBFVH.js → moderation-5Z4LKOKN.js} +5 -3
  25. package/dist/{page-MADZ5OHM.js → page-W4G6433H.js} +1 -1
  26. package/dist/portability/index.d.ts +330 -0
  27. package/dist/portability/index.js +34 -0
  28. package/dist/post-7IOO64MD.js +14 -0
  29. package/dist/{profile-5H6XWCK4.js → profile-KLHCAQY2.js} +1 -1
  30. package/dist/publication-3MN3WWKP.js +10 -0
  31. package/dist/{query-ast-h31svZnG.d.ts → query-ast-DQJO7yRV.d.ts} +1 -1
  32. package/dist/{registry-Dh4Kr3fo.d.ts → registry-C9IRLLeR.d.ts} +1 -1
  33. package/dist/schema/index.d.ts +366 -26
  34. package/dist/schema/index.js +195 -149
  35. package/dist/space-GBTEHZOK.js +1 -1
  36. package/dist/store/index.d.ts +4 -4
  37. package/dist/store/index.js +2 -2
  38. package/dist/{store-jukJYsvr.d.ts → store-D1oiFQuF.d.ts} +19 -2
  39. package/dist/{types-Z9dUzbDF.d.ts → types-gws1tSf-.d.ts} +1 -1
  40. package/package.json +27 -25
  41. package/dist/{chunk-TW5XJHNF.js → chunk-ANMAR3KY.js} +14 -14
@@ -0,0 +1,42 @@
1
+ import {
2
+ spaceCascadeAuthorization
3
+ } from "./chunk-RLRAWZJE.js";
4
+ import {
5
+ checkbox,
6
+ defineSchema,
7
+ relation,
8
+ text
9
+ } from "./chunk-NH6OLO3X.js";
10
+
11
+ // src/schema/schemas/publication.ts
12
+ var PublicationSchema = defineSchema({
13
+ name: "Publication",
14
+ namespace: "xnet://xnet.fyi/",
15
+ properties: {
16
+ /** Display title, used as the feed title */
17
+ title: text({ required: true, maxLength: 200 }),
18
+ /** Feed description / tagline */
19
+ description: text({ maxLength: 1e3 }),
20
+ /** Absolute site root the posts publish under, e.g. `https://xnet.fyi` */
21
+ baseUrl: text({ maxLength: 500 }),
22
+ /** Path prefix beneath `baseUrl`, e.g. `/blog` */
23
+ basePath: text({ maxLength: 200 }),
24
+ /** Feed language tag (BCP 47), e.g. `en-gb` */
25
+ language: text({ maxLength: 20 }),
26
+ /** Canonical SECURITY home (exploration 0179) */
27
+ space: relation({ target: "xnet://xnet.fyi/Space@1.0.0" }),
28
+ /** Byline pool; a post may credit any subset (exploration 0269) */
29
+ authors: relation({ target: "xnet://xnet.fyi/Profile@1.0.0", multiple: true }),
30
+ /**
31
+ * Whether readers may follow this publication independently of its
32
+ * authors. Off makes it an archive: readable, but not subscribable.
33
+ */
34
+ followable: checkbox({ default: true })
35
+ },
36
+ // Inherits access from its home Space (exploration 0181/0192).
37
+ authorization: spaceCascadeAuthorization()
38
+ });
39
+
40
+ export {
41
+ PublicationSchema
42
+ };
@@ -10,15 +10,15 @@ import {
10
10
  ledgerAccountId,
11
11
  ledgerWriteKind
12
12
  } from "./chunk-3UOUVEZW.js";
13
- import {
14
- accountRecordId,
15
- revocationRecordId
16
- } from "./chunk-5ECIKN6Z.js";
17
13
  import {
18
14
  SYSTEM_SCHEMA_BASE_IRIS,
19
15
  isSystemNamespaceResource,
20
16
  isSystemSchemaIri
21
17
  } from "./chunk-ZNHLH7SC.js";
18
+ import {
19
+ accountRecordId,
20
+ revocationRecordId
21
+ } from "./chunk-5ECIKN6Z.js";
22
22
  import {
23
23
  createNodeId,
24
24
  getBaseSchemaIRI
@@ -913,7 +913,7 @@ import {
913
913
  createUnsignedChange,
914
914
  createBatchId
915
915
  } from "@xnetjs/sync";
916
- import { verifyChange, verifyChangeHash } from "@xnetjs/sync";
916
+ import { verifyChange, verifyChangeHash, verifyChangesFast } from "@xnetjs/sync";
917
917
 
918
918
  // src/store/batch-write-orchestrator.ts
919
919
  var elapsedMs = (startedAt) => Math.max(0, Date.now() - startedAt);
@@ -2699,32 +2699,34 @@ var NodeStore = class {
2699
2699
  });
2700
2700
  }
2701
2701
  }
2702
- async applyRemoteChange(change) {
2702
+ async applyRemoteChange(change, options = {}) {
2703
2703
  const start = this.telemetry ? Date.now() : 0;
2704
2704
  try {
2705
- if (!verifyChangeHash(change)) {
2706
- const error = new Error(
2707
- `[NodeStore] Remote change ${change.id} failed hash verification - data may be corrupted`
2708
- );
2709
- this.telemetry?.reportSecurityEvent("data.hash_verification_failed", "high");
2710
- throw error;
2711
- }
2712
- try {
2713
- const publicKey = parseDID(change.authorDID);
2714
- if (!verifyChange(change, publicKey)) {
2705
+ if (!options.preVerified) {
2706
+ if (!verifyChangeHash(change)) {
2715
2707
  const error = new Error(
2716
- `[NodeStore] Remote change ${change.id} failed signature verification - signature does not match author ${change.authorDID}`
2708
+ `[NodeStore] Remote change ${change.id} failed hash verification - data may be corrupted`
2717
2709
  );
2718
- this.telemetry?.reportSecurityEvent("data.signature_verification_failed", "high");
2710
+ this.telemetry?.reportSecurityEvent("data.hash_verification_failed", "high");
2719
2711
  throw error;
2720
2712
  }
2721
- } catch (err) {
2722
- if (err instanceof Error && err.message.includes("failed")) {
2723
- throw err;
2713
+ try {
2714
+ const publicKey = parseDID(change.authorDID);
2715
+ if (!verifyChange(change, publicKey)) {
2716
+ const error = new Error(
2717
+ `[NodeStore] Remote change ${change.id} failed signature verification - signature does not match author ${change.authorDID}`
2718
+ );
2719
+ this.telemetry?.reportSecurityEvent("data.signature_verification_failed", "high");
2720
+ throw error;
2721
+ }
2722
+ } catch (err) {
2723
+ if (err instanceof Error && err.message.includes("failed")) {
2724
+ throw err;
2725
+ }
2726
+ throw new Error(
2727
+ `[NodeStore] Remote change ${change.id} failed verification: ${err instanceof Error ? err.message : String(err)}`
2728
+ );
2724
2729
  }
2725
- throw new Error(
2726
- `[NodeStore] Remote change ${change.id} failed verification: ${err instanceof Error ? err.message : String(err)}`
2727
- );
2728
2730
  }
2729
2731
  await this.enforceRemoteLedgerWrite(change);
2730
2732
  if (this.authEvaluator) {
@@ -2774,6 +2776,36 @@ var NodeStore = class {
2774
2776
  throw err;
2775
2777
  }
2776
2778
  }
2779
+ /**
2780
+ * Verify hash + signature for many remote changes at once.
2781
+ *
2782
+ * Results are positional and never short-circuit, so a caller can quarantine
2783
+ * exactly the changes that failed and still apply the rest. This runs the
2784
+ * SAME checks as {@link applyRemoteChange} — it just amortizes the native
2785
+ * crypto setup across the batch (exploration 0357).
2786
+ */
2787
+ async verifyRemoteChanges(changes) {
2788
+ const entries = [];
2789
+ const slots = [];
2790
+ for (const change of changes) {
2791
+ if (!verifyChangeHash(change)) {
2792
+ this.telemetry?.reportSecurityEvent("data.hash_verification_failed", "high");
2793
+ slots.push(-1);
2794
+ continue;
2795
+ }
2796
+ try {
2797
+ slots.push(entries.push({ change, publicKey: parseDID(change.authorDID) }) - 1);
2798
+ } catch {
2799
+ slots.push(-1);
2800
+ }
2801
+ }
2802
+ const signatureResults = await verifyChangesFast(entries);
2803
+ for (const [index, ok] of signatureResults.entries()) {
2804
+ if (!ok) this.telemetry?.reportSecurityEvent("data.signature_verification_failed", "high");
2805
+ void index;
2806
+ }
2807
+ return slots.map((slot) => slot === -1 ? false : signatureResults[slot]);
2808
+ }
2777
2809
  /**
2778
2810
  * Apply multiple remote changes (from sync).
2779
2811
  */
@@ -2784,9 +2816,16 @@ var NodeStore = class {
2784
2816
  { lamport: b.lamport, author: b.authorDID }
2785
2817
  )
2786
2818
  );
2787
- for (const change of sorted) {
2819
+ const verdicts = await this.verifyRemoteChanges(sorted);
2820
+ for (const [index, change] of sorted.entries()) {
2821
+ if (!verdicts[index]) {
2822
+ console.warn(
2823
+ `[NodeStore] skipping remote change ${change.hash} for node ${change.payload?.nodeId}: failed hash or signature verification`
2824
+ );
2825
+ continue;
2826
+ }
2788
2827
  try {
2789
- await this.applyRemoteChange(change);
2828
+ await this.applyRemoteChange(change, { preVerified: true });
2790
2829
  } catch (err) {
2791
2830
  console.warn(
2792
2831
  `[NodeStore] skipping un-appliable remote change for node ${change.payload?.nodeId}:`,
@@ -705,6 +705,9 @@ var ReviewTaskSchema = defineSchema({
705
705
  },
706
706
  authorization: reviewTaskAuthorization
707
707
  });
708
+ function publicInteractionPolicyId(targetId) {
709
+ return `pipolicy:${targetId}`;
710
+ }
708
711
 
709
712
  export {
710
713
  AbuseReportSchema,
@@ -718,5 +721,6 @@ export {
718
721
  QualitySignalSchema,
719
722
  ContentProvenanceSchema,
720
723
  AppealSchema,
721
- ReviewTaskSchema
724
+ ReviewTaskSchema,
725
+ publicInteractionPolicyId
722
726
  };
@@ -38,7 +38,7 @@ var ProfileSchema = defineSchema({
38
38
  /**
39
39
  * Linked ATProto identity (explorations 0301/0322/0337). These fields are
40
40
  * the xNet half of the bidirectional binding: the PDS half is the signed
41
- * `net.x.identity.binding` record at `atprotoBindingUri`. Foreign DIDs are
41
+ * `fyi.xnet.identity.binding` record at `atprotoBindingUri`. Foreign DIDs are
42
42
  * represent-only — they never sign xNet data — and a handle renders as
43
43
  * "verified" only after the hub has resolved the DID document, fetched the
44
44
  * binding record from the canonical PDS, and checked the xNet signature.
@@ -49,7 +49,7 @@ var PlayerIdentitySchema = defineSchema({
49
49
  properties: {
50
50
  /** Display / gamer name. */
51
51
  displayName: text({ required: true, maxLength: 200 }),
52
- /** The player's own XNet `did:key` — the portable login across publishers. */
52
+ /** The player's own xNet `did:key` — the portable login across publishers. */
53
53
  did: text({ maxLength: 512 }),
54
54
  /** Avatar asset (glTF/USD), stored by reference. */
55
55
  avatarAsset: file({ accept: [...GAME_ASSET_MIME_TYPES] }),
@@ -177,7 +177,7 @@ var GameAssetSchema = defineSchema({
177
177
  namespace: GAME_NAMESPACE,
178
178
  properties: {
179
179
  title: text({ required: true, maxLength: 300 }),
180
- /** The asset payload, by reference (CID) — never parsed by XNet. */
180
+ /** The asset payload, by reference (CID) — never parsed by xNet. */
181
181
  file: file({ required: true, accept: [...GAME_ASSET_MIME_TYPES] }),
182
182
  format: select({ options: GAME_ASSET_FORMATS, default: "glb" }),
183
183
  sourceGame: text({ maxLength: 200 }),
@@ -0,0 +1,83 @@
1
+ import {
2
+ spaceCascadeAuthorization,
3
+ spaceContributorAuthorization
4
+ } from "./chunk-RLRAWZJE.js";
5
+ import {
6
+ created,
7
+ createdBy,
8
+ defineSchema,
9
+ number,
10
+ relation,
11
+ select,
12
+ text
13
+ } from "./chunk-NH6OLO3X.js";
14
+
15
+ // src/schema/schemas/event.ts
16
+ var EVENT_SCHEMA_IRI = "xnet://xnet.fyi/Event@1.0.0";
17
+ var RSVP_SCHEMA_IRI = "xnet://xnet.fyi/Rsvp@1.0.0";
18
+ var EventSchema = defineSchema({
19
+ name: "Event",
20
+ namespace: "xnet://xnet.fyi/",
21
+ properties: {
22
+ title: text({ required: true, maxLength: 300 }),
23
+ description: text({ maxLength: 2e3 }),
24
+ space: relation({ target: "xnet://xnet.fyi/Space@1.0.0" }),
25
+ /** Start, ms since epoch. The field CalendarView sorts and places on. */
26
+ startsAt: number({ required: true }),
27
+ /** End, ms since epoch. Absent = a point in time rather than a range. */
28
+ endsAt: number({}),
29
+ /** Where — a URL for online, a place for in-person. Free text either way. */
30
+ location: text({ maxLength: 500 }),
31
+ /**
32
+ * IANA timezone the host scheduled in (e.g. `Europe/London`), so a
33
+ * recurring community call renders correctly for everyone else. Absent =
34
+ * render in the viewer's local zone.
35
+ */
36
+ timezone: text({ maxLength: 80 }),
37
+ cancelled: select({
38
+ options: [
39
+ { id: "scheduled", name: "Scheduled", color: "green" },
40
+ { id: "cancelled", name: "Cancelled", color: "red" }
41
+ ],
42
+ default: "scheduled"
43
+ }),
44
+ createdAt: created(),
45
+ createdBy: createdBy()
46
+ },
47
+ document: void 0,
48
+ authorization: spaceCascadeAuthorization()
49
+ });
50
+ var RsvpSchema = defineSchema({
51
+ name: "Rsvp",
52
+ namespace: "xnet://xnet.fyi/",
53
+ properties: {
54
+ event: relation({ target: "xnet://xnet.fyi/Event@1.0.0", required: true }),
55
+ space: relation({ target: "xnet://xnet.fyi/Space@1.0.0" }),
56
+ response: select({
57
+ options: [
58
+ { id: "going", name: "Going", color: "green" },
59
+ { id: "maybe", name: "Maybe", color: "yellow" },
60
+ { id: "declined", name: "Not going", color: "gray" }
61
+ ],
62
+ required: true,
63
+ default: "going"
64
+ }),
65
+ createdAt: created(),
66
+ createdBy: createdBy()
67
+ },
68
+ document: void 0,
69
+ authorization: spaceContributorAuthorization()
70
+ });
71
+ function rsvpId(eventId, memberDid) {
72
+ return `rsvp:${eventId}:${memberDid}`;
73
+ }
74
+ var upcomingEvents = (events, now) => events.filter((e) => e.cancelled !== "cancelled" && (e.endsAt ?? e.startsAt ?? 0) >= now).sort((a, b) => (a.startsAt ?? 0) - (b.startsAt ?? 0));
75
+
76
+ export {
77
+ EVENT_SCHEMA_IRI,
78
+ RSVP_SCHEMA_IRI,
79
+ EventSchema,
80
+ RsvpSchema,
81
+ rsvpId,
82
+ upcomingEvents
83
+ };
@@ -2,8 +2,10 @@ import {
2
2
  spaceCascadeAuthorization
3
3
  } from "./chunk-RLRAWZJE.js";
4
4
  import {
5
+ date,
5
6
  defineSchema,
6
7
  file,
8
+ json,
7
9
  relation,
8
10
  select,
9
11
  text
@@ -51,7 +53,31 @@ var PageSchema = defineSchema({
51
53
  { id: "space", name: "Space", color: "purple" }
52
54
  ],
53
55
  default: "stack"
54
- })
56
+ }),
57
+ // ─── Publishing (exploration 0362) ──────────────────────────────────────
58
+ // A post is a Page with editorial metadata, not a separate document type:
59
+ // publishing is a lens over the page substrate (0346), not a fork of it.
60
+ /** Publication this page is a post in; empty = not a post */
61
+ publication: relation({ target: "xnet://xnet.fyi/Publication@1.0.0" }),
62
+ /** URL segment, unique within the publication. Empty = never published */
63
+ slug: text({ maxLength: 80 }),
64
+ /** Feed/meta description. Falls back to a generated excerpt when empty */
65
+ excerpt: text({ maxLength: 1e3 }),
66
+ /**
67
+ * First publication time. **Absence is what makes a post a draft** — it is
68
+ * the single source of truth for public visibility in feeds and sitemaps.
69
+ */
70
+ publishedAt: date({}),
71
+ /** Set when first published elsewhere, so search engines credit the original */
72
+ canonicalUrl: text({ maxLength: 500 }),
73
+ /**
74
+ * The published version: a frontier (`Record<NodeId, ChangeHash>`) pinned
75
+ * at publish time (exploration 0329). Editing the live page does not
76
+ * change what readers see until it is re-published.
77
+ *
78
+ * A pinned frontier is a pin: log pruning must respect it (0329's rule).
79
+ */
80
+ publishedFrontier: json({})
55
81
  },
56
82
  document: "yjs",
57
83
  // Collaborative Y.Doc for rich text
@@ -5,6 +5,12 @@ import {
5
5
  EXTENSION_FIELD_SCHEMA_IRI,
6
6
  SCHEMA_EXTENSION_SCHEMA_IRI
7
7
  } from "./chunk-2JROE7ML.js";
8
+ import {
9
+ PresenceSummarySchema,
10
+ SchemaDefinitionSchema,
11
+ buildSystemNodeId,
12
+ validateSchemaDefinitionNode
13
+ } from "./chunk-ZNHLH7SC.js";
8
14
  import {
9
15
  ACCOUNT_RECORD_SCHEMA_IRI,
10
16
  DEVICE_RECORD_SCHEMA_IRI,
@@ -15,12 +21,6 @@ import {
15
21
  revocationRecordId,
16
22
  revokedSubjects
17
23
  } from "./chunk-5ECIKN6Z.js";
18
- import {
19
- PresenceSummarySchema,
20
- SchemaDefinitionSchema,
21
- buildSystemNodeId,
22
- validateSchemaDefinitionNode
23
- } from "./chunk-ZNHLH7SC.js";
24
24
  import {
25
25
  checkbox,
26
26
  createNodeId,
@@ -353,7 +353,14 @@ function filterOrphanedComments(comments, resolvers) {
353
353
  // src/schema/schemas/index.ts
354
354
  var builtInSchemas = {
355
355
  // Versioned IRIs (canonical)
356
- "xnet://xnet.fyi/Page@1.0.0": () => import("./page-MADZ5OHM.js").then((m) => m.PageSchema),
356
+ "xnet://xnet.fyi/Page@1.0.0": () => import("./page-W4G6433H.js").then((m) => m.PageSchema),
357
+ "xnet://xnet.fyi/Post@1.0.0": () => import("./post-7IOO64MD.js").then((m) => m.PostSchema),
358
+ "xnet://xnet.fyi/Course@1.0.0": () => import("./course-C5DXOIVO.js").then((m) => m.CourseSchema),
359
+ "xnet://xnet.fyi/Lesson@1.0.0": () => import("./course-C5DXOIVO.js").then((m) => m.LessonSchema),
360
+ "xnet://xnet.fyi/LessonProgress@1.0.0": () => import("./course-C5DXOIVO.js").then((m) => m.LessonProgressSchema),
361
+ "xnet://xnet.fyi/Event@1.0.0": () => import("./event-VW3FBN4F.js").then((m) => m.EventSchema),
362
+ "xnet://xnet.fyi/Rsvp@1.0.0": () => import("./event-VW3FBN4F.js").then((m) => m.RsvpSchema),
363
+ "xnet://xnet.fyi/Publication@1.0.0": () => import("./publication-3MN3WWKP.js").then((m) => m.PublicationSchema),
357
364
  "xnet://xnet.fyi/Folder@1.0.0": () => import("./folder-D4IL7UHP.js").then((m) => m.FolderSchema),
358
365
  "xnet://xnet.fyi/Tag@1.0.0": () => import("./tag-LHP2J53R.js").then((m) => m.TagSchema),
359
366
  "xnet://xnet.fyi/Database@2.0.0": () => import("./database-VJSYCFXH.js").then((m) => m.DatabaseSchema),
@@ -402,7 +409,7 @@ var builtInSchemas = {
402
409
  "xnet://xnet.fyi/Draft@1.0.0": () => import("./draft-T5KDLPC4.js").then((m) => m.DraftSchema),
403
410
  "xnet://xnet.fyi/Reaction@1.0.0": () => import("./reaction-MRZHOGPW.js").then((m) => m.ReactionSchema),
404
411
  "xnet://xnet.fyi/DebugReport@1.0.0": () => import("./debug-report-JFSUVHHJ.js").then((m) => m.DebugReportSchema),
405
- "xnet://xnet.fyi/Profile@1.0.0": () => import("./profile-5H6XWCK4.js").then((m) => m.ProfileSchema),
412
+ "xnet://xnet.fyi/Profile@1.0.0": () => import("./profile-KLHCAQY2.js").then((m) => m.ProfileSchema),
406
413
  "xnet://xnet.fyi/Channel@1.0.0": () => import("./channel-DXLP6PEJ.js").then((m) => m.ChannelSchema),
407
414
  "xnet://xnet.fyi/ChatMessage@1.0.0": () => import("./chat-message-EZW77LY3.js").then((m) => m.ChatMessageSchema),
408
415
  // Integration schema pack (exploration 0213)
@@ -423,26 +430,26 @@ var builtInSchemas = {
423
430
  "xnet://xnet.fyi/SchemaCompatibility@1.0.0": () => import("./system-X2F6HN3K.js").then((m) => m.SchemaCompatibilitySchema),
424
431
  "xnet://xnet.fyi/SyncPolicy@1.0.0": () => import("./system-X2F6HN3K.js").then((m) => m.SyncPolicySchema),
425
432
  "xnet://xnet.fyi/PresenceSummary@1.0.0": () => import("./system-X2F6HN3K.js").then((m) => m.PresenceSummarySchema),
426
- "xnet://xnet.fyi/AbuseReport@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.AbuseReportSchema),
427
- "xnet://xnet.fyi/ModerationLabel@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.ModerationLabelSchema),
428
- "xnet://xnet.fyi/PolicyList@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.PolicyListSchema),
429
- "xnet://xnet.fyi/PolicySubscription@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.PolicySubscriptionSchema),
430
- "xnet://xnet.fyi/PublicInteractionPolicy@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.PublicInteractionPolicySchema),
431
- "xnet://xnet.fyi/MessageRequest@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.MessageRequestSchema),
432
- "xnet://xnet.fyi/CommunityNote@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.CommunityNoteSchema),
433
- "xnet://xnet.fyi/NoteRating@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.NoteRatingSchema),
434
- "xnet://xnet.fyi/QualitySignal@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.QualitySignalSchema),
435
- "xnet://xnet.fyi/ContentProvenance@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.ContentProvenanceSchema),
436
- "xnet://xnet.fyi/Appeal@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.AppealSchema),
437
- "xnet://xnet.fyi/ReviewTask@1.0.0": () => import("./moderation-HRMMBFVH.js").then((m) => m.ReviewTaskSchema),
433
+ "xnet://xnet.fyi/AbuseReport@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.AbuseReportSchema),
434
+ "xnet://xnet.fyi/ModerationLabel@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.ModerationLabelSchema),
435
+ "xnet://xnet.fyi/PolicyList@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.PolicyListSchema),
436
+ "xnet://xnet.fyi/PolicySubscription@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.PolicySubscriptionSchema),
437
+ "xnet://xnet.fyi/PublicInteractionPolicy@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.PublicInteractionPolicySchema),
438
+ "xnet://xnet.fyi/MessageRequest@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.MessageRequestSchema),
439
+ "xnet://xnet.fyi/CommunityNote@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.CommunityNoteSchema),
440
+ "xnet://xnet.fyi/NoteRating@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.NoteRatingSchema),
441
+ "xnet://xnet.fyi/QualitySignal@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.QualitySignalSchema),
442
+ "xnet://xnet.fyi/ContentProvenance@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.ContentProvenanceSchema),
443
+ "xnet://xnet.fyi/Appeal@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.AppealSchema),
444
+ "xnet://xnet.fyi/ReviewTask@1.0.0": () => import("./moderation-5Z4LKOKN.js").then((m) => m.ReviewTaskSchema),
438
445
  // Game-interop schema pack (exploration 0200)
439
- "xnet://xnet.fyi/PlayerIdentity@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.PlayerIdentitySchema),
440
- "xnet://xnet.fyi/Inventory@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.InventorySchema),
441
- "xnet://xnet.fyi/GameItem@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.GameItemSchema),
442
- "xnet://xnet.fyi/Achievement@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.AchievementSchema),
443
- "xnet://xnet.fyi/MatchSession@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.MatchSessionSchema),
444
- "xnet://xnet.fyi/GameEconomyEntry@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.GameEconomyEntrySchema),
445
- "xnet://xnet.fyi/GameAsset@1.0.0": () => import("./game-NEQP7OFX.js").then((m) => m.GameAssetSchema),
446
+ "xnet://xnet.fyi/PlayerIdentity@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.PlayerIdentitySchema),
447
+ "xnet://xnet.fyi/Inventory@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.InventorySchema),
448
+ "xnet://xnet.fyi/GameItem@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.GameItemSchema),
449
+ "xnet://xnet.fyi/Achievement@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.AchievementSchema),
450
+ "xnet://xnet.fyi/MatchSession@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.MatchSessionSchema),
451
+ "xnet://xnet.fyi/GameEconomyEntry@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.GameEconomyEntrySchema),
452
+ "xnet://xnet.fyi/GameAsset@1.0.0": () => import("./game-7AXW7XKS.js").then((m) => m.GameAssetSchema),
446
453
  // Memory schema pack (exploration 0211)
447
454
  "xnet://xnet.fyi/MemoryItem@1.0.0": () => import("./memory-PAPUIKWD.js").then((m) => m.MemoryItemSchema),
448
455
  // Agent schema pack (exploration 0337)
@@ -452,7 +459,14 @@ var builtInSchemas = {
452
459
  "xnet://xnet.fyi/AgentApproval@1.0.0": () => import("./agent-IJLOS2LA.js").then((m) => m.AgentApprovalSchema),
453
460
  "xnet://xnet.fyi/AgentNotification@1.0.0": () => import("./agent-IJLOS2LA.js").then((m) => m.AgentNotificationSchema),
454
461
  // Legacy unversioned IRIs (aliases for the current version)
455
- "xnet://xnet.fyi/Page": () => import("./page-MADZ5OHM.js").then((m) => m.PageSchema),
462
+ "xnet://xnet.fyi/Page": () => import("./page-W4G6433H.js").then((m) => m.PageSchema),
463
+ "xnet://xnet.fyi/Post": () => import("./post-7IOO64MD.js").then((m) => m.PostSchema),
464
+ "xnet://xnet.fyi/Course": () => import("./course-C5DXOIVO.js").then((m) => m.CourseSchema),
465
+ "xnet://xnet.fyi/Lesson": () => import("./course-C5DXOIVO.js").then((m) => m.LessonSchema),
466
+ "xnet://xnet.fyi/LessonProgress": () => import("./course-C5DXOIVO.js").then((m) => m.LessonProgressSchema),
467
+ "xnet://xnet.fyi/Event": () => import("./event-VW3FBN4F.js").then((m) => m.EventSchema),
468
+ "xnet://xnet.fyi/Rsvp": () => import("./event-VW3FBN4F.js").then((m) => m.RsvpSchema),
469
+ "xnet://xnet.fyi/Publication": () => import("./publication-3MN3WWKP.js").then((m) => m.PublicationSchema),
456
470
  "xnet://xnet.fyi/Folder": () => import("./folder-D4IL7UHP.js").then((m) => m.FolderSchema),
457
471
  "xnet://xnet.fyi/Tag": () => import("./tag-LHP2J53R.js").then((m) => m.TagSchema),
458
472
  "xnet://xnet.fyi/Database": () => import("./database-VJSYCFXH.js").then((m) => m.DatabaseSchema),
@@ -496,7 +510,7 @@ var builtInSchemas = {
496
510
  "xnet://xnet.fyi/Comment": () => import("./comment-2AS6EGH3.js").then((m) => m.CommentSchema),
497
511
  "xnet://xnet.fyi/Reaction": () => import("./reaction-MRZHOGPW.js").then((m) => m.ReactionSchema),
498
512
  "xnet://xnet.fyi/DebugReport": () => import("./debug-report-JFSUVHHJ.js").then((m) => m.DebugReportSchema),
499
- "xnet://xnet.fyi/Profile": () => import("./profile-5H6XWCK4.js").then((m) => m.ProfileSchema),
513
+ "xnet://xnet.fyi/Profile": () => import("./profile-KLHCAQY2.js").then((m) => m.ProfileSchema),
500
514
  "xnet://xnet.fyi/Channel": () => import("./channel-DXLP6PEJ.js").then((m) => m.ChannelSchema),
501
515
  "xnet://xnet.fyi/ChatMessage": () => import("./chat-message-EZW77LY3.js").then((m) => m.ChatMessageSchema),
502
516
  "xnet://xnet.fyi/Feed": () => import("./feed-WR4A7XUF.js").then((m) => m.FeedSchema),
@@ -516,26 +530,26 @@ var builtInSchemas = {
516
530
  "xnet://xnet.fyi/SchemaCompatibility": () => import("./system-X2F6HN3K.js").then((m) => m.SchemaCompatibilitySchema),
517
531
  "xnet://xnet.fyi/SyncPolicy": () => import("./system-X2F6HN3K.js").then((m) => m.SyncPolicySchema),
518
532
  "xnet://xnet.fyi/PresenceSummary": () => import("./system-X2F6HN3K.js").then((m) => m.PresenceSummarySchema),
519
- "xnet://xnet.fyi/AbuseReport": () => import("./moderation-HRMMBFVH.js").then((m) => m.AbuseReportSchema),
520
- "xnet://xnet.fyi/ModerationLabel": () => import("./moderation-HRMMBFVH.js").then((m) => m.ModerationLabelSchema),
521
- "xnet://xnet.fyi/PolicyList": () => import("./moderation-HRMMBFVH.js").then((m) => m.PolicyListSchema),
522
- "xnet://xnet.fyi/PolicySubscription": () => import("./moderation-HRMMBFVH.js").then((m) => m.PolicySubscriptionSchema),
523
- "xnet://xnet.fyi/PublicInteractionPolicy": () => import("./moderation-HRMMBFVH.js").then((m) => m.PublicInteractionPolicySchema),
524
- "xnet://xnet.fyi/MessageRequest": () => import("./moderation-HRMMBFVH.js").then((m) => m.MessageRequestSchema),
525
- "xnet://xnet.fyi/CommunityNote": () => import("./moderation-HRMMBFVH.js").then((m) => m.CommunityNoteSchema),
526
- "xnet://xnet.fyi/NoteRating": () => import("./moderation-HRMMBFVH.js").then((m) => m.NoteRatingSchema),
527
- "xnet://xnet.fyi/QualitySignal": () => import("./moderation-HRMMBFVH.js").then((m) => m.QualitySignalSchema),
528
- "xnet://xnet.fyi/ContentProvenance": () => import("./moderation-HRMMBFVH.js").then((m) => m.ContentProvenanceSchema),
529
- "xnet://xnet.fyi/Appeal": () => import("./moderation-HRMMBFVH.js").then((m) => m.AppealSchema),
530
- "xnet://xnet.fyi/ReviewTask": () => import("./moderation-HRMMBFVH.js").then((m) => m.ReviewTaskSchema),
533
+ "xnet://xnet.fyi/AbuseReport": () => import("./moderation-5Z4LKOKN.js").then((m) => m.AbuseReportSchema),
534
+ "xnet://xnet.fyi/ModerationLabel": () => import("./moderation-5Z4LKOKN.js").then((m) => m.ModerationLabelSchema),
535
+ "xnet://xnet.fyi/PolicyList": () => import("./moderation-5Z4LKOKN.js").then((m) => m.PolicyListSchema),
536
+ "xnet://xnet.fyi/PolicySubscription": () => import("./moderation-5Z4LKOKN.js").then((m) => m.PolicySubscriptionSchema),
537
+ "xnet://xnet.fyi/PublicInteractionPolicy": () => import("./moderation-5Z4LKOKN.js").then((m) => m.PublicInteractionPolicySchema),
538
+ "xnet://xnet.fyi/MessageRequest": () => import("./moderation-5Z4LKOKN.js").then((m) => m.MessageRequestSchema),
539
+ "xnet://xnet.fyi/CommunityNote": () => import("./moderation-5Z4LKOKN.js").then((m) => m.CommunityNoteSchema),
540
+ "xnet://xnet.fyi/NoteRating": () => import("./moderation-5Z4LKOKN.js").then((m) => m.NoteRatingSchema),
541
+ "xnet://xnet.fyi/QualitySignal": () => import("./moderation-5Z4LKOKN.js").then((m) => m.QualitySignalSchema),
542
+ "xnet://xnet.fyi/ContentProvenance": () => import("./moderation-5Z4LKOKN.js").then((m) => m.ContentProvenanceSchema),
543
+ "xnet://xnet.fyi/Appeal": () => import("./moderation-5Z4LKOKN.js").then((m) => m.AppealSchema),
544
+ "xnet://xnet.fyi/ReviewTask": () => import("./moderation-5Z4LKOKN.js").then((m) => m.ReviewTaskSchema),
531
545
  // Game-interop schema pack (exploration 0200)
532
- "xnet://xnet.fyi/PlayerIdentity": () => import("./game-NEQP7OFX.js").then((m) => m.PlayerIdentitySchema),
533
- "xnet://xnet.fyi/Inventory": () => import("./game-NEQP7OFX.js").then((m) => m.InventorySchema),
534
- "xnet://xnet.fyi/GameItem": () => import("./game-NEQP7OFX.js").then((m) => m.GameItemSchema),
535
- "xnet://xnet.fyi/Achievement": () => import("./game-NEQP7OFX.js").then((m) => m.AchievementSchema),
536
- "xnet://xnet.fyi/MatchSession": () => import("./game-NEQP7OFX.js").then((m) => m.MatchSessionSchema),
537
- "xnet://xnet.fyi/GameEconomyEntry": () => import("./game-NEQP7OFX.js").then((m) => m.GameEconomyEntrySchema),
538
- "xnet://xnet.fyi/GameAsset": () => import("./game-NEQP7OFX.js").then((m) => m.GameAssetSchema),
546
+ "xnet://xnet.fyi/PlayerIdentity": () => import("./game-7AXW7XKS.js").then((m) => m.PlayerIdentitySchema),
547
+ "xnet://xnet.fyi/Inventory": () => import("./game-7AXW7XKS.js").then((m) => m.InventorySchema),
548
+ "xnet://xnet.fyi/GameItem": () => import("./game-7AXW7XKS.js").then((m) => m.GameItemSchema),
549
+ "xnet://xnet.fyi/Achievement": () => import("./game-7AXW7XKS.js").then((m) => m.AchievementSchema),
550
+ "xnet://xnet.fyi/MatchSession": () => import("./game-7AXW7XKS.js").then((m) => m.MatchSessionSchema),
551
+ "xnet://xnet.fyi/GameEconomyEntry": () => import("./game-7AXW7XKS.js").then((m) => m.GameEconomyEntrySchema),
552
+ "xnet://xnet.fyi/GameAsset": () => import("./game-7AXW7XKS.js").then((m) => m.GameAssetSchema),
539
553
  // Memory schema pack (exploration 0211)
540
554
  "xnet://xnet.fyi/MemoryItem": () => import("./memory-PAPUIKWD.js").then((m) => m.MemoryItemSchema),
541
555
  // Agent schema pack (exploration 0337)
@@ -1,6 +1,6 @@
1
- import { b as CellValue, a2 as FormSubmissionMeta, C as ColumnDefinition, m as FieldType, n as FieldConfig, P as SelectColor, o as FieldNode, p as SelectOptionNode, V as ViewType, F as FilterGroup, S as SortConfig, ae as ViewConfig, a as ColumnType, ag as FilterOperator, Q as RollupAggregation, q as RollupColumnConfig } from './form-types-Dkqm9UO2.js';
2
- import { aK as NodeQueryMaterializedViewOptions, h as NodeState, a7 as PropertyType, S as SchemaIRI, a as Schema } from './types-Z9dUzbDF.js';
3
- import { N as NodeStore } from './store-jukJYsvr.js';
1
+ import { C as CellValue, a9 as FormSubmissionMeta, H as ColumnDefinition, j as FieldType, k as FieldConfig, M as SelectColor, l as FieldNode, S as SelectOptionNode, W as ViewType, Y as FilterGroup, $ as SortConfig, X as ViewConfig, E as ColumnType, _ as FilterOperator, O as RollupAggregation, m as RollupColumnConfig } from './form-types-BrHYdpi0.js';
2
+ import { ar as NodeQueryMaterializedViewOptions, h as NodeState, E as PropertyType, S as SchemaIRI, a as Schema } from './types-gws1tSf-.js';
3
+ import { N as NodeStore } from './store-D1oiFQuF.js';
4
4
  import * as Y from 'yjs';
5
5
 
6
6
  /**
@@ -2051,4 +2051,4 @@ declare function cloneSampleRows(rows: Array<Record<string, unknown>>, idMap: Ma
2051
2051
  */
2052
2052
  declare function cloneSchema(source: CloneSourceData, options?: CloneSchemaOptions): CloneSchemaResult;
2053
2053
 
2054
- export { getViews$1 as $, getTitleField as A, createField as B, type CreateRowOptions as C, type DatabaseRowNode as D, updateField as E, deleteField as F, moveField as G, duplicateField as H, getSelectOptions as I, getDatabaseSelectOptions as J, createSelectOption as K, updateSelectOption as L, MAX_KEY_LENGTH as M, deleteSelectOption as N, moveSelectOption as O, type EnsureExtensionOptions as P, type QueryRowsOptions as Q, RICHTEXT_PREFIX as R, type CreateExtensionFieldOptions as S, ensureSchemaExtension as T, type UpdateFieldOptions as U, createExtensionField as V, renameExtensionField as W, deleteExtensionField as X, type ViewNode as Y, type CreateViewOptions as Z, type UpdateViewOptions as _, type QueryRowsResult as a, setColumnWidth as a$, getView$1 as a0, createView$1 as a1, updateView$1 as a2, deleteView$1 as a3, duplicateView$1 as a4, moveView as a5, setViewFilters$1 as a6, setViewSorts$1 as a7, setViewGroupBy$1 as a8, toggleViewGroupCollapsed as a9, getColumn as aA, getColumnIndex as aB, getTitleColumn as aC, createColumn as aD, updateColumn as aE, deleteColumn as aF, reorderColumn as aG, duplicateColumn as aH, getViews as aI, getView as aJ, getViewByType as aK, createView as aL, updateView as aM, deleteView as aN, duplicateView as aO, setViewFilters as aP, clearViewFilters as aQ, setViewSorts as aR, addViewSort as aS, removeViewSort as aT, clearViewSorts as aU, setViewGroupBy as aV, toggleGroupCollapsed$1 as aW, setVisibleColumns as aX, showColumn as aY, hideColumn as aZ, reorderViewColumns as a_, setFieldHidden as aa, setViewFieldWidth as ab, setViewFieldOrder as ac, effectiveFieldSortKey as ad, convertCellValue as ae, cellValueToText as af, type ConvertContext as ag, type ConvertedCell as ah, setupDatabase as ai, type SetupDatabaseResult as aj, DEFAULT_DATABASE_SCHEMA_VERSION as ak, fieldsToStoredColumns as al, buildSchemaFromFields as am, getDatabaseSchemaIRI as an, createNodeDatabaseSchemaResolver as ao, initializeDatabaseDoc as ap, isDatabaseDocInitialized as aq, addDefaultTitleColumn as ar, addDefaultTableView as as, setupNewDatabase as at, getMeta as au, setMeta as av, deleteMeta as aw, getDatabaseDocumentModel as ax, type DatabaseDocumentModel as ay, getColumns as az, updateCells as b, type JsonParseOptions as b$, OPERATORS_BY_TYPE as b0, OPERATOR_LABELS as b1, getOperatorsForType as b2, isValidOperator as b3, getOperatorLabel as b4, operatorRequiresValue as b5, filterRows as b6, createEqualsFilter as b7, createAnyOfFilter as b8, combineFiltersAnd as b9, getEmptyValue as bA, computeRollup as bB, batchComputeRollups as bC, validateRollupConfig as bD, isNumericAggregation as bE, getAggregationResultType as bF, type RollupRow as bG, type RollupContext as bH, FormulaService as bI, createFormulaService as bJ, type FormulaRow as bK, type FormulaValidationResult as bL, parseCSV as bM, parseCSVLine as bN, guessColumnType as bO, parseValue as bP, parseRow as bQ, inferColumnTypes as bR, parseJSON as bS, inferColumnsFromRows as bT, inferTypeFromValues as bU, toColumnDefinitions as bV, validateJsonData as bW, type ParsedCSV as bX, type CsvParseOptions as bY, type ParsedJSON as bZ, type InferredColumn as b_, combineFiltersOr as ba, type FilterableRow as bb, sortRows as bc, createSort as bd, toggleSortDirection as be, addOrToggleSort as bf, removeSort as bg, type SortableRow as bh, groupRows as bi, toggleGroupCollapsed as bj, expandAllGroups as bk, collapseAllGroups as bl, type GroupableRow as bm, type GroupConfig as bn, type RowGroup as bo, type GroupAggregates as bp, executeQuery as bq, createFilterQuery as br, createSortQuery as bs, createPaginatedQuery as bt, flattenGroups as bu, getTotalFromGroups as bv, type QueryableRow as bw, type QueryOptions as bx, type QueryResult as by, aggregate as bz, createRow as c, exportToCsv as c0, escapeCSV as c1, formatValue as c2, createCsvBlob as c3, downloadCsv as c4, exportToJson as c5, exportToJsonArray as c6, exportToNdjson as c7, createJsonBlob as c8, downloadJson as c9, type CreateDatabaseSchemaResolverOptions as cA, cloneSchema as cB, cloneColumns as cC, cloneSampleRows as cD, generateColumnIdMap as cE, remapViewColumnIds as cF, type CloneSchemaOptions as cG, type CloneSchemaResult as cH, type CloneSourceData as cI, type ExportRow$1 as ca, type CsvExportOptions as cb, type JsonExportOptions as cc, type ExportedJSON as cd, type ExportedColumn as ce, buildSchemaIRI as cf, parseDatabaseSchemaIRI as cg, isDatabaseSchemaIRI as ch, parseVersion as ci, bumpSchemaVersion as cj, createInitialSchemaMetadata as ck, buildDatabaseSchema as cl, createVersionEntry as cm, pruneVersionHistory as cn, getVersionBumpType as co, DATABASE_SCHEMA_NAMESPACE as cp, DATABASE_SCHEMA_PREFIX as cq, MAX_VERSION_HISTORY as cr, type DatabaseSchemaMetadata as cs, type StoredColumn as ct, type SchemaVersionEntry as cu, type VersionBumpType as cv, createDatabaseSchemaResolver as cw, extractSchemaFromDoc as cx, getSchemaIRIFromDoc as cy, type DocFetcher as cz, deleteRow as d, checkNeedsRebalancing as e, generateSortKey as f, getRow as g, generateSortKeyWithJitter as h, isValidSortKey as i, compareSortKeys as j, rebalanceSortKeys as k, getRichTextCell as l, moveRow as m, needsRebalancing as n, hasRichTextContent as o, hasRichTextColumns as p, queryRows as q, rebalanceDatabase as r, getRichTextColumnIds as s, deleteRichTextCell as t, updateCell as u, getRichTextPlainText as v, type CreateFieldOptions as w, type CreateSelectOptionOptions as x, getFields as y, getField as z };
2054
+ export { getViews$1 as $, getTitleField as A, createField as B, type CreateRowOptions as C, type DatabaseRowNode as D, updateField as E, deleteField as F, moveField as G, duplicateField as H, ensureSchemaExtension as I, createExtensionField as J, renameExtensionField as K, deleteExtensionField as L, MAX_KEY_LENGTH as M, type EnsureExtensionOptions as N, type CreateExtensionFieldOptions as O, getSelectOptions as P, type QueryRowsOptions as Q, RICHTEXT_PREFIX as R, getDatabaseSelectOptions as S, createSelectOption as T, type UpdateFieldOptions as U, updateSelectOption as V, deleteSelectOption as W, moveSelectOption as X, type ViewNode as Y, type CreateViewOptions as Z, type UpdateViewOptions as _, type QueryRowsResult as a, formatValue as a$, getView$1 as a0, createView$1 as a1, updateView$1 as a2, deleteView$1 as a3, duplicateView$1 as a4, moveView as a5, setViewFilters$1 as a6, setViewSorts$1 as a7, setViewGroupBy$1 as a8, toggleViewGroupCollapsed as a9, computeRollup as aA, batchComputeRollups as aB, validateRollupConfig as aC, type RollupRow as aD, type RollupContext as aE, FormulaService as aF, createFormulaService as aG, type FormulaRow as aH, type FormulaValidationResult as aI, parseCSV as aJ, parseCSVLine as aK, guessColumnType as aL, parseValue as aM, parseRow as aN, inferColumnTypes as aO, parseJSON as aP, inferColumnsFromRows as aQ, inferTypeFromValues as aR, toColumnDefinitions as aS, validateJsonData as aT, type ParsedCSV as aU, type CsvParseOptions as aV, type ParsedJSON as aW, type InferredColumn as aX, type JsonParseOptions as aY, exportToCsv as aZ, escapeCSV as a_, setFieldHidden as aa, setViewFieldWidth as ab, setViewFieldOrder as ac, effectiveFieldSortKey as ad, setupDatabase as ae, type SetupDatabaseResult as af, DEFAULT_DATABASE_SCHEMA_VERSION as ag, fieldsToStoredColumns as ah, buildSchemaFromFields as ai, getDatabaseSchemaIRI as aj, createNodeDatabaseSchemaResolver as ak, initializeDatabaseDoc as al, isDatabaseDocInitialized as am, addDefaultTitleColumn as an, addDefaultTableView as ao, setupNewDatabase as ap, getMeta as aq, setMeta as ar, deleteMeta as as, getDatabaseDocumentModel as at, type DatabaseDocumentModel as au, convertCellValue as av, cellValueToText as aw, type ConvertContext as ax, type ConvertedCell as ay, aggregate as az, updateCells as b, type GroupableRow as b$, createCsvBlob as b0, downloadCsv as b1, exportToJson as b2, exportToJsonArray as b3, exportToNdjson as b4, createJsonBlob as b5, downloadJson as b6, type ExportRow$1 as b7, type CsvExportOptions as b8, type JsonExportOptions as b9, setVisibleColumns as bA, showColumn as bB, hideColumn as bC, reorderViewColumns as bD, setColumnWidth as bE, OPERATORS_BY_TYPE as bF, OPERATOR_LABELS as bG, getOperatorsForType as bH, isValidOperator as bI, getOperatorLabel as bJ, operatorRequiresValue as bK, filterRows as bL, createEqualsFilter as bM, createAnyOfFilter as bN, combineFiltersAnd as bO, combineFiltersOr as bP, type FilterableRow as bQ, sortRows as bR, createSort as bS, toggleSortDirection as bT, addOrToggleSort as bU, removeSort as bV, type SortableRow as bW, groupRows as bX, toggleGroupCollapsed as bY, expandAllGroups as bZ, collapseAllGroups as b_, type ExportedJSON as ba, type ExportedColumn as bb, getColumns as bc, getColumn as bd, getColumnIndex as be, getTitleColumn as bf, createColumn as bg, updateColumn as bh, deleteColumn as bi, reorderColumn as bj, duplicateColumn as bk, getViews as bl, getView as bm, getViewByType as bn, createView as bo, updateView as bp, deleteView as bq, duplicateView as br, setViewFilters as bs, clearViewFilters as bt, setViewSorts as bu, addViewSort as bv, removeViewSort as bw, clearViewSorts as bx, setViewGroupBy as by, toggleGroupCollapsed$1 as bz, createRow as c, type GroupConfig as c0, type RowGroup as c1, type GroupAggregates as c2, executeQuery as c3, createFilterQuery as c4, createSortQuery as c5, createPaginatedQuery as c6, flattenGroups as c7, getTotalFromGroups as c8, type QueryableRow as c9, cloneSampleRows as cA, generateColumnIdMap as cB, remapViewColumnIds as cC, type CloneSchemaOptions as cD, type CloneSchemaResult as cE, type CloneSourceData as cF, getEmptyValue as cG, isNumericAggregation as cH, getAggregationResultType as cI, type QueryOptions as ca, type QueryResult as cb, buildSchemaIRI as cc, parseDatabaseSchemaIRI as cd, isDatabaseSchemaIRI as ce, parseVersion as cf, bumpSchemaVersion as cg, createInitialSchemaMetadata as ch, buildDatabaseSchema as ci, createVersionEntry as cj, pruneVersionHistory as ck, getVersionBumpType as cl, DATABASE_SCHEMA_NAMESPACE as cm, DATABASE_SCHEMA_PREFIX as cn, MAX_VERSION_HISTORY as co, type DatabaseSchemaMetadata as cp, type StoredColumn as cq, type SchemaVersionEntry as cr, type VersionBumpType as cs, createDatabaseSchemaResolver as ct, extractSchemaFromDoc as cu, getSchemaIRIFromDoc as cv, type DocFetcher as cw, type CreateDatabaseSchemaResolverOptions as cx, cloneSchema as cy, cloneColumns as cz, deleteRow as d, checkNeedsRebalancing as e, generateSortKey as f, getRow as g, generateSortKeyWithJitter as h, isValidSortKey as i, compareSortKeys as j, rebalanceSortKeys as k, getRichTextCell as l, moveRow as m, needsRebalancing as n, hasRichTextContent as o, hasRichTextColumns as p, queryRows as q, rebalanceDatabase as r, getRichTextColumnIds as s, deleteRichTextCell as t, updateCell as u, getRichTextPlainText as v, type CreateFieldOptions as w, type CreateSelectOptionOptions as x, getFields as y, getField as z };
@@ -0,0 +1,24 @@
1
+ import {
2
+ COURSE_SCHEMA_IRI,
3
+ CourseSchema,
4
+ LESSON_PROGRESS_SCHEMA_IRI,
5
+ LESSON_SCHEMA_IRI,
6
+ LessonProgressSchema,
7
+ LessonSchema,
8
+ courseCompletion,
9
+ lessonProgressId
10
+ } from "./chunk-GJAOMEQO.js";
11
+ import "./chunk-RLRAWZJE.js";
12
+ import "./chunk-GSLOK5KV.js";
13
+ import "./chunk-NH6OLO3X.js";
14
+ import "./chunk-D4LUUZYD.js";
15
+ export {
16
+ COURSE_SCHEMA_IRI,
17
+ CourseSchema,
18
+ LESSON_PROGRESS_SCHEMA_IRI,
19
+ LESSON_SCHEMA_IRI,
20
+ LessonProgressSchema,
21
+ LessonSchema,
22
+ courseCompletion,
23
+ lessonProgressId
24
+ };