@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.
Files changed (107) hide show
  1. package/README.md +15 -0
  2. package/dist/__tests__/list-aggregate.test.d.ts +2 -0
  3. package/dist/__tests__/list-aggregate.test.d.ts.map +1 -0
  4. package/dist/__tests__/list-aggregate.test.js +213 -0
  5. package/dist/__tests__/list-aggregate.test.js.map +1 -0
  6. package/dist/__tests__/value-objects.test.d.ts +2 -0
  7. package/dist/__tests__/value-objects.test.d.ts.map +1 -0
  8. package/dist/__tests__/value-objects.test.js +77 -0
  9. package/dist/__tests__/value-objects.test.js.map +1 -0
  10. package/dist/aggregates/list.d.ts +59 -0
  11. package/dist/aggregates/list.d.ts.map +1 -0
  12. package/dist/aggregates/list.js +157 -0
  13. package/dist/aggregates/list.js.map +1 -0
  14. package/dist/commands/actor-command.d.ts +6 -0
  15. package/dist/commands/actor-command.d.ts.map +1 -0
  16. package/dist/commands/actor-command.js +2 -0
  17. package/dist/commands/actor-command.js.map +1 -0
  18. package/dist/commands/actor-list-command.d.ts +7 -0
  19. package/dist/commands/actor-list-command.d.ts.map +1 -0
  20. package/dist/commands/actor-list-command.js +2 -0
  21. package/dist/commands/actor-list-command.js.map +1 -0
  22. package/dist/commands/add-list-element.d.ts +7 -0
  23. package/dist/commands/add-list-element.d.ts.map +1 -0
  24. package/dist/commands/add-list-element.js +2 -0
  25. package/dist/commands/add-list-element.js.map +1 -0
  26. package/dist/commands/create-list.d.ts +12 -0
  27. package/dist/commands/create-list.d.ts.map +1 -0
  28. package/dist/commands/create-list.js +2 -0
  29. package/dist/commands/create-list.js.map +1 -0
  30. package/dist/commands/delete-list-element.d.ts +7 -0
  31. package/dist/commands/delete-list-element.d.ts.map +1 -0
  32. package/dist/commands/delete-list-element.js +2 -0
  33. package/dist/commands/delete-list-element.js.map +1 -0
  34. package/dist/commands/export-list-document.d.ts +4 -0
  35. package/dist/commands/export-list-document.d.ts.map +1 -0
  36. package/dist/commands/export-list-document.js +2 -0
  37. package/dist/commands/export-list-document.js.map +1 -0
  38. package/dist/entities/list-element.d.ts +13 -0
  39. package/dist/entities/list-element.d.ts.map +1 -0
  40. package/dist/entities/list-element.js +2 -0
  41. package/dist/entities/list-element.js.map +1 -0
  42. package/dist/errors/list-error.d.ts +20 -0
  43. package/dist/errors/list-error.d.ts.map +1 -0
  44. package/dist/errors/list-error.js +32 -0
  45. package/dist/errors/list-error.js.map +1 -0
  46. package/dist/events/list-created.d.ts +2 -0
  47. package/dist/events/list-created.d.ts.map +1 -0
  48. package/dist/events/list-created.js +2 -0
  49. package/dist/events/list-created.js.map +1 -0
  50. package/dist/events/list-element-added.d.ts +2 -0
  51. package/dist/events/list-element-added.d.ts.map +1 -0
  52. package/dist/events/list-element-added.js +2 -0
  53. package/dist/events/list-element-added.js.map +1 -0
  54. package/dist/events/list-element-deleted.d.ts +2 -0
  55. package/dist/events/list-element-deleted.d.ts.map +1 -0
  56. package/dist/events/list-element-deleted.js +2 -0
  57. package/dist/events/list-element-deleted.js.map +1 -0
  58. package/dist/events/list-event.d.ts +32 -0
  59. package/dist/events/list-event.d.ts.map +1 -0
  60. package/dist/events/list-event.js +2 -0
  61. package/dist/events/list-event.js.map +1 -0
  62. package/dist/events/list-exported.d.ts +2 -0
  63. package/dist/events/list-exported.d.ts.map +1 -0
  64. package/dist/events/list-exported.js +2 -0
  65. package/dist/events/list-exported.js.map +1 -0
  66. package/dist/index.d.ts +27 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +13 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/package.json +24 -0
  71. package/dist/repositories/list-repository.d.ts +11 -0
  72. package/dist/repositories/list-repository.d.ts.map +1 -0
  73. package/dist/repositories/list-repository.js +2 -0
  74. package/dist/repositories/list-repository.js.map +1 -0
  75. package/dist/value-objects/actor-id.d.ts +5 -0
  76. package/dist/value-objects/actor-id.d.ts.map +1 -0
  77. package/dist/value-objects/actor-id.js +8 -0
  78. package/dist/value-objects/actor-id.js.map +1 -0
  79. package/dist/value-objects/actor.d.ts +9 -0
  80. package/dist/value-objects/actor.d.ts.map +1 -0
  81. package/dist/value-objects/actor.js +2 -0
  82. package/dist/value-objects/actor.js.map +1 -0
  83. package/dist/value-objects/list-element-content.d.ts +10 -0
  84. package/dist/value-objects/list-element-content.d.ts.map +1 -0
  85. package/dist/value-objects/list-element-content.js +17 -0
  86. package/dist/value-objects/list-element-content.js.map +1 -0
  87. package/dist/value-objects/list-element-id.d.ts +5 -0
  88. package/dist/value-objects/list-element-id.d.ts.map +1 -0
  89. package/dist/value-objects/list-element-id.js +8 -0
  90. package/dist/value-objects/list-element-id.js.map +1 -0
  91. package/dist/value-objects/list-event-id.d.ts +5 -0
  92. package/dist/value-objects/list-event-id.d.ts.map +1 -0
  93. package/dist/value-objects/list-event-id.js +8 -0
  94. package/dist/value-objects/list-event-id.js.map +1 -0
  95. package/dist/value-objects/list-id.d.ts +5 -0
  96. package/dist/value-objects/list-id.d.ts.map +1 -0
  97. package/dist/value-objects/list-id.js +8 -0
  98. package/dist/value-objects/list-id.js.map +1 -0
  99. package/dist/value-objects/schema-version.d.ts +6 -0
  100. package/dist/value-objects/schema-version.d.ts.map +1 -0
  101. package/dist/value-objects/schema-version.js +11 -0
  102. package/dist/value-objects/schema-version.js.map +1 -0
  103. package/dist/value-objects/timestamp.d.ts +11 -0
  104. package/dist/value-objects/timestamp.d.ts.map +1 -0
  105. package/dist/value-objects/timestamp.js +16 -0
  106. package/dist/value-objects/timestamp.js.map +1 -0
  107. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-list.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=delete-list-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-list-element.js","sourceRoot":"","sources":["../../src/commands/delete-list-element.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ActorListCommand } from "./actor-list-command.js";
