@vsirotin/ts-stop 1.11.1 → 1.12.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.
@@ -0,0 +1,24 @@
1
+ import { reduceFA } from './FaReducer';
2
+ /**
3
+ * Merges multiple FA definitions into one compact multi-FA object.
4
+ *
5
+ * Each input is reduced first (same semantics as reduceFA). If an input is
6
+ * already compact, reduceFA returns it unchanged.
7
+ *
8
+ * On duplicate FA keys, the later input overwrites the previous one and a
9
+ * warning entry is emitted.
10
+ */
11
+ export function mergeFAs(definitions) {
12
+ const merged = {};
13
+ const warnings = [];
14
+ for (let fileIndex = 0; fileIndex < definitions.length; fileIndex++) {
15
+ const reduced = reduceFA(definitions[fileIndex]);
16
+ for (const [faName, transitions] of Object.entries(reduced)) {
17
+ if (Object.prototype.hasOwnProperty.call(merged, faName)) {
18
+ warnings.push(`Duplicate FA key '${faName}' encountered at input #${fileIndex + 1}. Last definition wins.`);
19
+ }
20
+ merged[faName] = transitions;
21
+ }
22
+ }
23
+ return { merged, warnings };
24
+ }
@@ -2,5 +2,6 @@ export { ExternalWorldHub } from './ExternalWorldHub';
2
2
  export { FaResolver } from './FaResolver';
3
3
  export { Sfsm } from './Sfsm';
4
4
  export { reduceFA } from './FaReducer';
5
+ export { mergeFAs } from './FaMerger';
5
6
  export { updateCompactFA, updateFullFA } from './FaUpdater';
6
7
  export { loadFAFromFile, loadFAFromURL } from './FaLoader';
