@lionweb/core 0.6.13-beta.5 → 0.6.13-beta.7

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 (103) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/dist/deserializer.d.ts +5 -5
  3. package/dist/deserializer.d.ts.map +1 -1
  4. package/dist/deserializer.js +32 -29
  5. package/dist/deserializer.js.map +1 -1
  6. package/dist/dynamic-facade.d.ts +1 -1
  7. package/dist/dynamic-facade.d.ts.map +1 -1
  8. package/dist/dynamic-facade.js +1 -1
  9. package/dist/dynamic-facade.js.map +1 -1
  10. package/dist/facade.d.ts +5 -6
  11. package/dist/facade.d.ts.map +1 -1
  12. package/dist/facade.js +2 -2
  13. package/dist/facade.js.map +1 -1
  14. package/dist/functions.d.ts +3 -4
  15. package/dist/functions.d.ts.map +1 -1
  16. package/dist/functions.js +1 -1
  17. package/dist/functions.js.map +1 -1
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/m1/reference-utils.d.ts +1 -1
  23. package/dist/m1/reference-utils.d.ts.map +1 -1
  24. package/dist/m1/reference-utils.js.map +1 -1
  25. package/dist/m3/builtins.d.ts +1 -1
  26. package/dist/m3/builtins.d.ts.map +1 -1
  27. package/dist/m3/builtins.js +19 -16
  28. package/dist/m3/builtins.js.map +1 -1
  29. package/dist/m3/constraints.d.ts.map +1 -1
  30. package/dist/m3/constraints.js +4 -9
  31. package/dist/m3/constraints.js.map +1 -1
  32. package/dist/m3/deserializer.d.ts +3 -3
  33. package/dist/m3/deserializer.d.ts.map +1 -1
  34. package/dist/m3/deserializer.js.map +1 -1
  35. package/dist/m3/facade.d.ts.map +1 -1
  36. package/dist/m3/facade.js +7 -7
  37. package/dist/m3/facade.js.map +1 -1
  38. package/dist/m3/factory.d.ts +2 -2
  39. package/dist/m3/factory.d.ts.map +1 -1
  40. package/dist/m3/factory.js.map +1 -1
  41. package/dist/m3/functions.d.ts +5 -6
  42. package/dist/m3/functions.d.ts.map +1 -1
  43. package/dist/m3/functions.js +5 -3
  44. package/dist/m3/functions.js.map +1 -1
  45. package/dist/m3/lioncore.d.ts.map +1 -1
  46. package/dist/m3/lioncore.js +59 -22
  47. package/dist/m3/lioncore.js.map +1 -1
  48. package/dist/m3/reference-checker.d.ts.map +1 -1
  49. package/dist/m3/reference-checker.js +2 -2
  50. package/dist/m3/reference-checker.js.map +1 -1
  51. package/dist/m3/serializer.d.ts +2 -2
  52. package/dist/m3/serializer.d.ts.map +1 -1
  53. package/dist/m3/serializer.js.map +1 -1
  54. package/dist/m3/types.d.ts +14 -14
  55. package/dist/m3/types.d.ts.map +1 -1
  56. package/dist/m3/types.js.map +1 -1
  57. package/dist/references.d.ts +3 -3
  58. package/dist/references.d.ts.map +1 -1
  59. package/dist/serialization.d.ts +52 -0
  60. package/dist/serialization.d.ts.map +1 -0
  61. package/dist/serialization.js +7 -0
  62. package/dist/serialization.js.map +1 -0
  63. package/dist/serializer.d.ts +6 -6
  64. package/dist/serializer.d.ts.map +1 -1
  65. package/dist/serializer.js +24 -18
  66. package/dist/serializer.js.map +1 -1
  67. package/dist/symbol-table.d.ts +15 -15
  68. package/dist/symbol-table.d.ts.map +1 -1
  69. package/dist/symbol-table.js +1 -1
  70. package/dist/symbol-table.js.map +1 -1
  71. package/dist/types.d.ts +10 -2
  72. package/dist/types.d.ts.map +1 -1
  73. package/dist/types.js +6 -1
  74. package/dist/types.js.map +1 -1
  75. package/dist/utils/array-helpers.d.ts +14 -0
  76. package/dist/utils/array-helpers.d.ts.map +1 -0
  77. package/dist/utils/array-helpers.js +15 -0
  78. package/dist/utils/array-helpers.js.map +1 -0
  79. package/dist/utils/cycles.d.ts +8 -0
  80. package/dist/utils/cycles.d.ts.map +1 -0
  81. package/dist/utils/cycles.js +26 -0
  82. package/dist/utils/cycles.js.map +1 -0
  83. package/dist/utils/index.d.ts +7 -0
  84. package/dist/utils/index.d.ts.map +1 -0
  85. package/dist/utils/index.js +7 -0
  86. package/dist/utils/index.js.map +1 -0
  87. package/dist/utils/map-helpers.d.ts +26 -0
  88. package/dist/utils/map-helpers.d.ts.map +1 -0
  89. package/dist/utils/map-helpers.js +41 -0
  90. package/dist/utils/map-helpers.js.map +1 -0
  91. package/dist/utils/recursion.d.ts +13 -0
  92. package/dist/utils/recursion.d.ts.map +1 -0
  93. package/dist/utils/recursion.js +21 -0
  94. package/dist/utils/recursion.js.map +1 -0
  95. package/dist/utils/sorting.d.ts +7 -0
  96. package/dist/utils/sorting.d.ts.map +1 -0
  97. package/dist/utils/sorting.js +7 -0
  98. package/dist/utils/sorting.js.map +1 -0
  99. package/dist/utils/string-mapping.d.ts +6 -0
  100. package/dist/utils/string-mapping.d.ts.map +1 -0
  101. package/dist/utils/string-mapping.js +10 -0
  102. package/dist/utils/string-mapping.js.map +1 -0
  103. package/package.json +1 -5
