@lionweb/utilities 0.9.0-beta.0 → 0.9.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/serialization/chunk.d.ts +6 -0
  3. package/dist/serialization/chunk.d.ts.map +1 -1
  4. package/dist/serialization/chunk.js +25 -7
  5. package/dist/serialization/chunk.js.map +1 -1
  6. package/dist/serialization/index.d.ts +3 -2
  7. package/dist/serialization/index.d.ts.map +1 -1
  8. package/dist/serialization/index.js +2 -2
  9. package/dist/serialization/index.js.map +1 -1
  10. package/dist/serialization/metrics/functions.d.ts +16 -0
  11. package/dist/serialization/metrics/functions.d.ts.map +1 -0
  12. package/dist/serialization/metrics/functions.js +62 -0
  13. package/dist/serialization/metrics/functions.js.map +1 -0
  14. package/dist/serialization/metrics/index.d.ts +4 -0
  15. package/dist/serialization/metrics/index.d.ts.map +1 -0
  16. package/dist/serialization/metrics/index.js +3 -0
  17. package/dist/serialization/metrics/index.js.map +1 -0
  18. package/dist/serialization/{measurer.d.ts → metrics/measurer.d.ts} +1 -5
  19. package/dist/serialization/metrics/measurer.d.ts.map +1 -0
  20. package/dist/serialization/{measurer.js → metrics/measurer.js} +2 -6
  21. package/dist/serialization/metrics/measurer.js.map +1 -0
  22. package/dist/serialization/{metric-types.d.ts → metrics/types.d.ts} +5 -5
  23. package/dist/serialization/metrics/types.d.ts.map +1 -0
  24. package/dist/serialization/metrics/types.js +2 -0
  25. package/dist/serialization/metrics/types.js.map +1 -0
  26. package/package.json +5 -5
  27. package/src/serialization/chunk.ts +26 -7
  28. package/src/serialization/index.ts +3 -2
  29. package/src/serialization/metrics/functions.ts +94 -0
  30. package/src/serialization/metrics/index.ts +10 -0
  31. package/src/serialization/{measurer.ts → metrics/measurer.ts} +3 -10
  32. package/src/serialization/{metric-types.ts → metrics/types.ts} +7 -5
  33. package/dist/serialization/measurer.d.ts.map +0 -1
  34. package/dist/serialization/measurer.js.map +0 -1
  35. package/dist/serialization/metric-types.d.ts.map +0 -1
  36. package/dist/serialization/metric-types.js +0 -2
  37. package/dist/serialization/metric-types.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0 — not yet released
4
+
5
+ * Expose types associated with the `measure` function — m.n. `Metrics`.
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.
8
+
9
+
3
10
  ## 0.8.0
4
11
 
5
12
  * Propagate `reference` field of `LionWebJsonReferenceTarget` type now being `null`able.
