@proposit/proposit-core 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +147 -35
  2. package/dist/cli/commands/arguments.d.ts.map +1 -1
  3. package/dist/cli/commands/arguments.js +8 -16
  4. package/dist/cli/commands/arguments.js.map +1 -1
  5. package/dist/cli/commands/citations.d.ts +3 -0
  6. package/dist/cli/commands/citations.d.ts.map +1 -0
  7. package/dist/cli/commands/citations.js +89 -0
  8. package/dist/cli/commands/citations.js.map +1 -0
  9. package/dist/cli/commands/claims.d.ts.map +1 -1
  10. package/dist/cli/commands/claims.js +10 -2
  11. package/dist/cli/commands/claims.js.map +1 -1
  12. package/dist/cli/commands/parse.d.ts.map +1 -1
  13. package/dist/cli/commands/parse.js +9 -17
  14. package/dist/cli/commands/parse.js.map +1 -1
  15. package/dist/cli/commands/premises.d.ts.map +1 -1
  16. package/dist/cli/commands/premises.js +82 -5
  17. package/dist/cli/commands/premises.js.map +1 -1
  18. package/dist/cli/commands/render.d.ts.map +1 -1
  19. package/dist/cli/commands/render.js +46 -19
  20. package/dist/cli/commands/render.js.map +1 -1
  21. package/dist/cli/commands/variables.d.ts.map +1 -1
  22. package/dist/cli/commands/variables.js +1 -0
  23. package/dist/cli/commands/variables.js.map +1 -1
  24. package/dist/cli/engine.d.ts.map +1 -1
  25. package/dist/cli/engine.js +15 -9
  26. package/dist/cli/engine.js.map +1 -1
  27. package/dist/cli/import.d.ts +2 -4
  28. package/dist/cli/import.d.ts.map +1 -1
  29. package/dist/cli/import.js +78 -20
  30. package/dist/cli/import.js.map +1 -1
  31. package/dist/cli/router.js +1 -1
  32. package/dist/cli/router.js.map +1 -1
  33. package/dist/cli/storage/libraries.d.ts +4 -7
  34. package/dist/cli/storage/libraries.d.ts.map +1 -1
  35. package/dist/cli/storage/libraries.js +9 -28
  36. package/dist/cli/storage/libraries.js.map +1 -1
  37. package/dist/cli/storage/migrate-v0.10.d.ts +10 -0
  38. package/dist/cli/storage/migrate-v0.10.d.ts.map +1 -0
  39. package/dist/cli/storage/migrate-v0.10.js +213 -0
  40. package/dist/cli/storage/migrate-v0.10.js.map +1 -0
  41. package/dist/cli/storage/migrate-v0.11.d.ts +15 -0
  42. package/dist/cli/storage/migrate-v0.11.d.ts.map +1 -0
  43. package/dist/cli/storage/migrate-v0.11.js +125 -0
  44. package/dist/cli/storage/migrate-v0.11.js.map +1 -0
  45. package/dist/cli.js +2 -2
  46. package/dist/cli.js.map +1 -1
  47. package/dist/extensions/basics/argument-parser.d.ts +1 -2
  48. package/dist/extensions/basics/argument-parser.d.ts.map +1 -1
  49. package/dist/extensions/basics/argument-parser.js.map +1 -1
  50. package/dist/extensions/basics/schemata.d.ts +12 -1
  51. package/dist/extensions/basics/schemata.d.ts.map +1 -1
  52. package/dist/extensions/ieee/{source.d.ts → citation-claim.d.ts} +5 -3
  53. package/dist/extensions/ieee/citation-claim.d.ts.map +1 -0
  54. package/dist/extensions/ieee/{source.js → citation-claim.js} +5 -4
  55. package/dist/extensions/ieee/citation-claim.js.map +1 -0
  56. package/dist/extensions/ieee/index.d.ts +1 -1
  57. package/dist/extensions/ieee/index.d.ts.map +1 -1
  58. package/dist/extensions/ieee/index.js +1 -1
  59. package/dist/extensions/ieee/index.js.map +1 -1
  60. package/dist/lib/consts.d.ts.map +1 -1
  61. package/dist/lib/consts.js +15 -14
  62. package/dist/lib/consts.js.map +1 -1
  63. package/dist/lib/core/argument-engine.d.ts +47 -9
  64. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  65. package/dist/lib/core/argument-engine.js +209 -20
  66. package/dist/lib/core/argument-engine.js.map +1 -1
  67. package/dist/lib/core/argument-library.d.ts +13 -15
  68. package/dist/lib/core/argument-library.d.ts.map +1 -1
  69. package/dist/lib/core/argument-library.js +23 -9
  70. package/dist/lib/core/argument-library.js.map +1 -1
  71. package/dist/lib/core/claim-citation-library.d.ts +44 -0
  72. package/dist/lib/core/claim-citation-library.d.ts.map +1 -0
  73. package/dist/lib/core/claim-citation-library.js +336 -0
  74. package/dist/lib/core/claim-citation-library.js.map +1 -0
  75. package/dist/lib/core/claim-library.d.ts +33 -1
  76. package/dist/lib/core/claim-library.d.ts.map +1 -1
  77. package/dist/lib/core/claim-library.js +71 -3
  78. package/dist/lib/core/claim-library.js.map +1 -1
  79. package/dist/lib/core/fork-library.d.ts +19 -10
  80. package/dist/lib/core/fork-library.d.ts.map +1 -1
  81. package/dist/lib/core/fork-library.js +16 -13
  82. package/dist/lib/core/fork-library.js.map +1 -1
  83. package/dist/lib/core/fork.d.ts +6 -7
  84. package/dist/lib/core/fork.d.ts.map +1 -1
  85. package/dist/lib/core/fork.js +8 -3
  86. package/dist/lib/core/fork.js.map +1 -1
  87. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts +132 -7
  88. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts.map +1 -1
  89. package/dist/lib/core/interfaces/index.d.ts +1 -1
  90. package/dist/lib/core/interfaces/index.d.ts.map +1 -1
  91. package/dist/lib/core/interfaces/library.interfaces.d.ts +76 -157
  92. package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
  93. package/dist/lib/core/managed-derivation-premise-engine.d.ts +155 -0
  94. package/dist/lib/core/managed-derivation-premise-engine.d.ts.map +1 -0
  95. package/dist/lib/core/managed-derivation-premise-engine.js +517 -0
  96. package/dist/lib/core/managed-derivation-premise-engine.js.map +1 -0
  97. package/dist/lib/core/premise-engine.d.ts +6 -5
  98. package/dist/lib/core/premise-engine.d.ts.map +1 -1
  99. package/dist/lib/core/premise-engine.js +5 -3
  100. package/dist/lib/core/premise-engine.js.map +1 -1
  101. package/dist/lib/core/proposit-core.d.ts +30 -32
  102. package/dist/lib/core/proposit-core.d.ts.map +1 -1
  103. package/dist/lib/core/proposit-core.js +82 -89
  104. package/dist/lib/core/proposit-core.js.map +1 -1
  105. package/dist/lib/index.d.ts +5 -3
  106. package/dist/lib/index.d.ts.map +1 -1
  107. package/dist/lib/index.js +4 -3
  108. package/dist/lib/index.js.map +1 -1
  109. package/dist/lib/parsing/argument-parser.d.ts +9 -12
  110. package/dist/lib/parsing/argument-parser.d.ts.map +1 -1
  111. package/dist/lib/parsing/argument-parser.js +27 -45
  112. package/dist/lib/parsing/argument-parser.js.map +1 -1
  113. package/dist/lib/parsing/index.d.ts +2 -2
  114. package/dist/lib/parsing/index.d.ts.map +1 -1
  115. package/dist/lib/parsing/index.js +1 -1
  116. package/dist/lib/parsing/index.js.map +1 -1
  117. package/dist/lib/parsing/prompt-builder.d.ts.map +1 -1
  118. package/dist/lib/parsing/prompt-builder.js +31 -24
  119. package/dist/lib/parsing/prompt-builder.js.map +1 -1
  120. package/dist/lib/parsing/schemata.d.ts +7 -19
  121. package/dist/lib/parsing/schemata.d.ts.map +1 -1
  122. package/dist/lib/parsing/schemata.js +7 -14
  123. package/dist/lib/parsing/schemata.js.map +1 -1
  124. package/dist/lib/parsing/types.d.ts +1 -2
  125. package/dist/lib/parsing/types.d.ts.map +1 -1
  126. package/dist/lib/schemata/claim-citation.d.ts +11 -0
  127. package/dist/lib/schemata/claim-citation.d.ts.map +1 -0
  128. package/dist/lib/schemata/claim-citation.js +25 -0
  129. package/dist/lib/schemata/claim-citation.js.map +1 -0
  130. package/dist/lib/schemata/claim.d.ts +1 -0
  131. package/dist/lib/schemata/claim.d.ts.map +1 -1
  132. package/dist/lib/schemata/claim.js +3 -0
  133. package/dist/lib/schemata/claim.js.map +1 -1
  134. package/dist/lib/schemata/fork.d.ts +0 -11
  135. package/dist/lib/schemata/fork.d.ts.map +1 -1
  136. package/dist/lib/schemata/fork.js +0 -10
  137. package/dist/lib/schemata/fork.js.map +1 -1
  138. package/dist/lib/schemata/import.d.ts +39 -2
  139. package/dist/lib/schemata/import.d.ts.map +1 -1
  140. package/dist/lib/schemata/import.js +22 -1
  141. package/dist/lib/schemata/import.js.map +1 -1
  142. package/dist/lib/schemata/index.d.ts +1 -1
  143. package/dist/lib/schemata/index.d.ts.map +1 -1
  144. package/dist/lib/schemata/index.js +1 -1
  145. package/dist/lib/schemata/index.js.map +1 -1
  146. package/dist/lib/schemata/propositional.d.ts +32 -1
  147. package/dist/lib/schemata/propositional.d.ts.map +1 -1
  148. package/dist/lib/schemata/propositional.js +17 -2
  149. package/dist/lib/schemata/propositional.js.map +1 -1
  150. package/dist/lib/types/checksum.d.ts +3 -5
  151. package/dist/lib/types/checksum.d.ts.map +1 -1
  152. package/dist/lib/types/evaluation.d.ts +1 -1
  153. package/dist/lib/types/evaluation.d.ts.map +1 -1
  154. package/dist/lib/types/validation.d.ts +19 -7
  155. package/dist/lib/types/validation.d.ts.map +1 -1
  156. package/dist/lib/types/validation.js +21 -8
  157. package/dist/lib/types/validation.js.map +1 -1
  158. package/dist/lib/utils/derivation-validation.d.ts +24 -0
  159. package/dist/lib/utils/derivation-validation.d.ts.map +1 -0
  160. package/dist/lib/utils/derivation-validation.js +107 -0
  161. package/dist/lib/utils/derivation-validation.js.map +1 -0
  162. package/dist/lib/utils/lookup.d.ts +7 -15
  163. package/dist/lib/utils/lookup.d.ts.map +1 -1
  164. package/dist/lib/utils/lookup.js +9 -18
  165. package/dist/lib/utils/lookup.js.map +1 -1
  166. package/package.json +1 -1
  167. package/dist/cli/commands/sources.d.ts +0 -3
  168. package/dist/cli/commands/sources.d.ts.map +0 -1
  169. package/dist/cli/commands/sources.js +0 -103
  170. package/dist/cli/commands/sources.js.map +0 -1
  171. package/dist/extensions/ieee/source.d.ts.map +0 -1
  172. package/dist/extensions/ieee/source.js.map +0 -1
  173. package/dist/lib/core/claim-source-library.d.ts +0 -32
  174. package/dist/lib/core/claim-source-library.d.ts.map +0 -1
  175. package/dist/lib/core/claim-source-library.js +0 -193
  176. package/dist/lib/core/claim-source-library.js.map +0 -1
  177. package/dist/lib/core/source-library.d.ts +0 -23
  178. package/dist/lib/core/source-library.d.ts.map +0 -1
  179. package/dist/lib/core/source-library.js +0 -21
  180. package/dist/lib/core/source-library.js.map +0 -1
  181. package/dist/lib/schemata/source.d.ts +0 -18
  182. package/dist/lib/schemata/source.d.ts.map +0 -1
  183. package/dist/lib/schemata/source.js +0 -35
  184. package/dist/lib/schemata/source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"argument-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/argument-library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"argument-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/argument-library.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { ArgumentEngine } from "./argument-engine.js";
