@proposit/proposit-core 3.3.0 → 3.4.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 (125) hide show
  1. package/README.md +99 -2
  2. package/dist/cli/commands/expressions.d.ts.map +1 -1
  3. package/dist/cli/commands/expressions.js +44 -0
  4. package/dist/cli/commands/expressions.js.map +1 -1
  5. package/dist/cli/commands/origins.d.ts +3 -0
  6. package/dist/cli/commands/origins.d.ts.map +1 -0
  7. package/dist/cli/commands/origins.js +264 -0
  8. package/dist/cli/commands/origins.js.map +1 -0
  9. package/dist/cli/commands/premises.d.ts.map +1 -1
  10. package/dist/cli/commands/premises.js +18 -2
  11. package/dist/cli/commands/premises.js.map +1 -1
  12. package/dist/cli/engine.d.ts.map +1 -1
  13. package/dist/cli/engine.js +5 -2
  14. package/dist/cli/engine.js.map +1 -1
  15. package/dist/cli/router.d.ts.map +1 -1
  16. package/dist/cli/router.js +1 -0
  17. package/dist/cli/router.js.map +1 -1
  18. package/dist/cli/schemata.d.ts +2 -0
  19. package/dist/cli/schemata.d.ts.map +1 -1
  20. package/dist/cli/schemata.js +14 -1
  21. package/dist/cli/schemata.js.map +1 -1
  22. package/dist/cli/storage/libraries.d.ts +4 -0
  23. package/dist/cli/storage/libraries.d.ts.map +1 -1
  24. package/dist/cli/storage/libraries.js +19 -0
  25. package/dist/cli/storage/libraries.js.map +1 -1
  26. package/dist/cli.js +2 -0
  27. package/dist/cli.js.map +1 -1
  28. package/dist/extensions/basics/schemata.d.ts +2 -0
  29. package/dist/extensions/basics/schemata.d.ts.map +1 -1
  30. package/dist/extensions/citations/ieee/index.d.ts +1 -0
  31. package/dist/extensions/citations/ieee/index.d.ts.map +1 -1
  32. package/dist/extensions/citations/ieee/index.js +1 -0
  33. package/dist/extensions/citations/ieee/index.js.map +1 -1
  34. package/dist/extensions/citations/ieee/origin-document.d.ts +452 -0
  35. package/dist/extensions/citations/ieee/origin-document.d.ts.map +1 -0
  36. package/dist/extensions/citations/ieee/origin-document.js +25 -0
  37. package/dist/extensions/citations/ieee/origin-document.js.map +1 -0
  38. package/dist/extensions/pipelines/base/finalize-response-v2.d.ts +24 -0
  39. package/dist/extensions/pipelines/base/finalize-response-v2.d.ts.map +1 -1
  40. package/dist/extensions/pipelines/base/finalize-response-v2.js +249 -8
  41. package/dist/extensions/pipelines/base/finalize-response-v2.js.map +1 -1
  42. package/dist/extensions/pipelines/base/index.d.ts +3 -1
  43. package/dist/extensions/pipelines/base/index.d.ts.map +1 -1
  44. package/dist/extensions/pipelines/base/index.js +2 -1
  45. package/dist/extensions/pipelines/base/index.js.map +1 -1
  46. package/dist/extensions/pipelines/base/source-anchors.d.ts +57 -0
  47. package/dist/extensions/pipelines/base/source-anchors.d.ts.map +1 -0
  48. package/dist/extensions/pipelines/base/source-anchors.js +174 -0
  49. package/dist/extensions/pipelines/base/source-anchors.js.map +1 -0
  50. package/dist/extensions/pipelines/ingestion/scholar/scholar.d.ts.map +1 -1
  51. package/dist/extensions/pipelines/ingestion/scholar/scholar.js +11 -1
  52. package/dist/extensions/pipelines/ingestion/scholar/scholar.js.map +1 -1
  53. package/dist/extensions/pipelines/ingestion/scribe/scribe.d.ts.map +1 -1
  54. package/dist/extensions/pipelines/ingestion/scribe/scribe.js +5 -0
  55. package/dist/extensions/pipelines/ingestion/scribe/scribe.js.map +1 -1
  56. package/dist/lib/consts.d.ts.map +1 -1
  57. package/dist/lib/consts.js +27 -0
  58. package/dist/lib/consts.js.map +1 -1
  59. package/dist/lib/core/argument-engine.d.ts +5 -3
  60. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  61. package/dist/lib/core/argument-engine.js +7 -4
  62. package/dist/lib/core/argument-engine.js.map +1 -1
  63. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts +2 -1
  64. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts.map +1 -1
  65. package/dist/lib/core/interfaces/index.d.ts +1 -1
  66. package/dist/lib/core/interfaces/index.d.ts.map +1 -1
  67. package/dist/lib/core/interfaces/library.interfaces.d.ts +72 -1
  68. package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
  69. package/dist/lib/core/origin-library.d.ts +127 -0
  70. package/dist/lib/core/origin-library.d.ts.map +1 -0
  71. package/dist/lib/core/origin-library.js +520 -0
  72. package/dist/lib/core/origin-library.js.map +1 -0
  73. package/dist/lib/core/premise-engine.d.ts.map +1 -1
  74. package/dist/lib/core/premise-engine.js +20 -3
  75. package/dist/lib/core/premise-engine.js.map +1 -1
  76. package/dist/lib/core/proposit-core.d.ts +15 -8
  77. package/dist/lib/core/proposit-core.d.ts.map +1 -1
  78. package/dist/lib/core/proposit-core.js +28 -3
  79. package/dist/lib/core/proposit-core.js.map +1 -1
  80. package/dist/lib/grammar/types.d.ts +2 -2
  81. package/dist/lib/grammar/types.d.ts.map +1 -1
  82. package/dist/lib/grammar/types.js +2 -1
  83. package/dist/lib/grammar/types.js.map +1 -1
  84. package/dist/lib/grammar/validators/presentable.d.ts +19 -0
  85. package/dist/lib/grammar/validators/presentable.d.ts.map +1 -1
  86. package/dist/lib/grammar/validators/presentable.js +57 -0
  87. package/dist/lib/grammar/validators/presentable.js.map +1 -1
  88. package/dist/lib/index.d.ts +4 -0
  89. package/dist/lib/index.d.ts.map +1 -1
  90. package/dist/lib/index.js +3 -0
  91. package/dist/lib/index.js.map +1 -1
  92. package/dist/lib/parsing/argument-parser.d.ts.map +1 -1
  93. package/dist/lib/parsing/argument-parser.js +4 -3
  94. package/dist/lib/parsing/argument-parser.js.map +1 -1
  95. package/dist/lib/schemata/index.d.ts +1 -0
  96. package/dist/lib/schemata/index.d.ts.map +1 -1
  97. package/dist/lib/schemata/index.js +1 -0
  98. package/dist/lib/schemata/index.js.map +1 -1
  99. package/dist/lib/schemata/origin.d.ts +48 -0
  100. package/dist/lib/schemata/origin.d.ts.map +1 -0
  101. package/dist/lib/schemata/origin.js +102 -0
  102. package/dist/lib/schemata/origin.js.map +1 -0
  103. package/dist/lib/schemata/propositional.d.ts +6 -0
  104. package/dist/lib/schemata/propositional.d.ts.map +1 -1
  105. package/dist/lib/schemata/propositional.js +13 -0
  106. package/dist/lib/schemata/propositional.js.map +1 -1
  107. package/dist/lib/types/checksum.d.ts +3 -0
  108. package/dist/lib/types/checksum.d.ts.map +1 -1
  109. package/dist/lib/types/validation.d.ts +19 -1
  110. package/dist/lib/types/validation.d.ts.map +1 -1
  111. package/dist/lib/types/validation.js +19 -0
  112. package/dist/lib/types/validation.js.map +1 -1
  113. package/dist/lib/utils/collections.d.ts +15 -0
  114. package/dist/lib/utils/collections.d.ts.map +1 -1
  115. package/dist/lib/utils/collections.js +17 -0
  116. package/dist/lib/utils/collections.js.map +1 -1
  117. package/dist/lib/utils/origin-text.d.ts +62 -0
  118. package/dist/lib/utils/origin-text.d.ts.map +1 -0
  119. package/dist/lib/utils/origin-text.js +204 -0
  120. package/dist/lib/utils/origin-text.js.map +1 -0
  121. package/dist/lib/utils/sha256.d.ts +6 -0
  122. package/dist/lib/utils/sha256.d.ts.map +1 -0
  123. package/dist/lib/utils/sha256.js +98 -0
  124. package/dist/lib/utils/sha256.js.map +1 -0
  125. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../../src/lib/types/checksum.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAChC,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,yFAAyF;IACzF,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,qEAAqE;IACrE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,kIAAkI;IAClI,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,+HAA+H;IAC/H,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACjC"}
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../../src/lib/types/checksum.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAChC,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,yFAAyF;IACzF,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,qEAAqE;IACrE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,kIAAkI;IAClI,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,+HAA+H;IAC/H,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACnC"}
@@ -1,4 +1,4 @@
1
- export type TInvariantViolationEntityType = "expression" | "variable" | "premise" | "argument" | "claim" | "citation" | "axiom" | "fork" | "forkRecord";
1
+ export type TInvariantViolationEntityType = "expression" | "variable" | "premise" | "argument" | "claim" | "citation" | "axiom" | "fork" | "forkRecord" | "originDocument" | "originLink" | "originAnchor";
2
2
  export type TInvariantViolation = {
3
3
  code: string;
4
4
  message: string;
@@ -55,6 +55,24 @@ export declare const AXIOM_CLAIM_NOT_NORMAL_TYPE = "AXIOM_CLAIM_NOT_NORMAL_TYPE"
55
55
  export declare const AXIOM_VARIABLE_ASSIGNMENT_FORBIDDEN = "AXIOM_VARIABLE_ASSIGNMENT_FORBIDDEN";
56
56
  export declare const AXIOM_NOT_FOUND = "AXIOM_NOT_FOUND";
57
57
  export declare const LEGACY_MISSING_AXIOM_SLOT = "LEGACY_MISSING_AXIOM_SLOT";
58
+ export declare const ORIGIN_DOCUMENT_SCHEMA_INVALID = "ORIGIN_DOCUMENT_SCHEMA_INVALID";
59
+ export declare const ORIGIN_LINK_SCHEMA_INVALID = "ORIGIN_LINK_SCHEMA_INVALID";
60
+ export declare const ORIGIN_ANCHOR_SCHEMA_INVALID = "ORIGIN_ANCHOR_SCHEMA_INVALID";
61
+ export declare const ORIGIN_DOCUMENT_DUPLICATE_ID = "ORIGIN_DOCUMENT_DUPLICATE_ID";
62
+ export declare const ORIGIN_LINK_DUPLICATE_ID = "ORIGIN_LINK_DUPLICATE_ID";
63
+ export declare const ORIGIN_ANCHOR_DUPLICATE_ID = "ORIGIN_ANCHOR_DUPLICATE_ID";
64
+ export declare const ORIGIN_DOCUMENT_REF_NOT_FOUND = "ORIGIN_DOCUMENT_REF_NOT_FOUND";
65
+ export declare const ORIGIN_DOCUMENT_DIGEST_MISMATCH = "ORIGIN_DOCUMENT_DIGEST_MISMATCH";
66
+ export declare const ORIGIN_DOCUMENT_TEXT_NOT_NORMALIZED = "ORIGIN_DOCUMENT_TEXT_NOT_NORMALIZED";
67
+ export declare const ORIGIN_ANCHOR_SPAN_OUT_OF_RANGE = "ORIGIN_ANCHOR_SPAN_OUT_OF_RANGE";
68
+ /** The anchor's span does not slice out its own quote — an anchor at an unverified offset. */
69
+ export declare const ORIGIN_ANCHOR_QUOTE_MISMATCH = "ORIGIN_ANCHOR_QUOTE_MISMATCH";
70
+ /** The anchor's argument version is not linked to the document it anchors into. */
71
+ export declare const ORIGIN_ANCHOR_LINK_NOT_FOUND = "ORIGIN_ANCHOR_LINK_NOT_FOUND";
72
+ export declare const ORIGIN_DOCUMENT_NOT_FOUND = "ORIGIN_DOCUMENT_NOT_FOUND";
73
+ export declare const ORIGIN_LINK_NOT_FOUND = "ORIGIN_LINK_NOT_FOUND";
74
+ export declare const ORIGIN_ANCHOR_NOT_FOUND = "ORIGIN_ANCHOR_NOT_FOUND";
75
+ export declare const ORIGIN_DOCUMENT_IN_USE = "ORIGIN_DOCUMENT_IN_USE";
58
76
  export declare const DERIVATION_STRUCTURE_INVALID = "DERIVATION_STRUCTURE_INVALID";
59
77
  export declare const CREATE_DERIVATION_REQUIRES_DERIVED_CLAIM_ID = "CREATE_DERIVATION_REQUIRES_DERIVED_CLAIM_ID";
60
78
  export declare const CREATE_DERIVATION_CLAIM_NOT_FOUND = "CREATE_DERIVATION_CLAIM_NOT_FOUND";
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/types/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/types/validation.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,25 @@ export const AXIOM_VARIABLE_ASSIGNMENT_FORBIDDEN = "AXIOM_VARIABLE_ASSIGNMENT_FO
58
58
  export const AXIOM_NOT_FOUND = "AXIOM_NOT_FOUND";
59
59
  // -- AxiomLibrary legacy codes --
60
60
  export const LEGACY_MISSING_AXIOM_SLOT = "LEGACY_MISSING_AXIOM_SLOT";
61
+ // -- OriginLibrary codes --
62
+ export const ORIGIN_DOCUMENT_SCHEMA_INVALID = "ORIGIN_DOCUMENT_SCHEMA_INVALID";
63
+ export const ORIGIN_LINK_SCHEMA_INVALID = "ORIGIN_LINK_SCHEMA_INVALID";
64
+ export const ORIGIN_ANCHOR_SCHEMA_INVALID = "ORIGIN_ANCHOR_SCHEMA_INVALID";
65
+ export const ORIGIN_DOCUMENT_DUPLICATE_ID = "ORIGIN_DOCUMENT_DUPLICATE_ID";
66
+ export const ORIGIN_LINK_DUPLICATE_ID = "ORIGIN_LINK_DUPLICATE_ID";
67
+ export const ORIGIN_ANCHOR_DUPLICATE_ID = "ORIGIN_ANCHOR_DUPLICATE_ID";
68
+ export const ORIGIN_DOCUMENT_REF_NOT_FOUND = "ORIGIN_DOCUMENT_REF_NOT_FOUND";
69
+ export const ORIGIN_DOCUMENT_DIGEST_MISMATCH = "ORIGIN_DOCUMENT_DIGEST_MISMATCH";
70
+ export const ORIGIN_DOCUMENT_TEXT_NOT_NORMALIZED = "ORIGIN_DOCUMENT_TEXT_NOT_NORMALIZED";
71
+ export const ORIGIN_ANCHOR_SPAN_OUT_OF_RANGE = "ORIGIN_ANCHOR_SPAN_OUT_OF_RANGE";
72
+ /** The anchor's span does not slice out its own quote — an anchor at an unverified offset. */
73
+ export const ORIGIN_ANCHOR_QUOTE_MISMATCH = "ORIGIN_ANCHOR_QUOTE_MISMATCH";
74
+ /** The anchor's argument version is not linked to the document it anchors into. */
75
+ export const ORIGIN_ANCHOR_LINK_NOT_FOUND = "ORIGIN_ANCHOR_LINK_NOT_FOUND";
76
+ export const ORIGIN_DOCUMENT_NOT_FOUND = "ORIGIN_DOCUMENT_NOT_FOUND";
77
+ export const ORIGIN_LINK_NOT_FOUND = "ORIGIN_LINK_NOT_FOUND";
78
+ export const ORIGIN_ANCHOR_NOT_FOUND = "ORIGIN_ANCHOR_NOT_FOUND";
79
+ export const ORIGIN_DOCUMENT_IN_USE = "ORIGIN_DOCUMENT_IN_USE";
61
80
  // -- Derivation premise errors --
62
81
  // `DERIVATION_TYPE_MISMATCH`, `DERIVATION_CONSEQUENT_LOCKED`,
63
82
  // `DERIVATION_ROOT_OPERATOR_INVALID`, and `DERIVATION_ANTECEDENT_NON_EMPTY`
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/types/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/types/validation.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,21 @@
3
3
  * `makeDefault` if absent.
4
4
  */
5
5
  export declare function getOrCreate<K, V>(map: Map<K, V>, key: K, makeDefault: () => V): V;
6
+ /**
7
+ * Returns a copy of `source` with every `undefined`-valued key removed.
8
+ *
9
+ * Entities in this library must never carry a key holding `undefined`. Two
10
+ * things go wrong when they do. `entityChecksum` includes a field only when
11
+ * the key is present, so clearing an app-level field by assigning `undefined`
12
+ * would leave the entity hashing as though it were still set — and clearing has
13
+ * to be exactly reversible. And `"field" in entity` becomes true, so any
14
+ * downstream mapper that turns `undefined` into `null` flips the field from
15
+ * absent to present, which moves the checksum of every entity of that kind.
16
+ *
17
+ * Applies wherever caller-supplied fields are spread into an entity: the
18
+ * `setExtras` pair on both engines, and the parser's `map*` extension hooks.
19
+ */
20
+ export declare function withoutUndefinedValues(source: Record<string, unknown>): Record<string, unknown>;
6
21
  /** Returns a shallow-copied array of items sorted by `id` in lexicographic order. */
7
22
  export declare function sortedCopyById<T extends {
8
23
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/collections.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC5B,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,GAAG,EAAE,CAAC,EACN,WAAW,EAAE,MAAM,CAAC,GACrB,CAAC,CASH;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAExE;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAE/D"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/collections.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC5B,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,GAAG,EAAE,CAAC,EACN,WAAW,EAAE,MAAM,CAAC,GACrB,CAAC,CASH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAExE;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAE/D"}
@@ -11,6 +11,23 @@ export function getOrCreate(map, key, makeDefault) {
11
11
  map.set(key, value);
12
12
  return value;
13
13
  }
14
+ /**
15
+ * Returns a copy of `source` with every `undefined`-valued key removed.
16
+ *
17
+ * Entities in this library must never carry a key holding `undefined`. Two
18
+ * things go wrong when they do. `entityChecksum` includes a field only when
19
+ * the key is present, so clearing an app-level field by assigning `undefined`
20
+ * would leave the entity hashing as though it were still set — and clearing has
21
+ * to be exactly reversible. And `"field" in entity` becomes true, so any
22
+ * downstream mapper that turns `undefined` into `null` flips the field from
23
+ * absent to present, which moves the checksum of every entity of that kind.
24
+ *
25
+ * Applies wherever caller-supplied fields are spread into an entity: the
26
+ * `setExtras` pair on both engines, and the parser's `map*` extension hooks.
27
+ */
28
+ export function withoutUndefinedValues(source) {
29
+ return Object.fromEntries(Object.entries(source).filter(([, value]) => value !== undefined));
30
+ }
14
31
  /** Returns a shallow-copied array of items sorted by `id` in lexicographic order. */
15
32
  export function sortedCopyById(items) {
16
33
  return [...items].sort((a, b) => a.id.localeCompare(b.id));
@@ -1 +1 @@
1
- {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../src/lib/utils/collections.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,WAAW,CACvB,GAAc,EACd,GAAM,EACN,WAAoB;IAEpB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,EAAE,CAAA;IAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACnB,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAA2B,KAAU;IAC/D,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,MAAwB;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AACzE,CAAC"}
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../src/lib/utils/collections.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,WAAW,CACvB,GAAc,EACd,GAAM,EACN,WAAoB;IAEpB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,EAAE,CAAA;IAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACnB,OAAO,KAAK,CAAA;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAClC,MAA+B;IAE/B,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACpE,CAAA;AACL,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAA2B,KAAU;IAC/D,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,MAAwB;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AACzE,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Normalizes an origin document's text for *encoding*, never for content.
3
+ *
4
+ * Does: folds every line-break form to LF; strips the byte-order mark,
5
+ * control characters other than LF and tab, bidirectional controls,
6
+ * zero-width characters, tag characters, and stray variation selectors —
7
+ * while preserving emoji ZWJ, keycap, CJK, Mongolian, and emoji-tag
8
+ * sequences; composes to Unicode NFC; trims leading and trailing whitespace.
9
+ *
10
+ * Does not: collapse internal whitespace, reflow paragraphs, fold smart
11
+ * quotes or dashes, case-fold, or strip punctuation, diacritics, emoji, or
12
+ * non-ASCII characters. The document is meant to be the original.
13
+ *
14
+ * Idempotent — `normalizeOriginText(normalizeOriginText(t))` equals
15
+ * `normalizeOriginText(t)` — which is what makes it safe to apply both at an
16
+ * application's import boundary and again on document creation.
17
+ *
18
+ * Two things make it idempotent, and both are load-bearing.
19
+ *
20
+ * The step order. Line breaks are folded first because a lone carriage return
21
+ * is itself a control character, so stripping first would delete the break
22
+ * rather than convert it. Stripping precedes NFC because removing an invisible
23
+ * character can leave a base letter adjacent to a combining mark it was
24
+ * previously separated from; composing first would leave that pair for a second
25
+ * application to compose. NFC never emits a control, an invisible, or a line
26
+ * break, so the reverse hazard does not exist.
27
+ *
28
+ * And the rule that a removal candidate never legitimizes another removal
29
+ * candidate — see `isLegitimateInContext`. Without it a character survives on
30
+ * the strength of a neighbour deleted in the same pass, and the next pass
31
+ * deletes it too.
32
+ */
33
+ export declare function normalizeOriginText(text: string): string;
34
+ /** The number of Unicode code points in a string — not its UTF-16 `length`. */
35
+ export declare function codePointLength(text: string): number;
36
+ /**
37
+ * A reusable code-point↔UTF-16 offset map for one document.
38
+ *
39
+ * Build it once per document and reuse it across that document's anchors;
40
+ * resolving N anchors with `sliceByCodePoints` instead costs a full scan per
41
+ * anchor.
42
+ */
43
+ export type TCodePointIndex = {
44
+ readonly text: string;
45
+ /** UTF-16 offset of each code point, with one extra entry for the end of the string. */
46
+ readonly offsets: readonly number[];
47
+ };
48
+ /** Builds the reusable offset map described by {@link TCodePointIndex}. */
49
+ export declare function buildCodePointIndex(text: string): TCodePointIndex;
50
+ /**
51
+ * Slices a string by **code-point** offsets.
52
+ *
53
+ * `String.prototype.slice` on the same offsets is wrong for any text
54
+ * containing an astral-plane character, and passes every ASCII test — which
55
+ * is why anchor fields are named `startCodePoint` / `endCodePoint` and why
56
+ * this helper exists. Offsets are clamped rather than rejected; range
57
+ * checking against a document belongs to the origin library's validation.
58
+ */
59
+ export declare function sliceByCodePoints(text: string, startCodePoint: number, endCodePoint: number): string;
60
+ /** {@link sliceByCodePoints} against a prebuilt {@link TCodePointIndex}. */
61
+ export declare function sliceByCodePointsIndexed(index: TCodePointIndex, startCodePoint: number, endCodePoint: number): string;
62
+ //# sourceMappingURL=origin-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-text.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/origin-text.ts"],"names":[],"mappings":"AA4IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC,CAAA;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CASjE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACrB,MAAM,CAMR;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,eAAe,EACtB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACrB,MAAM,CAKR"}
@@ -0,0 +1,204 @@
1
+ // Origin-text normalization and code-point addressing.
2
+ //
3
+ // An origin document's text is the coordinate system every anchor indexes
4
+ // into, so `normalizeOriginText` defines what those coordinates mean.
5
+ //
6
+ // TREAT ANY LATER EDIT TO `normalizeOriginText` AS A DATA MIGRATION, NOT A
7
+ // BUG FIX. Every stored anchor is an offset into text this function produced;
8
+ // changing what it emits re-indexes all of them silently.
9
+ //
10
+ // Positions are counted in Unicode code points, per the W3C Web Annotation
11
+ // Data Model's normative requirement that a text selection be expressed "in
12
+ // terms of unicode code points (the 'character number'), not in terms of code
13
+ // units". `Intl.Segmenter` and the grapheme-splitting libraries segment
14
+ // grapheme clusters — a different unit that would silently yield wrong
15
+ // offsets — so only the built-in string iterator is used here.
16
+ /**
17
+ * Adjacency test for a zero width joiner: pictographs, the emoji variation
18
+ * selector, and skin-tone modifiers are the characters that legitimately sit
19
+ * beside one.
20
+ */
21
+ const EMOJI_ADJACENT = /[\p{Extended_Pictographic}\u{FE0F}\u{1F3FB}-\u{1F3FF}]/u;
22
+ /** A variation selector is doing real work after a pictograph, an emoji component (a keycap base, say), or a CJK ideograph. */
23
+ const VARIATION_SELECTOR_BASE = /[\p{Extended_Pictographic}\p{Emoji_Component}\p{Ideographic}]/u;
24
+ /** A Mongolian free variation selector is doing real work only after Mongolian script. */
25
+ const MONGOLIAN_BASE = /\p{Script=Mongolian}/u;
26
+ /** A tag-character run is an emoji tag sequence only when it starts right after a pictograph. */
27
+ const PICTOGRAPH = /\p{Extended_Pictographic}/u;
28
+ /** Every line-break form the normalizer folds to LF. Removing them instead would join two lines, which is a content change. */
29
+ const LINE_BREAK_FORMS = /\r\n|\r|\u0085|\u2028|\u2029/g;
30
+ const TAG_RANGE_START = 0xe0000;
31
+ const TAG_RANGE_END = 0xe007f;
32
+ /**
33
+ * Whether a code point is a candidate for removal — either unconditionally
34
+ * (controls, bidi overrides, zero-width characters) or subject to a
35
+ * preservation check in `isLegitimateInContext`.
36
+ *
37
+ * Carriage return, NEL, and the line/paragraph separators are absent by
38
+ * design: the line-break step has already folded them to LF.
39
+ */
40
+ function isRemovalCandidate(code) {
41
+ return (code <= 0x08 ||
42
+ code === 0x0b ||
43
+ code === 0x0c ||
44
+ (code >= 0x0e && code <= 0x1f) ||
45
+ (code >= 0x7f && code <= 0x9f) ||
46
+ code === 0x00ad ||
47
+ code === 0x061c ||
48
+ (code >= 0x180b && code <= 0x180f) ||
49
+ (code >= 0x200b && code <= 0x200f) ||
50
+ (code >= 0x202a && code <= 0x202e) ||
51
+ (code >= 0x2060 && code <= 0x2064) ||
52
+ (code >= 0x2066 && code <= 0x2069) ||
53
+ (code >= 0xfe00 && code <= 0xfe0f) ||
54
+ code === 0xfeff ||
55
+ (code >= TAG_RANGE_START && code <= TAG_RANGE_END));
56
+ }
57
+ /**
58
+ * Whether a removal candidate is doing legitimate work where it sits.
59
+ *
60
+ * These four boundaries are the hard part of invisible-character stripping:
61
+ * naive removal breaks family and profession emoji, keycaps, CJK variation
62
+ * sequences, Mongolian text, and flag tag sequences.
63
+ *
64
+ * **A character is never kept on the strength of a neighbour that did not
65
+ * survive.** The joiner, the variation selectors, and the tag characters all
66
+ * satisfy the emoji-adjacency and variation-selector-base tests themselves, so
67
+ * a rule that consulted the raw input would keep one because of a neighbour
68
+ * being deleted in the same pass — and a second pass, seeing that neighbour
69
+ * gone, would delete it too. That is what `emitted` enforces: the backward
70
+ * look reads only what actually survived, and the one forward look (the
71
+ * joiner's) rejects a candidate outright.
72
+ *
73
+ * A surviving candidate *may* legitimize another, deliberately: `FE0F` and the
74
+ * skin-tone modifiers match `EMOJI_ADJACENT` so that a joiner after an emoji
75
+ * presentation selector is kept, and a Mongolian free variation selector is
76
+ * itself `Script=Mongolian` so a run of them self-legitimizes after a
77
+ * Mongolian base. Both are stable across passes precisely because the base has
78
+ * to have survived.
79
+ */
80
+ function isLegitimateInContext(emitted, codePoints, index, code) {
81
+ const previous = emitted.length > 0 ? emitted[emitted.length - 1] : "";
82
+ if (code === 0x200d) {
83
+ if (previous !== "" && EMOJI_ADJACENT.test(previous))
84
+ return true;
85
+ const next = index + 1 < codePoints.length ? codePoints[index + 1] : "";
86
+ if (next === "")
87
+ return false;
88
+ const nextCode = next.codePointAt(0) ?? 0;
89
+ return !isRemovalCandidate(nextCode) && EMOJI_ADJACENT.test(next);
90
+ }
91
+ if (code >= 0xfe00 && code <= 0xfe0f) {
92
+ return previous !== "" && VARIATION_SELECTOR_BASE.test(previous);
93
+ }
94
+ if (code >= 0x180b && code <= 0x180f) {
95
+ return previous !== "" && MONGOLIAN_BASE.test(previous);
96
+ }
97
+ if (code >= TAG_RANGE_START && code <= TAG_RANGE_END) {
98
+ let start = emitted.length;
99
+ while (start > 0) {
100
+ const preceding = emitted[start - 1].codePointAt(0) ?? 0;
101
+ if (preceding < TAG_RANGE_START || preceding > TAG_RANGE_END)
102
+ break;
103
+ start--;
104
+ }
105
+ const base = start > 0 ? emitted[start - 1] : "";
106
+ return base !== "" && PICTOGRAPH.test(base);
107
+ }
108
+ return false;
109
+ }
110
+ function stripInvisibleCharacters(text) {
111
+ const codePoints = Array.from(text);
112
+ const emitted = [];
113
+ for (let i = 0; i < codePoints.length; i++) {
114
+ const char = codePoints[i];
115
+ const code = char.codePointAt(0) ?? 0;
116
+ if (isRemovalCandidate(code) &&
117
+ !isLegitimateInContext(emitted, codePoints, i, code)) {
118
+ continue;
119
+ }
120
+ emitted.push(char);
121
+ }
122
+ return emitted.join("");
123
+ }
124
+ /**
125
+ * Normalizes an origin document's text for *encoding*, never for content.
126
+ *
127
+ * Does: folds every line-break form to LF; strips the byte-order mark,
128
+ * control characters other than LF and tab, bidirectional controls,
129
+ * zero-width characters, tag characters, and stray variation selectors —
130
+ * while preserving emoji ZWJ, keycap, CJK, Mongolian, and emoji-tag
131
+ * sequences; composes to Unicode NFC; trims leading and trailing whitespace.
132
+ *
133
+ * Does not: collapse internal whitespace, reflow paragraphs, fold smart
134
+ * quotes or dashes, case-fold, or strip punctuation, diacritics, emoji, or
135
+ * non-ASCII characters. The document is meant to be the original.
136
+ *
137
+ * Idempotent — `normalizeOriginText(normalizeOriginText(t))` equals
138
+ * `normalizeOriginText(t)` — which is what makes it safe to apply both at an
139
+ * application's import boundary and again on document creation.
140
+ *
141
+ * Two things make it idempotent, and both are load-bearing.
142
+ *
143
+ * The step order. Line breaks are folded first because a lone carriage return
144
+ * is itself a control character, so stripping first would delete the break
145
+ * rather than convert it. Stripping precedes NFC because removing an invisible
146
+ * character can leave a base letter adjacent to a combining mark it was
147
+ * previously separated from; composing first would leave that pair for a second
148
+ * application to compose. NFC never emits a control, an invisible, or a line
149
+ * break, so the reverse hazard does not exist.
150
+ *
151
+ * And the rule that a removal candidate never legitimizes another removal
152
+ * candidate — see `isLegitimateInContext`. Without it a character survives on
153
+ * the strength of a neighbour deleted in the same pass, and the next pass
154
+ * deletes it too.
155
+ */
156
+ export function normalizeOriginText(text) {
157
+ const withUnixLineBreaks = text.replace(LINE_BREAK_FORMS, "\n");
158
+ const stripped = stripInvisibleCharacters(withUnixLineBreaks);
159
+ return stripped.normalize("NFC").trim();
160
+ }
161
+ /** The number of Unicode code points in a string — not its UTF-16 `length`. */
162
+ export function codePointLength(text) {
163
+ let count = 0;
164
+ for (let i = 0; i < text.length;) {
165
+ const code = text.codePointAt(i);
166
+ i += code !== undefined && code > 0xffff ? 2 : 1;
167
+ count++;
168
+ }
169
+ return count;
170
+ }
171
+ /** Builds the reusable offset map described by {@link TCodePointIndex}. */
172
+ export function buildCodePointIndex(text) {
173
+ const offsets = [];
174
+ for (let i = 0; i < text.length;) {
175
+ offsets.push(i);
176
+ const code = text.codePointAt(i);
177
+ i += code !== undefined && code > 0xffff ? 2 : 1;
178
+ }
179
+ offsets.push(text.length);
180
+ return { text, offsets };
181
+ }
182
+ function clamp(value, low, high) {
183
+ return value < low ? low : value > high ? high : value;
184
+ }
185
+ /**
186
+ * Slices a string by **code-point** offsets.
187
+ *
188
+ * `String.prototype.slice` on the same offsets is wrong for any text
189
+ * containing an astral-plane character, and passes every ASCII test — which
190
+ * is why anchor fields are named `startCodePoint` / `endCodePoint` and why
191
+ * this helper exists. Offsets are clamped rather than rejected; range
192
+ * checking against a document belongs to the origin library's validation.
193
+ */
194
+ export function sliceByCodePoints(text, startCodePoint, endCodePoint) {
195
+ return sliceByCodePointsIndexed(buildCodePointIndex(text), startCodePoint, endCodePoint);
196
+ }
197
+ /** {@link sliceByCodePoints} against a prebuilt {@link TCodePointIndex}. */
198
+ export function sliceByCodePointsIndexed(index, startCodePoint, endCodePoint) {
199
+ const total = index.offsets.length - 1;
200
+ const start = clamp(startCodePoint, 0, total);
201
+ const end = clamp(endCodePoint, start, total);
202
+ return index.text.slice(index.offsets[start], index.offsets[end]);
203
+ }
204
+ //# sourceMappingURL=origin-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-text.js","sourceRoot":"","sources":["../../../src/lib/utils/origin-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Computes the SHA-256 digest of a string's UTF-8 encoding and returns it as
3
+ * 64 lowercase hexadecimal characters.
4
+ */
5
+ export declare function sha256Hex(text: string): string;
6
+ //# sourceMappingURL=sha256.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/sha256.ts"],"names":[],"mappings":"AAyCA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqE9C"}
@@ -0,0 +1,98 @@
1
+ // SHA-256 (FIPS 180-4), synchronous and runtime-agnostic.
2
+ //
3
+ // Why hand-rolled rather than `crypto.subtle.digest` or `node:crypto`:
4
+ // every library mutator in this package is synchronous, and `entityChecksum`
5
+ // is synchronous by construction, so an async digest would either make
6
+ // document creation async — infecting the whole mutation surface — or push
7
+ // the digest onto the caller. `node:crypto` is unavailable outside Node.
8
+ // The algorithm is standard, so any consumer digesting the same bytes with
9
+ // Web Crypto gets the same string; `test/origin/sha256.test.ts` pins that.
10
+ //
11
+ // Used for content identity only, never for authentication. The 32-bit
12
+ // FNV-1a in `../core/checksum.js` remains the hash for sync-detection
13
+ // checksums; its collision rate is unusable for content identity.
14
+ /** Round constants: the first 32 bits of the fractional parts of the cube roots of the first 64 primes. */
15
+ const ROUND_CONSTANTS = new Uint32Array([
16
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
17
+ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
18
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
19
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
20
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
21
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
22
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
23
+ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
24
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
25
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
26
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
27
+ ]);
28
+ /** Initial hash values: the first 32 bits of the fractional parts of the square roots of the first 8 primes. */
29
+ const INITIAL_HASH = new Uint32Array([
30
+ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c,
31
+ 0x1f83d9ab, 0x5be0cd19,
32
+ ]);
33
+ const BLOCK_BYTES = 64;
34
+ function rotateRight(value, bits) {
35
+ return (value >>> bits) | (value << (32 - bits));
36
+ }
37
+ /**
38
+ * Computes the SHA-256 digest of a string's UTF-8 encoding and returns it as
39
+ * 64 lowercase hexadecimal characters.
40
+ */
41
+ export function sha256Hex(text) {
42
+ const message = new TextEncoder().encode(text);
43
+ const bitLength = message.length * 8;
44
+ // Pad to a multiple of the block size: a 0x80 byte, then zeroes, then the
45
+ // message length as a 64-bit big-endian integer in the final eight bytes.
46
+ const blockCount = Math.floor((message.length + 8) / BLOCK_BYTES) + 1;
47
+ const padded = new Uint8Array(blockCount * BLOCK_BYTES);
48
+ padded.set(message);
49
+ padded[message.length] = 0x80;
50
+ const paddedView = new DataView(padded.buffer);
51
+ paddedView.setUint32(padded.length - 8, Math.floor(bitLength / 0x100000000));
52
+ paddedView.setUint32(padded.length - 4, bitLength >>> 0);
53
+ const hash = INITIAL_HASH.slice();
54
+ const schedule = new Uint32Array(64);
55
+ for (let offset = 0; offset < padded.length; offset += BLOCK_BYTES) {
56
+ for (let t = 0; t < 16; t++) {
57
+ schedule[t] = paddedView.getUint32(offset + t * 4);
58
+ }
59
+ for (let t = 16; t < 64; t++) {
60
+ const previous = schedule[t - 15];
61
+ const recent = schedule[t - 2];
62
+ const s0 = rotateRight(previous, 7) ^
63
+ rotateRight(previous, 18) ^
64
+ (previous >>> 3);
65
+ const s1 = rotateRight(recent, 17) ^
66
+ rotateRight(recent, 19) ^
67
+ (recent >>> 10);
68
+ schedule[t] = (schedule[t - 16] + s0 + schedule[t - 7] + s1) >>> 0;
69
+ }
70
+ let [a, b, c, d, e, f, g, h] = hash;
71
+ for (let t = 0; t < 64; t++) {
72
+ const sigma1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);
73
+ const choose = (e & f) ^ (~e & g);
74
+ const temp1 = (h + sigma1 + choose + ROUND_CONSTANTS[t] + schedule[t]) >>> 0;
75
+ const sigma0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);
76
+ const majority = (a & b) ^ (a & c) ^ (b & c);
77
+ const temp2 = (sigma0 + majority) >>> 0;
78
+ h = g;
79
+ g = f;
80
+ f = e;
81
+ e = (d + temp1) >>> 0;
82
+ d = c;
83
+ c = b;
84
+ b = a;
85
+ a = (temp1 + temp2) >>> 0;
86
+ }
87
+ const working = [a, b, c, d, e, f, g, h];
88
+ for (let i = 0; i < 8; i++) {
89
+ hash[i] = (hash[i] + working[i]) >>> 0;
90
+ }
91
+ }
92
+ let out = "";
93
+ for (const word of hash) {
94
+ out += word.toString(16).padStart(8, "0");
95
+ }
96
+ return out;
97
+ }
98
+ //# sourceMappingURL=sha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../../src/lib/utils/sha256.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proposit/proposit-core",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "Core engine for building and manipulating propositional logic arguments.",
5
5
  "license": "MIT",
6
6
  "keywords": [