@@ -1 +1 @@
1
- {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAGzC;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAO,CAAA;AAE9B;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,UAAU,GAAG,CAAC,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,KAAK,iDACyB,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;AAG7B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,YAAY,CAAA;AAG7B;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAO,CAAA;AAE9B;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,UAAU,GAAG,CAAC,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,KAAK,iDACyB,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;AAG7B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,UAAU,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { Id } from "./types.js";
2
+ export type MetaPointer = {
3
+ language: string;
4
+ version: string;
5
+ key: string;
6
+ };
7
+ export type SerializedProperty = {
8
+ property: MetaPointer;
9
+ value: (string | null);
10
+ };
11
+ export type SerializedContainment = {
12
+ containment: MetaPointer;
13
+ children: Id[];
14
+ };
15
+ export type SerializedReferenceTarget = {
16
+ reference: Id;
17
+ resolveInfo: string | null;
18
+ };
19
+ export type SerializedReference = {
20
+ reference: MetaPointer;
21
+ targets: SerializedReferenceTarget[];
22
+ };
23
+ /**
24
+ * Type definition for an AST node serialized to JSON.
25
+ */
26
+ export type SerializedNode = {
27
+ id: Id;
28
+ classifier: MetaPointer;
29
+ properties: SerializedProperty[];
30
+ containments: SerializedContainment[];
31
+ references: SerializedReference[];
32
+ annotations: Id[];
33
+ parent: (Id | null);
34
+ };
35
+ export type SerializedLanguageReference = {
36
+ key: string;
37
+ version: string;
38
+ };
39
+ /**
40
+ * The <em>current</em> version of the serialization format -
41
+ * should fundamentally equal `currentReleaseVersion`.
42
+ */
43
+ export declare const currentSerializationFormatVersion = "2023.1";
44
+ /**
45
+ * Type definition for a serialization of a whole model to JSON.
46
+ */
47
+ export type SerializationChunk = {
48
+ serializationFormatVersion: string;
49
+ languages: SerializedLanguageReference[];
50
+ nodes: SerializedNode[];
51
+ };
52
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,YAAY,CAAA;AAG7B,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,EAAE,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,SAAS,EAAE,EAAE,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,SAAS,EAAE,WAAW,CAAA;IACtB,OAAO,EAAE,yBAAyB,EAAE,CAAA;CACvC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,EAAE,CAAA;IACN,UAAU,EAAE,WAAW,CAAA;IACvB,UAAU,EAAE,kBAAkB,EAAE,CAAA;IAChC,YAAY,EAAE,qBAAqB,EAAE,CAAA;IACrC,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,WAAW,EAAE,EAAE,EAAE,CAAA;IACjB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;CACtB,CAAA;AAGD,MAAM,MAAM,2BAA2B,GAAG;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,WAAwB,CAAA;AAGtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,0BAA0B,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE,2BAA2B,EAAE,CAAA;IACxC,KAAK,EAAE,cAAc,EAAE,CAAA;CAC1B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { currentReleaseVersion } from "./version.js";
2
+ /**
3
+ * The <em>current</em> version of the serialization format -
4
+ * should fundamentally equal `currentReleaseVersion`.
5
+ */
6
+ export const currentSerializationFormatVersion = currentReleaseVersion;
7
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAA;AAgDlD;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAAA"}
@@ -1,7 +1,7 @@
1
- import { LionWebJsonChunk, LionWebJsonMetaPointer } from "@lionweb/json";
2
1
  import { ExtractionFacade } from "./facade.js";
3
- import { Feature, Property } from "./m3/types.js";
2
+ import { MetaPointer, SerializationChunk } from "./serialization.js";
4
3
  import { Node } from "./types.js";
4
+ import { Feature, Property } from "./m3/types.js";
5
5
  export interface PrimitiveTypeSerializer {
6
6
  serializeValue(value: unknown, property: Property): string | undefined;
7
7
  }
@@ -18,11 +18,11 @@ export type SerializationOptions = Partial<{
18
18
  primitiveTypeSerializer: PrimitiveTypeSerializer;
19
19
  }>;
20
20
  /**
21
- * @return the {@link LionWebJsonMetaPointer} for the given {@link Feature}.
21
+ * @return the {@link MetaPointer} for the given {@link Feature}.
22
22
  */
23
- export declare const metaPointerFor: (feature: Feature) => LionWebJsonMetaPointer;
23
+ export declare const metaPointerFor: (feature: Feature) => MetaPointer;
24
24
  /**
25
- * @return a {@link LionWebJsonChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
25
+ * @return a {@link SerializationChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
26
26
  */
27
- export declare const serializeNodes: <NT extends Node>(nodes: NT[], extractionFacade: ExtractionFacade<NT>, primitiveTypeSerializerOrOptions?: PrimitiveTypeSerializer | SerializationOptions) => LionWebJsonChunk;
27
+ export declare const serializeNodes: <NT extends Node>(nodes: NT[], extractionFacade: ExtractionFacade<NT>, primitiveTypeSerializerOrOptions?: PrimitiveTypeSerializer | SerializationOptions) => SerializationChunk;
28
28
  //# sourceMappingURL=serializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,gBAAgB,EAAE,sBAAsB,EAAmB,MAAM,eAAe,CAAA;AAEvI,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9C,OAAO,EAA4B,OAAO,EAA2B,QAAQ,EAAgC,MAAM,eAAe,CAAA;AAClI,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGjC,MAAM,WAAW,uBAAuB;IACpC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;CACzE;AAKD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACvC;;;;OAIG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B,uBAAuB,EAAE,uBAAuB,CAAA;CACnD,CAAC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,sBAOjD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4GAGY,uBAAuB,GAAG,oBAAoB,KAClF,gBAoHF,CAAA"}
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAoC,WAAW,EAAE,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AAErH,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAG/B,OAAO,EAGH,OAAO,EAGP,QAAQ,EAGX,MAAM,eAAe,CAAA;AAItB,MAAM,WAAW,uBAAuB;IACpC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;CACzE;AASD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACvC;;;;OAIG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B,uBAAuB,EAAE,uBAAuB,CAAA;CACnD,CAAC,CAAA;AAGF;;GAEG;AACH,eAAO,MAAM,cAAc,YAAa,OAAO,KAAG,WAOjD,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,cAAc,4GAGY,uBAAuB,GAAG,oBAAoB,KAClF,kBAwHF,CAAA"}
@@ -1,12 +1,15 @@
1
- import { currentSerializationFormatVersion } from "@lionweb/json";
2
- import { asArray } from "@lionweb/ts-utils";
1
+ import { currentSerializationFormatVersion } from "./serialization.js";
3
2
  import { asIds } from "./functions.js";
4
3
  import { DefaultPrimitiveTypeSerializer } from "./m3/builtins.js";
5
4
  import { allFeaturesOf } from "./m3/functions.js";
6
5
  import { Containment, Enumeration, PrimitiveType, Property, Reference, simpleNameDeducer } from "./m3/types.js";
7
- const isPrimitiveTypeSerializer = (value) => typeof value === "object" && value !== null && "serializeValue" in value && typeof value.serializeValue === "function";
6
+ import { asArray } from "./utils/array-helpers.js";
7
+ const isPrimitiveTypeSerializer = (value) => typeof value === "object"
8
+ && value !== null
9
+ && "serializeValue" in value
10
+ && typeof value.serializeValue === "function";
8
11
  /**
9
- * @return the {@link LionWebJsonMetaPointer} for the given {@link Feature}.
12
+ * @return the {@link MetaPointer} for the given {@link Feature}.
10
13
  */
11
14
  export const metaPointerFor = (feature) => {
12
15
  const { language } = feature.classifier;
@@ -17,7 +20,7 @@ export const metaPointerFor = (feature) => {
17
20
  };
18
21
  };
19
22
  /**
20
- * @return a {@link LionWebJsonChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
23
+ * @return a {@link SerializationChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
21
24
  */
22
25
  export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializerOrOptions) => {
23
26
  const primitiveTypeSerializer = (isPrimitiveTypeSerializer(primitiveTypeSerializerOrOptions)
@@ -30,7 +33,7 @@ export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializerO
30
33
  const ids = {}; // maintain a map to keep track of IDs of nodes that have been serialized
31
34
  const languagesUsed = [];
32
35
  const registerLanguageUsed = (language) => {
33
- if (!languagesUsed.some(languageUsed => language.equals(languageUsed))) {
36
+ if (!languagesUsed.some((languageUsed) => language.equals(languageUsed))) {
34
37
  languagesUsed.push(language);
35
38
  }
36
39
  };
@@ -52,7 +55,7 @@ export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializerO
52
55
  };
53
56
  serializedNodes.push(serializedNode);
54
57
  ids[node.id] = true;
55
- allFeaturesOf(classifier).forEach(feature => {
58
+ allFeaturesOf(classifier).forEach((feature) => {
56
59
  const value = extractionFacade.getFeatureValue(node, feature);
57
60
  const featureLanguage = feature.classifier.language;
58
61
  registerLanguageUsed(featureLanguage);
@@ -86,10 +89,10 @@ export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializerO
86
89
  serializedNode.containments.push({
87
90
  containment: featureMetaPointer,
88
91
  children: asIds(children)
89
- .filter(childId => childId !== null)
90
- .map(childId => childId)
92
+ .filter((childId) => childId !== null)
93
+ .map((childId) => childId)
91
94
  });
92
- children.forEach(childOrNull => {
95
+ children.forEach((childOrNull) => {
93
96
  if (childOrNull !== null) {
94
97
  visit(childOrNull, node);
95
98
  }
@@ -105,10 +108,12 @@ export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializerO
105
108
  serializedNode.references.push({
106
109
  reference: featureMetaPointer,
107
110
  targets: targets
108
- .filter(tOrNull => tOrNull !== null) // (skip "non-connected" targets)
109
- .map(t => t)
110
- .map(t => ({
111
- resolveInfo: (extractionFacade.resolveInfoFor ? extractionFacade.resolveInfoFor(t) : simpleNameDeducer(t)) ?? null,
111
+ .filter((tOrNull) => tOrNull !== null) // (skip "non-connected" targets)
112
+ .map((t) => t)
113
+ .map((t) => ({
114
+ resolveInfo: (extractionFacade.resolveInfoFor
115
+ ? extractionFacade.resolveInfoFor(t)
116
+ : simpleNameDeducer(t)) ?? null,
112
117
  reference: t.id
113
118
  }))
114
119
  });
@@ -116,14 +121,15 @@ export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializerO
116
121
  }
117
122
  });
118
123
  const annotations = asArray(node.annotations); // assumes that annotations also all are of type NT (which is not unreasonable)
119
- serializedNode.annotations = annotations.map(annotation => annotation.id);
120
- annotations.forEach(annotation => visit(annotation, node));
124
+ serializedNode.annotations = annotations.map((annotation) => annotation.id);
125
+ annotations.forEach((annotation) => visit(annotation, node));
121
126
  serializedNode.parent = parent?.id ?? null; // (undefined -> null)
122
127
  };
123
- nodes.forEach(node => visit(node, undefined));
128
+ nodes.forEach((node) => visit(node, undefined));
124
129
  return {
125
130
  serializationFormatVersion: currentSerializationFormatVersion,
126
- languages: languagesUsed.map(({ key, version }) => ({ key, version })),
131
+ languages: languagesUsed
132
+ .map(({ key, version }) => ({ key, version })),
127
133
  nodes: serializedNodes
128
134
  };
129
135
  };
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iCAAiC,EAAkD,MAAM,oBAAoB,CAAA;AACrH,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAC,8BAA8B,EAAC,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EACH,WAAW,EACX,WAAW,EAGX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,iBAAiB,EACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAOhD,MAAM,yBAAyB,GAAG,CAAC,KAAc,EAAoC,EAAE,CAChF,OAAO,KAAK,KAAK,QAAQ;OACzB,KAAK,KAAK,IAAI;OACd,gBAAgB,IAAI,KAAK;OACzB,OAAO,KAAK,CAAC,cAAc,KAAK,UAAU,CAAA;AAkBjD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAe,EAAE;IAC5D,MAAM,EAAC,QAAQ,EAAC,GAAG,OAAO,CAAC,UAAU,CAAA;IACrC,OAAO;QACH,QAAQ,EAAE,QAAQ,CAAC,GAAG;QACtB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,GAAG,EAAE,OAAO,CAAC,GAAG;KACnB,CAAA;AACL,CAAC,CAAA;AAGD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,KAAW,EACX,gBAAsC,EACtC,gCAAiF,EAChD,EAAE;IACnC,MAAM,uBAAuB,GAAG,CAC5B,yBAAyB,CAAC,gCAAgC,CAAC;QACvD,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,gCAAgC,EAAE,uBAAuB,CAClE,IAAI,IAAI,8BAA8B,EAAE,CAAA;IACzC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,gCAAgC,CAAC;QACtF,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,gCAAgC,EAAE,sBAAsB,IAAI,IAAI,CAAC,CAAA;IAExE,MAAM,eAAe,GAAqB,EAAE,CAAA,CAAE,4CAA4C;IAC1F,MAAM,GAAG,GAA8B,EAAE,CAAA,CAAG,yEAAyE;IACrH,MAAM,aAAa,GAAe,EAAE,CAAA;IACpC,MAAM,oBAAoB,GAAG,CAAC,QAAkB,EAAE,EAAE;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACvE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC;IACL,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,CAAC,IAAQ,EAAE,MAAW,EAAE,EAAE;QACpC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACf,OAAM;QACV,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACpC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAC9B,MAAM,cAAc,GAAmB;YACnC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,IAAI;SACf,CAAA;QACD,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;QACnB,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAC7D,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAA;YACnD,oBAAoB,CAAC,eAAe,CAAC,CAAA;YACrC,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YAClD,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;gBAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACjD,0GAA0G;oBAC1G,OAAM;gBACV,CAAC;gBACD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;oBACvB,2CAA2C;oBAC3C,IAAI,OAAO,CAAC,IAAI,YAAY,aAAa,EAAE,CAAC;wBACxC,OAAO,uBAAuB,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;oBACjE,CAAC;oBACD,IAAI,OAAO,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;wBACtC,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAA;oBAC5E,CAAC;oBACD,OAAO,SAAS,CAAA;gBACpB,CAAC,CAAC,EAAE,CAAA;gBACJ,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC3B,QAAQ,EAAE,kBAAkB;oBAC5B,KAAK,EAAG,YAAuB,IAAI,IAAI,CAAC,sBAAsB;iBACjE,CAAC,CAAA;gBACF,OAAM;YACV,CAAC;YACD,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAkB,CAAA;gBAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACnD,OAAM;gBACV,CAAC;gBACD,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC7B,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;yBACpB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;yBACrC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAiB,CAAC;iBAC3C,CAAC,CAAA;gBACF,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;oBAC7B,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;wBACvB,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC,CAAC,CAAA;gBACF,OAAM;YACV,CAAC;YACD,IAAI,OAAO,YAAY,SAAS,EAAE,CAAC;gBAC/B,qHAAqH;gBACrH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAkB,CAAA;gBAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAClD,OAAM;gBACV,CAAC;gBACD,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC3B,SAAS,EAAE,kBAAkB;oBAC7B,OAAO,EAAE,OAAO;yBACX,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAE,iCAAiC;yBACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAO,CAAC;yBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACT,WAAW,EAAE,CAAC,gBAAgB,CAAC,cAAc;4BACzC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;4BACpC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;wBACnC,SAAS,EAAE,CAAC,CAAC,EAAE;qBAClB,CAAC,CACL;iBACJ,CAAC,CAAA;gBACF,OAAM;YACV,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAS,CAAA,CAAG,+EAA+E;QACvI,cAAc,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAC3E,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;QAE5D,cAAc,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,IAAI,CAAA,CAAE,sBAAsB;IACtE,CAAC,CAAA;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IAE/C,OAAO;QACH,0BAA0B,EAAE,iCAAiC;QAC7D,SAAS,EAAE,aAAa;aACnB,GAAG,CAAC,CAAC,EAAC,GAAG,EAAE,OAAO,EAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,KAAK,EAAE,eAAe;KACzB,CAAA;AACL,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
- import { LionWebJsonMetaPointer, LionWebKey } from "@lionweb/json";
1
+ import { MetaPointer } from "./serialization.js";
2
2
  import { Feature, Language, LanguageEntity } from "./m3/types.js";
3
3
  /**
4
- * Interface for objects that can look up within languages, based on given {@link LionWebJsonMetaPointer meta pointers}.
4
+ * Interface for objects that can look up within languages, based on given {@link MetaPointer meta pointers}.
5
5
  * This is meant to be able to properly encapsulate performance optimizations, also outside of the context
6
6
  * of deserialization.
7
7
  */
@@ -9,20 +9,20 @@ interface SymbolTable {
9
9
  /**
10
10
  * Looks up the {@link Language}, as pointed to by the given language key and version.
11
11
  */
12
- languageMatching(key: LionWebKey, version: string): Language | undefined;
12
+ languageMatching(key: string, version: string): Language | undefined;
13
13
  /**
14
- * Looks up the {@link LanguageEntity}, as pointed to by the given {@link LionWebJsonMetaPointer},
14
+ * Looks up the {@link LanguageEntity}, as pointed to by the given {@link MetaPointer},
15
15
  * or {@code undefined} if it couldn't be found.
16
16
  */
17
- entityMatching(entityMetaPointer: LionWebJsonMetaPointer): LanguageEntity | undefined;
17
+ entityMatching(entityMetaPointer: MetaPointer): LanguageEntity | undefined;
18
18
  /**
19
- * Looks up the {@link Feature}, as pointed to by the {@link LionWebJsonMetaPointer} given second,
20
- * as a feature of the {@link Classifier}, as pointed to by the {@link LionWebJsonMetaPointer} given first,
19
+ * Looks up the {@link Feature}, as pointed to by the {@link MetaPointer} given second,
20
+ * as a feature of the {@link Classifier}, as pointed to by the {@link MetaPointer} given first,
21
21
  * or {@code undefined} it it couldn't be found.
22
- * <em>Note</em> that the {@code language} and {@code version} values of both {@link LionWebJsonMetaPointer}-typed arguments should coincide,
22
+ * <em>Note</em> that the {@code language} and {@code version} values of both {@link MetaPointer}-typed arguments should coincide,
23
23
  * although this is typically not checked!
24
24
  */
25
- featureMatching(entityMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined;
25
+ featureMatching(entityMetaPointer: MetaPointer, featureMetaPointer: MetaPointer): Feature | undefined;
26
26
  }
27
27
  /**
28
28
  * Naive, non-performant implementation of {@link SymbolTable}.
@@ -30,19 +30,19 @@ interface SymbolTable {
30
30
  declare class NaiveSymbolTable implements SymbolTable {
31
31
  private readonly languages;
32
32
  constructor(languages: Language[]);
33
- languageMatching(key: LionWebKey, version: string): Language | undefined;
34
- entityMatching(entityMetaPointer: LionWebJsonMetaPointer): LanguageEntity | undefined;
35
- featureMatching(classifierMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined;
33
+ languageMatching(key: string, version: string): Language | undefined;
34
+ entityMatching(entityMetaPointer: MetaPointer): LanguageEntity | undefined;
35
+ featureMatching(classifierMetaPointer: MetaPointer, featureMetaPointer: MetaPointer): Feature | undefined;
36
36
  }
37
37
  declare class MemoisingSymbolTable implements SymbolTable {
38
38
  private readonly languages;
39
39
  constructor(languages: Language[]);
40
40
  private readonly languageKey2version2language;
41
- languageMatching(languageKey: LionWebKey, version: string): Language | undefined;
41
+ languageMatching(languageKey: string, version: string): Language | undefined;
42
42
  private readonly languageKey2version2entityKey2entityInfo;
43
43
  private entityInfoMatching;
44
- entityMatching(entityMetaPointer: LionWebJsonMetaPointer): LanguageEntity | undefined;
45
- featureMatching(classifierMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined;
44
+ entityMatching(entityMetaPointer: MetaPointer): LanguageEntity | undefined;
45
+ featureMatching(classifierMetaPointer: MetaPointer, featureMetaPointer: MetaPointer): Feature | undefined;
46
46
  }
47
47
  export type { SymbolTable };
48
48
  export { MemoisingSymbolTable, NaiveSymbolTable };
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../src/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EAAc,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG7E;;;;GAIG;AACH,UAAU,WAAW;IAEjB;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IAExE;;;OAGG;IACH,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,cAAc,GAAG,SAAS,CAAA;IAErF;;;;;;OAMG;IACH,eAAe,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAA;CAE9H;AAGD;;GAEG;AACH,cAAM,gBAAiB,YAAW,WAAW;IAEzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAOxE,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,cAAc,GAAG,SAAS;IAMrF,eAAe,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS;CASlI;AAmBD,cAAM,oBAAqB,YAAW,WAAW;IAE7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAqE;IAElH,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAYhF,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAkH;IAE3K,OAAO,CAAC,kBAAkB;IAiB1B,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,cAAc,GAAG,SAAS;IAIrF,eAAe,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS;CAYlI;AAGD,YAAY,EACR,WAAW,EACd,CAAA;AAED,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EACnB,CAAA"}
1
+ {"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../src/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAa,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,eAAe,CAAA;AAI3E;;;;GAIG;AACH,UAAU,WAAW;IAEjB;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IAEpE;;;OAGG;IACH,cAAc,CAAC,iBAAiB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAA;IAE1E;;;;;;OAMG;IACH,eAAe,CAAC,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;CAExG;AAGD;;GAEG;AACH,cAAM,gBAAiB,YAAW,WAAW;IAEzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAOpE,cAAc,CAAC,iBAAiB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS;IAM1E,eAAe,CAAC,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;CAS5G;AAmBD,cAAM,oBAAqB,YAAW,WAAW;IAE7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAiE;IAE9G,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAY5E,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAA0G;IAEnK,OAAO,CAAC,kBAAkB;IAiB1B,cAAc,CAAC,iBAAiB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS;IAI1E,eAAe,CAAC,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;CAY5G;AAGD,YAAY,EACR,WAAW,EACd,CAAA;AAED,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EACnB,CAAA"}
@@ -1,5 +1,5 @@
1
- import { allFeaturesOf } from "./m3/functions.js";
2
1
  import { Classifier } from "./m3/types.js";
2
+ import { allFeaturesOf } from "./m3/functions.js";
3
3
  /**
4
4
  * Naive, non-performant implementation of {@link SymbolTable}.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-table.js","sourceRoot":"","sources":["../src/symbol-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symbol-table.js","sourceRoot":"","sources":["../src/symbol-table.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,17 @@
1
- import { LionWebId } from "@lionweb/json";
1
+ /**
2
+ * Type definition for LionWeb-compliant IDs of AST nodes.
3
+ */
4
+ export type Id = string;
5
+ /**
6
+ * @return whether the given string is a valid identifier according to the LionWeb specification – see [here](https://github.com/LionWeb-io/specification/blob/main/2023.1/metametamodel/metametamodel.adoc#identifiers) for the relevant part.
7
+ * This is essentially whether the given string is a valid, non-empty [Base64url](https://en.wikipedia.org/wiki/Base64#Variants_summary_table) string.
8
+ */
9
+ export declare const isValidIdentifier: (str: string) => boolean;
2
10
  /**
3
11
  * Type definition for a LionWeb-compliant AST node.
4
12
  */
5
13
  export type Node = {
6
- id: LionWebId;
14
+ id: Id;
7
15
  parent?: Node;
8
16
  annotations: Node[];
9
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IACf,EAAE,EAAE,SAAS,CAAA;IACb,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,WAAW,EAAE,IAAI,EAAE,CAAA;CACtB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,MAAM,CAAA;AAKvB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAS,MAAM,KAAG,OACpB,CAAA;AAG5B;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IACf,EAAE,EAAE,EAAE,CAAA;IACN,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,WAAW,EAAE,IAAI,EAAE,CAAA;CACtB,CAAA"}
package/dist/types.js CHANGED
@@ -1,2 +1,7 @@
1
- export {};
1
+ const base64urlRegex = /^[A-Za-z0-9_-]+$/;
2
+ /**
3
+ * @return whether the given string is a valid identifier according to the LionWeb specification – see [here](https://github.com/LionWeb-io/specification/blob/main/2023.1/metametamodel/metametamodel.adoc#identifiers) for the relevant part.
4
+ * This is essentially whether the given string is a valid, non-empty [Base64url](https://en.wikipedia.org/wiki/Base64#Variants_summary_table) string.
5
+ */
6
+ export const isValidIdentifier = (str) => base64urlRegex.test(str);
2
7
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAW,EAAE,CACtD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Feature's values are often persisted as either `undefined`, a single object, or an array of objects,
3
+ * regardless of the actual cardinality of that feature.
4
+ * This is e.g. the case when parsing an Ecore XML metamodel file.
5
+ * This type definition captures that phenomenon.
6
+ */
7
+ export type AnyNumberOf<T> = undefined | T | T[];
8
+ /**
9
+ * Turns a {@link AnyNumberOf feature's value} into an array of objects
10
+ * (possibly empty), regardless of the feature's cardinality and how its
11
+ * value happened to be parsed.
12
+ */
13
+ export declare const asArray: <T>(thing: AnyNumberOf<T>) => T[];
14
+ //# sourceMappingURL=array-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/array-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,OAAO,mCAQnB,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Turns a {@link AnyNumberOf feature's value} into an array of objects
3
+ * (possibly empty), regardless of the feature's cardinality and how its
4
+ * value happened to be parsed.
5
+ */
6
+ export const asArray = (thing) => {
7
+ if (thing === undefined) {
8
+ return [];
9
+ }
10
+ if (Array.isArray(thing)) {
11
+ return thing;
12
+ }
13
+ return [thing];
14
+ };
15
+ //# sourceMappingURL=array-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-helpers.js","sourceRoot":"","sources":["../../src/utils/array-helpers.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAqB,EAAO,EAAE;IACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,CAAA;IACb,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAA;AAClB,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export type NextsFunction<T> = (t: T) => T[];
2
+ /**
3
+ * Compute whether there's a cycle of dependencies, starting with `thing` and computing "nexts" with the given `nextsFunction`.
4
+ * @return An array with a cycle of "things", starting at the given `thing`.
5
+ * An array of length 0 means: the given `thing` is not part of any cycle.
6
+ */
7
+ export declare const cycleWith: <T>(thing: T, nextsFunction: NextsFunction<T>) => T[];
8
+ //# sourceMappingURL=cycles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycles.d.ts","sourceRoot":"","sources":["../../src/utils/cycles.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA;AAG5C;;;;GAIG;AACH,eAAO,MAAM,SAAS,uDAMrB,CAAA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Compute whether there's a cycle of dependencies, starting with `thing` and computing "nexts" with the given `nextsFunction`.
3
+ * @return An array with a cycle of "things", starting at the given `thing`.
4
+ * An array of length 0 means: the given `thing` is not part of any cycle.
5
+ */
6
+ export const cycleWith = (thing, nextsFunction) => {
7
+ const result = visit(thing, [], nextsFunction);
8
+ return result.length > 0 && result[result.length - 1] === thing
9
+ ? result
10
+ : [];
11
+ };
12
+ const visit = (current, chain, nextsFunction) => {
13
+ if (chain.indexOf(current) > -1) {
14
+ // Add current to end, so we know what sub-array constitutes the actual cycle:
15
+ return [...chain, current];
16
+ }
17
+ const extendedChain = [...chain, current];
18
+ for (const dependency of nextsFunction(current)) {
19
+ const recursion = visit(dependency, extendedChain, nextsFunction);
20
+ if (recursion.length > 0) {
21
+ return recursion;
22
+ }
23
+ }
24
+ return [];
25
+ };
26
+ //# sourceMappingURL=cycles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycles.js","sourceRoot":"","sources":["../../src/utils/cycles.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAQ,EAAE,aAA+B,EAAO,EAAE;IAE3E,MAAM,MAAM,GAAG,KAAK,CAAI,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;IACjD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK;QAC3D,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,EAAE,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAI,OAAU,EAAE,KAAU,EAAE,aAA+B,EAAO,EAAE;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9B,8EAA8E;QAC9E,OAAO,CAAE,GAAG,KAAK,EAAE,OAAO,CAAE,CAAA;IAChC,CAAC;IACD,MAAM,aAAa,GAAG,CAAE,GAAG,KAAK,EAAE,OAAO,CAAE,CAAA;IAC3C,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;QACjE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,SAAS,CAAA;QACpB,CAAC;IACL,CAAC;IACD,OAAO,EAAE,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from "./array-helpers.js";
2
+ export * from "./cycles.js";
3
+ export * from "./map-helpers.js";
4
+ export * from "./recursion.js";
5
+ export * from "./sorting.js";
6
+ export * from "./string-mapping.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from "./array-helpers.js";
2
+ export * from "./cycles.js";
3
+ export * from "./map-helpers.js";
4
+ export * from "./recursion.js";
5
+ export * from "./sorting.js";
6
+ export * from "./string-mapping.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { Id } from "../types.js";
2
+ /**
3
+ * Computes a map id -> thing with id.
4
+ */
5
+ export declare const byIdMap: <T extends {
6
+ id: Id;
7
+ }>(ts: T[]) => {
8
+ [id: string]: T;
9
+ };
10
+ /**
11
+ * Groups a list of items according to a computed key.
12
+ */
13
+ export declare const groupBy: <T>(ts: T[], keyFunc: (t: T) => string) => Record<string, T[]>;
14
+ /**
15
+ * Filters the values of a map/record according the given predicate.
16
+ */
17
+ export declare const filterValues: <V>(map: Record<string, V>, predicate: (v: V) => boolean) => Record<string, V>;
18
+ /**
19
+ * Computes the given items whose computed keys are duplicates, as a map key &rarr; items.
20
+ */
21
+ export declare const duplicatesAmong: <T>(ts: T[], keyFunc: (t: T) => string) => Record<string, T[]>;
22
+ /**
23
+ * Maps the values of a map/record according to the given mapping function.
24
+ */
25
+ export declare const mapValues: <V, W>(map: Record<string, V>, valFunc: (v: V) => W) => Record<string, W>;
26
+ //# sourceMappingURL=map-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/map-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,aAAa,CAAA;AAG9B;;GAEG;AACH,eAAO,MAAM,OAAO;QAAoB,EAAE;;;CAMzC,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,OAAO,kCAAmC,MAAM,wBAY5D,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,YAAY,mDAAoD,OAAO,sBAI/E,CAAA;AAGL;;GAEG;AACH,eAAO,MAAM,eAAe,kCAAmC,MAAM,wBACR,CAAA;AAG7D;;GAEG;AACH,eAAO,MAAM,SAAS,2EAIjB,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Computes a map id -> thing with id.
3
+ */
4
+ export const byIdMap = (ts) => {
5
+ const map = {};
6
+ ts.forEach((t) => {
7
+ map[t.id] = t;
8
+ });
9
+ return map;
10
+ };
11
+ /**
12
+ * Groups a list of items according to a computed key.
13
+ */
14
+ export const groupBy = (ts, keyFunc) => {
15
+ const map = {};
16
+ ts.forEach((t) => {
17
+ const key = keyFunc(t);
18
+ let list = map[key];
19
+ if (list === undefined) {
20
+ list = [];
21
+ map[key] = list;
22
+ }
23
+ list.push(t);
24
+ });
25
+ return map;
26
+ };
27
+ /**
28
+ * Filters the values of a map/record according the given predicate.
29
+ */
30
+ export const filterValues = (map, predicate) => Object.fromEntries(Object.entries(map)
31
+ .filter(([_, value]) => predicate(value)));
32
+ /**
33
+ * Computes the given items whose computed keys are duplicates, as a map key &rarr; items.
34
+ */
35
+ export const duplicatesAmong = (ts, keyFunc) => filterValues(groupBy(ts, keyFunc), (ts) => ts.length > 1);
36
+ /**
37
+ * Maps the values of a map/record according to the given mapping function.
38
+ */
39
+ export const mapValues = (map, valFunc) => Object.fromEntries(Object.entries(map)
40
+ .map(([key, value]) => [key, valFunc(value)]));
41
+ //# sourceMappingURL=map-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-helpers.js","sourceRoot":"","sources":["../../src/utils/map-helpers.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAuB,EAAO,EAAmB,EAAE;IACtE,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AAGD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,EAAO,EAAE,OAAyB,EAAuB,EAAE;IAClF,MAAM,GAAG,GAAwB,EAAE,CAAA;IACnC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,GAAG,EAAE,CAAA;YACT,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AAGD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,GAAsB,EAAE,SAA4B,EAAqB,EAAE,CACvG,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;KACd,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAChD,CAAA;AAGL;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,EAAO,EAAE,OAAyB,EAAuB,EAAE,CAC1F,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAG7D;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,GAAsB,EAAE,OAAoB,EAAqB,EAAE,CAC/F,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;KACd,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACpD,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Type def. of a generic "flatMap" function.
3
+ */
4
+ type FlatMapper<T, R> = (t: T) => R[];
5
+ /**
6
+ * Performs a "flatMap" on a graph that's specified as a start vertex and a function that computes (outgoing) edges.
7
+ * The "flatMap" is performed depth-first, and doesn't loop on cycles.
8
+ */
9
+ declare const flatMapNonCyclingFollowing: <T, R>(mapper: FlatMapper<T, R>, edges: (t: T) => T[]) => FlatMapper<T, R>;
10
+ declare const trivialFlatMapper: <T>(t: T) => T[];
11
+ export type { FlatMapper };
12
+ export { flatMapNonCyclingFollowing, trivialFlatMapper };
13
+ //# sourceMappingURL=recursion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursion.d.ts","sourceRoot":"","sources":["../../src/utils/recursion.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA;AAErC;;;GAGG;AACH,QAAA,MAAM,0BAA0B,4EAiB3B,CAAA;AAGL,QAAA,MAAM,iBAAiB,kBAAmB,CAAA;AAG1C,YAAY,EACR,UAAU,EACb,CAAA;AAED,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACpB,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Performs a "flatMap" on a graph that's specified as a start vertex and a function that computes (outgoing) edges.
3
+ * The "flatMap" is performed depth-first, and doesn't loop on cycles.
4
+ */
5
+ const flatMapNonCyclingFollowing = (mapper, edges) => (startVertex) => {
6
+ const visited = [];
7
+ const rs = [];
8
+ const recurse = (t) => {
9
+ if (visited.indexOf(t) > -1) {
10
+ return;
11
+ }
12
+ visited.push(t);
13
+ rs.push(...mapper(t));
14
+ edges(t).forEach(recurse);
15
+ };
16
+ recurse(startVertex);
17
+ return rs;
18
+ };
19
+ const trivialFlatMapper = (t) => [t];
20
+ export { flatMapNonCyclingFollowing, trivialFlatMapper };
21
+ //# sourceMappingURL=recursion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursion.js","sourceRoot":"","sources":["../../src/utils/recursion.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,0BAA0B,GAAG,CAC/B,MAAwB,EACxB,KAAoB,EACJ,EAAE,CAClB,CAAC,WAAc,EAAO,EAAE;IACpB,MAAM,OAAO,GAAQ,EAAE,CAAA;IACvB,MAAM,EAAE,GAAQ,EAAE,CAAA;IAClB,MAAM,OAAO,GAAG,CAAC,CAAI,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAM;QACV,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrB,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAA;IACD,OAAO,CAAC,WAAW,CAAC,CAAA;IACpB,OAAO,EAAE,CAAA;AACb,CAAC,CAAA;AAGL,MAAM,iBAAiB,GAAG,CAAI,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAO1C,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACpB,CAAA"}