2
+ /** Command to export the List as a ListDocument. Export is always valid. */
3
+ export type ExportListDocument = ActorListCommand;
4
+ //# sourceMappingURL=export-list-document.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=export-list-document.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-element.js.map
@@ -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,2 @@
1
+ export type { ListCreated } from "./list-event.js";
2
+ //# sourceMappingURL=list-created.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-created.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-created.js","sourceRoot":"","sources":["../../src/events/list-created.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { ListElementAdded } from "./list-event.js";
2
+ //# sourceMappingURL=list-element-added.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-element-added.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-element-added.js","sourceRoot":"","sources":["../../src/events/list-element-added.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { ListElementDeleted } from "./list-event.js";
2
+ //# sourceMappingURL=list-element-deleted.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-element-deleted.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-event.js","sourceRoot":"","sources":["../../src/events/list-event.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { ListExported } from "./list-event.js";
2
+ //# sourceMappingURL=list-exported.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-exported.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-exported.js","sourceRoot":"","sources":["../../src/events/list-exported.ts"],"names":[],"mappings":""}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-repository.js","sourceRoot":"","sources":["../../src/repositories/list-repository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { TypeID } from "typeid-js";
2
+ export type ActorId = TypeID<"act">;
3
+ export declare function generateActorId(): ActorId;
4
+ export declare function parseActorId(str: string): ActorId;
5
+ //# sourceMappingURL=actor-id.d.ts.map
@@ -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,8 @@
1
+ import { TypeID, typeid } from "typeid-js";
2
+ export function generateActorId() {
3
+ return typeid("act");
4
+ }
5
+ export function parseActorId(str) {
6
+ return TypeID.fromString(str, "act");
7
+ }
8
+ //# sourceMappingURL=actor-id.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=actor.js.map
@@ -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,5 @@
1
+ import { TypeID } from "typeid-js";
2
+ export type ListElementId = TypeID<"lse">;
3
+ export declare function generateListElementId(): ListElementId;
4
+ export declare function parseListElementId(str: string): ListElementId;
5
+ //# sourceMappingURL=list-element-id.d.ts.map
@@ -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,8 @@
1
+ import { TypeID, typeid } from "typeid-js";
2
+ export function generateListElementId() {
3
+ return typeid("lse");
4
+ }
5
+ export function parseListElementId(str) {
6
+ return TypeID.fromString(str, "lse");
7
+ }
8
+ //# sourceMappingURL=list-element-id.js.map
@@ -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,5 @@
1
+ import { TypeID } from "typeid-js";
2
+ export type ListEventId = TypeID<"lev">;
3
+ export declare function generateListEventId(): ListEventId;
4
+ export declare function parseListEventId(str: string): ListEventId;
5
+ //# sourceMappingURL=list-event-id.d.ts.map
@@ -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,8 @@
1
+ import { TypeID, typeid } from "typeid-js";
2
+ export function generateListEventId() {
3
+ return typeid("lev");
4
+ }
5
+ export function parseListEventId(str) {
6
+ return TypeID.fromString(str, "lev");
7
+ }
8
+ //# sourceMappingURL=list-event-id.js.map
@@ -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,5 @@
1
+ import { TypeID } from "typeid-js";
2
+ export type ListId = TypeID<"lst">;
3
+ export declare function generateListId(): ListId;
4
+ export declare function parseListId(str: string): ListId;
5
+ //# sourceMappingURL=list-id.d.ts.map
@@ -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,8 @@
1
+ import { TypeID, typeid } from "typeid-js";
2
+ export function generateListId() {
3
+ return typeid("lst");
4
+ }
5
+ export function parseListId(str) {
6
+ return TypeID.fromString(str, "lst");
7
+ }
8
+ //# sourceMappingURL=list-id.js.map
@@ -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"}