@alistigo/document-format 0.2.2

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 ADDED
@@ -0,0 +1,107 @@
1
+ # @alistigo/document-format
2
+
3
+ The **specification, JSON schemas, and TypeScript types** for the Alistigo list document format. Single source of truth — every other Alistigo package (the iframe app, the runner, the host protocol, plugins) imports types and schemas from here.
4
+
5
+ A document is a self-contained JSON-LD object with three sections:
6
+
7
+ - **`meta`** — identity (listId, formatVersion, dates) and the *event-log integrity descriptor* (full / truncated / absent).
8
+ - **`eventLog`** — the append-only history. Optional. Can be prefix-truncated or omitted to shrink the document.
9
+ - **`projection`** — the current rendered state of the list (a schema.org `ItemList`).
10
+
11
+ ```jsonc
12
+ {
13
+ "@context": ["https://schema.org", { "alistigo": "https://alistigo.io/ns/v1#" }],
14
+ "@type": "alistigo:Document",
15
+ "meta": {
16
+ "listId": "urn:uuid:0190f5cc-…",
17
+ "formatVersion": "1.0.0",
18
+ "dateCreated": "2026-04-30T12:00:00Z",
19
+ "dateModified": "2026-04-30T12:00:00Z",
20
+ "eventLog": { "presence": "full" }
21
+ },
22
+ "eventLog": [ /* append-only events */ ],
23
+ "projection": {
24
+ "@type": "ItemList",
25
+ "itemListElement": [ /* current items */ ]
26
+ }
27
+ }
28
+ ```
29
+
30
+ ## Documentation
31
+
32
+ | File | Purpose |
33
+ |------|---------|
34
+ | [`docs/spec.md`](docs/spec.md) | The full format specification: every section, every field, every rule. **Authoritative.** |
35
+ | [`docs/validation.md`](docs/validation.md) | How to validate a document — three layers (schema / plugin schemas / replay equivalence) with executable pseudo-code. |
36
+ | [`src/schemas/document.json`](src/schemas/document.json) | The JSON Schema (Draft 2020-12). Bundled — `$defs` cover Meta, Event, Projection, ListItem, Item. |
37
+ | [`src/types.ts`](src/types.ts) | TypeScript mirrors of the schemas. Keep in lockstep with the JSON. |
38
+
39
+ ## Install
40
+
41
+ ```sh
42
+ pnpm add @alistigo/document-format
43
+ # Optional — only if you use validateDocument():
44
+ pnpm add ajv ajv-formats
45
+ ```
46
+
47
+ `ajv` and `ajv-formats` are *optional* peer dependencies. Consumers that only need types or the schema as JSON can skip them; consumers that call `validateDocument()` install them.
48
+
49
+ ## Usage
50
+
51
+ ### Types
52
+
53
+ ```ts
54
+ import type {
55
+ AlistigoDocument,
56
+ AlistigoMeta,
57
+ AlistigoEvent,
58
+ AlistigoProjection,
59
+ } from "@alistigo/document-format";
60
+
61
+ const doc: AlistigoDocument = JSON.parse(rawJson);
62
+ ```
63
+
64
+ ### JSON Schema
65
+
66
+ ```ts
67
+ import { documentSchema } from "@alistigo/document-format";
68
+
69
+ // or, if you want to point Ajv at the file directly (for npm CDN consumers etc):
70
+ // import documentSchema from "@alistigo/document-format/schemas/document.json";
71
+ ```
72
+
73
+ ### Validation
74
+
75
+ ```ts
76
+ import { validateDocument } from "@alistigo/document-format";
77
+
78
+ const result = await validateDocument(unknownInput);
79
+ if (!result.valid) {
80
+ console.error(result.errors);
81
+ return;
82
+ }
83
+ // proceed with input as AlistigoDocument
84
+ ```
85
+
86
+ For full three-layer validation (schema + plugin schemas + replay equivalence), see [`docs/validation.md`](docs/validation.md).
87
+
88
+ ### Replay an event log
89
+
90
+ ```ts
91
+ import { replayEvents } from "@alistigo/document-format";
92
+
93
+ const projection = replayEvents(doc.eventLog ?? []);
94
+ // projection should equal doc.projection when meta.eventLog.presence is "full"
95
+ ```
96
+
97
+ ## How this package is meant to evolve
98
+
99
+ - The **spec** ([`docs/spec.md`](docs/spec.md)) and the **JSON schema** ([`src/schemas/document.json`](src/schemas/document.json)) are kept in lockstep. Don't edit one without the other.
100
+ - The **TypeScript types** ([`src/types.ts`](src/types.ts)) mirror the schema. They're a developer affordance, not the source of truth.
101
+ - Format versioning is **SemVer** — see [spec §6](docs/spec.md#6-versioning--evolution). Every change to the schema bumps `FORMAT_VERSION` (exported as a constant) and adds a row to the changelog.
102
+ - The package is **publishable** (`@mlabrut/*`) so the schema is fetchable by external systems via `unpkg`/`jsdelivr` etc. URL-stable schemas are part of the contract.
103
+
104
+ ## Related
105
+
106
+ - [`projects/alistigo-ai/architecture.md`](../../projects/alistigo-ai/architecture.md) — why event sourcing and CQRS, and how the document interacts with the runtime.
107
+ - [`packages/alistigo-features/`](../alistigo-features/) — the Gherkin behavior specs that exercise this format.
@@ -0,0 +1,102 @@
1
+ export { ListDocumentSerializer, SCHEMA_VERSION } from "./serializer/list-document-serializer.js";
2
+ export * from "./types.js";
3
+ export { validateDocument } from "./validate.js";
4
+ export declare const documentSchema: {
5
+ $schema: string;
6
+ $id: string;
7
+ title: string;
8
+ description: string;
9
+ type: string;
10
+ required: string[];
11
+ properties: {
12
+ "@context": {
13
+ type: string;
14
+ required: string[];
15
+ properties: {
16
+ "@vocab": {
17
+ type: string;
18
+ const: string;
19
+ };
20
+ alistigo: {
21
+ type: string;
22
+ const: string;
23
+ };
24
+ };
25
+ };
26
+ "@type": {
27
+ type: string;
28
+ const: string;
29
+ };
30
+ "alistigo:listId": {
31
+ type: string;
32
+ pattern: string;
33
+ };
34
+ "alistigo:schemaVersion": {
35
+ type: string;
36
+ pattern: string;
37
+ };
38
+ name: {
39
+ type: string;
40
+ };
41
+ itemListElement: {
42
+ type: string;
43
+ items: {
44
+ $ref: string;
45
+ };
46
+ };
47
+ "alistigo:listEventLog": {
48
+ type: string;
49
+ items: {
50
+ $ref: string;
51
+ };
52
+ };
53
+ };
54
+ $defs: {
55
+ ListItem: {
56
+ type: string;
57
+ required: string[];
58
+ properties: {
59
+ "@type": {
60
+ type: string;
61
+ const: string;
62
+ };
63
+ "alistigo:listElementId": {
64
+ type: string;
65
+ pattern: string;
66
+ };
67
+ position: {
68
+ type: string;
69
+ minimum: number;
70
+ };
71
+ name: {
72
+ type: string;
73
+ minLength: number;
74
+ };
75
+ };
76
+ };
77
+ EventRecord: {
78
+ type: string;
79
+ required: string[];
80
+ properties: {
81
+ "alistigo:listEventId": {
82
+ type: string;
83
+ };
84
+ "alistigo:eventType": {
85
+ type: string;
86
+ enum: string[];
87
+ };
88
+ "alistigo:listId": {
89
+ type: string;
90
+ };
91
+ "alistigo:actorId": {
92
+ type: string;
93
+ };
94
+ "alistigo:timestamp": {
95
+ type: string;
96
+ format: string;
97
+ };
98
+ };
99
+ };
100
+ };
101
+ };
102
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAClG,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { ListDocumentSerializer, SCHEMA_VERSION } from "./serializer/list-document-serializer.js";
2
+ export * from "./types.js";
3
+ export { validateDocument } from "./validate.js";
4
+ import documentSchemaJson from "./schemas/document.json" with { type: "json" };
5
+ export const documentSchema = documentSchemaJson;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAClG,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@alistigo/document-format",
3
+ "version": "0.2.2",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "Specification, JSON schemas, and TypeScript types for the Alistigo list document format. The source of truth for what an Alistigo document looks like.",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ },
12
+ "./schemas/document.json": "./src/schemas/document.json"
13
+ },
14
+ "main": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "files": [
17
+ "dist",
18
+ "src/schemas",
19
+ "docs"
20
+ ],
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "dependencies": {
25
+ "@alistigo/domain": "workspace:*"
26
+ },
27
+ "peerDependencies": {
28
+ "ajv": "^8.17.0",
29
+ "ajv-formats": "^3.0.1"
30
+ },
31
+ "peerDependenciesMeta": {
32
+ "ajv": {
33
+ "optional": true
34
+ },
35
+ "ajv-formats": {
36
+ "optional": true
37
+ }
38
+ },
39
+ "module": "./index.js"
40
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://alistigo.ai/schema/v1/document.json",
4
+ "title": "Alistigo Document",
5
+ "description": "A self-contained Alistigo list document in JSON-LD ItemList format.",
6
+ "type": "object",
7
+ "required": [
8
+ "@context",
9
+ "@type",
10
+ "alistigo:listId",
11
+ "alistigo:schemaVersion",
12
+ "itemListElement",
13
+ "alistigo:listEventLog"
14
+ ],
15
+ "properties": {
16
+ "@context": {
17
+ "type": "object",
18
+ "required": ["@vocab", "alistigo"],
19
+ "properties": {
20
+ "@vocab": { "type": "string", "const": "https://schema.org/" },
21
+ "alistigo": { "type": "string", "const": "https://alistigo.ai/vocab/" }
22
+ }
23
+ },
24
+ "@type": { "type": "string", "const": "ItemList" },
25
+ "alistigo:listId": { "type": "string", "pattern": "^lst_" },
26
+ "alistigo:schemaVersion": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" },
27
+ "name": { "type": "string" },
28
+ "itemListElement": {
29
+ "type": "array",
30
+ "items": { "$ref": "#/$defs/ListItem" }
31
+ },
32
+ "alistigo:listEventLog": {
33
+ "type": "array",
34
+ "items": { "$ref": "#/$defs/EventRecord" }
35
+ }
36
+ },
37
+ "$defs": {
38
+ "ListItem": {
39
+ "type": "object",
40
+ "required": ["@type", "alistigo:listElementId", "position", "name"],
41
+ "properties": {
42
+ "@type": { "type": "string", "const": "ListItem" },
43
+ "alistigo:listElementId": { "type": "string", "pattern": "^lse_" },
44
+ "position": { "type": "integer", "minimum": 1 },
45
+ "name": { "type": "string", "minLength": 1 }
46
+ }
47
+ },
48
+ "EventRecord": {
49
+ "type": "object",
50
+ "required": [
51
+ "alistigo:listEventId",
52
+ "alistigo:eventType",
53
+ "alistigo:listId",
54
+ "alistigo:actorId",
55
+ "alistigo:timestamp"
56
+ ],
57
+ "properties": {
58
+ "alistigo:listEventId": { "type": "string" },
59
+ "alistigo:eventType": {
60
+ "type": "string",
61
+ "enum": ["ListCreated", "ListElementAdded", "ListElementDeleted", "ListExported"]
62
+ },
63
+ "alistigo:listId": { "type": "string" },
64
+ "alistigo:actorId": { "type": "string" },
65
+ "alistigo:timestamp": { "type": "string", "format": "date-time" }
66
+ }
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-document-serializer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-document-serializer.test.d.ts","sourceRoot":"","sources":["../../../src/serializer/__tests__/list-document-serializer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,95 @@
1
+ import { describe, expect, it } from "bun:test";
2
+ import { createListElementContent, generateActorId, List } from "@alistigo/domain";
3
+ import { ListDocumentSerializer, SCHEMA_VERSION } from "../list-document-serializer.js";
4
+ const actorId = generateActorId();
5
+ describe("ListDocumentSerializer.serialize", () => {
6
+ it("serializes a freshly created list to a valid document with 0 elements", () => {
7
+ const { list } = List.create({ actorId });
8
+ const doc = ListDocumentSerializer.serialize(list);
9
+ expect(doc["@type"]).toBe("ItemList");
10
+ expect(doc["alistigo:listId"]).toBe(list.id.toString());
11
+ expect(doc["alistigo:schemaVersion"]).toBe(SCHEMA_VERSION);
12
+ expect(doc.itemListElement).toHaveLength(0);
13
+ expect(doc["alistigo:listEventLog"]).toHaveLength(1);
14
+ expect(doc["alistigo:listEventLog"][0]?.["alistigo:eventType"]).toBe("ListCreated");
15
+ });
16
+ // fallow-ignore-next-line complexity
17
+ it("serializes a list after addListElement with 1 element", () => {
18
+ const { list } = List.create({ actorId });
19
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("Milk") });
20
+ const doc = ListDocumentSerializer.serialize(list);
21
+ expect(doc.itemListElement).toHaveLength(1);
22
+ expect(doc.itemListElement[0]?.["@type"]).toBe("ListItem");
23
+ expect(doc.itemListElement[0]?.name).toBe("Milk");
24
+ expect(doc.itemListElement[0]?.position).toBe(1);
25
+ expect(doc["alistigo:listEventLog"]).toHaveLength(2);
26
+ expect(doc["alistigo:listEventLog"][1]?.["alistigo:eventType"]).toBe("ListElementAdded");
27
+ });
28
+ it("appends new uncommitted events to an existing log when previousDocument is provided", () => {
29
+ const { list } = List.create({ actorId });
30
+ const firstDoc = ListDocumentSerializer.serialize(list);
31
+ list.markEventsAsCommitted();
32
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("Eggs") });
33
+ const secondDoc = ListDocumentSerializer.serialize(list, firstDoc);
34
+ expect(secondDoc["alistigo:listEventLog"]).toHaveLength(2);
35
+ expect(secondDoc["alistigo:listEventLog"][0]?.["alistigo:eventType"]).toBe("ListCreated");
36
+ expect(secondDoc["alistigo:listEventLog"][1]?.["alistigo:eventType"]).toBe("ListElementAdded");
37
+ });
38
+ it("includes title as name when list has a title", () => {
39
+ const { list } = List.create({ actorId, title: "Groceries" });
40
+ const doc = ListDocumentSerializer.serialize(list);
41
+ expect(doc.name).toBe("Groceries");
42
+ });
43
+ it("omits name when list has no title", () => {
44
+ const { list } = List.create({ actorId });
45
+ const doc = ListDocumentSerializer.serialize(list);
46
+ expect(doc.name).toBeUndefined();
47
+ });
48
+ });
49
+ describe("ListDocumentSerializer.deserialize", () => {
50
+ it("deserializes a serialized document to an equivalent list", () => {
51
+ const { list } = List.create({ actorId });
52
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("Apple") });
53
+ const doc = ListDocumentSerializer.serialize(list);
54
+ const restored = ListDocumentSerializer.deserialize(doc);
55
+ expect(restored.id.toString()).toBe(list.id.toString());
56
+ expect(restored.elements).toHaveLength(1);
57
+ expect(restored.elements[0]?.content).toBe("Apple");
58
+ });
59
+ it("deserializes preserving deletion — deleted elements are absent", () => {
60
+ const { list } = List.create({ actorId });
61
+ const addEvent = list.addListElement({
62
+ actorId,
63
+ listId: list.id,
64
+ content: createListElementContent("To delete"),
65
+ });
66
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("Keep") });
67
+ list.deleteListElement({ actorId, listId: list.id, listElementId: addEvent.listElementId });
68
+ const doc = ListDocumentSerializer.serialize(list);
69
+ const restored = ListDocumentSerializer.deserialize(doc);
70
+ expect(restored.elements).toHaveLength(1);
71
+ expect(restored.elements[0]?.content).toBe("Keep");
72
+ });
73
+ });
74
+ describe("ListDocumentSerializer round-trip", () => {
75
+ it("deserialize(serialize(list)) produces same elements", () => {
76
+ const { list } = List.create({ actorId, title: "Round-trip" });
77
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("One") });
78
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("Two") });
79
+ const doc = ListDocumentSerializer.serialize(list);
80
+ const restored = ListDocumentSerializer.deserialize(doc);
81
+ expect(restored.id.toString()).toBe(list.id.toString());
82
+ expect(restored.title).toBe("Round-trip");
83
+ expect(restored.elements).toHaveLength(2);
84
+ expect(restored.elements[0]?.content).toBe("One");
85
+ expect(restored.elements[1]?.content).toBe("Two");
86
+ });
87
+ it("round-trip produces no uncommitted events", () => {
88
+ const { list } = List.create({ actorId });
89
+ list.addListElement({ actorId, listId: list.id, content: createListElementContent("Item") });
90
+ const doc = ListDocumentSerializer.serialize(list);
91
+ const restored = ListDocumentSerializer.deserialize(doc);
92
+ expect(restored.getUncommittedEvents()).toHaveLength(0);
93
+ });
94
+ });
95
+ //# sourceMappingURL=list-document-serializer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-document-serializer.test.js","sourceRoot":"","sources":["../../../src/serializer/__tests__/list-document-serializer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { List } from "@alistigo/domain";
2
+ import { type AlistigoDocument } from "../types.js";
3
+ export declare const SCHEMA_VERSION: "1.0.0";
4
+ export declare const ListDocumentSerializer: {
5
+ serialize(list: List, previousDocument?: AlistigoDocument): AlistigoDocument;
6
+ deserialize(doc: AlistigoDocument): List;
7
+ };
8
+ //# sourceMappingURL=list-document-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-document-serializer.d.ts","sourceRoot":"","sources":["../../src/serializer/list-document-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,IAAI,EAML,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,gBAAgB,EAMtB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,cAAc,EAAG,OAAgB,CAAC;AA0F/C,eAAO,MAAM,sBAAsB;oBACjB,IAAI,qBAAqB,gBAAgB,GAAG,gBAAgB;qBA2B3D,gBAAgB,GAAG,IAAI;CAKzC,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { createListElementContent, createTimestamp, List, parseActorId, parseListElementId, parseListEventId, parseListId, } from "@alistigo/domain";
2
+ import { ALISTIGO_CONTEXT, } from "../types.js";
3
+ export const SCHEMA_VERSION = "1.0.0";
4
+ function eventToRecord(event) {
5
+ const base = {
6
+ "alistigo:listEventId": event.listEventId.toString(),
7
+ "alistigo:listId": event.listId.toString(),
8
+ "alistigo:actorId": event.actorId.toString(),
9
+ "alistigo:timestamp": event.timestamp,
10
+ };
11
+ switch (event.type) {
12
+ case "ListCreated": {
13
+ const record = {
14
+ ...base,
15
+ "alistigo:eventType": "ListCreated",
16
+ ...(event.title !== undefined ? { name: event.title } : {}),
17
+ };
18
+ return record;
19
+ }
20
+ case "ListElementAdded": {
21
+ const record = {
22
+ ...base,
23
+ "alistigo:eventType": "ListElementAdded",
24
+ "alistigo:listElementId": event.listElementId.toString(),
25
+ name: event.content,
26
+ };
27
+ return record;
28
+ }
29
+ case "ListElementDeleted": {
30
+ const record = {
31
+ ...base,
32
+ "alistigo:eventType": "ListElementDeleted",
33
+ "alistigo:listElementId": event.listElementId.toString(),
34
+ };
35
+ return record;
36
+ }
37
+ case "ListExported": {
38
+ const record = {
39
+ ...base,
40
+ "alistigo:eventType": "ListExported",
41
+ };
42
+ return record;
43
+ }
44
+ }
45
+ }
46
+ function recordToEvent(record) {
47
+ const base = {
48
+ listEventId: parseListEventId(record["alistigo:listEventId"]),
49
+ listId: parseListId(record["alistigo:listId"]),
50
+ actorId: parseActorId(record["alistigo:actorId"]),
51
+ timestamp: createTimestamp(record["alistigo:timestamp"]),
52
+ };
53
+ switch (record["alistigo:eventType"]) {
54
+ case "ListCreated": {
55
+ const created = record;
56
+ return {
57
+ ...base,
58
+ type: "ListCreated",
59
+ ...(created.name !== undefined ? { title: created.name } : {}),
60
+ };
61
+ }
62
+ case "ListElementAdded": {
63
+ const added = record;
64
+ return {
65
+ ...base,
66
+ type: "ListElementAdded",
67
+ listElementId: parseListElementId(added["alistigo:listElementId"]),
68
+ content: createListElementContent(added.name),
69
+ };
70
+ }
71
+ case "ListElementDeleted": {
72
+ const deleted = record;
73
+ return {
74
+ ...base,
75
+ type: "ListElementDeleted",
76
+ listElementId: parseListElementId(deleted["alistigo:listElementId"]),
77
+ };
78
+ }
79
+ case "ListExported": {
80
+ return {
81
+ ...base,
82
+ type: "ListExported",
83
+ format: "json-ld",
84
+ };
85
+ }
86
+ }
87
+ }
88
+ export const ListDocumentSerializer = {
89
+ serialize(list, previousDocument) {
90
+ const existingLog = previousDocument?.["alistigo:listEventLog"] ?? [];
91
+ const newRecords = list.getUncommittedEvents().map(eventToRecord);
92
+ const itemListElement = list.elements.map((element, index) => ({
93
+ "@type": "ListItem",
94
+ "alistigo:listElementId": element.id.toString(),
95
+ position: index + 1,
96
+ name: element.content,
97
+ }));
98
+ const doc = {
99
+ "@context": ALISTIGO_CONTEXT,
100
+ "@type": "ItemList",
101
+ "alistigo:listId": list.id.toString(),
102
+ "alistigo:schemaVersion": SCHEMA_VERSION,
103
+ itemListElement: itemListElement,
104
+ "alistigo:listEventLog": [...existingLog, ...newRecords],
105
+ };
106
+ if (list.title !== undefined) {
107
+ doc.name = list.title;
108
+ }
109
+ return doc;
110
+ },
111
+ deserialize(doc) {
112
+ const listId = parseListId(doc["alistigo:listId"]);
113
+ const events = doc["alistigo:listEventLog"].map(recordToEvent);
114
+ return List.rehydrate(listId, events);
115
+ },
116
+ };
117
+ //# sourceMappingURL=list-document-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-document-serializer.js","sourceRoot":"","sources":["../../src/serializer/list-document-serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export type SemVer = `${number}.${number}.${number}`;
2
+ export type TypeIDString = string;
3
+ export declare const ALISTIGO_CONTEXT: {
4
+ readonly "@vocab": "https://schema.org/";
5
+ readonly alistigo: "https://alistigo.ai/vocab/";
6
+ };
7
+ export type AlistigoContext = typeof ALISTIGO_CONTEXT;
8
+ export interface AlistigoDocument {
9
+ "@context": AlistigoContext;
10
+ "@type": "ItemList";
11
+ "alistigo:listId": TypeIDString;
12
+ "alistigo:schemaVersion": SemVer;
13
+ name?: string;
14
+ itemListElement: AlistigoListItem[];
15
+ "alistigo:listEventLog": AlistigoEventRecord[];
16
+ }
17
+ export interface AlistigoListItem {
18
+ "@type": "ListItem";
19
+ "alistigo:listElementId": TypeIDString;
20
+ position: number;
21
+ name: string;
22
+ }
23
+ interface AlistigoEventRecordBase {
24
+ "alistigo:listEventId": TypeIDString;
25
+ "alistigo:eventType": string;
26
+ "alistigo:listId": TypeIDString;
27
+ "alistigo:actorId": TypeIDString;
28
+ "alistigo:timestamp": string;
29
+ }
30
+ export interface AlistigoListCreatedRecord extends AlistigoEventRecordBase {
31
+ "alistigo:eventType": "ListCreated";
32
+ name?: string;
33
+ }
34
+ export interface AlistigoListElementAddedRecord extends AlistigoEventRecordBase {
35
+ "alistigo:eventType": "ListElementAdded";
36
+ "alistigo:listElementId": TypeIDString;
37
+ name: string;
38
+ }
39
+ export interface AlistigoListElementDeletedRecord extends AlistigoEventRecordBase {
40
+ "alistigo:eventType": "ListElementDeleted";
41
+ "alistigo:listElementId": TypeIDString;
42
+ }
43
+ export interface AlistigoListExportedRecord extends AlistigoEventRecordBase {
44
+ "alistigo:eventType": "ListExported";
45
+ }
46
+ export type AlistigoEventRecord = AlistigoListCreatedRecord | AlistigoListElementAddedRecord | AlistigoListElementDeletedRecord | AlistigoListExportedRecord;
47
+ export {};
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,UAAU,CAAC;IACpB,iBAAiB,EAAE,YAAY,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,uBAAuB,EAAE,mBAAmB,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,CAAC;IACpB,wBAAwB,EAAE,YAAY,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,uBAAuB;IAC/B,sBAAsB,EAAE,YAAY,CAAC;IACrC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,YAAY,CAAC;IAChC,kBAAkB,EAAE,YAAY,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACxE,oBAAoB,EAAE,aAAa,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,oBAAoB,EAAE,kBAAkB,CAAC;IACzC,wBAAwB,EAAE,YAAY,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gCAAiC,SAAQ,uBAAuB;IAC/E,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,wBAAwB,EAAE,YAAY,CAAC;CACxC;AAED,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,oBAAoB,EAAE,cAAc,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAC3B,yBAAyB,GACzB,8BAA8B,GAC9B,gCAAgC,GAChC,0BAA0B,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ export const ALISTIGO_CONTEXT = {
2
+ "@vocab": "https://schema.org/",
3
+ alistigo: "https://alistigo.ai/vocab/",
4
+ };
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAE,4BAA4B;CAC9B,CAAC"}