@@ -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,8BAOxD,CAAA;AAOD;;;;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
+ {"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 { readFileAsJson } from "../utils/json.js";
2
+ import { readFile } from "fs/promises";
3
3
  /**
4
- * Reads the file at the given path as a {@link LionWebJsonChunk serialization chunk}.
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 readSerializationChunk = async (path) => {
8
+ export const tryReadSerializationChunk = async (path) => {
9
9
  try {
10
- return readFileAsJson(path);
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
- console.error(`${path} is not a valid JSON file`);
14
- throw e;
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":"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"}
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,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAAY,EAAqC,EAAE;IAC/F,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAqB,CAAA;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,8DAA8D;YAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA+B,CAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC/F,CAAC;IACL,CAAC;IAAC,OAAM,CAAC,EAAE,CAAC;QACR,8DAA8D;QAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA+B,CAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC/F,CAAC;AACL,CAAC,CAAA;AAGD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACpD,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,CAAA;IAChB,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAGD,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAmC,EAAE,CAChE,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAa,EAAE,cAA+B,EAAW,EAAE,CACpG,QAAQ,CAAC,IAAI,CAAC;OACX,CACC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;SACjE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,OAAO,CAAC,0BAA0B,CAAC,CACpG;OACE,WAAW,IAAI,IAAI;OACnB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;OAChC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAA;AAGlG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAY,EAAE,cAA+B,EAAuB,EAAE;IAC3G,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAC7D,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,gEAAgE,CAAC,CAAA;QACtF,OAAO,EAAE,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACD,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;QACvD,8DAA8D;IAC1D,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,mEAAmE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACpG,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC,CAAA;AAGD,MAAM,eAAe,GAAG,CAAI,GAAY,EAAE,SAAkC,EAAE,EAAE,CAC5E,GAAG,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACR;IACI,GAAG,GAAG;IACN,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,EACL,EAAE,CACL,CAAA;AAEL,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAE,KAA8B,EAAW,EAAE,CACxF,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAA;AAG5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,mBAAuC,EAAE,cAA+B,EAAoB,EAAE,CACxH,CAAC;IACG,0BAA0B,EACtB,cAAc,EAAE,0BAA0B;WACnC,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,0BAA0B;IACzH,SAAS,EAAE,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAC,SAAS,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IACzF,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC;CACzD,CAAC,CAAA;AAGN;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAe,EAAE,cAA+B,EAAuB,EAAE;IACjH,MAAM,mBAAmB,GACrB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;SACrD,MAAM,CAAC,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,4BAA4B,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;QAC3E,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;YACzB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,gEAAgE,CAAC,CAAA;QAC1F,CAAC;QACD,OAAO,EAAE,CAAA;IACb,CAAC,CAAC,CAAA;IACN,IAAI,CAAC;QACD,OAAO,oBAAoB,CAAC,aAAa,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAA;QACvF,8DAA8D;IAC1D,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3G,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export { withoutAnnotations } from "./annotation-remover.js";
2
- export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages } from "./chunk.js";
3
- export { measure } from "./measurer.js";
2
+ export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages, tryReadSerializationChunk } from "./chunk.js";
3
+ export { aggregateMetrics, measure, mergeMetrics, zeroMetrics } from "./metrics/index.js";
4
+ export type { ClassifierInstantiationMetric, ClassifierMetaTypes, ClassifierPointer, Metrics, LanguageMetric, LanguagePointer } from "./metrics/index.js";
4
5
  export { orderedSerializationChunk } from "./ordering.js";
5
6
  export { sortedSerializationChunk } from "./sorting.js";
6
7
  export { genericAsTreeText } from "./textualizer.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;AAC1H,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAA;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,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,6 +1,6 @@
1
1
  export { withoutAnnotations } from "./annotation-remover.js";
2
- export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages } from "./chunk.js";
3
- export { measure } from "./measurer.js";
2
+ export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages, tryReadSerializationChunk } from "./chunk.js";
3
+ export { aggregateMetrics, measure, mergeMetrics, zeroMetrics } from "./metrics/index.js";
4
4
  export { orderedSerializationChunk } from "./ordering.js";
5
5
  export { sortedSerializationChunk } from "./sorting.js";
6
6
  export { genericAsTreeText } from "./textualizer.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;AAC1H,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAA;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,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"}
@@ -0,0 +1,16 @@
1
+ import { Metrics } from "./types.js";
2
+ /**
3
+ * A “0” instance of the {@link Metrics metrics type},
4
+ * for use in combination with `Array.reduce`:
5
+ * ```reduce(mergeMetrics, zeroMetrics)```.
6
+ */
7
+ export declare const zeroMetrics: Metrics;
8
+ /**
9
+ * @return a merging of the given `left` and `right` {@link Metrics metrics}.
10
+ */
11
+ export declare const mergeMetrics: (left: Metrics, right: Metrics) => Metrics;
12
+ /**
13
+ * @return the aggregation of all given {@link Metric `metrics`}.
14
+ */
15
+ export declare const aggregateMetrics: (metrics: Metrics[]) => Metrics;
16
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/serialization/metrics/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,OAAO,EAAE,MAAM,YAAY,CAAA;AAExE;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,OAKzB,CAAA;AAYD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,EAAE,OAAO,OAAO,KAAG,OA0D5D,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,EAAE,KAAG,OACT,CAAA"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * A “0” instance of the {@link Metrics metrics type},
3
+ * for use in combination with `Array.reduce`:
4
+ * ```reduce(mergeMetrics, zeroMetrics)```.
5
+ */
6
+ export const zeroMetrics = {
7
+ languagesWithInstantiations: [],
8
+ instantiatedClassifiers: [],
9
+ languagesWithoutInstantiations: [],
10
+ uninstantiatedInstantiableClassifiers: []
11
+ };
12
+ const isFromSameLanguage = (that) => (other) => that.key === other.key && that.version === other.version;
13
+ const isFromSameClassifier = (that) => (other) => isFromSameLanguage(that.language)(other.language) && that.key === other.key;
14
+ /**
15
+ * @return a merging of the given `left` and `right` {@link Metrics metrics}.
16
+ */
17
+ export const mergeMetrics = (left, right) => {
18
+ const languagesWithInstantiations = [
19
+ ...(left.languagesWithInstantiations.map((leftMetric) => {
20
+ const rightMetric = right.languagesWithInstantiations.find(isFromSameLanguage(leftMetric));
21
+ return {
22
+ key: leftMetric.key,
23
+ version: leftMetric.version,
24
+ name: leftMetric.name ?? rightMetric?.name,
25
+ instantiations: leftMetric.instantiations + (rightMetric?.instantiations ?? 0)
26
+ };
27
+ })),
28
+ ...(right.languagesWithInstantiations.filter((rightMetric) => !left.languagesWithInstantiations.some(isFromSameLanguage(rightMetric))))
29
+ ];
30
+ const instantiatedClassifiers = [
31
+ ...(left.instantiatedClassifiers.map((leftMetric) => {
32
+ const rightMetric = right.instantiatedClassifiers.find(isFromSameClassifier(leftMetric));
33
+ return {
34
+ language: leftMetric.language,
35
+ key: leftMetric.key,
36
+ name: leftMetric.name ?? rightMetric?.name,
37
+ metaType: leftMetric.metaType,
38
+ instantiations: leftMetric.instantiations + (rightMetric?.instantiations ?? 0)
39
+ };
40
+ })),
41
+ ...(right.instantiatedClassifiers.filter((rightMetric) => !left.instantiatedClassifiers.some(isFromSameClassifier(rightMetric))))
42
+ ];
43
+ const languagesWithoutInstantiations = [...left.languagesWithoutInstantiations, ...right.languagesWithoutInstantiations]
44
+ .filter((languagePointer, index, all) => !languagesWithInstantiations.some(isFromSameLanguage(languagePointer)) // remove languages that have instantiations after all
45
+ && !all.slice(0, index).some(isFromSameLanguage(languagePointer)) // remove languages that already occurred
46
+ );
47
+ const uninstantiatedInstantiableClassifiers = [...left.uninstantiatedInstantiableClassifiers, ...right.uninstantiatedInstantiableClassifiers]
48
+ .filter((classifierPointer, index, all) => !instantiatedClassifiers.some(isFromSameClassifier(classifierPointer)) // remove languages that have instantiations after all
49
+ && !all.slice(0, index).some(isFromSameClassifier(classifierPointer)) // remove languages that already occurred
50
+ );
51
+ return {
52
+ languagesWithInstantiations,
53
+ instantiatedClassifiers,
54
+ languagesWithoutInstantiations,
55
+ uninstantiatedInstantiableClassifiers
56
+ };
57
+ };
58
+ /**
59
+ * @return the aggregation of all given {@link Metric `metrics`}.
60
+ */
61
+ export const aggregateMetrics = (metrics) => metrics.reduce(mergeMetrics, zeroMetrics);
62
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/serialization/metrics/functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { measure } from "./measurer.js";
2
+ export { aggregateMetrics, mergeMetrics, zeroMetrics } from "./functions.js";
3
+ export type { ClassifierPointer, ClassifierInstantiationMetric, ClassifierMetaTypes, LanguageMetric, LanguagePointer, Metrics } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EACR,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,OAAO,EACV,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { measure } from "./measurer.js";
2
+ export { aggregateMetrics, mergeMetrics, zeroMetrics } from "./functions.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/serialization/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAA"}
@@ -1,10 +1,6 @@
1
1
  import { Language } from "@lionweb/core";
