@hello-ai-company/editor-core 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,11 +12,11 @@ npm install @hello-ai-company/editor-core
12
12
 
13
13
  Requirements: Node.js `>=20`, ESM. No runtime dependencies. No CommonJS export.
14
14
 
15
- Until the first public npmjs publish, pack from this repository:
15
+ Published `@hello-ai-company/editor-core@0.1.0` on npmjs is **immutable**. Workspace candidate is `0.1.1` (published from **main** after merge — not from this draft PR). Pack the candidate:
16
16
 
17
17
  ```bash
18
18
  npm pack -w @hello-ai-company/editor-core
19
- npm install ./hello-ai-company-editor-core-0.1.0.tgz
19
+ npm install ./hello-ai-company-editor-core-0.1.1.tgz
20
20
  ```
21
21
 
22
22
  ## Quickstart
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { EDITOR_DOCUMENT_SCHEMA_VERSION, cloneEditorBlock, cloneEditorBlocks, createEditorDocument, isEditorBlock, isEditorDocument, isJsonValue, isSupportedSchemaVersion, type EditorBlock, type EditorBlockProps, type EditorDocument, type JsonValue } from "./model.js";
2
2
  export { EditorDocumentSerializationError, deserializeEditorDocument, fromSerializedEditorDocument, serializeEditorDocument, toSerializedEditorDocument, type SerializedEditorDocument } from "./serialization.js";
3
- export type { AIEditAction, AIEditRequest, AIProvider, AssetProvider, AssetUploadScope, CommentsProvider, CreatedChildPage, DatabaseListOptions, DatabaseProvider, DatabaseRowItem, DatabaseRowsPage, EditorAsset, EditorAssetKind, EditorComment, EditorPageLink, EditorProviders, EditorUploadFile, EditorVersionSnapshot, ImageSearchProvider, ImageSearchResult, NativeBridge, NativeBridgeStats, NativeHostRequest, NativeHostResponse, PageProvider, VersionProvider } from "./providers.js";
3
+ export { PAGE_HREF_PREFIX, decodePageHref, encodePageHref, isPageHref } from "./pageLink.js";
4
+ export { relationEdgeId, withRelationEdgeId, type RelationEdge, type RelationKind, type RelationTargetQuery, type RelationTargetType } from "./relations.js";
5
+ export type { AIEditAction, AIEditRequest, AIProvider, AssetProvider, AssetUploadScope, BacklinkProvider, BacklinkQuery, BacklinkItem, CommentsProvider, CreateChildPageOptions, CreatePageOptions, CreatedChildPage, DatabaseFilter, DatabaseListOptions, DatabasePropertyDefinition, DatabasePropertyOption, DatabasePropertySort, DatabasePropertyType, DatabaseProvider, DatabaseQueryCapabilities, DatabaseRowItem, DatabaseRowsPage, EditorAsset, EditorAssetKind, EditorComment, EditorDatabase, EditorPageLink, EditorProviders, EditorUploadFile, EditorVersionSnapshot, ImageSearchProvider, ImageSearchResult, NativeBridge, NativeBridgeStats, NativeHostRequest, NativeHostResponse, PageId, PageProvider, PageSearchOptions, VersionProvider } from "./providers.js";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EAChB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export { EDITOR_DOCUMENT_SCHEMA_VERSION, cloneEditorBlock, cloneEditorBlocks, createEditorDocument, isEditorBlock, isEditorDocument, isJsonValue, isSupportedSchemaVersion } from "./model.js";
2
2
  export { EditorDocumentSerializationError, deserializeEditorDocument, fromSerializedEditorDocument, serializeEditorDocument, toSerializedEditorDocument } from "./serialization.js";