2
2
  import { ClaimLibrary } from "./claim-library.js";
3
- import { ClaimSourceLibrary } from "./claim-source-library.js";
4
- import { SourceLibrary } from "./source-library.js";
3
+ import { ClaimCitationLibrary } from "./claim-citation-library.js";
5
4
  /**
6
5
  * Engine registry with lifecycle management. Stores `ArgumentEngine` instances
7
6
  * keyed by argument ID.
@@ -23,11 +22,16 @@ export class ArgumentLibrary {
23
22
  * @returns The newly created engine.
24
23
  * @throws If an engine with the same argument ID already exists.
25
24
  */
26
- create(argument) {
25
+ create(argument
26
+ // TODO Phase 7: drop TSource/TAssoc generics from ArgumentEngine.
27
+ ) {
27
28
  if (this.engines.has(argument.id)) {
28
29
  throw new Error(`ArgumentLibrary: argument "${argument.id}" already exists.`);
29
30
  }
30
- const engine = new ArgumentEngine(argument, this.libraries.claimLibrary, this.libraries.sourceLibrary, this.libraries.claimSourceLibrary, this.options);
31
+ // TODO Phase 7: ArgumentEngine constructor will take
32
+ // (argument, claimLibrary, claimCitationLibrary, options) once its
33
+ // generics are reduced to drop TSource/TAssoc.
34
+ const engine = new ArgumentEngine(argument, this.libraries.claimLibrary, this.libraries.claimCitationLibrary, this.options);
31
35
  this.engines.set(argument.id, engine);
32
36
  return engine;
33
37
  }
@@ -38,7 +42,9 @@ export class ArgumentLibrary {
38
42
  * @param engine - The engine to register.
39
43
  * @throws If an engine with the same argument ID already exists.
40
44
  */
41
- register(engine) {
45
+ register(
46
+ // TODO Phase 7: drop TSource/TAssoc generics from ArgumentEngine.
47
+ engine) {
42
48
  const id = engine.getArgument().id;
43
49
  if (this.engines.has(id)) {
44
50
  throw new Error(`ArgumentLibrary: argument "${id}" already exists.`);
@@ -52,7 +58,9 @@ export class ArgumentLibrary {
52
58
  * @param argumentId - The argument ID to look up.
53
59
  * @returns The engine, or `undefined`.
54
60
  */
55
- get(argumentId) {
61
+ get(argumentId
62
+ // TODO Phase 7: drop TSource/TAssoc generics from ArgumentEngine.
63
+ ) {
56
64
  return this.engines.get(argumentId);
57
65
  }
58
66
  /**
@@ -60,6 +68,7 @@ export class ArgumentLibrary {
60
68
  *
61
69
  * @returns An array of all managed engines.
62
70
  */
71
+ // TODO Phase 7: drop TSource/TAssoc generics from ArgumentEngine.
63
72
  getAll() {
64
73
  return Array.from(this.engines.values());
65
74
  }
@@ -70,7 +79,9 @@ export class ArgumentLibrary {
70
79
  * @returns The removed engine.
71
80
  * @throws If no engine with the given ID exists.
72
81
  */
73
- remove(argumentId) {
82
+ remove(argumentId
83
+ // TODO Phase 7: drop TSource/TAssoc generics from ArgumentEngine.
84
+ ) {
74
85
  const engine = this.engines.get(argumentId);
75
86
  if (engine === undefined) {
76
87
  throw new Error(`ArgumentLibrary: argument "${argumentId}" not found.`);
@@ -106,14 +117,17 @@ export class ArgumentLibrary {
106
117
  * `ArgumentEngine.fromSnapshot()` for each engine snapshot.
107
118
  *
108
119
  * @param snapshot - The serialized library snapshot.
109
- * @param libraries - The shared library instances (claim, source, claim-source).
120
+ * @param libraries - The shared library instances (claim, claim-citation).
110
121
  * @param options - Optional engine construction options.
111
122
  * @returns A fully restored `ArgumentLibrary`.
112
123
  */
113
124
  static fromSnapshot(snapshot, libraries, options) {
114
125
  const lib = new ArgumentLibrary(libraries, options);
115
126
  for (const engineSnap of snapshot.arguments) {
116
- const engine = ArgumentEngine.fromSnapshot(engineSnap, libraries.claimLibrary, libraries.sourceLibrary, libraries.claimSourceLibrary, undefined, "ignore", options?.generateId);
127
+ // TODO Phase 7: ArgumentEngine.fromSnapshot will take
128
+ // (snapshot, claimLibrary, claimCitationLibrary, ...) once its
129
+ // generics are reduced to drop TSource/TAssoc.
130
+ const engine = ArgumentEngine.fromSnapshot(engineSnap, libraries.claimLibrary, libraries.claimCitationLibrary, undefined, "ignore", options?.generateId);
117
131
  lib.engines.set(engine.getArgument().id, engine);
118
132
  }
119
133
  return lib;
@@ -1 +1 @@
1
- {"version":3,"file":"argument-library.js","sourceRoot":"","sources":["../../../src/lib/core/argument-library.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAA4B,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAcnD;;;GAGG;AACH,MAAM,OAAO,eAAe;IAShB,OAAO,CAGd;IACO,SAAS,CAAoD;IAC7D,OAAO,CAAsB;IAErC,YACI,SAA6D,EAC7D,OAA6B;QAE7B,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CACT,QAAiC;QAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACX,8BAA8B,QAAQ,CAAC,EAAE,mBAAmB,CAC/D,CAAA;QACL,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,cAAc,CAS7B,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,YAAY,EAC3B,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACjC,IAAI,CAAC,OAAO,CACf,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACrC,OAAO,MAAM,CAAA;IACjB,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CACX,MAQC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAA;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAED;;;;;;OAMG;IACI,GAAG,CACN,UAAkB;QAIlB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IAED;;;;OAIG;IACI,MAAM;QAST,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CACT,UAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACX,8BAA8B,UAAU,cAAc,CACzD,CAAA;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC/B,OAAO,MAAM,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACI,QAAQ;QACX,OAAO;YACH,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACxD,MAAM,CAAC,QAAQ,EAAE,CACpB;SACJ,CAAA;IACL,CAAC;IAED;;;;OAIG;IACI,QAAQ;QACX,MAAM,UAAU,GAAG,EAAE,CAAA;QACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;YAChC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACtD,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,YAAY,CAWtB,QAA+D,EAC/D,SAA6D,EAC7D,OAA6B;QAE7B,MAAM,GAAG,GAAG,IAAI,eAAe,CAQ7B,SAAS,EAAE,OAAO,CAAC,CAAA;QACrB,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAStC,UAAU,EACV,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,aAAa,EACvB,SAAS,CAAC,kBAAkB,EAC5B,SAAS,EACT,QAAQ,EACR,OAAO,EAAE,UAAU,CACtB,CAAA;YACD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACpD,CAAC;QACD,OAAO,GAAG,CAAA;IACd,CAAC;CACJ"}
1
+ {"version":3,"file":"argument-library.js","sourceRoot":"","sources":["../../../src/lib/core/argument-library.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { TCoreClaimCitation } from "../schemata/claim-citation.js";
2
+ import type { TCoreChecksumConfig } from "../types/checksum.js";
3
+ import type { TClaimLookup, TClaimCitationLibraryManagement, TClaimCitationLibrarySnapshot } from "./interfaces/library.interfaces.js";
4
+ import type { TInvariantValidationResult } from "../types/validation.js";
5
+ export declare class ClaimCitationLibrary<TCitation extends TCoreClaimCitation = TCoreClaimCitation> implements TClaimCitationLibraryManagement<TCitation> {
6
+ private citations;
7
+ private citingClaimToCitations;
8
+ private sourceClaimToCitations;
9
+ private claimLookup;
10
+ private checksumConfig?;
11
+ constructor(claimLookup: TClaimLookup, options?: {
12
+ checksumConfig?: TCoreChecksumConfig;
13
+ });
14
+ private restoreFromSnapshot;
15
+ private withValidation;
16
+ add(citation: Omit<TCitation, "checksum">): TCitation;
17
+ remove(id: string): TCitation;
18
+ getCitationsForCitingClaim(citingClaimId: string): TCitation[];
19
+ getCitationsForSourceClaim(sourceClaimId: string): TCitation[];
20
+ get(id: string): TCitation | undefined;
21
+ getAll(): TCitation[];
22
+ filter(predicate: (c: TCitation) => boolean): TCitation[];
23
+ snapshot(): TClaimCitationLibrarySnapshot<TCitation>;
24
+ /** Restores a claim-citation library from a snapshot, re-indexing all citations. */
25
+ static fromSnapshot<TCitation extends TCoreClaimCitation = TCoreClaimCitation>(snapshot: TClaimCitationLibrarySnapshot<TCitation>, claimLookup: TClaimLookup, options?: {
26
+ checksumConfig?: TCoreChecksumConfig;
27
+ }): ClaimCitationLibrary<TCitation>;
28
+ validate(): TInvariantValidationResult;
29
+ /**
30
+ * Detects all cycles in the ID-only projection of the citation graph.
31
+ * Returns one violation per cycle (deduped by the citation that closes
32
+ * each detected cycle).
33
+ */
34
+ private detectAllCycles;
35
+ /**
36
+ * Returns true if adding an edge from `citingClaimId` to `sourceClaimId`
37
+ * would create a cycle in the claim-citation graph. Edges go from citing
38
+ * to source; a cycle exists when the citing claim is reachable from the
39
+ * proposed source claim by following outgoing source edges.
40
+ */
41
+ private wouldCreateCycle;
42
+ private computeChecksum;
43
+ }
44
+ //# sourceMappingURL=claim-citation-library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-citation-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-citation-library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,KAAK,EACR,YAAY,EACZ,+BAA+B,EAC/B,6BAA6B,EAChC,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACR,0BAA0B,EAE7B,MAAM,wBAAwB,CAAA;AAW/B,qBAAa,oBAAoB,CAC7B,SAAS,SAAS,kBAAkB,GAAG,kBAAkB,CAC3D,YAAW,+BAA+B,CAAC,SAAS,CAAC;IACnD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAGxC,WAAW,EAAE,YAAY,EACzB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAStD,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,cAAc;IAkBf,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,SAAS;IA4FrD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IA2B7B,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE;IAQ9D,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE;IAQ9D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,IAAI,SAAS,EAAE;IAIrB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,EAAE;IAIzD,QAAQ,IAAI,6BAA6B,CAAC,SAAS,CAAC;IAI3D,oFAAoF;WACtE,YAAY,CACtB,SAAS,SAAS,kBAAkB,GAAG,kBAAkB,EAEzD,QAAQ,EAAE,6BAA6B,CAAC,SAAS,CAAC,EAClD,WAAW,EAAE,YAAY,EACzB,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE,GACnD,oBAAoB,CAAC,SAAS,CAAC;IAgC3B,QAAQ,IAAI,0BAA0B;IAgE7C;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA+CvB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,eAAe;CAS1B"}
@@ -0,0 +1,336 @@
1
+ import { Value } from "typebox/value";
2
+ import { CoreClaimCitationSchema } from "../schemata/claim-citation.js";
3
+ import { DEFAULT_CHECKSUM_CONFIG } from "../consts.js";
4
+ import { entityChecksum } from "./checksum.js";
5
+ import { CITATION_SCHEMA_INVALID, CITATION_DUPLICATE_ID, CITATION_CITING_REF_NOT_FOUND, CITATION_SOURCE_REF_NOT_FOUND, CITATION_SOURCE_NOT_CITATION_TYPE, CITATION_CYCLE_DETECTED, } from "../types/validation.js";
6
+ import { InvariantViolationError } from "./invariant-violation-error.js";
7
+ export class ClaimCitationLibrary {
8
+ citations;
9
+ citingClaimToCitations;
10
+ sourceClaimToCitations;
11
+ claimLookup;
12
+ checksumConfig;
13
+ constructor(claimLookup, options) {
14
+ this.citations = new Map();
15
+ this.citingClaimToCitations = new Map();
16
+ this.sourceClaimToCitations = new Map();
17
+ this.claimLookup = claimLookup;
18
+ this.checksumConfig = options?.checksumConfig;
19
+ }
20
+ restoreFromSnapshot(snap) {
21
+ this.citations = new Map();
22
+ this.citingClaimToCitations = new Map();
23
+ this.sourceClaimToCitations = new Map();
24
+ for (const citation of snap.claimCitations) {
25
+ this.citations.set(citation.id, citation);
26
+ }
27
+ for (const [id, citation] of this.citations) {
28
+ const citingKey = citation.citingClaimId;
29
+ if (!this.citingClaimToCitations.has(citingKey)) {
30
+ this.citingClaimToCitations.set(citingKey, new Set());
31
+ }
32
+ this.citingClaimToCitations.get(citingKey).add(id);
33
+ const sourceKey = citation.sourceClaimId;
34
+ if (!this.sourceClaimToCitations.has(sourceKey)) {
35
+ this.sourceClaimToCitations.set(sourceKey, new Set());
36
+ }
37
+ this.sourceClaimToCitations.get(sourceKey).add(id);
38
+ }
39
+ }
40
+ withValidation(fn) {
41
+ const snap = this.snapshot();
42
+ try {
43
+ const result = fn();
44
+ const validation = this.validate();
45
+ if (!validation.ok) {
46
+ this.restoreFromSnapshot(snap);
47
+ throw new InvariantViolationError(validation.violations);
48
+ }
49
+ return result;
50
+ }
51
+ catch (e) {
52
+ if (!(e instanceof InvariantViolationError)) {
53
+ this.restoreFromSnapshot(snap);
54
+ }
55
+ throw e;
56
+ }
57
+ }
58
+ add(citation) {
59
+ return this.withValidation(() => {
60
+ if (this.citations.has(citation.id)) {
61
+ throw new InvariantViolationError([
62
+ {
63
+ code: CITATION_DUPLICATE_ID,
64
+ message: `Citation with id ${citation.id} already exists`,
65
+ entityType: "citation",
66
+ entityId: citation.id,
67
+ },
68
+ ]);
69
+ }
70
+ const citingClaim = this.claimLookup.get(citation.citingClaimId, citation.citingClaimVersion);
71
+ if (!citingClaim) {
72
+ throw new InvariantViolationError([
73
+ {
74
+ code: CITATION_CITING_REF_NOT_FOUND,
75
+ message: `Citation references unknown citing claim ${citation.citingClaimId}@${citation.citingClaimVersion}`,
76
+ entityType: "citation",
77
+ entityId: citation.id,
78
+ },
79
+ ]);
80
+ }
81
+ const sourceClaim = this.claimLookup.get(citation.sourceClaimId, citation.sourceClaimVersion);
82
+ if (!sourceClaim) {
83
+ throw new InvariantViolationError([
84
+ {
85
+ code: CITATION_SOURCE_REF_NOT_FOUND,
86
+ message: `Citation references unknown source claim ${citation.sourceClaimId}@${citation.sourceClaimVersion}`,
87
+ entityType: "citation",
88
+ entityId: citation.id,
89
+ },
90
+ ]);
91
+ }
92
+ if (sourceClaim.type !== "citation") {
93
+ throw new InvariantViolationError([
94
+ {
95
+ code: CITATION_SOURCE_NOT_CITATION_TYPE,
96
+ message: `Citation source claim ${citation.sourceClaimId} has type='${sourceClaim.type}'; only 'citation' is permitted on the source side`,
97
+ entityType: "citation",
98
+ entityId: citation.id,
99
+ },
100
+ ]);
101
+ }
102
+ if (this.wouldCreateCycle(citation.citingClaimId, citation.sourceClaimId)) {
103
+ throw new InvariantViolationError([
104
+ {
105
+ code: CITATION_CYCLE_DETECTED,
106
+ message: `Adding citation from ${citation.citingClaimId} to ${citation.sourceClaimId} would create a cycle in the claim citation graph`,
107
+ entityType: "citation",
108
+ entityId: citation.id,
109
+ },
110
+ ]);
111
+ }
112
+ const full = { ...citation, checksum: "" };
113
+ full.checksum = this.computeChecksum(full);
114
+ this.citations.set(full.id, full);
115
+ let citingSet = this.citingClaimToCitations.get(full.citingClaimId);
116
+ if (!citingSet) {
117
+ citingSet = new Set();
118
+ this.citingClaimToCitations.set(full.citingClaimId, citingSet);
119
+ }
120
+ citingSet.add(full.id);
121
+ let sourceSet = this.sourceClaimToCitations.get(full.sourceClaimId);
122
+ if (!sourceSet) {
123
+ sourceSet = new Set();
124
+ this.sourceClaimToCitations.set(full.sourceClaimId, sourceSet);
125
+ }
126
+ sourceSet.add(full.id);
127
+ return full;
128
+ });
129
+ }
130
+ remove(id) {
131
+ return this.withValidation(() => {
132
+ const citation = this.citations.get(id);
133
+ if (!citation) {
134
+ throw new Error(`ClaimCitation "${id}" not found.`);
135
+ }
136
+ this.citations.delete(id);
137
+ const citingSet = this.citingClaimToCitations.get(citation.citingClaimId);
138
+ if (citingSet) {
139
+ citingSet.delete(id);
140
+ }
141
+ const sourceSet = this.sourceClaimToCitations.get(citation.sourceClaimId);
142
+ if (sourceSet) {
143
+ sourceSet.delete(id);
144
+ }
145
+ return citation;
146
+ });
147
+ }
148
+ getCitationsForCitingClaim(citingClaimId) {
149
+ const ids = this.citingClaimToCitations.get(citingClaimId);
150
+ if (!ids)
151
+ return [];
152
+ return Array.from(ids)
153
+ .map((id) => this.citations.get(id))
154
+ .filter(Boolean);
155
+ }
156
+ getCitationsForSourceClaim(sourceClaimId) {
157
+ const ids = this.sourceClaimToCitations.get(sourceClaimId);
158
+ if (!ids)
159
+ return [];
160
+ return Array.from(ids)
161
+ .map((id) => this.citations.get(id))
162
+ .filter(Boolean);
163
+ }
164
+ get(id) {
165
+ return this.citations.get(id);
166
+ }
167
+ getAll() {
168
+ return Array.from(this.citations.values());
169
+ }
170
+ filter(predicate) {
171
+ return this.getAll().filter(predicate);
172
+ }
173
+ snapshot() {
174
+ return { claimCitations: this.getAll() };
175
+ }
176
+ /** Restores a claim-citation library from a snapshot, re-indexing all citations. */
177
+ static fromSnapshot(snapshot, claimLookup, options) {
178
+ const lib = new ClaimCitationLibrary(claimLookup, options);
179
+ for (const citation of snapshot.claimCitations) {
180
+ lib.citations.set(citation.id, citation);
181
+ let citingSet = lib.citingClaimToCitations.get(citation.citingClaimId);
182
+ if (!citingSet) {
183
+ citingSet = new Set();
184
+ lib.citingClaimToCitations.set(citation.citingClaimId, citingSet);
185
+ }
186
+ citingSet.add(citation.id);
187
+ let sourceSet = lib.sourceClaimToCitations.get(citation.sourceClaimId);
188
+ if (!sourceSet) {
189
+ sourceSet = new Set();
190
+ lib.sourceClaimToCitations.set(citation.sourceClaimId, sourceSet);
191
+ }
192
+ sourceSet.add(citation.id);
193
+ }
194
+ return lib;
195
+ }
196
+ validate() {
197
+ const violations = [];
198
+ for (const [id, citation] of this.citations) {
199
+ if (!Value.Check(CoreClaimCitationSchema, citation)) {
200
+ violations.push({
201
+ code: CITATION_SCHEMA_INVALID,
202
+ message: `Citation "${id}" does not conform to schema`,
203
+ entityType: "citation",
204
+ entityId: id,
205
+ });
206
+ }
207
+ if (!this.claimLookup.get(citation.citingClaimId, citation.citingClaimVersion)) {
208
+ violations.push({
209
+ code: CITATION_CITING_REF_NOT_FOUND,
210
+ message: `Citation "${id}" references non-existent citing claim "${citation.citingClaimId}" version ${citation.citingClaimVersion}`,
211
+ entityType: "citation",
212
+ entityId: id,
213
+ });
214
+ }
215
+ if (!this.claimLookup.get(citation.sourceClaimId, citation.sourceClaimVersion)) {
216
+ violations.push({
217
+ code: CITATION_SOURCE_REF_NOT_FOUND,
218
+ message: `Citation "${id}" references non-existent source claim "${citation.sourceClaimId}" version ${citation.sourceClaimVersion}`,
219
+ entityType: "citation",
220
+ entityId: id,
221
+ });
222
+ }
223
+ }
224
+ // Strict source-side type: every citation's source claim must have
225
+ // type='citation'. Catches tampered snapshots loaded via fromSnapshot.
226
+ for (const citation of this.citations.values()) {
227
+ const sourceClaim = this.claimLookup.get(citation.sourceClaimId, citation.sourceClaimVersion);
228
+ if (sourceClaim && sourceClaim.type !== "citation") {
229
+ violations.push({
230
+ code: CITATION_SOURCE_NOT_CITATION_TYPE,
231
+ message: `Citation ${citation.id} source claim ${citation.sourceClaimId} has type='${sourceClaim.type}'; only 'citation' is permitted on the source side`,
232
+ entityType: "citation",
233
+ entityId: citation.id,
234
+ });
235
+ }
236
+ }
237
+ // Acyclicity: walk the entire citation graph (ID-only) and detect
238
+ // cycles. Catches cycles introduced by snapshot tampering.
239
+ const cycleViolations = this.detectAllCycles();
240
+ for (const v of cycleViolations)
241
+ violations.push(v);
242
+ return { ok: violations.length === 0, violations };
243
+ }
244
+ /**
245
+ * Detects all cycles in the ID-only projection of the citation graph.
246
+ * Returns one violation per cycle (deduped by the citation that closes
247
+ * each detected cycle).
248
+ */
249
+ detectAllCycles() {
250
+ const violations = [];
251
+ const visited = new Set();
252
+ const inProgress = new Set();
253
+ const reportedCycleIds = new Set();
254
+ const visit = (node, path) => {
255
+ if (inProgress.has(node)) {
256
+ // Cycle detected: report the citation that closes it.
257
+ // Find the citation linking the previous node to this one.
258
+ const prev = path[path.length - 1];
259
+ for (const citation of this.citations.values()) {
260
+ if (citation.citingClaimId === prev &&
261
+ citation.sourceClaimId === node &&
262
+ !reportedCycleIds.has(citation.id)) {
263
+ violations.push({
264
+ code: CITATION_CYCLE_DETECTED,
265
+ message: `Citation graph contains a cycle involving claim ${node}`,
266
+ entityType: "citation",
267
+ entityId: citation.id,
268
+ });
269
+ reportedCycleIds.add(citation.id);
270
+ }
271
+ }
272
+ return;
273
+ }
274
+ if (visited.has(node))
275
+ return;
276
+ visited.add(node);
277
+ inProgress.add(node);
278
+ const outgoing = this.citingClaimToCitations.get(node);
279
+ if (outgoing) {
280
+ for (const cid of outgoing) {
281
+ const c = this.citations.get(cid);
282
+ if (c)
283
+ visit(c.sourceClaimId, [...path, node]);
284
+ }
285
+ }
286
+ inProgress.delete(node);
287
+ };
288
+ for (const node of this.citingClaimToCitations.keys()) {
289
+ if (!visited.has(node))
290
+ visit(node, []);
291
+ }
292
+ return violations;
293
+ }
294
+ /**
295
+ * Returns true if adding an edge from `citingClaimId` to `sourceClaimId`
296
+ * would create a cycle in the claim-citation graph. Edges go from citing
297
+ * to source; a cycle exists when the citing claim is reachable from the
298
+ * proposed source claim by following outgoing source edges.
299
+ */
300
+ wouldCreateCycle(citingClaimId, sourceClaimId) {
301
+ // Optimization: if citing-side has type "normal", it can never appear
302
+ // on the source side, so no cycle is reachable. Type is immutable
303
+ // post-creation, so v0's type is authoritative.
304
+ const citingClaimType = this.claimLookup.get(citingClaimId, 0)?.type;
305
+ if (citingClaimType === "normal")
306
+ return false;
307
+ // DFS from sourceClaimId following outgoing source edges via the
308
+ // citingClaimToCitations index (avoids scanning all citations).
309
+ const visited = new Set();
310
+ const stack = [sourceClaimId];
311
+ while (stack.length > 0) {
312
+ const node = stack.pop();
313
+ if (node === citingClaimId)
314
+ return true;
315
+ if (visited.has(node))
316
+ continue;
317
+ visited.add(node);
318
+ const outgoingIds = this.citingClaimToCitations.get(node);
319
+ if (outgoingIds) {
320
+ for (const cid of outgoingIds) {
321
+ const c = this.citations.get(cid);
322
+ if (c) {
323
+ stack.push(c.sourceClaimId);
324
+ }
325
+ }
326
+ }
327
+ }
328
+ return false;
329
+ }
330
+ computeChecksum(citation) {
331
+ const fields = this.checksumConfig?.claimCitationFields ??
332
+ DEFAULT_CHECKSUM_CONFIG.claimCitationFields;
333
+ return entityChecksum(citation, fields);
334
+ }
335
+ }
336
+ //# sourceMappingURL=claim-citation-library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-citation-library.js","sourceRoot":"","sources":["../../../src/lib/core/claim-citation-library.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,15 @@ import type { TCoreClaim } from "../schemata/claim.js";
2
2
  import type { TCoreChecksumConfig } from "../types/checksum.js";
3
3
  import type { TClaimLibraryManagement, TClaimLibrarySnapshot } from "./interfaces/library.interfaces.js";
4
4
  import { VersionedLibrary } from "./versioned-library.js";
5
+ /**
6
+ * Input shape for {@link ClaimLibrary.create}. The `type` field is required
7
+ * (and immutable thereafter); `id` is auto-generated when omitted. Other
8
+ * extension fields on `TClaim` are passed through as-is, matching the base
9
+ * {@link VersionedLibrary.create} contract.
10
+ */
11
+ export type TClaimCreateInput<TClaim extends TCoreClaim = TCoreClaim> = Omit<TClaim, "version" | "frozen" | "checksum"> | (Omit<TClaim, "id" | "version" | "frozen" | "checksum"> & {
12
+ id?: string;
13
+ });
5
14
  export declare class ClaimLibrary<TClaim extends TCoreClaim = TCoreClaim> extends VersionedLibrary<TClaim> implements TClaimLibraryManagement<TClaim> {
6
15
  protected readonly entityLabel = "Claim";
7
16
  protected readonly entityType: "claim";
@@ -10,14 +19,37 @@ export declare class ClaimLibrary<TClaim extends TCoreClaim = TCoreClaim> extend
10
19
  version: import("typebox").TNumber;
11
20
  frozen: import("typebox").TBoolean;
12
21
  checksum: import("typebox").TString;
22
+ type: import("typebox").TUnion<[import("typebox").TLiteral<"normal">, import("typebox").TLiteral<"citation">]>;
13
23
  }>;
14
24
  protected readonly checksumFieldsKey: "claimFields";
15
25
  protected readonly schemaInvalidCode = "CLAIM_SCHEMA_INVALID";
16
26
  protected readonly frozenSuccessorCode = "CLAIM_FROZEN_NO_SUCCESSOR";
27
+ private readonly generateId;
28
+ constructor(options?: {
29
+ checksumConfig?: TCoreChecksumConfig;
30
+ generateId?: () => string;
31
+ });
32
+ /**
33
+ * Creates a new claim at version 0. The `type` field is required and is
34
+ * immutable across the claim's lifetime. `id` is auto-generated when omitted.
35
+ */
36
+ create(input: TClaimCreateInput<TClaim>): TClaim;
37
+ /**
38
+ * Applies partial updates to the latest version of a claim. Rejects any
39
+ * update that would change the immutable `type` field.
40
+ */
41
+ update(id: string, updates: Partial<Omit<TClaim, "id" | "version" | "frozen" | "checksum">>): TClaim;
17
42
  snapshot(): TClaimLibrarySnapshot<TClaim>;
18
- /** Restores a claim library from a previously captured snapshot. */
43
+ /**
44
+ * Restores a claim library from a previously captured snapshot.
45
+ * Pre-screens for legacy (pre-v0.10.0) claim entries that lack the
46
+ * required `type` field and emits {@link LEGACY_CLAIM_MISSING_TYPE} so
47
+ * the caller gets a clear migration signal rather than a generic schema
48
+ * error.
49
+ */
19
50
  static fromSnapshot<TClaim extends TCoreClaim = TCoreClaim>(snapshot: TClaimLibrarySnapshot<TClaim>, options?: {
20
51
  checksumConfig?: TCoreChecksumConfig;
52
+ generateId?: () => string;
21
53
  }): ClaimLibrary<TClaim>;
22
54
  }
23
55
  //# sourceMappingURL=claim-library.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claim-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EACR,uBAAuB,EACvB,qBAAqB,EACxB,MAAM,oCAAoC,CAAA;AAK3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,qBAAa,YAAY,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,CAC5D,SAAQ,gBAAgB,CAAC,MAAM,CAC/B,YAAW,uBAAuB,CAAC,MAAM,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,WAAW,WAAU;IACxC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAG,OAAO,CAAS;IAChD,SAAS,CAAC,QAAQ,CAAC,MAAM;;;;;OAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAG,aAAa,CAAS;IAC7D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,0BAAuB;IAC3D,SAAS,CAAC,QAAQ,CAAC,mBAAmB,+BAA4B;IAE3D,QAAQ,IAAI,qBAAqB,CAAC,MAAM,CAAC;IAIhD,oEAAoE;WACtD,YAAY,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EAC7D,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACvC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE,GACnD,YAAY,CAAC,MAAM,CAAC;CAK1B"}
1
+ {"version":3,"file":"claim-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/claim-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EACR,uBAAuB,EACvB,qBAAqB,EACxB,MAAM,oCAAoC,CAAA;AAS3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,IAC9D,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,GAC/C,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEhF,qBAAa,YAAY,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,CAC5D,SAAQ,gBAAgB,CAAC,MAAM,CAC/B,YAAW,uBAAuB,CAAC,MAAM,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,WAAW,WAAU;IACxC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAG,OAAO,CAAS;IAChD,SAAS,CAAC,QAAQ,CAAC,MAAM;;;;;;OAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAG,aAAa,CAAS;IAC7D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,0BAAuB;IAC3D,SAAS,CAAC,QAAQ,CAAC,mBAAmB,+BAA4B;IAElE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,OAAO,CAAC,EAAE;QAClB,cAAc,CAAC,EAAE,mBAAmB,CAAA;QACpC,UAAU,CAAC,EAAE,MAAM,MAAM,CAAA;KAC5B;IAKD;;;OAGG;IACa,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM;IAUhE;;;OAGG;IACa,MAAM,CAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,GACzE,MAAM;IAmBF,QAAQ,IAAI,qBAAqB,CAAC,MAAM,CAAC;IAIhD;;;;;;OAMG;WACW,YAAY,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,EAC7D,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACvC,OAAO,CAAC,EAAE;QACN,cAAc,CAAC,EAAE,mBAAmB,CAAA;QACpC,UAAU,CAAC,EAAE,MAAM,MAAM,CAAA;KAC5B,GACF,YAAY,CAAC,MAAM,CAAC;CA8B1B"}