2
2
  import { LionWebJsonChunk } from "@lionweb/json";
3
- import { Metrics } from "./metric-types.js";
4
- /**
5
- * Sum the given array of numbers.
6
- */
7
- export declare const sumNumbers: (nums: number[]) => number;
3
+ import { Metrics } from "./types.js";
8
4
  /**
9
5
  * Computes {@link Metrics metrics} on the given {@link LionWebJsonChunk serialization chunk}.
10
6
  * Passing it {@link Language languages} make this language-aware:
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measurer.d.ts","sourceRoot":"","sources":["../../../src/serialization/metrics/measurer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6D,QAAQ,EAAwC,MAAM,eAAe,CAAA;AACzI,OAAO,EAAE,gBAAgB,EAAoE,MAAM,eAAe,CAAA;AAElH,OAAO,EAAuB,OAAO,EAAE,MAAM,YAAY,CAAA;AASzD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,oBAAoB,gBAAgB,EAAE,WAAW,QAAQ,EAAE,KAAG,OAyFrF,CAAA"}
@@ -1,9 +1,5 @@
1
1
  import { Annotation, Concept, instantiableClassifiersOf, Interface, MemoisingSymbolTable } from "@lionweb/core";
2
- import { nested3Grouper, nested3Mapper, nestedFlatMap2, nestedFlatMap3 } from "@lionweb/ts-utils";
3
- /**
4
- * Sum the given array of numbers.
5
- */
6
- export const sumNumbers = (nums) => nums.reduce((acc, cur) => acc + cur, 0);
2
+ import { nested3Grouper, nested3Mapper, nestedFlatMap2, nestedFlatMap3, sumOfNumbers } from "@lionweb/ts-utils";
7
3
  /**
8
4
  * Computes {@link Metrics metrics} on the given {@link LionWebJsonChunk serialization chunk}.
9
5
  * Passing it {@link Language languages} make this language-aware:
@@ -21,7 +17,7 @@ export const measure = (serializationChunk, languages) => {
21
17
  key: languageKey,
22
18
  version,
23
19
  name: symbolTable.languageMatching(languageKey, version)?.name,
24
- instantiations: sumNumbers(Object.values(classifierKey2info).map(info => info.instantiations))
20
+ instantiations: sumOfNumbers(Object.values(classifierKey2info).map(info => info.instantiations))
25
21
  }));
26
22
  const metaTypeOf = (entity) => {
27
23
  if (entity instanceof Annotation) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measurer.js","sourceRoot":"","sources":["../../../src/serialization/metrics/measurer.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ type LanguagePointer = {
6
6
  key: LionWebKey;
7
7
  version: string;
8
8
  } & OptionallyNamed;
9
- type ClassifierMetric = {
9
+ type ClassifierPointer = {
10
10
  language: LanguagePointer;
11
11
  key: LionWebKey;
12
12
  } & OptionallyNamed;
@@ -14,15 +14,15 @@ type ClassifierMetaTypes = "annotation" | "concept" | "interface";
14
14
  type ClassifierInstantiationMetric = {
15
15
  metaType?: ClassifierMetaTypes;
16
16
  instantiations: number;
17
- } & ClassifierMetric;
17
+ } & ClassifierPointer;
18
18
  type LanguageMetric = {
19
19
  instantiations: number;
20
20
  } & LanguagePointer;
21
21
  type Metrics = {
22
22
  languagesWithInstantiations: LanguageMetric[];
23
23
  instantiatedClassifiers: ClassifierInstantiationMetric[];
24
- uninstantiatedInstantiableClassifiers: ClassifierMetric[];
25
24
  languagesWithoutInstantiations: LanguagePointer[];
25
+ uninstantiatedInstantiableClassifiers: ClassifierPointer[];
26
26
  };
27
- export type { ClassifierInstantiationMetric, ClassifierMetaTypes, LanguagePointer, Metrics };
28
- //# sourceMappingURL=metric-types.d.ts.map
27
+ export type { ClassifierInstantiationMetric, ClassifierMetaTypes, ClassifierPointer, LanguageMetric, LanguagePointer, Metrics };
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/serialization/metrics/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,eAAe,GAAG;IACnB,GAAG,EAAE,UAAU,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAClB,GAAG,eAAe,CAAA;AAEJ,KAAK,iBAAiB,GAAG;IACpC,QAAQ,EAAE,eAAe,CAAA;IACzB,GAAG,EAAE,UAAU,CAAA;CAClB,GAAG,eAAe,CAAA;AAEnB,KAAK,mBAAmB,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAA;AAEjE,KAAK,6BAA6B,GAAG;IACjC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;CACzB,GAAG,iBAAiB,CAAA;AAErB,KAAK,cAAc,GAAG;IAClB,cAAc,EAAE,MAAM,CAAA;CACzB,GAAG,eAAe,CAAA;AAGnB,KAAK,OAAO,GAAG;IACX,2BAA2B,EAAE,cAAc,EAAE,CAAA;IAC7C,uBAAuB,EAAE,6BAA6B,EAAE,CAAA;IACxD,8BAA8B,EAAE,eAAe,EAAE,CAAA;IACjD,qCAAqC,EAAE,iBAAiB,EAAE,CAAA;CAC7D,CAAA;AAGD,YAAY,EACR,6BAA6B,EAC7B,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,OAAO,EACV,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/serialization/metrics/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionweb/utilities",
3
- "version": "0.9.0-beta.0",
3
+ "version": "0.9.0-beta.2",
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.0",
19
- "@lionweb/json": "0.9.0-beta.0",
20
- "@lionweb/textgen-utils": "0.9.0-beta.0",
21
- "@lionweb/ts-utils": "0.9.0-beta.0",
18
+ "@lionweb/core": "0.9.0-beta.2",
19
+ "@lionweb/json": "0.9.0-beta.2",
20
+ "@lionweb/textgen-utils": "0.9.0-beta.2",
21
+ "@lionweb/ts-utils": "0.9.0-beta.2",
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 { readFileAsJson } from "../utils/json.js"
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
- try {
20
- return readFileAsJson(path) as LionWebJsonChunk
21
- } catch (e) {
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,6 +1,7 @@
1
1
  export {withoutAnnotations} from "./annotation-remover.js"
2
- export {looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages} from "./chunk.js"
3
- export {measure} from "./measurer.js"
2
+ export {looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages, tryReadSerializationChunk} from "./chunk.js"
3
+ export {aggregateMetrics, measure, mergeMetrics, zeroMetrics} from "./metrics/index.js"
4
+ export type {ClassifierInstantiationMetric, ClassifierMetaTypes, ClassifierPointer, Metrics, LanguageMetric, LanguagePointer} from "./metrics/index.js"
4
5
  export {orderedSerializationChunk} from "./ordering.js"
5
6
  export {sortedSerializationChunk} from "./sorting.js"
6
7
  export {genericAsTreeText} from "./textualizer.js"
@@ -0,0 +1,94 @@
1
+ import { ClassifierPointer, LanguagePointer, Metrics } from "./types.js"
2
+
3
+ /**
4
+ * A “0” instance of the {@link Metrics metrics type},
5
+ * for use in combination with `Array.reduce`:
6
+ * ```reduce(mergeMetrics, zeroMetrics)```.
7
+ */
8
+ export const zeroMetrics: Metrics = {
9
+ languagesWithInstantiations: [],
10
+ instantiatedClassifiers: [],
11
+ languagesWithoutInstantiations: [],
12
+ uninstantiatedInstantiableClassifiers: []
13
+ }
14
+
15
+
16
+ const isFromSameLanguage = (that: LanguagePointer) =>
17
+ (other: LanguagePointer) =>
18
+ that.key === other.key && that.version === other.version
19
+
20
+ const isFromSameClassifier = (that: ClassifierPointer) =>
21
+ (other: ClassifierPointer) =>
22
+ isFromSameLanguage(that.language)(other.language) && that.key === other.key
23
+
24
+
25
+ /**
26
+ * @return a merging of the given `left` and `right` {@link Metrics metrics}.
27
+ */
28
+ export const mergeMetrics = (left: Metrics, right: Metrics): Metrics => {
29
+ const languagesWithInstantiations = [
30
+ ...(
31
+ left.languagesWithInstantiations.map((leftMetric) => {
32
+ const rightMetric = right.languagesWithInstantiations.find(isFromSameLanguage(leftMetric))
33
+ return {
34
+ key: leftMetric.key,
35
+ version: leftMetric.version,
36
+ name: leftMetric.name ?? rightMetric?.name,
37
+ instantiations: leftMetric.instantiations + (rightMetric?.instantiations ?? 0)
38
+ }
39
+ })
40
+ ),
41
+ ...(
42
+ right.languagesWithInstantiations.filter((rightMetric) =>
43
+ !left.languagesWithInstantiations.some(isFromSameLanguage(rightMetric))
44
+ )
45
+ )
46
+ ]
47
+
48
+ const instantiatedClassifiers = [
49
+ ...(
50
+ left.instantiatedClassifiers.map((leftMetric) => {
51
+ const rightMetric = right.instantiatedClassifiers.find(isFromSameClassifier(leftMetric))
52
+ return {
53
+ language: leftMetric.language,
54
+ key: leftMetric.key,
55
+ name: leftMetric.name ?? rightMetric?.name,
56
+ metaType: leftMetric.metaType,
57
+ instantiations: leftMetric.instantiations + (rightMetric?.instantiations ?? 0)
58
+ }
59
+ })
60
+ ),
61
+ ...(
62
+ right.instantiatedClassifiers.filter((rightMetric) =>
63
+ !left.instantiatedClassifiers.some(isFromSameClassifier(rightMetric))
64
+ )
65
+ )
66
+ ]
67
+
68
+ const languagesWithoutInstantiations = [...left.languagesWithoutInstantiations, ...right.languagesWithoutInstantiations]
69
+ .filter((languagePointer, index, all) =>
70
+ !languagesWithInstantiations.some(isFromSameLanguage(languagePointer)) // remove languages that have instantiations after all
71
+ && !all.slice(0, index).some(isFromSameLanguage(languagePointer)) // remove languages that already occurred
72
+ )
73
+
74
+ const uninstantiatedInstantiableClassifiers = [...left.uninstantiatedInstantiableClassifiers, ...right.uninstantiatedInstantiableClassifiers]
75
+ .filter((classifierPointer, index, all) =>
76
+ !instantiatedClassifiers.some(isFromSameClassifier(classifierPointer)) // remove languages that have instantiations after all
77
+ && !all.slice(0, index).some(isFromSameClassifier(classifierPointer)) // remove languages that already occurred
78
+ )
79
+
80
+ return {
81
+ languagesWithInstantiations,
82
+ instantiatedClassifiers,
83
+ languagesWithoutInstantiations,
84
+ uninstantiatedInstantiableClassifiers
85
+ }
86
+ }
87
+
88
+
89
+ /**
90
+ * @return the aggregation of all given {@link Metric `metrics`}.
91
+ */
92
+ export const aggregateMetrics = (metrics: Metrics[]): Metrics =>
93
+ metrics.reduce(mergeMetrics, zeroMetrics)
94
+
@@ -0,0 +1,10 @@
1
+ export {measure} from "./measurer.js"
2
+ export {aggregateMetrics, mergeMetrics, zeroMetrics} from "./functions.js"
3
+ export type {
4
+ ClassifierPointer,
5
+ ClassifierInstantiationMetric,
6
+ ClassifierMetaTypes,
7
+ LanguageMetric,
8
+ LanguagePointer,
9
+ Metrics
10
+ } from "./types.js"
@@ -1,7 +1,7 @@
1
1
  import { Annotation, Concept, instantiableClassifiersOf, Interface, Language, LanguageEntity, MemoisingSymbolTable } from "@lionweb/core"