3
+ export { PAGE_HREF_PREFIX, decodePageHref, encodePageHref, isPageHref } from "./pageLink.js";
4
+ export { relationEdgeId, withRelationEdgeId } from "./relations.js";
3
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EAKzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,EAE3B,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EAKzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,EAE3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,kBAAkB,EAKnB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Host-neutral page reference codec.
3
+ *
4
+ * Supports a portable `#page:<encoded-id>` token for hosts that need an
5
+ * href-style representation. Not bound to browser hash navigation — hosts may
6
+ * use the opaque page id directly.
7
+ */
8
+ export declare const PAGE_HREF_PREFIX: "#page:";
9
+ /** Encode a stable page id into a portable href-style token. */
10
+ export declare function encodePageHref(pageId: string): string;
11
+ /**
12
+ * Decode a page id from an href-style token.
13
+ * Returns null for malformed / non-page hrefs.
14
+ */
15
+ export declare function decodePageHref(href: string): string | null;
16
+ export declare function isPageHref(href: string): boolean;
17
+ //# sourceMappingURL=pageLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageLink.d.ts","sourceRoot":"","sources":["../src/pageLink.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,gBAAgB,EAAG,QAAiB,CAAC;AAElD,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Host-neutral page reference codec.
3
+ *
4
+ * Supports a portable `#page:<encoded-id>` token for hosts that need an
5
+ * href-style representation. Not bound to browser hash navigation — hosts may
6
+ * use the opaque page id directly.
7
+ */
8
+ export const PAGE_HREF_PREFIX = "#page:";
9
+ /** Encode a stable page id into a portable href-style token. */
10
+ export function encodePageHref(pageId) {
11
+ return `${PAGE_HREF_PREFIX}${encodeURIComponent(pageId)}`;
12
+ }
13
+ /**
14
+ * Decode a page id from an href-style token.
15
+ * Returns null for malformed / non-page hrefs.
16
+ */
17
+ export function decodePageHref(href) {
18
+ if (typeof href !== "string" || !href.startsWith(PAGE_HREF_PREFIX)) {
19
+ return null;
20
+ }
21
+ const encoded = href.slice(PAGE_HREF_PREFIX.length);
22
+ if (!encoded)
23
+ return null;
24
+ try {
25
+ const decoded = decodeURIComponent(encoded);
26
+ return decoded.length > 0 ? decoded : null;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ export function isPageHref(href) {
33
+ return decodePageHref(href) !== null;
34
+ }
35
+ //# sourceMappingURL=pageLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageLink.js","sourceRoot":"","sources":["../src/pageLink.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAiB,CAAC;AAElD,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AACvC,CAAC"}
@@ -16,12 +16,92 @@ export type AIEditRequest = {
16
16
  export type AIProvider = {
17
17
  edit?(request: AIEditRequest): Promise<string>;
18
18
  };
19
+ /**
20
+ * Portable property kinds for typed metadata (Phase 4F-3B).
21
+ * Unsupported host types normalize to `"unknown"` (display-only).
22
+ */
23
+ export type DatabasePropertyType = "text" | "number" | "boolean" | "date" | "url" | "select" | "status" | "unknown";
24
+ export type DatabasePropertyOption = {
25
+ value: string;
26
+ label?: string;
27
+ };
28
+ /**
29
+ * Host-owned property metadata. Identity is `id` (not display `name`).
30
+ * Additive — legacy hosts may omit entirely and keep `schema: Record<string, string>`.
31
+ */
32
+ export type DatabasePropertyDefinition = {
33
+ id: string;
34
+ name: string;
35
+ type: DatabasePropertyType;
36
+ readOnly?: boolean;
37
+ options?: readonly DatabasePropertyOption[];
38
+ /** Original host type when normalized to `unknown`. */
39
+ rawType?: string;
40
+ };
41
+ /**
42
+ * Explicit advertisement of advanced query features.
43
+ * Absence or `false` is fail-closed — do not assume `listRows` understands filters/sorts.
44
+ */
45
+ export type DatabaseQueryCapabilities = {
46
+ propertyFilters?: boolean;
47
+ propertySort?: boolean;
48
+ };
49
+ /**
50
+ * AND-only structured filters (Phase 4F-3B).
51
+ * Discriminated by `propertyType` + `operator` so value types stay sound.
52
+ * No OR groups / nested boolean trees in this phase.
53
+ */
54
+ export type DatabaseFilter = {
55
+ propertyId: string;
56
+ propertyType: "text" | "url";
57
+ operator: "contains" | "equals" | "notEquals";
58
+ value: string;
59
+ } | {
60
+ propertyId: string;
61
+ propertyType: "number";
62
+ operator: "equals" | "gt" | "gte" | "lt" | "lte";
63
+ value: number;
64
+ } | {
65
+ propertyId: string;
66
+ propertyType: "boolean";
67
+ operator: "is";
68
+ value: boolean;
69
+ } | {
70
+ propertyId: string;
71
+ propertyType: "date";
72
+ operator: "on" | "before" | "after";
73
+ value: string;
74
+ } | {
75
+ propertyId: string;
76
+ propertyType: "select" | "status";
77
+ operator: "equals" | "notEquals";
78
+ value: string;
79
+ } | {
80
+ propertyId: string;
81
+ propertyType: "text" | "number" | "boolean" | "date" | "url" | "select" | "status";
82
+ operator: "isEmpty" | "isNotEmpty";
83
+ };
84
+ /** Single property sort — mutually exclusive with legacy sortBy when set. */
85
+ export type DatabasePropertySort = {
86
+ propertyId: string;
87
+ direction: "asc" | "desc";
88
+ };
19
89
  export type DatabaseListOptions = {
20
90
  limit?: number;
21
91
  cursor?: string;
92
+ /** Free-text search — may coexist with structured `filters` (host executes both). */
22
93
  query?: string;
94
+ /**
95
+ * Legacy sort. When `propertySort` is set, hosts should treat property sort
96
+ * as the active sort and ignore a conflicting legacy claim from the client.
97
+ * OpenEditor's runtime sends exactly one of: propertySort XOR (sortBy+direction).
98
+ */
23
99
  sortBy?: "position" | "title";
24
100
  direction?: "asc" | "desc";
101
+ /** Structured AND filters — only when host advertises `queryCapabilities.propertyFilters`. */
102
+ filters?: readonly DatabaseFilter[];
103
+ /** Property sort — only when host advertises `queryCapabilities.propertySort`. */
104
+ propertySort?: DatabasePropertySort;
25
105
  includeTrashed?: boolean;
26
106
  trashedOnly?: boolean;
27
107
  };
@@ -44,7 +124,31 @@ export type DatabaseRowsPage = {
44
124
  total: number;
45
125
  };
46
126
  };
127
+ /**
128
+ * Host-neutral database descriptor. Rows are never stored in EditorDocument —
129
+ * they come from DatabaseProvider.listRows / getRow.
130
+ *
131
+ * Phase 4F-3B adds optional typed metadata. The opaque `properties` bag is
132
+ * left untouched for host use — do not reinterpret it as property definitions.
133
+ */
134
+ export type EditorDatabase = {
135
+ id: string;
136
+ title: string;
137
+ /** Opaque host bag — not property definitions. */
138
+ properties?: Record<string, JsonValue>;
139
+ /** Typed property metadata (additive). Identity is `propertyDefinitions[].id`. */
140
+ propertyDefinitions?: readonly DatabasePropertyDefinition[];
141
+ /** Explicit advanced query capabilities (fail-closed when absent). */
142
+ queryCapabilities?: DatabaseQueryCapabilities;
143
+ views?: ReadonlyArray<{
144
+ id: string;
145
+ title?: string;
146
+ viewType?: string;
147
+ }>;
148
+ };
47
149
  export type DatabaseProvider = {
150
+ /** Optional metadata lookup — does not embed rows into the document. */
151
+ getDatabase?(databaseId: string): Promise<EditorDatabase | null>;
48
152
  listRows?(databaseId: string, options?: DatabaseListOptions): Promise<DatabaseRowsPage>;
49
153
  getRow?(databaseId: string, rowKey: string): Promise<{
50
154
  databaseId: string;
@@ -131,24 +235,72 @@ export type ImageSearchProvider = {
131
235
  results: ImageSearchResult[];
132
236
  }>;
133
237
  };
238
+ /** Host-stable page identity — UUID, slug, local key, or remote id. */
239
+ export type PageId = string;
134
240
  export type EditorPageLink = {
135
- id: string;
241
+ id: PageId;
136
242
  title: string;
137
243
  preview?: string;
138
244
  imageUrl?: string;
139
245
  imageAlt?: string;
140
246
  };
141
247
  export type CreatedChildPage = {
142
- id: string;
248
+ id: PageId;
143
249
  title: string;
144
250
  preview?: string;
145
251
  imageUrl?: string;
146
252
  imageAlt?: string;
147
253
  };
254
+ export type CreateChildPageOptions = {
255
+ parentPageId?: PageId;
256
+ title?: string;
257
+ };
258
+ export type CreatePageOptions = {
259
+ title?: string;
260
+ };
261
+ export type PageSearchOptions = {
262
+ excludePageId?: PageId;
263
+ limit?: number;
264
+ };
265
+ /**
266
+ * Host-owned page workspace seam.
267
+ * OpenEditor stores page *references*; the host owns page entities.
268
+ *
269
+ * `createChildPage()` with no args remains supported for older hosts.
270
+ */
148
271
  export type PageProvider = {
149
- listLinks?(excludePageId?: string): Promise<EditorPageLink[]>;
150
- createChildPage?(): CreatedChildPage | void;
151
- openPage?(pageId: string): void;
272
+ listLinks?(excludePageId?: PageId): Promise<EditorPageLink[]>;
273
+ searchPages?(query: string, options?: PageSearchOptions): Promise<EditorPageLink[]>;
274
+ getPage?(pageId: PageId): Promise<EditorPageLink | null>;
275
+ createPage?(options?: CreatePageOptions): CreatedChildPage | EditorPageLink | void | Promise<CreatedChildPage | EditorPageLink | void>;
276
+ createChildPage?(options?: CreateChildPageOptions): CreatedChildPage | void | Promise<CreatedChildPage | void>;
277
+ openPage?(pageId: PageId): void;
278
+ };
279
+ export type BacklinkItem = {
280
+ sourceDocumentId: string;
281
+ sourceBlockId?: string;
282
+ sourceTitle?: string;
283
+ kind: string;
284
+ };
285
+ /**
286
+ * Workspace-wide incoming relations. A single editor only knows outgoing
287
+ * edges from its document — backlinks must come from the host.
288
+ *
289
+ * Discriminated on `targetType`. A database-row query always requires
290
+ * both `targetDatabaseId` and `targetId` (row keys are database-scoped).
291
+ */
292
+ export type BacklinkQuery = {
293
+ targetType: "page" | "block" | "database";
294
+ targetId: string;
295
+ limit?: number;
296
+ } | {
297
+ targetType: "database-row";
298
+ targetDatabaseId: string;
299
+ targetId: string;
300
+ limit?: number;
301
+ };
302
+ export type BacklinkProvider = {
303
+ listBacklinks?(query: BacklinkQuery): Promise<BacklinkItem[]>;
152
304
  };
153
305
  export type NativeBridgeStats = {
154
306
  characters?: number;
@@ -196,6 +348,8 @@ export type EditorProviders = {
196
348
  assets?: AssetProvider;
197
349
  imageSearch?: ImageSearchProvider;
198
350
  pages?: PageProvider;
351
+ /** Optional host seam for workspace-wide incoming relations. */
352
+ backlinks?: BacklinkProvider;
199
353
  nativeBridge?: NativeBridge;
200
354
  };
201
355
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Outgoing semantic relationships extracted from an EditorDocument.
3
+ *
4
+ * DocumentIndex stays structural (outline / block text).
5
+ * RelationIndex models references (pages, child pages, blocks, databases).
6
+ *
7
+ * Workspace-wide *incoming* backlinks are NOT computed here — hosts supply
8
+ * them via BacklinkProvider.
9
+ *
10
+ * `RelationEdge` is a **discriminated union**. Invalid targetType/kind
11
+ * combinations are rejected by TypeScript.
12
+ *
13
+ * A database row reference is identified by the tuple `(databaseId, rowId)`.
14
+ * `rowId` alone is never a globally valid database-row target:
15
+ * db-a/row-1 ≠ db-b/row-1.
16
+ *
17
+ * Distinguish:
18
+ * - database-view-reference → a databaseView block pointing at a database
19
+ * - database-row-relation → a reference to a specific row within a database
20
+ */
21
+ type RelationEdgeBase = {
22
+ /** Owning document that contains the reference. */
23
+ sourceDocumentId: string;
24
+ /** Block that holds the reference (when known). */
25
+ sourceBlockId?: string;
26
+ /** Optional stable edge key for incremental upserts. */
27
+ edgeId?: string;
28
+ };
29
+ export type PageReferenceEdge = RelationEdgeBase & {
30
+ targetType: "page";
31
+ targetId: string;
32
+ kind: "page-reference" | "child-page";
33
+ };
34
+ export type BlockReferenceEdge = RelationEdgeBase & {
35
+ targetType: "block";
36
+ targetId: string;
37
+ kind: "block-reference";
38
+ };
39
+ export type DatabaseViewReferenceEdge = RelationEdgeBase & {
40
+ targetType: "database";
41
+ targetId: string;
42
+ kind: "database-view-reference";
43
+ };
44
+ export type DatabaseRowRelationEdge = RelationEdgeBase & {
45
+ targetType: "database-row";
46
+ /** Database that scopes `targetId` (required; row keys are not global). */
47
+ targetDatabaseId: string;
48
+ targetId: string;
49
+ kind: "database-row-relation";
50
+ };
51
+ /**
52
+ * Outgoing semantic edge. Discriminated on `targetType` (and constrained
53
+ * `kind` per variant).
54
+ */
55
+ export type RelationEdge = PageReferenceEdge | BlockReferenceEdge | DatabaseViewReferenceEdge | DatabaseRowRelationEdge;
56
+ export type RelationKind = RelationEdge["kind"];
57
+ export type RelationTargetType = RelationEdge["targetType"];
58
+ /**
59
+ * Typed target selector for RelationIndex queries.
60
+ * `database-row` always requires `targetDatabaseId`.
61
+ */
62
+ export type RelationTargetQuery = {
63
+ targetType: "page" | "block" | "database";
64
+ targetId: string;
65
+ } | {
66
+ targetType: "database-row";
67
+ targetDatabaseId: string;
68
+ targetId: string;
69
+ };
70
+ /** Distributive Omit — plain Omit collapses union keys incorrectly. */
71
+ type RelationEdgeInput = RelationEdge extends infer E ? E extends RelationEdge ? Omit<E, "edgeId"> : never : never;
72
+ export declare function relationEdgeId(edge: RelationEdgeInput): string;
73
+ export declare function withRelationEdgeId(edge: RelationEdge): RelationEdge;
74
+ export {};
75
+ //# sourceMappingURL=relations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,KAAK,gBAAgB,GAAG;IACtB,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,GAAG;IACzD,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,yBAAyB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IACvD,UAAU,EAAE,cAAc,CAAC;IAC3B,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,uBAAuB,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,yBAAyB,GACzB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IACE,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,UAAU,EAAE,cAAc,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,uEAAuE;AACvE,KAAK,iBAAiB,GAAG,YAAY,SAAS,MAAM,CAAC,GACjD,CAAC,SAAS,YAAY,GACpB,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,GACjB,KAAK,GACP,KAAK,CAAC;AAEV,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAW9D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAGnE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Outgoing semantic relationships extracted from an EditorDocument.
3
+ *
4
+ * DocumentIndex stays structural (outline / block text).
5
+ * RelationIndex models references (pages, child pages, blocks, databases).
6
+ *
7
+ * Workspace-wide *incoming* backlinks are NOT computed here — hosts supply
8
+ * them via BacklinkProvider.
9
+ *
10
+ * `RelationEdge` is a **discriminated union**. Invalid targetType/kind
11
+ * combinations are rejected by TypeScript.
12
+ *
13
+ * A database row reference is identified by the tuple `(databaseId, rowId)`.
14
+ * `rowId` alone is never a globally valid database-row target:
15
+ * db-a/row-1 ≠ db-b/row-1.
16
+ *
17
+ * Distinguish:
18
+ * - database-view-reference → a databaseView block pointing at a database
19
+ * - database-row-relation → a reference to a specific row within a database
20
+ */
21
+ export function relationEdgeId(edge) {
22
+ const databaseScope = edge.targetType === "database-row" ? edge.targetDatabaseId : "";
23
+ return [
24
+ edge.sourceDocumentId,
25
+ edge.sourceBlockId ?? "",
26
+ edge.kind,
27
+ edge.targetType,
28
+ databaseScope,
29
+ edge.targetId
30
+ ].join("\0");
31
+ }
32
+ export function withRelationEdgeId(edge) {
33
+ if (edge.edgeId)
34
+ return edge;
35
+ return { ...edge, edgeId: relationEdgeId(edge) };
36
+ }
37
+ //# sourceMappingURL=relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relations.js","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAwEH,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,MAAM,aAAa,GACjB,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,OAAO;QACL,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,aAAa,IAAI,EAAE;QACxB,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,UAAU;QACf,aAAa;QACb,IAAI,CAAC,QAAQ;KACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACnD,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hello-ai-company/editor-core",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "license": "MIT",
5
5
  "description": "Portable TypeScript document model, JSON serialization, and optional provider types. A small host-neutral document layer - not a rich-text editor.",
6
6
  "keywords": [