@@ -0,0 +1,16 @@
1
+ import { FaDefinition } from './types';
2
+ export interface MergeFaResult {
3
+ merged: FaDefinition;
4
+ warnings: string[];
5
+ }
6
+ /**
7
+ * Merges multiple FA definitions into one compact multi-FA object.
8
+ *
9
+ * Each input is reduced first (same semantics as reduceFA). If an input is
10
+ * already compact, reduceFA returns it unchanged.
11
+ *
12
+ * On duplicate FA keys, the later input overwrites the previous one and a
13
+ * warning entry is emitted.
14
+ */
15
+ export declare function mergeFAs(definitions: FaDefinition[]): MergeFaResult;
16
+ //# sourceMappingURL=FaMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaMerger.d.ts","sourceRoot":"","sources":["../../src/sfsm/FaMerger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,aAAa,CAgBnE"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeFAs = mergeFAs;
4
+ const FaReducer_1 = require("./FaReducer");
5
+ /**
6
+ * Merges multiple FA definitions into one compact multi-FA object.
7
+ *
8
+ * Each input is reduced first (same semantics as reduceFA). If an input is
9
+ * already compact, reduceFA returns it unchanged.
10
+ *
11
+ * On duplicate FA keys, the later input overwrites the previous one and a
12
+ * warning entry is emitted.
13
+ */
14
+ function mergeFAs(definitions) {
15
+ const merged = {};
16
+ const warnings = [];
17
+ for (let fileIndex = 0; fileIndex < definitions.length; fileIndex++) {
18
+ const reduced = (0, FaReducer_1.reduceFA)(definitions[fileIndex]);
19
+ for (const [faName, transitions] of Object.entries(reduced)) {
20
+ if (Object.prototype.hasOwnProperty.call(merged, faName)) {
21
+ warnings.push(`Duplicate FA key '${faName}' encountered at input #${fileIndex + 1}. Last definition wins.`);
22
+ }
23
+ merged[faName] = transitions;
24
+ }
25
+ }
26
+ return { merged, warnings };
27
+ }
28
+ //# sourceMappingURL=FaMerger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaMerger.js","sourceRoot":"","sources":["../../src/sfsm/FaMerger.ts"],"names":[],"mappings":";;AAiBA,4BAgBC;AAhCD,2CAAuC;AAOvC;;;;;;;;GAQG;AACH,SAAgB,QAAQ,CAAC,WAA2B;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjD,KAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC,qBAAqB,MAAM,2BAA2B,SAAS,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAChH,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;QACjC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
@@ -4,6 +4,7 @@ export { FaDefinition, FaNode, FaUpdate, Transition, SfsmOptions, LogEntry, Miss
4
4
  export { FaResolver, ResolvedFa } from './FaResolver';
5
5
  export { Sfsm } from './Sfsm';
6
6
  export { reduceFA } from './FaReducer';
7
+ export { mergeFAs, MergeFaResult } from './FaMerger';
7
8
  export { updateCompactFA, updateFullFA } from './FaUpdater';
8
9
  export { loadFAFromFile, loadFAFromURL } from './FaLoader';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACxI,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACxI,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
package/lib/sfsm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadFAFromURL = exports.loadFAFromFile = exports.updateFullFA = exports.updateCompactFA = exports.reduceFA = exports.Sfsm = exports.FaResolver = exports.ExternalWorldHub = void 0;
3
+ exports.loadFAFromURL = exports.loadFAFromFile = exports.updateFullFA = exports.updateCompactFA = exports.mergeFAs = exports.reduceFA = exports.Sfsm = exports.FaResolver = exports.ExternalWorldHub = void 0;
4
4
  var ExternalWorldHub_1 = require("./ExternalWorldHub");
5
5
  Object.defineProperty(exports, "ExternalWorldHub", { enumerable: true, get: function () { return ExternalWorldHub_1.ExternalWorldHub; } });
6
6
  var FaResolver_1 = require("./FaResolver");
@@ -9,6 +9,8 @@ var Sfsm_1 = require("./Sfsm");
9
9
  Object.defineProperty(exports, "Sfsm", { enumerable: true, get: function () { return Sfsm_1.Sfsm; } });
10
10
  var FaReducer_1 = require("./FaReducer");
11
11
  Object.defineProperty(exports, "reduceFA", { enumerable: true, get: function () { return FaReducer_1.reduceFA; } });
12
+ var FaMerger_1 = require("./FaMerger");
13
+ Object.defineProperty(exports, "mergeFAs", { enumerable: true, get: function () { return FaMerger_1.mergeFAs; } });
12
14
  var FaUpdater_1 = require("./FaUpdater");
13
15
  Object.defineProperty(exports, "updateCompactFA", { enumerable: true, get: function () { return FaUpdater_1.updateCompactFA; } });
14
16
  Object.defineProperty(exports, "updateFullFA", { enumerable: true, get: function () { return FaUpdater_1.updateFullFA; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":";;;AACA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,2CAAsD;AAA7C,wGAAA,UAAU,OAAA;AACnB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,yCAA4D;AAAnD,4GAAA,eAAe,OAAA;AAAE,yGAAA,YAAY,OAAA;AACtC,uCAA2D;AAAlD,0GAAA,cAAc,OAAA;AAAE,yGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":";;;AACA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,2CAAsD;AAA7C,wGAAA,UAAU,OAAA;AACnB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,uCAAqD;AAA5C,oGAAA,QAAQ,OAAA;AACjB,yCAA4D;AAAnD,4GAAA,eAAe,OAAA;AAAE,yGAAA,YAAY,OAAA;AACtC,uCAA2D;AAAlD,0GAAA,cAAc,OAAA;AAAE,yGAAA,aAAa,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vsirotin/ts-stop",
3
- "version": "1.11.1",
3
+ "version": "1.12.1",
4
4
  "description": "State Oriented Programming library for TypeScript",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -34,6 +34,7 @@
34
34
  "publish:local": "./scripts/publish-local.sh",
35
35
  "pack": "npm run build && npm pack",
36
36
  "reduce-fa": "node scripts/reduce-fa.js",
37
+ "merge-fas": "node scripts/merge-fas.js",
37
38
  "update-full-fa": "node scripts/update-fa.js --format=full",
38
39
  "update-compact-fa": "node scripts/update-fa.js --format=compact"
39
40
  },