2
2
  import { LionWebJsonChunk, LionWebJsonMetaPointer, LionWebJsonNode, LionWebJsonUsedLanguage } from "@lionweb/json"
3
- import { nested3Grouper, nested3Mapper, nestedFlatMap2, nestedFlatMap3 } from "@lionweb/ts-utils"
4
- import { ClassifierMetaTypes, Metrics } from "./metric-types.js"
3
+ import { nested3Grouper, nested3Mapper, nestedFlatMap2, nestedFlatMap3, sumOfNumbers } from "@lionweb/ts-utils"
4
+ import { ClassifierMetaTypes, Metrics } from "./types.js"
5
5
 
6
6
 
7
7
  type Info = {
@@ -10,13 +10,6 @@ type Info = {
10
10
  }
11
11
 
12
12
 
13
- /**
14
- * Sum the given array of numbers.
15
- */
16
- export const sumNumbers = (nums: number[]): number =>
17
- nums.reduce((acc, cur) => acc + cur, 0)
18
-
19
-
20
13
  /**
21
14
  * Computes {@link Metrics metrics} on the given {@link LionWebJsonChunk serialization chunk}.
22
15
  * Passing it {@link Language languages} make this language-aware:
@@ -44,7 +37,7 @@ export const measure = (serializationChunk: LionWebJsonChunk, languages: Languag
44
37
  key: languageKey,
45
38
  version,
46
39
  name: symbolTable.languageMatching(languageKey, version)?.name,
47
- instantiations: sumNumbers(Object.values(classifierKey2info).map(info => info.instantiations))
40
+ instantiations: sumOfNumbers(Object.values(classifierKey2info).map(info => info.instantiations))
48
41
  })
49
42
  )
50
43
 
@@ -9,7 +9,7 @@ type LanguagePointer = {
9
9
  version: string
10
10
  } & OptionallyNamed
11
11
 
12
- /* abstract */ type ClassifierMetric = {
12
+ /* abstract */ type ClassifierPointer = {
13
13
  language: LanguagePointer
14
14
  key: LionWebKey // key of classifier
15
15
  } & OptionallyNamed
@@ -19,7 +19,7 @@ type ClassifierMetaTypes = "annotation" | "concept" | "interface"
19
19
  type ClassifierInstantiationMetric = {
20
20
  metaType?: ClassifierMetaTypes
21
21
  instantiations: number
22
- } & ClassifierMetric
22
+ } & ClassifierPointer
23
23
 
24
24
  type LanguageMetric = {
25
25
  instantiations: number
@@ -27,16 +27,18 @@ type LanguageMetric = {
27
27
 
28
28
  // TODO order?
29
29
  type Metrics = {
30
- languagesWithInstantiations: LanguageMetric[]
30
+ languagesWithInstantiations: LanguageMetric[] // (note: is derivable from instantiatedClassifiers, in principle)
31
31
  instantiatedClassifiers: ClassifierInstantiationMetric[]
32
- uninstantiatedInstantiableClassifiers: ClassifierMetric[]
33
- languagesWithoutInstantiations: LanguagePointer[]
32
+ languagesWithoutInstantiations: LanguagePointer[] // (note: is derivable from uninstantiatedInstantiableClassifiers, in principle)
33
+ uninstantiatedInstantiableClassifiers: ClassifierPointer[]
34
34
  }
35
35
 
36
36
 
37
37
  export type {
38
38
  ClassifierInstantiationMetric,
39
39
  ClassifierMetaTypes,
40
+ ClassifierPointer,
41
+ LanguageMetric,
40
42
  LanguagePointer,
41
43
  Metrics
42
44
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"measurer.d.ts","sourceRoot":"","sources":["../../src/serialization/measurer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6D,QAAQ,EAAwC,MAAM,eAAe,CAAA;AACzI,OAAO,EAAE,gBAAgB,EAAoE,MAAM,eAAe,CAAA;AAElH,OAAO,EAAuB,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAShE;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,KAAG,MACD,CAAA;AAG3C;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,oBAAoB,gBAAgB,EAAE,WAAW,QAAQ,EAAE,KAAG,OAyFrF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"measurer.js","sourceRoot":"","sources":["../../src/serialization/measurer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metric-types.d.ts","sourceRoot":"","sources":["../../src/serialization/metric-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,KAAK,eAAe,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,eAAe,GAAG;IACnB,GAAG,EAAE,UAAU,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAClB,GAAG,eAAe,CAAA;AAEJ,KAAK,gBAAgB,GAAG;IACnC,QAAQ,EAAE,eAAe,CAAA;IACzB,GAAG,EAAE,UAAU,CAAA;CAClB,GAAG,eAAe,CAAA;AAEnB,KAAK,mBAAmB,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAA;AAEjE,KAAK,6BAA6B,GAAG;IACjC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;CACzB,GAAG,gBAAgB,CAAA;AAEpB,KAAK,cAAc,GAAG;IAClB,cAAc,EAAE,MAAM,CAAA;CACzB,GAAG,eAAe,CAAA;AAGnB,KAAK,OAAO,GAAG;IACX,2BAA2B,EAAE,cAAc,EAAE,CAAA;IAC7C,uBAAuB,EAAE,6BAA6B,EAAE,CAAA;IACxD,qCAAqC,EAAE,gBAAgB,EAAE,CAAA;IACzD,8BAA8B,EAAE,eAAe,EAAE,CAAA;CACpD,CAAA;AAGD,YAAY,EACR,6BAA6B,EAC7B,mBAAmB,EACnB,eAAe,EACf,OAAO,EACV,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=metric-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metric-types.js","sourceRoot":"","sources":["../../src/serialization/metric-types.ts"],"names":[],"mappings":""}