@proposit/proposit-core 3.2.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.
- package/README.md +103 -2
- package/dist/cli/commands/expressions.d.ts.map +1 -1
- package/dist/cli/commands/expressions.js +44 -0
- package/dist/cli/commands/expressions.js.map +1 -1
- package/dist/cli/commands/origins.d.ts +3 -0
- package/dist/cli/commands/origins.d.ts.map +1 -0
- package/dist/cli/commands/origins.js +264 -0
- package/dist/cli/commands/origins.js.map +1 -0
- package/dist/cli/commands/premises.d.ts.map +1 -1
- package/dist/cli/commands/premises.js +18 -2
- package/dist/cli/commands/premises.js.map +1 -1
- package/dist/cli/engine.d.ts.map +1 -1
- package/dist/cli/engine.js +5 -2
- package/dist/cli/engine.js.map +1 -1
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +1 -0
- package/dist/cli/router.js.map +1 -1
- package/dist/cli/schemata.d.ts +4 -2
- package/dist/cli/schemata.d.ts.map +1 -1
- package/dist/cli/schemata.js +14 -1
- package/dist/cli/schemata.js.map +1 -1
- package/dist/cli/storage/libraries.d.ts +4 -0
- package/dist/cli/storage/libraries.d.ts.map +1 -1
- package/dist/cli/storage/libraries.js +19 -0
- package/dist/cli/storage/libraries.js.map +1 -1
- package/dist/cli/storage/variables.d.ts.map +1 -1
- package/dist/cli/storage/variables.js +3 -0
- package/dist/cli/storage/variables.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/extensions/basics/schemata.d.ts +2 -0
- package/dist/extensions/basics/schemata.d.ts.map +1 -1
- package/dist/extensions/citations/ieee/citation-claim.d.ts +20 -20
- package/dist/extensions/citations/ieee/index.d.ts +1 -0
- package/dist/extensions/citations/ieee/index.d.ts.map +1 -1
- package/dist/extensions/citations/ieee/index.js +1 -0
- package/dist/extensions/citations/ieee/index.js.map +1 -1
- package/dist/extensions/citations/ieee/origin-document.d.ts +452 -0
- package/dist/extensions/citations/ieee/origin-document.d.ts.map +1 -0
- package/dist/extensions/citations/ieee/origin-document.js +25 -0
- package/dist/extensions/citations/ieee/origin-document.js.map +1 -0
- package/dist/extensions/citations/ieee/references.d.ts +60 -60
- package/dist/extensions/citations/ieee/relaxed.d.ts +60 -60
- package/dist/extensions/citations/ieee/relaxed.d.ts.map +1 -1
- package/dist/extensions/citations/ieee/relaxed.js +11 -1
- package/dist/extensions/citations/ieee/relaxed.js.map +1 -1
- package/dist/extensions/pipelines/base/finalize-response-v2.d.ts +24 -0
- package/dist/extensions/pipelines/base/finalize-response-v2.d.ts.map +1 -1
- package/dist/extensions/pipelines/base/finalize-response-v2.js +249 -8
- package/dist/extensions/pipelines/base/finalize-response-v2.js.map +1 -1
- package/dist/extensions/pipelines/base/index.d.ts +3 -1
- package/dist/extensions/pipelines/base/index.d.ts.map +1 -1
- package/dist/extensions/pipelines/base/index.js +2 -1
- package/dist/extensions/pipelines/base/index.js.map +1 -1
- package/dist/extensions/pipelines/base/source-anchors.d.ts +57 -0
- package/dist/extensions/pipelines/base/source-anchors.d.ts.map +1 -0
- package/dist/extensions/pipelines/base/source-anchors.js +174 -0
- package/dist/extensions/pipelines/base/source-anchors.js.map +1 -0
- package/dist/extensions/pipelines/ingestion/scholar/scholar.d.ts.map +1 -1
- package/dist/extensions/pipelines/ingestion/scholar/scholar.js +11 -1
- package/dist/extensions/pipelines/ingestion/scholar/scholar.js.map +1 -1
- package/dist/extensions/pipelines/ingestion/scribe/scribe.d.ts.map +1 -1
- package/dist/extensions/pipelines/ingestion/scribe/scribe.js +5 -0
- package/dist/extensions/pipelines/ingestion/scribe/scribe.js.map +1 -1
- package/dist/lib/consts.d.ts.map +1 -1
- package/dist/lib/consts.js +27 -0
- package/dist/lib/consts.js.map +1 -1
- package/dist/lib/core/argument-engine.d.ts +5 -3
- package/dist/lib/core/argument-engine.d.ts.map +1 -1
- package/dist/lib/core/argument-engine.js +7 -4
- package/dist/lib/core/argument-engine.js.map +1 -1
- package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts +2 -1
- package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts.map +1 -1
- package/dist/lib/core/interfaces/index.d.ts +1 -1
- package/dist/lib/core/interfaces/index.d.ts.map +1 -1
- package/dist/lib/core/interfaces/library.interfaces.d.ts +72 -1
- package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
- package/dist/lib/core/origin-library.d.ts +127 -0
- package/dist/lib/core/origin-library.d.ts.map +1 -0
- package/dist/lib/core/origin-library.js +520 -0
- package/dist/lib/core/origin-library.js.map +1 -0
- package/dist/lib/core/premise-engine.d.ts.map +1 -1
- package/dist/lib/core/premise-engine.js +20 -3
- package/dist/lib/core/premise-engine.js.map +1 -1
- package/dist/lib/core/proposit-core.d.ts +15 -8
- package/dist/lib/core/proposit-core.d.ts.map +1 -1
- package/dist/lib/core/proposit-core.js +28 -3
- package/dist/lib/core/proposit-core.js.map +1 -1
- package/dist/lib/grammar/types.d.ts +2 -2
- package/dist/lib/grammar/types.d.ts.map +1 -1
- package/dist/lib/grammar/types.js +2 -1
- package/dist/lib/grammar/types.js.map +1 -1
- package/dist/lib/grammar/validators/presentable.d.ts +19 -0
- package/dist/lib/grammar/validators/presentable.d.ts.map +1 -1
- package/dist/lib/grammar/validators/presentable.js +57 -0
- package/dist/lib/grammar/validators/presentable.js.map +1 -1
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsing/argument-parser.d.ts.map +1 -1
- package/dist/lib/parsing/argument-parser.js +7 -3
- package/dist/lib/parsing/argument-parser.js.map +1 -1
- package/dist/lib/schemata/index.d.ts +1 -0
- package/dist/lib/schemata/index.d.ts.map +1 -1
- package/dist/lib/schemata/index.js +1 -0
- package/dist/lib/schemata/index.js.map +1 -1
- package/dist/lib/schemata/origin.d.ts +48 -0
- package/dist/lib/schemata/origin.d.ts.map +1 -0
- package/dist/lib/schemata/origin.js +102 -0
- package/dist/lib/schemata/origin.js.map +1 -0
- package/dist/lib/schemata/propositional.d.ts +6 -0
- package/dist/lib/schemata/propositional.d.ts.map +1 -1
- package/dist/lib/schemata/propositional.js +13 -0
- package/dist/lib/schemata/propositional.js.map +1 -1
- package/dist/lib/schemata/shared.d.ts +14 -14
- package/dist/lib/schemata/shared.d.ts.map +1 -1
- package/dist/lib/schemata/shared.js +29 -26
- package/dist/lib/schemata/shared.js.map +1 -1
- package/dist/lib/types/checksum.d.ts +3 -0
- package/dist/lib/types/checksum.d.ts.map +1 -1
- package/dist/lib/types/validation.d.ts +19 -1
- package/dist/lib/types/validation.d.ts.map +1 -1
- package/dist/lib/types/validation.js +19 -0
- package/dist/lib/types/validation.js.map +1 -1
- package/dist/lib/utils/collections.d.ts +15 -0
- package/dist/lib/utils/collections.d.ts.map +1 -1
- package/dist/lib/utils/collections.js +17 -0
- package/dist/lib/utils/collections.js.map +1 -1
- package/dist/lib/utils/origin-text.d.ts +62 -0
- package/dist/lib/utils/origin-text.d.ts.map +1 -0
- package/dist/lib/utils/origin-text.js +204 -0
- package/dist/lib/utils/origin-text.js.map +1 -0
- package/dist/lib/utils/sha256.d.ts +6 -0
- package/dist/lib/utils/sha256.d.ts.map +1 -0
- package/dist/lib/utils/sha256.js +98 -0
- package/dist/lib/utils/sha256.js.map +1 -0
- package/package.json +4 -3
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import Type, { type Static, type TSchema, type TSchemaOptions } from "typebox";
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
export
|
|
12
|
-
export declare const EncodableDate:
|
|
13
|
-
export declare const JsonPrimitiveSchema: Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull,
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new {@link TDateType} schema instance.
|
|
4
|
+
*
|
|
5
|
+
* The schema admits a `Date` or its serialized date string. `Value.Decode`
|
|
6
|
+
* normalizes either into a `Date`; `Value.Encode` leaves `Date` instances in
|
|
7
|
+
* place so `JSON.stringify` renders them as ISO strings.
|
|
8
|
+
*/
|
|
9
|
+
export declare function dateType(): Type.TCodec<Type.TRefine<Type.TUnsafe<Date>>, Date>;
|
|
10
|
+
/** TypeBox type that validates and decodes `Date` values. */
|
|
11
|
+
export type TDateType = ReturnType<typeof dateType>;
|
|
12
|
+
export declare const EncodableDate: Type.TCodec<Type.TRefine<Type.TUnsafe<Date>>, Date>;
|
|
13
|
+
export declare const JsonPrimitiveSchema: Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull, Type.TCodec<Type.TRefine<Type.TUnsafe<Date>>, Date>]>;
|
|
14
14
|
export type TJsonPrimitive = Static<typeof JsonPrimitiveSchema>;
|
|
15
15
|
export declare const JsonValueSchema: Type.TCyclic<{
|
|
16
|
-
JsonValueSchema: Type.TUnion<[Type.TRecord<"^.*$", Type.TRef<"JsonValueSchema">>, Type.TArray<Type.TRef<"JsonValueSchema">>, Type.TString, Type.TNumber, Type.TBoolean, Type.TNull,
|
|
16
|
+
JsonValueSchema: Type.TUnion<[Type.TRecord<"^.*$", Type.TRef<"JsonValueSchema">>, Type.TArray<Type.TRef<"JsonValueSchema">>, Type.TString, Type.TNumber, Type.TBoolean, Type.TNull, Type.TCodec<Type.TRefine<Type.TUnsafe<Date>>, Date>]>;
|
|
17
17
|
}, "JsonValueSchema">;
|
|
18
18
|
export declare const JsonObjectSchema: Type.TRecord<"^.*$", Type.TAny>;
|
|
19
19
|
export declare const JsonArraySchema: Type.TArray<Type.TCyclic<{
|
|
20
|
-
JsonValueSchema: Type.TUnion<[Type.TRecord<"^.*$", Type.TRef<"JsonValueSchema">>, Type.TArray<Type.TRef<"JsonValueSchema">>, Type.TString, Type.TNumber, Type.TBoolean, Type.TNull,
|
|
20
|
+
JsonValueSchema: Type.TUnion<[Type.TRecord<"^.*$", Type.TRef<"JsonValueSchema">>, Type.TArray<Type.TRef<"JsonValueSchema">>, Type.TString, Type.TNumber, Type.TBoolean, Type.TNull, Type.TCodec<Type.TRefine<Type.TUnsafe<Date>>, Date>]>;
|
|
21
21
|
}, "JsonValueSchema">>;
|
|
22
22
|
export type TJsonValue = TJsonPrimitive | {
|
|
23
23
|
[key: string]: TJsonValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/schemata/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/schemata/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAmB9E;;;;;;GAMG;AACH,wBAAgB,QAAQ,wDAevB;AACD,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAA;AACnD,eAAO,MAAM,aAAa,qDAAa,CAAA;AAKvC,eAAO,MAAM,mBAAmB,2HAM9B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,eAAe;;qBAa3B,CAAA;AAED,eAAO,MAAM,gBAAgB,iCAAyC,CAAA;AAEtE,eAAO,MAAM,eAAe;;sBAA8B,CAAA;AAI1D,MAAM,MAAM,UAAU,GAChB,cAAc,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAC7B,UAAU,EAAE,CAAA;AAClB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACpD,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAKrC,kFAAkF;AAClF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,OAAO,EACtC,QAAQ,CAAC,EACT,UAAU,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,iCAG5C,CAAA;AACD,eAAO,MAAM,IAAI,cAAgB,CAAA;AACjC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAA;AAEvC,kHAAkH;AAClH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,IAAI,IAAI,CAClE,CAAC,EACD,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CACzD,GACG,OAAO,CACH,IAAI,CACA,CAAC,EACD,OAAO,CACH,MAAM,CAAC,EACP,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CACzD,CACJ,CACJ,CAAA;AAEL,uGAAuG;AACvG,MAAM,MAAM,6BAA6B,CACrC,CAAC,SAAS;IACN,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,gBAAgB,EAAE,OAAO,CAAA;CAC5B,IACD,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,CAAA"}
|
|
@@ -2,34 +2,37 @@ import Type, {} from "typebox";
|
|
|
2
2
|
// ---------------------------------------------------------------------------
|
|
3
3
|
// EncodableDate — custom TypeBox type for Date values
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (typeof value === "string" || typeof value === "number") {
|
|
20
|
-
const date = new Date(value);
|
|
21
|
-
if (this.Check(date))
|
|
22
|
-
return date;
|
|
23
|
-
}
|
|
24
|
-
throw new Error("Cannot convert value to Date");
|
|
25
|
-
}
|
|
26
|
-
Clone() {
|
|
27
|
-
return new TDateType();
|
|
28
|
-
}
|
|
5
|
+
/**
|
|
6
|
+
* Normalizes a `Date` or its serialized form to a `Date`.
|
|
7
|
+
*
|
|
8
|
+
* Only date strings are treated as a serialized date — the form
|
|
9
|
+
* `JSON.stringify` produces. Numbers are rejected so that a numeric field
|
|
10
|
+
* mistakenly supplied where a date belongs still fails validation.
|
|
11
|
+
*/
|
|
12
|
+
function toDate(value) {
|
|
13
|
+
if (value instanceof Date)
|
|
14
|
+
return value;
|
|
15
|
+
if (typeof value !== "string")
|
|
16
|
+
return undefined;
|
|
17
|
+
const date = new Date(value);
|
|
18
|
+
return Number.isNaN(date.getTime()) ? undefined : date;
|
|
29
19
|
}
|
|
30
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new {@link TDateType} schema instance.
|
|
22
|
+
*
|
|
23
|
+
* The schema admits a `Date` or its serialized date string. `Value.Decode`
|
|
24
|
+
* normalizes either into a `Date`; `Value.Encode` leaves `Date` instances in
|
|
25
|
+
* place so `JSON.stringify` renders them as ISO strings.
|
|
26
|
+
*/
|
|
31
27
|
export function dateType() {
|
|
32
|
-
return
|
|
28
|
+
return Type.Codec(Type.Refine(Type.Unsafe({}), (value) => toDate(value) !== undefined, () => "Invalid date"))
|
|
29
|
+
.Decode((value) => {
|
|
30
|
+
const date = toDate(value);
|
|
31
|
+
if (date === undefined)
|
|
32
|
+
throw new Error("Cannot convert value to Date");
|
|
33
|
+
return date;
|
|
34
|
+
})
|
|
35
|
+
.Encode((value) => value);
|
|
33
36
|
}
|
|
34
37
|
export const EncodableDate = dateType();
|
|
35
38
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/lib/schemata/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAkD,MAAM,SAAS,CAAA;AAE9E,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAC9E
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/lib/schemata/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAkD,MAAM,SAAS,CAAA;AAE9E,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAC9E;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,KAAc;IAC1B,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAA;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ;IACpB,OAAO,IAAI,CAAC,KAAK,CACb,IAAI,CAAC,MAAM,CACP,IAAI,CAAC,MAAM,CAAO,EAAE,CAAC,EACrB,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAC/C,GAAG,EAAE,CAAC,cAAc,CACvB,CACJ;SACI,MAAM,CAAC,CAAC,KAAc,EAAQ,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS;YAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACf,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAW,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC;AAGD,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAA;AAEvC,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE;IACb,IAAI,CAAC,MAAM,EAAE;IACb,IAAI,CAAC,OAAO,EAAE;IACd,IAAI,CAAC,IAAI,EAAE;IACX,aAAa;CAChB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CACtC;IACI,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE;QACb,IAAI,CAAC,MAAM,EAAE;QACb,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,IAAI,EAAE;QACX,aAAa;KAChB,CAAC;CACL,EACD,iBAAiB,CACpB,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAEtE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;AAW1D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,kFAAkF;AAClF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACpB,MAAS,EACT,OAAyC,EAC3C,EAAE;IACA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAC3E,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,sDAAsD"}
|
|
@@ -16,5 +16,8 @@ export interface TCoreChecksumConfig {
|
|
|
16
16
|
claimCitationFields?: Set<string>;
|
|
17
17
|
/** Fields to hash for claim axioms. Defaults to ["claimId", "claimVersion", "supportingClaimId", "supportingClaimVersion"]. */
|
|
18
18
|
claimAxiomFields?: Set<string>;
|
|
19
|
+
originDocumentFields?: Set<string>;
|
|
20
|
+
originLinkFields?: Set<string>;
|
|
21
|
+
originAnchorFields?: Set<string>;
|
|
19
22
|
}
|
|
20
23
|
//# sourceMappingURL=checksum.d.ts.map
|
|
@@ -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;
|
|
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":"AAAA,MAAM,MAAM,6BAA6B,GACnC,YAAY,GACZ,UAAU,GACV,SAAS,GACT,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,MAAM,GACN,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/types/validation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,6BAA6B,GACnC,YAAY,GACZ,UAAU,GACV,SAAS,GACT,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,MAAM,GACN,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,cAAc,CAAA;AAEpB,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,6BAA6B,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,UAAU,EAAE,mBAAmB,EAAE,CAAA;CACpC,CAAA;AAGD,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AACxD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAC5D,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAMhE,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAChE,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAG9D,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAC9D,eAAO,MAAM,+BAA+B,oCAAoC,CAAA;AAChF,eAAO,MAAM,8BAA8B,mCAAmC,CAAA;AAC9E,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AAGpE,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AACtD,eAAO,MAAM,gBAAgB,qBAAqB,CAAA;AAClD,eAAO,MAAM,oBAAoB,yBAAyB,CAAA;AAC1D,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAG5D,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AACtD,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAC9D,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAChE,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAG5D,eAAO,MAAM,oBAAoB,yBAAyB,CAAA;AAC1D,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AAGpE,eAAO,MAAM,oBAAoB,yBAAyB,CAAA;AAC1D,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AAGpE,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAChE,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAC5D,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,eAAO,MAAM,iCAAiC,sCACP,CAAA;AACvC,eAAO,MAAM,qCAAqC,0CACP,CAAA;AAC3C,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAChE,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAGtD,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AAGxE,eAAO,MAAM,oBAAoB,yBAAyB,CAAA;AAC1D,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AACtD,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,8BAA8B,mCAAmC,CAAA;AAC9E,eAAO,MAAM,mCAAmC,wCACP,CAAA;AACzC,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AACxE,eAAO,MAAM,mCAAmC,wCACP,CAAA;AACzC,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAGhD,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AAGpE,eAAO,MAAM,8BAA8B,mCAAmC,CAAA;AAC9E,eAAO,MAAM,0BAA0B,+BAA+B,CAAA;AACtE,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,0BAA0B,+BAA+B,CAAA;AACtE,eAAO,MAAM,6BAA6B,kCAAkC,CAAA;AAC5E,eAAO,MAAM,+BAA+B,oCAAoC,CAAA;AAChF,eAAO,MAAM,mCAAmC,wCACP,CAAA;AACzC,eAAO,MAAM,+BAA+B,oCAAoC,CAAA;AAChF,8FAA8F;AAC9F,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,mFAAmF;AACnF,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAC5D,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAChE,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAqB9D,eAAO,MAAM,4BAA4B,iCAAiC,CAAA;AAC1E,eAAO,MAAM,2CAA2C,gDACP,CAAA;AACjD,eAAO,MAAM,iCAAiC,sCACP,CAAA;AACvC,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAChD,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AAGxE,eAAO,MAAM,0BAA0B,+BAA+B,CAAA"}
|
|
@@ -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":"
|
|
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 @@
|
|
|
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"}
|