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

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 (32) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/serialization/index.d.ts +2 -1
  3. package/dist/serialization/index.d.ts.map +1 -1
  4. package/dist/serialization/index.js +1 -1
  5. package/dist/serialization/index.js.map +1 -1
  6. package/dist/serialization/metrics/functions.d.ts +16 -0
  7. package/dist/serialization/metrics/functions.d.ts.map +1 -0
  8. package/dist/serialization/metrics/functions.js +62 -0
  9. package/dist/serialization/metrics/functions.js.map +1 -0
  10. package/dist/serialization/metrics/index.d.ts +4 -0
  11. package/dist/serialization/metrics/index.d.ts.map +1 -0
  12. package/dist/serialization/metrics/index.js +3 -0
  13. package/dist/serialization/metrics/index.js.map +1 -0
  14. package/dist/serialization/{measurer.d.ts → metrics/measurer.d.ts} +1 -5
  15. package/dist/serialization/metrics/measurer.d.ts.map +1 -0
  16. package/dist/serialization/{measurer.js → metrics/measurer.js} +2 -6
  17. package/dist/serialization/metrics/measurer.js.map +1 -0
  18. package/dist/serialization/{metric-types.d.ts → metrics/types.d.ts} +5 -5
  19. package/dist/serialization/metrics/types.d.ts.map +1 -0
  20. package/dist/serialization/metrics/types.js +2 -0
  21. package/dist/serialization/metrics/types.js.map +1 -0
  22. package/package.json +5 -5
  23. package/src/serialization/index.ts +2 -1
  24. package/src/serialization/metrics/functions.ts +94 -0
  25. package/src/serialization/metrics/index.ts +10 -0
  26. package/src/serialization/{measurer.ts → metrics/measurer.ts} +3 -10
  27. package/src/serialization/{metric-types.ts → metrics/types.ts} +7 -5
  28. package/dist/serialization/measurer.d.ts.map +0 -1
  29. package/dist/serialization/measurer.js.map +0 -1
  30. package/dist/serialization/metric-types.d.ts.map +0 -1
  31. package/dist/serialization/metric-types.js +0 -2
  32. package/dist/serialization/metric-types.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
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
+
8
+
3
9
  ## 0.8.0
4
10
 
5
11
  * Propagate `reference` field of `LionWebJsonReferenceTarget` type now being `null`able.
@@ -1,6 +1,7 @@
1
1
  export { withoutAnnotations } from "./annotation-remover.js";
2
2
  export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages } from "./chunk.js";
3
- export { measure } from "./measurer.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,EAAC,MAAM,YAAY,CAAA;AAC1H,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
2
  export { looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages } from "./chunk.js";
3
- export { measure } from "./measurer.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,EAAC,MAAM,YAAY,CAAA;AAC1H,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":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAA4B,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEzI,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAU/G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,kBAAoC,EAAE,SAAqB,EAAW,EAAE;IAC5F,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAEvD,uHAAuH;IACvH,MAAM,sCAAsC,GAAG,aAAa,CAA0B,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5F,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;QAC/B,cAAc,EAAE,KAAK,CAAC,MAAM;KAC/B,CAAC,CAAC,CACC,cAAc,CACV,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EACvC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EACtC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CACrC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAC9B,CAAA;IAED,MAAM,2BAA2B,GAAG,cAAc,CAC9C,sCAAsC,EACtC,CAAC,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,EAAE,WAAW;QAChB,OAAO;QACP,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI;QAC9D,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACnG,CAAC,CACL,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,MAAuB,EAAmC,EAAE;QAC5E,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAA;QACvB,CAAC;QACD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAA;QACpB,CAAC;QACD,IAAI,MAAM,YAAY,SAAS,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAA;QACtB,CAAC;QACD,OAAO,SAAS,CAAA;IACpB,CAAC,CAAA;IAED,uDAAuD;IACvD,MAAM,uBAAuB,GAAG,cAAc,CAAC,sCAAsC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE;QACjI,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9D,OAAO;YACH,QAAQ,EAAE;gBACN,GAAG,EAAE,WAAW;gBAChB,OAAO;gBACP,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,IAAI;aACjE;YACD,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,UAAU,EAAE,IAAI;YACtB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;YAChC,cAAc,EAAE,IAAI,CAAC,cAAc;SACtC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,MAAM,8BAA8B,GAAG,CAAC,QAAiC,EAAW,EAAE,CAClF,QAAQ,CAAC,GAAG,IAAI,sCAAsC,IAAI,QAAQ,CAAC,OAAO,IAAI,sCAAsC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAEtI,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,SAAS;SAC9D,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;SAC7D,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,QAAQ;QACX,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI;KAC3E,CAAC,CAAC,CAAA;IAEP,MAAM,gBAAgB,GAAG,CAAC,WAAmC,EAAW,EAAE,CACtE,WAAW,CAAC,QAAQ,IAAI,sCAAsC;QAC9D,WAAW,CAAC,OAAO,IAAI,sCAAsC,CAAC,WAAW,CAAC,QAAQ,CAAC;QACnF,WAAW,CAAC,GAAG,IAAI,sCAAsC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAExG,MAAM,qCAAqC,GAAG,SAAS;SAClD,OAAO,CAAC,yBAAyB,CAAC;SAClC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC3C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;SACrD,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjB,QAAQ,EAAE;YACN,GAAG,EAAE,WAAW,CAAC,QAAQ;YACzB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI;SACtF;QACD,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI;KACtD,CAAC,CAAC,CAAA;IAEP,OAAO;QACH,2BAA2B;QAC3B,uBAAuB;QACvB,8BAA8B;QAC9B,qCAAqC;KACxC,CAAA;AACL,CAAC,CAAA"}
@@ -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.1",
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.1",
19
+ "@lionweb/json": "0.9.0-beta.1",
20
+ "@lionweb/textgen-utils": "0.9.0-beta.1",
21
+ "@lionweb/ts-utils": "0.9.0-beta.1",
22
22
  "littoral-templates": "0.5.1",
23
23
  "nanoid": "5.1.6"
24
24
  },
@@ -1,6 +1,7 @@
1
1
  export {withoutAnnotations} from "./annotation-remover.js"
2
2
  export {looksLikeSerializedLanguages, readSerializationChunk, tryReadAllAsLanguages, tryReadAsLanguages} from "./chunk.js"
3
- export {measure} from "./measurer.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":""}