@lionweb/utilities 0.9.0-beta.1 → 0.9.0-beta.3
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/CHANGELOG.md +1 -0
- package/dist/serialization/chunk.d.ts +6 -0
- package/dist/serialization/chunk.d.ts.map +1 -1
- package/dist/serialization/chunk.js +25 -7
- package/dist/serialization/chunk.js.map +1 -1
- package/dist/serialization/index.d.ts +1 -1
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +1 -1
- package/dist/serialization/index.js.map +1 -1
- package/package.json +5 -5
- package/src/serialization/chunk.ts +26 -7
- package/src/serialization/index.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
* Expose types associated with the `measure` function — m.n. `Metrics`.
|
|
6
6
|
* Add a `zeroMetrics` constant, and `mergeMetrics` and `aggregateMetrics` functions, to aggregate `Metrics`.
|
|
7
|
+
* Add a `tryReadSerializationChunk` that plays better with async “versus” throwing exceptions.
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
## 0.8.0
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { Language, LionWebVersion } from "@lionweb/core";
|
|
2
2
|
import { LionWebJsonChunk } from "@lionweb/json";
|
|
3
|
+
/**
|
|
4
|
+
* Tries to read the file at the given `path` as a {@link LionWebJsonChunk serialization chunk}.
|
|
5
|
+
* **Note** that it's only checked that the file exists and can be parsed as JSON,
|
|
6
|
+
* _not_ whether it satisfies the specified serialization chunk format!
|
|
7
|
+
*/
|
|
8
|
+
export declare const tryReadSerializationChunk: (path: string) => Promise<LionWebJsonChunk | Error>;
|
|
3
9
|
/**
|
|
4
10
|
* Reads the file at the given path as a {@link LionWebJsonChunk serialization chunk}.
|
|
5
11
|
* **Note** that it's only checked that the file exists and can be parsed as JSON,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,QAAQ,EAER,cAAc,EAEjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAA2B,MAAM,eAAe,CAAA;AAIzE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,QAAQ,EAER,cAAc,EAEjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAA2B,MAAM,eAAe,CAAA;AAIzE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAa9F,CAAA;AAGD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,MAAM,MAAM,8BAMxD,CAAA;AAMD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,MAAM,OAAO,EAAE,iBAAiB,cAAc,KAAG,OAQI,CAAA;AAGlG;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,iBAAiB,cAAc,KAAG,OAAO,CAAC,QAAQ,EAAE,CAa1G,CAAA;AAiBD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,qBAAqB,gBAAgB,EAAE,EAAE,iBAAiB,cAAc,KAAG,gBAOnG,CAAA;AAGN;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAU,OAAO,MAAM,EAAE,EAAE,iBAAiB,cAAc,KAAG,OAAO,CAAC,QAAQ,EAAE,CAkBhH,CAAA"}
|
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
import { allLionWebVersions, deserializeLanguages, lioncoreKey, LionWebVersions } from "@lionweb/core";
|
|
2
|
-
import {
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Tries to read the file at the given `path` as a {@link LionWebJsonChunk serialization chunk}.
|
|
5
5
|
* **Note** that it's only checked that the file exists and can be parsed as JSON,
|
|
6
6
|
* _not_ whether it satisfies the specified serialization chunk format!
|
|
7
7
|
*/
|
|
8
|
-
export const
|
|
8
|
+
export const tryReadSerializationChunk = async (path) => {
|
|
9
9
|
try {
|
|
10
|
-
|
|
10
|
+
const json = await readFile(path);
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(json.toString());
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
return Promise.reject(new Error(`${path} is not a valid JSON file: ${e.message}`));
|
|
17
|
+
}
|
|
11
18
|
}
|
|
12
19
|
catch (e) {
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
return Promise.reject(new Error(`${path} is not a valid JSON file: ${e.message}`));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Reads the file at the given path as a {@link LionWebJsonChunk serialization chunk}.
|
|
26
|
+
* **Note** that it's only checked that the file exists and can be parsed as JSON,
|
|
27
|
+
* _not_ whether it satisfies the specified serialization chunk format!
|
|
28
|
+
*/
|
|
29
|
+
export const readSerializationChunk = async (path) => {
|
|
30
|
+
const result = await tryReadSerializationChunk(path);
|
|
31
|
+
if (result instanceof Error) {
|
|
32
|
+
throw result;
|
|
15
33
|
}
|
|
34
|
+
return result;
|
|
16
35
|
};
|
|
17
|
-
// TODO don't throw, but return some kind of error object (– possibly using Promise.reject)
|
|
18
36
|
const isRecord = (json) => typeof json === "object" && !Array.isArray(json);
|
|
19
37
|
/**
|
|
20
38
|
* @return whether the given JSON looks like the serialization of languages.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EAEpB,WAAW,EAEX,eAAe,EAClB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { withoutAnnotations } from "./annotation-remover.js";
|
|
2
|
-
export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages } from "./chunk.js";
|
|
2
|
+
export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages, tryReadSerializationChunk } from "./chunk.js";
|
|
3
3
|
export { aggregateMetrics, measure, mergeMetrics, zeroMetrics } from "./metrics/index.js";
|
|
4
4
|
export type { ClassifierInstantiationMetric, ClassifierMetaTypes, ClassifierPointer, Metrics, LanguageMetric, LanguagePointer } from "./metrics/index.js";
|
|
5
5
|
export { orderedSerializationChunk } from "./ordering.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,yBAAyB,EAAC,MAAM,YAAY,CAAA;AACrJ,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAA;AACvF,YAAY,EAAC,6BAA6B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AACvJ,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAA;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { withoutAnnotations } from "./annotation-remover.js";
|
|
2
|
-
export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages } from "./chunk.js";
|
|
2
|
+
export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages, tryReadSerializationChunk } from "./chunk.js";
|
|
3
3
|
export { aggregateMetrics, measure, mergeMetrics, zeroMetrics } from "./metrics/index.js";
|
|
4
4
|
export { orderedSerializationChunk } from "./ordering.js";
|
|
5
5
|
export { sortedSerializationChunk } from "./sorting.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAC,4BAA4B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,yBAAyB,EAAC,MAAM,YAAY,CAAA;AACrJ,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAA;AAEvF,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAA;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/utilities",
|
|
3
|
-
"version": "0.9.0-beta.
|
|
3
|
+
"version": "0.9.0-beta.3",
|
|
4
4
|
"description": "LionWeb utilities",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lionweb/core": "0.9.0-beta.
|
|
19
|
-
"@lionweb/json": "0.9.0-beta.
|
|
20
|
-
"@lionweb/textgen-utils": "0.9.0-beta.
|
|
21
|
-
"@lionweb/ts-utils": "0.9.0-beta.
|
|
18
|
+
"@lionweb/core": "0.9.0-beta.3",
|
|
19
|
+
"@lionweb/json": "0.9.0-beta.3",
|
|
20
|
+
"@lionweb/textgen-utils": "0.9.0-beta.3",
|
|
21
|
+
"@lionweb/ts-utils": "0.9.0-beta.3",
|
|
22
22
|
"littoral-templates": "0.5.1",
|
|
23
23
|
"nanoid": "5.1.6"
|
|
24
24
|
},
|
|
@@ -7,7 +7,28 @@ import {
|
|
|
7
7
|
LionWebVersions
|
|
8
8
|
} from "@lionweb/core"
|
|
9
9
|
import { LionWebJsonChunk, LionWebJsonUsedLanguage } from "@lionweb/json"
|
|
10
|
-
import {
|
|
10
|
+
import { readFile } from "fs/promises"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Tries to read the file at the given `path` as a {@link LionWebJsonChunk serialization chunk}.
|
|
15
|
+
* **Note** that it's only checked that the file exists and can be parsed as JSON,
|
|
16
|
+
* _not_ whether it satisfies the specified serialization chunk format!
|
|
17
|
+
*/
|
|
18
|
+
export const tryReadSerializationChunk = async (path: string): Promise<LionWebJsonChunk | Error> => {
|
|
19
|
+
try {
|
|
20
|
+
const json = await readFile(path)
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(json.toString()) as LionWebJsonChunk
|
|
23
|
+
} catch (e) {
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
return Promise.reject(new Error(`${path} is not a valid JSON file: ${(e as any).message}`))
|
|
26
|
+
}
|
|
27
|
+
} catch(e) {
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
return Promise.reject(new Error(`${path} is not a valid JSON file: ${(e as any).message}`))
|
|
30
|
+
}
|
|
31
|
+
}
|
|
11
32
|
|
|
12
33
|
|
|
13
34
|
/**
|
|
@@ -16,14 +37,12 @@ import { readFileAsJson } from "../utils/json.js"
|
|
|
16
37
|
* _not_ whether it satisfies the specified serialization chunk format!
|
|
17
38
|
*/
|
|
18
39
|
export const readSerializationChunk = async (path: string) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
console.error(`${path} is not a valid JSON file`)
|
|
23
|
-
throw e
|
|
40
|
+
const result = await tryReadSerializationChunk(path)
|
|
41
|
+
if (result instanceof Error) {
|
|
42
|
+
throw result
|
|
24
43
|
}
|
|
44
|
+
return result
|
|
25
45
|
}
|
|
26
|
-
// TODO don't throw, but return some kind of error object (– possibly using Promise.reject)
|
|
27
46
|
|
|
28
47
|
|
|
29
48
|
const isRecord = (json: unknown): json is Record<string, unknown> =>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export {withoutAnnotations} from "./annotation-remover.js"
|
|
2
|
-
export {looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages} from "./chunk.js"
|
|
2
|
+
export {looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages, tryReadSerializationChunk} from "./chunk.js"
|
|
3
3
|
export {aggregateMetrics, measure, mergeMetrics, zeroMetrics} from "./metrics/index.js"
|
|
4
4
|
export type {ClassifierInstantiationMetric, ClassifierMetaTypes, ClassifierPointer, Metrics, LanguageMetric, LanguagePointer} from "./metrics/index.js"
|
|
5
5
|
export {orderedSerializationChunk} from "./ordering.js"
|