@alistigo/domain 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 +15 -0
- package/dist/__tests__/list-aggregate.test.d.ts +2 -0
- package/dist/__tests__/list-aggregate.test.d.ts.map +1 -0
- package/dist/__tests__/list-aggregate.test.js +213 -0
- package/dist/__tests__/list-aggregate.test.js.map +1 -0
- package/dist/__tests__/value-objects.test.d.ts +2 -0
- package/dist/__tests__/value-objects.test.d.ts.map +1 -0
- package/dist/__tests__/value-objects.test.js +77 -0
- package/dist/__tests__/value-objects.test.js.map +1 -0
- package/dist/aggregates/list.d.ts +59 -0
- package/dist/aggregates/list.d.ts.map +1 -0
- package/dist/aggregates/list.js +157 -0
- package/dist/aggregates/list.js.map +1 -0
- package/dist/commands/actor-command.d.ts +6 -0
- package/dist/commands/actor-command.d.ts.map +1 -0
- package/dist/commands/actor-command.js +2 -0
- package/dist/commands/actor-command.js.map +1 -0
- package/dist/commands/actor-list-command.d.ts +7 -0
- package/dist/commands/actor-list-command.d.ts.map +1 -0
- package/dist/commands/actor-list-command.js +2 -0
- package/dist/commands/actor-list-command.js.map +1 -0
- package/dist/commands/add-list-element.d.ts +7 -0
- package/dist/commands/add-list-element.d.ts.map +1 -0
- package/dist/commands/add-list-element.js +2 -0
- package/dist/commands/add-list-element.js.map +1 -0
- package/dist/commands/create-list.d.ts +12 -0
- package/dist/commands/create-list.d.ts.map +1 -0
- package/dist/commands/create-list.js +2 -0
- package/dist/commands/create-list.js.map +1 -0
- package/dist/commands/delete-list-element.d.ts +7 -0
- package/dist/commands/delete-list-element.d.ts.map +1 -0
- package/dist/commands/delete-list-element.js +2 -0
- package/dist/commands/delete-list-element.js.map +1 -0
- package/dist/commands/export-list-document.d.ts +4 -0
- package/dist/commands/export-list-document.d.ts.map +1 -0
- package/dist/commands/export-list-document.js +2 -0
- package/dist/commands/export-list-document.js.map +1 -0
- package/dist/entities/list-element.d.ts +13 -0
- package/dist/entities/list-element.d.ts.map +1 -0
- package/dist/entities/list-element.js +2 -0
- package/dist/entities/list-element.js.map +1 -0
- package/dist/errors/list-error.d.ts +20 -0
- package/dist/errors/list-error.d.ts.map +1 -0
- package/dist/errors/list-error.js +32 -0
- package/dist/errors/list-error.js.map +1 -0
- package/dist/events/list-created.d.ts +2 -0
- package/dist/events/list-created.d.ts.map +1 -0
- package/dist/events/list-created.js +2 -0
- package/dist/events/list-created.js.map +1 -0
- package/dist/events/list-element-added.d.ts +2 -0
- package/dist/events/list-element-added.d.ts.map +1 -0
- package/dist/events/list-element-added.js +2 -0
- package/dist/events/list-element-added.js.map +1 -0
- package/dist/events/list-element-deleted.d.ts +2 -0
- package/dist/events/list-element-deleted.d.ts.map +1 -0
- package/dist/events/list-element-deleted.js +2 -0
- package/dist/events/list-element-deleted.js.map +1 -0
- package/dist/events/list-event.d.ts +32 -0
- package/dist/events/list-event.d.ts.map +1 -0
- package/dist/events/list-event.js +2 -0
- package/dist/events/list-event.js.map +1 -0
- package/dist/events/list-exported.d.ts +2 -0
- package/dist/events/list-exported.d.ts.map +1 -0
- package/dist/events/list-exported.js +2 -0
- package/dist/events/list-exported.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +24 -0
- package/dist/repositories/list-repository.d.ts +11 -0
- package/dist/repositories/list-repository.d.ts.map +1 -0
- package/dist/repositories/list-repository.js +2 -0
- package/dist/repositories/list-repository.js.map +1 -0
- package/dist/value-objects/actor-id.d.ts +5 -0
- package/dist/value-objects/actor-id.d.ts.map +1 -0
- package/dist/value-objects/actor-id.js +8 -0
- package/dist/value-objects/actor-id.js.map +1 -0
- package/dist/value-objects/actor.d.ts +9 -0
- package/dist/value-objects/actor.d.ts.map +1 -0
- package/dist/value-objects/actor.js +2 -0
- package/dist/value-objects/actor.js.map +1 -0
- package/dist/value-objects/list-element-content.d.ts +10 -0
- package/dist/value-objects/list-element-content.d.ts.map +1 -0
- package/dist/value-objects/list-element-content.js +17 -0
- package/dist/value-objects/list-element-content.js.map +1 -0
- package/dist/value-objects/list-element-id.d.ts +5 -0
- package/dist/value-objects/list-element-id.d.ts.map +1 -0
- package/dist/value-objects/list-element-id.js +8 -0
- package/dist/value-objects/list-element-id.js.map +1 -0
- package/dist/value-objects/list-event-id.d.ts +5 -0
- package/dist/value-objects/list-event-id.d.ts.map +1 -0
- package/dist/value-objects/list-event-id.js +8 -0
- package/dist/value-objects/list-event-id.js.map +1 -0
- package/dist/value-objects/list-id.d.ts +5 -0
- package/dist/value-objects/list-id.d.ts.map +1 -0
- package/dist/value-objects/list-id.js +8 -0
- package/dist/value-objects/list-id.js.map +1 -0
- package/dist/value-objects/schema-version.d.ts +6 -0
- package/dist/value-objects/schema-version.d.ts.map +1 -0
- package/dist/value-objects/schema-version.js +11 -0
- package/dist/value-objects/schema-version.js.map +1 -0
- package/dist/value-objects/timestamp.d.ts +11 -0
- package/dist/value-objects/timestamp.d.ts.map +1 -0
- package/dist/value-objects/timestamp.js +16 -0
- package/dist/value-objects/timestamp.js.map +1 -0
- package/package.json +23 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ListId } from "../value-objects/list-id.js";
|
|
2
|
+
import type { ActorCommand } from "./actor-command.js";
|
|
3
|
+
/**
|
|
4
|
+
* Command to create a new List.
|
|
5
|
+
* Extends ActorCommand directly (no listId required — it is the creation command).
|
|
6
|
+
* listId is optional; if omitted, the handler generates one.
|
|
7
|
+
*/
|
|
8
|
+
export interface CreateList extends ActorCommand {
|
|
9
|
+
readonly title?: string;
|
|
10
|
+
readonly listId?: ListId;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=create-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-list.d.ts","sourceRoot":"","sources":["../../src/commands/create-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-list.js","sourceRoot":"","sources":["../../src/commands/create-list.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ListElementId } from "../value-objects/list-element-id.js";
|
|
2
|
+
import type { ActorListCommand } from "./actor-list-command.js";
|
|
3
|
+
/** Command to remove a ListElement from a List by its stable identity. */
|
|
4
|
+
export interface DeleteListElement extends ActorListCommand {
|
|
5
|
+
readonly listElementId: ListElementId;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=delete-list-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-list-element.d.ts","sourceRoot":"","sources":["../../src/commands/delete-list-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,0EAA0E;AAC1E,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-list-element.js","sourceRoot":"","sources":["../../src/commands/delete-list-element.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-list-document.d.ts","sourceRoot":"","sources":["../../src/commands/export-list-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-list-document.js","sourceRoot":"","sources":["../../src/commands/export-list-document.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ListElementContent } from "../value-objects/list-element-content.js";
|
|
2
|
+
import type { ListElementId } from "../value-objects/list-element-id.js";
|
|
3
|
+
import type { Timestamp } from "../value-objects/timestamp.js";
|
|
4
|
+
/**
|
|
5
|
+
* ListElement entity — owned by List.
|
|
6
|
+
* Accessed and mutated only through the List aggregate root.
|
|
7
|
+
*/
|
|
8
|
+
export interface ListElement {
|
|
9
|
+
readonly id: ListElementId;
|
|
10
|
+
readonly content: ListElementContent;
|
|
11
|
+
readonly addedAt: Timestamp;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=list-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element.d.ts","sourceRoot":"","sources":["../../src/entities/list-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element.js","sourceRoot":"","sources":["../../src/entities/list-element.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error for the Core List Context.
|
|
3
|
+
* Raised when a List command is rejected or an invariant is violated.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ListError extends Error {
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
/** Raised when a command references a ListElementId that does not exist. */
|
|
9
|
+
export declare class ListElementNotFoundError extends ListError {
|
|
10
|
+
constructor(listElementId: string);
|
|
11
|
+
}
|
|
12
|
+
/** Raised when a provided ListId does not match the expected format. */
|
|
13
|
+
export declare class InvalidListIdError extends ListError {
|
|
14
|
+
constructor(raw: string);
|
|
15
|
+
}
|
|
16
|
+
/** Raised when ListElementContent validation fails (empty or too long). */
|
|
17
|
+
export declare class InvalidListElementContentError extends ListError {
|
|
18
|
+
constructor(reason: string);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=list-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-error.d.ts","sourceRoot":"","sources":["../../src/errors/list-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,4EAA4E;AAC5E,qBAAa,wBAAyB,SAAQ,SAAS;gBACzC,aAAa,EAAE,MAAM;CAIlC;AAED,wEAAwE;AACxE,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,GAAG,EAAE,MAAM;CAIxB;AAED,2EAA2E;AAC3E,qBAAa,8BAA+B,SAAQ,SAAS;gBAC/C,MAAM,EAAE,MAAM;CAI3B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error for the Core List Context.
|
|
3
|
+
* Raised when a List command is rejected or an invariant is violated.
|
|
4
|
+
*/
|
|
5
|
+
export class ListError extends Error {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "ListError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/** Raised when a command references a ListElementId that does not exist. */
|
|
12
|
+
export class ListElementNotFoundError extends ListError {
|
|
13
|
+
constructor(listElementId) {
|
|
14
|
+
super(`ListElement not found: ${listElementId}`);
|
|
15
|
+
this.name = "ListElementNotFoundError";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Raised when a provided ListId does not match the expected format. */
|
|
19
|
+
export class InvalidListIdError extends ListError {
|
|
20
|
+
constructor(raw) {
|
|
21
|
+
super(`Invalid ListId: "${raw}"`);
|
|
22
|
+
this.name = "InvalidListIdError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Raised when ListElementContent validation fails (empty or too long). */
|
|
26
|
+
export class InvalidListElementContentError extends ListError {
|
|
27
|
+
constructor(reason) {
|
|
28
|
+
super(`Invalid ListElementContent: ${reason}`);
|
|
29
|
+
this.name = "InvalidListElementContentError";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=list-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-error.js","sourceRoot":"","sources":["../../src/errors/list-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,OAAO,wBAAyB,SAAQ,SAAS;IACrD,YAAY,aAAqB;QAC/B,KAAK,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,GAAW;QACrB,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,OAAO,8BAA+B,SAAQ,SAAS;IAC3D,YAAY,MAAc;QACxB,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-created.d.ts","sourceRoot":"","sources":["../../src/events/list-created.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-created.js","sourceRoot":"","sources":["../../src/events/list-created.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-added.d.ts","sourceRoot":"","sources":["../../src/events/list-element-added.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-added.js","sourceRoot":"","sources":["../../src/events/list-element-added.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-deleted.d.ts","sourceRoot":"","sources":["../../src/events/list-element-deleted.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-deleted.js","sourceRoot":"","sources":["../../src/events/list-element-deleted.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ActorId } from "../value-objects/actor-id.js";
|
|
2
|
+
import type { ListElementContent } from "../value-objects/list-element-content.js";
|
|
3
|
+
import type { ListElementId } from "../value-objects/list-element-id.js";
|
|
4
|
+
import type { ListEventId } from "../value-objects/list-event-id.js";
|
|
5
|
+
import type { ListId } from "../value-objects/list-id.js";
|
|
6
|
+
import type { Timestamp } from "../value-objects/timestamp.js";
|
|
7
|
+
/** Base shape shared by all ListEvents. */
|
|
8
|
+
export interface ListEventBase {
|
|
9
|
+
readonly listEventId: ListEventId;
|
|
10
|
+
readonly listId: ListId;
|
|
11
|
+
readonly actorId: ActorId;
|
|
12
|
+
readonly timestamp: Timestamp;
|
|
13
|
+
}
|
|
14
|
+
export interface ListCreated extends ListEventBase {
|
|
15
|
+
readonly type: "ListCreated";
|
|
16
|
+
readonly title?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ListElementAdded extends ListEventBase {
|
|
19
|
+
readonly type: "ListElementAdded";
|
|
20
|
+
readonly listElementId: ListElementId;
|
|
21
|
+
readonly content: ListElementContent;
|
|
22
|
+
}
|
|
23
|
+
export interface ListElementDeleted extends ListEventBase {
|
|
24
|
+
readonly type: "ListElementDeleted";
|
|
25
|
+
readonly listElementId: ListElementId;
|
|
26
|
+
}
|
|
27
|
+
export interface ListExported extends ListEventBase {
|
|
28
|
+
readonly type: "ListExported";
|
|
29
|
+
readonly format: "json-ld";
|
|
30
|
+
}
|
|
31
|
+
export type ListEvent = ListCreated | ListElementAdded | ListElementDeleted | ListExported;
|
|
32
|
+
//# sourceMappingURL=list-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-event.d.ts","sourceRoot":"","sources":["../../src/events/list-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,2CAA2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-event.js","sourceRoot":"","sources":["../../src/events/list-event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-exported.d.ts","sourceRoot":"","sources":["../../src/events/list-exported.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-exported.js","sourceRoot":"","sources":["../../src/events/list-exported.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export { List } from "./aggregates/list.js";
|
|
2
|
+
export type { ActorCommand } from "./commands/actor-command.js";
|
|
3
|
+
export type { ActorListCommand } from "./commands/actor-list-command.js";
|
|
4
|
+
export type { AddListElement } from "./commands/add-list-element.js";
|
|
5
|
+
export type { CreateList } from "./commands/create-list.js";
|
|
6
|
+
export type { DeleteListElement } from "./commands/delete-list-element.js";
|
|
7
|
+
export type { ExportListDocument } from "./commands/export-list-document.js";
|
|
8
|
+
export type { ListElement } from "./entities/list-element.js";
|
|
9
|
+
export { InvalidListElementContentError, InvalidListIdError, ListElementNotFoundError, ListError, } from "./errors/list-error.js";
|
|
10
|
+
export type { ListCreated, ListElementAdded, ListElementDeleted, ListEvent, ListEventBase, ListExported, } from "./events/list-event.js";
|
|
11
|
+
export type { ListRepository } from "./repositories/list-repository.js";
|
|
12
|
+
export type { Actor } from "./value-objects/actor.js";
|
|
13
|
+
export type { ActorId } from "./value-objects/actor-id.js";
|
|
14
|
+
export { generateActorId, parseActorId } from "./value-objects/actor-id.js";
|
|
15
|
+
export type { ListElementContent } from "./value-objects/list-element-content.js";
|
|
16
|
+
export { createListElementContent } from "./value-objects/list-element-content.js";
|
|
17
|
+
export type { ListElementId } from "./value-objects/list-element-id.js";
|
|
18
|
+
export { generateListElementId, parseListElementId } from "./value-objects/list-element-id.js";
|
|
19
|
+
export type { ListEventId } from "./value-objects/list-event-id.js";
|
|
20
|
+
export { generateListEventId, parseListEventId } from "./value-objects/list-event-id.js";
|
|
21
|
+
export type { ListId } from "./value-objects/list-id.js";
|
|
22
|
+
export { generateListId, parseListId } from "./value-objects/list-id.js";
|
|
23
|
+
export type { SchemaVersion } from "./value-objects/schema-version.js";
|
|
24
|
+
export { CURRENT_SCHEMA_VERSION, createSchemaVersion } from "./value-objects/schema-version.js";
|
|
25
|
+
export type { Timestamp } from "./value-objects/timestamp.js";
|
|
26
|
+
export { createTimestamp, nowTimestamp } from "./value-objects/timestamp.js";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,YAAY,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC/F,YAAY,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzF,YAAY,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAChG,YAAY,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Value Objects
|
|
2
|
+
// Aggregates
|
|
3
|
+
export { List } from "./aggregates/list.js";
|
|
4
|
+
// Errors
|
|
5
|
+
export { InvalidListElementContentError, InvalidListIdError, ListElementNotFoundError, ListError, } from "./errors/list-error.js";
|
|
6
|
+
export { generateActorId, parseActorId } from "./value-objects/actor-id.js";
|
|
7
|
+
export { createListElementContent } from "./value-objects/list-element-content.js";
|
|
8
|
+
export { generateListElementId, parseListElementId } from "./value-objects/list-element-id.js";
|
|
9
|
+
export { generateListEventId, parseListEventId } from "./value-objects/list-event-id.js";
|
|
10
|
+
export { generateListId, parseListId } from "./value-objects/list-id.js";
|
|
11
|
+
export { CURRENT_SCHEMA_VERSION, createSchemaVersion } from "./value-objects/schema-version.js";
|
|
12
|
+
export { createTimestamp, nowTimestamp } from "./value-objects/timestamp.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAEhB,aAAa;AACb,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAU5C,SAAS;AACT,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAchC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE/F,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@alistigo/domain",
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"typeid-js": "^1.2.0"
|
|
22
|
+
},
|
|
23
|
+
"module": "./index.js"
|
|
24
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { List } from "../aggregates/list.js";
|
|
2
|
+
import type { ListId } from "../value-objects/list-id.js";
|
|
3
|
+
/**
|
|
4
|
+
* ListRepository interface — the domain port for List persistence.
|
|
5
|
+
* Infrastructure provides the implementation (e.g. LocalStorageListRepository in M1).
|
|
6
|
+
*/
|
|
7
|
+
export interface ListRepository {
|
|
8
|
+
load(id: ListId): Promise<List | undefined>;
|
|
9
|
+
save(list: List): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=list-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/list-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-repository.js","sourceRoot":"","sources":["../../src/repositories/list-repository.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-id.d.ts","sourceRoot":"","sources":["../../src/value-objects/actor-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEpC,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-id.js","sourceRoot":"","sources":["../../src/value-objects/actor-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actor describes the role of the party involved in a ListEvent.
|
|
3
|
+
* - user: A human interacting with the ListWidget
|
|
4
|
+
* - llm: An AI system (e.g. Claude) issuing a command
|
|
5
|
+
* - host: The embedding platform or application
|
|
6
|
+
* - system: Automated/internal process
|
|
7
|
+
*/
|
|
8
|
+
export type Actor = "user" | "llm" | "host" | "system";
|
|
9
|
+
//# sourceMappingURL=actor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/value-objects/actor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/value-objects/actor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Branded type for validated, trimmed list element content. */
|
|
2
|
+
export type ListElementContent = string & {
|
|
3
|
+
readonly __brand: "ListElementContent";
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Creates a validated ListElementContent value object.
|
|
7
|
+
* Trims whitespace, enforces non-empty and max 2000 characters.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createListElementContent(raw: string): ListElementContent;
|
|
10
|
+
//# sourceMappingURL=list-element-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-content.d.ts","sourceRoot":"","sources":["../../src/value-objects/list-element-content.ts"],"names":[],"mappings":"AAIA,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAErF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAWxE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ListError } from "../errors/list-error.js";
|
|
2
|
+
const MAX_CONTENT_LENGTH = 2000;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a validated ListElementContent value object.
|
|
5
|
+
* Trims whitespace, enforces non-empty and max 2000 characters.
|
|
6
|
+
*/
|
|
7
|
+
export function createListElementContent(raw) {
|
|
8
|
+
const trimmed = raw.trim();
|
|
9
|
+
if (trimmed.length === 0) {
|
|
10
|
+
throw new ListError("ListElementContent cannot be empty");
|
|
11
|
+
}
|
|
12
|
+
if (trimmed.length > MAX_CONTENT_LENGTH) {
|
|
13
|
+
throw new ListError(`ListElementContent exceeds maximum length of ${MAX_CONTENT_LENGTH} characters`);
|
|
14
|
+
}
|
|
15
|
+
return trimmed;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=list-element-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-content.js","sourceRoot":"","sources":["../../src/value-objects/list-element-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAKhC;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CACjB,gDAAgD,kBAAkB,aAAa,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,OAA6B,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-id.d.ts","sourceRoot":"","sources":["../../src/value-objects/list-element-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE1C,wBAAgB,qBAAqB,IAAI,aAAa,CAErD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAE7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-element-id.js","sourceRoot":"","sources":["../../src/value-objects/list-element-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-event-id.d.ts","sourceRoot":"","sources":["../../src/value-objects/list-event-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAExC,wBAAgB,mBAAmB,IAAI,WAAW,CAEjD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAEzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-event-id.js","sourceRoot":"","sources":["../../src/value-objects/list-event-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-id.d.ts","sourceRoot":"","sources":["../../src/value-objects/list-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAEnC,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-id.js","sourceRoot":"","sources":["../../src/value-objects/list-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Semver string in MAJOR.MINOR.PATCH format. */
|
|
2
|
+
export type SchemaVersion = `${number}.${number}.${number}`;
|
|
3
|
+
export declare function createSchemaVersion(raw: string): SchemaVersion;
|
|
4
|
+
/** The current M1 schema version. */
|
|
5
|
+
export declare const CURRENT_SCHEMA_VERSION: SchemaVersion;
|
|
6
|
+
//# sourceMappingURL=schema-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-version.d.ts","sourceRoot":"","sources":["../../src/value-objects/schema-version.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAI5D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAK9D;AAED,qCAAqC;AACrC,eAAO,MAAM,sBAAsB,EAAE,aAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ListError } from "../errors/list-error.js";
|
|
2
|
+
const SEMVER_RE = /^\d+\.\d+\.\d+$/;
|
|
3
|
+
export function createSchemaVersion(raw) {
|
|
4
|
+
if (!SEMVER_RE.test(raw)) {
|
|
5
|
+
throw new ListError(`Invalid SchemaVersion: "${raw}" must match MAJOR.MINOR.PATCH`);
|
|
6
|
+
}
|
|
7
|
+
return raw;
|
|
8
|
+
}
|
|
9
|
+
/** The current M1 schema version. */
|
|
10
|
+
export const CURRENT_SCHEMA_VERSION = "1.0.0";
|
|
11
|
+
//# sourceMappingURL=schema-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-version.js","sourceRoot":"","sources":["../../src/value-objects/schema-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKpD,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,2BAA2B,GAAG,gCAAgC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,GAAoB,CAAC;AAC9B,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAkB,OAAO,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** ISO 8601 UTC timestamp string. Example: "2026-05-14T10:00:00Z" */
|
|
2
|
+
export type Timestamp = string & {
|
|
3
|
+
readonly __brand: "Timestamp";
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Creates a Timestamp from an ISO 8601 UTC string, validating it parses as a valid date.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createTimestamp(iso: string): Timestamp;
|
|
9
|
+
/** Returns the current UTC time as a Timestamp. */
|
|
10
|
+
export declare function nowTimestamp(): Timestamp;
|
|
11
|
+
//# sourceMappingURL=timestamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestamp.d.ts","sourceRoot":"","sources":["../../src/value-objects/timestamp.ts"],"names":[],"mappings":"AAEA,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnE;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAMtD;AAED,mDAAmD;AACnD,wBAAgB,YAAY,IAAI,SAAS,CAExC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ListError } from "../errors/list-error.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Timestamp from an ISO 8601 UTC string, validating it parses as a valid date.
|
|
4
|
+
*/
|
|
5
|
+
export function createTimestamp(iso) {
|
|
6
|
+
const d = new Date(iso);
|
|
7
|
+
if (Number.isNaN(d.getTime())) {
|
|
8
|
+
throw new ListError(`Invalid Timestamp: "${iso}" does not parse as a valid date`);
|
|
9
|
+
}
|
|
10
|
+
return iso;
|
|
11
|
+
}
|
|
12
|
+
/** Returns the current UTC time as a Timestamp. */
|
|
13
|
+
export function nowTimestamp() {
|
|
14
|
+
return new Date().toISOString();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../src/value-objects/timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKpD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,uBAAuB,GAAG,kCAAkC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,GAAgB,CAAC;AAC1B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAe,CAAC;AAC/C,CAAC"}
|