New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@xstate/graph

Package Overview
Dependencies
Maintainers
3
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xstate/graph - npm Package Compare versions

Comparing version 1.4.0 to 1.4.1

14

CHANGELOG.md
# @xstate/graph
## 1.4.1
### Patch Changes
- [#2957](https://github.com/statelyai/xstate/pull/2957) [`8550ddda7`](https://github.com/statelyai/xstate/commit/8550ddda73e2ad291e19173d7fa8d13e3336fbb9) Thanks [@davidkpiano](https://github.com/davidkpiano)! - The repository links have been updated from `github.com/davidkpiano` to `github.com/statelyai`.
## 1.4.0

@@ -13,3 +19,3 @@

- [`111a7d13`](https://github.com/davidkpiano/xstate/commit/111a7d138db909e969629a3c237b952850c008ca) [#1663](https://github.com/davidkpiano/xstate/pull/1663) Thanks [@davidkpiano](https://github.com/davidkpiano)! - Options passed into graph functions (e.g., `getShortestPaths(machine, options)`) can now resolve `.events` based on the `state`:
- [`111a7d13`](https://github.com/statelyai/xstate/commit/111a7d138db909e969629a3c237b952850c008ca) [#1663](https://github.com/statelyai/xstate/pull/1663) Thanks [@davidkpiano](https://github.com/statelyai)! - Options passed into graph functions (e.g., `getShortestPaths(machine, options)`) can now resolve `.events` based on the `state`:

@@ -62,3 +68,3 @@ ```js

- [`142f54e1`](https://github.com/davidkpiano/xstate/commit/142f54e1238919a53c73a40723c415b0044774bb) [#1366](https://github.com/davidkpiano/xstate/pull/1366) Thanks [@davidkpiano](https://github.com/davidkpiano)! - The `toDirectedGraph(...)` function was added, which converts a `machine` into an object that can be used in many different graph-based and visualization tools:
- [`142f54e1`](https://github.com/statelyai/xstate/commit/142f54e1238919a53c73a40723c415b0044774bb) [#1366](https://github.com/statelyai/xstate/pull/1366) Thanks [@davidkpiano](https://github.com/statelyai)! - The `toDirectedGraph(...)` function was added, which converts a `machine` into an object that can be used in many different graph-based and visualization tools:

@@ -92,7 +98,7 @@ ```js

- [`137b0cd`](https://github.com/davidkpiano/xstate/commit/137b0cdf71054d67f0c5ba2c11021436ec3739ed) [#1033](https://github.com/davidkpiano/xstate/pull/1033) Thanks [@ZempTime](https://github.com/ZempTime)! - Added ESM build of the package which can be loaded through modern web bundlers (instead of default CommonJS files).
- [`137b0cd`](https://github.com/statelyai/xstate/commit/137b0cdf71054d67f0c5ba2c11021436ec3739ed) [#1033](https://github.com/statelyai/xstate/pull/1033) Thanks [@ZempTime](https://github.com/ZempTime)! - Added ESM build of the package which can be loaded through modern web bundlers (instead of default CommonJS files).
### Patch Changes
- Updated dependencies [[`f3ff150`](https://github.com/davidkpiano/xstate/commit/f3ff150f7c50f402704d25cdc053b76836e447e3), [`6c47b66`](https://github.com/davidkpiano/xstate/commit/6c47b66c3289ff161dc96d9b246873f55c9e18f2), [`1a129f0`](https://github.com/davidkpiano/xstate/commit/1a129f0f35995981c160d756a570df76396bfdbd), [`e88aa18`](https://github.com/davidkpiano/xstate/commit/e88aa18431629e1061b74dfd4a961b910e274e0b), [`88b17b2`](https://github.com/davidkpiano/xstate/commit/88b17b2476ff9a0fbe810df9d00db32c2241cd6e), [`d5f622f`](https://github.com/davidkpiano/xstate/commit/d5f622f68f4065a2615b5a4a1caae6b508b4840e)]:
- Updated dependencies [[`f3ff150`](https://github.com/statelyai/xstate/commit/f3ff150f7c50f402704d25cdc053b76836e447e3), [`6c47b66`](https://github.com/statelyai/xstate/commit/6c47b66c3289ff161dc96d9b246873f55c9e18f2), [`1a129f0`](https://github.com/statelyai/xstate/commit/1a129f0f35995981c160d756a570df76396bfdbd), [`e88aa18`](https://github.com/statelyai/xstate/commit/e88aa18431629e1061b74dfd4a961b910e274e0b), [`88b17b2`](https://github.com/statelyai/xstate/commit/88b17b2476ff9a0fbe810df9d00db32c2241cd6e), [`d5f622f`](https://github.com/statelyai/xstate/commit/d5f622f68f4065a2615b5a4a1caae6b508b4840e)]:
- xstate@4.9.0
import { StateNode, State, DefaultContext, Event, EventObject, StateMachine, AnyEventObject } from 'xstate';
import { StatePath } from '.';
import { StatePathsMap, StatePaths, AdjacencyMap, ValueAdjMapOptions, DirectedGraphNode } from './types';
import { StatePathsMap, StatePaths, AdjacencyMap, ValueAdjMapOptions, DirectedGraphNode, AnyStateNode, StatePath } from './types';
export declare function toEventObject<TEvent extends EventObject>(event: Event<TEvent>): TEvent;

@@ -9,13 +8,13 @@ /**

*/
export declare function getStateNodes(stateNode: StateNode | StateMachine<any, any, any>): StateNode[];
export declare function getChildren(stateNode: StateNode): StateNode[];
export declare function getStateNodes(stateNode: AnyStateNode | StateMachine<any, any, any, any, any, any, any>): AnyStateNode[];
export declare function getChildren(stateNode: AnyStateNode): AnyStateNode[];
export declare function serializeState<TContext>(state: State<TContext, any>): string;
export declare function serializeEvent<TEvent extends EventObject>(event: TEvent): string;
export declare function deserializeEventString<TEvent extends EventObject>(eventString: string): TEvent;
export declare function getAdjacencyMap<TContext = DefaultContext, TEvent extends EventObject = AnyEventObject>(node: StateNode<TContext, any, TEvent> | StateMachine<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): AdjacencyMap<TContext, TEvent>;
export declare function getShortestPaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePathsAsArray<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateNode<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): Array<StatePaths<TContext, TEvent>>;
export declare function toDirectedGraph(stateNode: StateNode): DirectedGraphNode;
export declare function getPathFromEvents<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent>, events: Array<TEvent>): StatePath<TContext, TEvent>;
export declare function getAdjacencyMap<TContext = DefaultContext, TEvent extends EventObject = AnyEventObject>(node: StateNode<TContext, any, TEvent, any, any, any> | StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): AdjacencyMap<TContext, TEvent>;
export declare function getShortestPaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePathsAsArray<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): Array<StatePaths<TContext, TEvent>>;
export declare function toDirectedGraph(stateNode: AnyStateNode | StateMachine<any, any, any, any, any, any, any>): DirectedGraphNode;
export declare function getPathFromEvents<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, events: Array<TEvent>): StatePath<TContext, TEvent>;
//# sourceMappingURL=graph.d.ts.map

@@ -28,6 +28,10 @@ var __assign = (this && this.__assign) || function () {

};
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};

@@ -62,3 +66,3 @@ var __values = (this && this.__values) || function(o) {

var childStateNodes = getStateNodes(childStateNode);
accNodes.push.apply(accNodes, __spreadArray([childStateNode], __read(childStateNodes)));
accNodes.push.apply(accNodes, __spreadArray([childStateNode], __read(childStateNodes), false));
return accNodes;

@@ -129,3 +133,3 @@ }, []);

catch (e) {
throw new Error("Unable to transition from state " + stateSerializer(state) + " on event " + eventSerializer(event_1) + ": " + e.message);
throw new Error("Unable to transition from state ".concat(stateSerializer(state), " on event ").concat(eventSerializer(event_1), ": ").concat(e.message));
}

@@ -268,3 +272,3 @@ if ((!filter || filter(nextState)) &&

weight: path.length,
segments: __spreadArray([], __read(path))
segments: __spreadArray([], __read(path), false)
});

@@ -328,3 +332,3 @@ }

var edge = {
id: stateNode.id + ":" + transitionIndex + ":" + targetIndex,
id: "".concat(stateNode.id, ":").concat(transitionIndex, ":").concat(targetIndex),
source: stateNode,

@@ -348,3 +352,3 @@ target: target,

stateNode: stateNode,
children: getChildren(stateNode).map(function (sn) { return toDirectedGraph(sn); }),
children: getChildren(stateNode).map(toDirectedGraph),
edges: edges,

@@ -394,3 +398,3 @@ toJSON: function () {

if (!nextSegment) {
throw new Error("Invalid transition from " + stateSerial + " with " + eventSerial);
throw new Error("Invalid transition from ".concat(stateSerial, " with ").concat(eventSerial));
}

@@ -397,0 +401,0 @@ var nextStateSerial = stateSerializer(nextSegment.state);

import { State, EventObject, StateValue, StateNode, TransitionDefinition } from 'xstate';
export declare type AnyStateNode = StateNode<any, any, any, any, any>;
export interface TransitionMap {

@@ -15,4 +16,4 @@ state: StateValue | undefined;

id: string;
source: StateNode;
target: StateNode;
source: AnyStateNode;
target: AnyStateNode;
label: DirectedGraphLabel;

@@ -19,0 +20,0 @@ transition: TransitionDefinition<any, any>;

import { StateNode, State, DefaultContext, Event, EventObject, StateMachine, AnyEventObject } from 'xstate';
import { StatePath } from '.';
import { StatePathsMap, StatePaths, AdjacencyMap, ValueAdjMapOptions, DirectedGraphNode } from './types';
import { StatePathsMap, StatePaths, AdjacencyMap, ValueAdjMapOptions, DirectedGraphNode, AnyStateNode, StatePath } from './types';
export declare function toEventObject<TEvent extends EventObject>(event: Event<TEvent>): TEvent;

@@ -9,13 +8,13 @@ /**

*/
export declare function getStateNodes(stateNode: StateNode | StateMachine<any, any, any>): StateNode[];
export declare function getChildren(stateNode: StateNode): StateNode[];
export declare function getStateNodes(stateNode: AnyStateNode | StateMachine<any, any, any, any, any, any, any>): AnyStateNode[];
export declare function getChildren(stateNode: AnyStateNode): AnyStateNode[];
export declare function serializeState<TContext>(state: State<TContext, any>): string;
export declare function serializeEvent<TEvent extends EventObject>(event: TEvent): string;
export declare function deserializeEventString<TEvent extends EventObject>(eventString: string): TEvent;
export declare function getAdjacencyMap<TContext = DefaultContext, TEvent extends EventObject = AnyEventObject>(node: StateNode<TContext, any, TEvent> | StateMachine<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): AdjacencyMap<TContext, TEvent>;
export declare function getShortestPaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePathsAsArray<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateNode<TContext, any, TEvent>, options?: ValueAdjMapOptions<TContext, TEvent>): Array<StatePaths<TContext, TEvent>>;
export declare function toDirectedGraph(stateNode: StateNode): DirectedGraphNode;
export declare function getPathFromEvents<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent>, events: Array<TEvent>): StatePath<TContext, TEvent>;
export declare function getAdjacencyMap<TContext = DefaultContext, TEvent extends EventObject = AnyEventObject>(node: StateNode<TContext, any, TEvent, any, any, any> | StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): AdjacencyMap<TContext, TEvent>;
export declare function getShortestPaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePaths<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): StatePathsMap<TContext, TEvent>;
export declare function getSimplePathsAsArray<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, options?: ValueAdjMapOptions<TContext, TEvent>): Array<StatePaths<TContext, TEvent>>;
export declare function toDirectedGraph(stateNode: AnyStateNode | StateMachine<any, any, any, any, any, any, any>): DirectedGraphNode;
export declare function getPathFromEvents<TContext = DefaultContext, TEvent extends EventObject = EventObject>(machine: StateMachine<TContext, any, TEvent, any, any, any, any>, events: Array<TEvent>): StatePath<TContext, TEvent>;
//# sourceMappingURL=graph.d.ts.map

@@ -29,6 +29,10 @@ "use strict";

};
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};

@@ -63,6 +67,6 @@ var __values = (this && this.__values) || function(o) {

var states = stateNode.states;
var nodes = utils_1.keys(states).reduce(function (accNodes, stateKey) {
var nodes = (0, utils_1.keys)(states).reduce(function (accNodes, stateKey) {
var childStateNode = states[stateKey];
var childStateNodes = getStateNodes(childStateNode);
accNodes.push.apply(accNodes, __spreadArray([childStateNode], __read(childStateNodes)));
accNodes.push.apply(accNodes, __spreadArray([childStateNode], __read(childStateNodes), false));
return accNodes;

@@ -120,3 +124,3 @@ }, []);

adjacency[stateHash] = {};
var potentialEvents = utils_1.flatten(nextEvents.map(function (nextEvent) {
var potentialEvents = (0, utils_1.flatten)(nextEvents.map(function (nextEvent) {
var getNextEvents = events[nextEvent];

@@ -139,3 +143,3 @@ if (!getNextEvents) {

catch (e) {
throw new Error("Unable to transition from state " + stateSerializer(state) + " on event " + eventSerializer(event_1) + ": " + e.message);
throw new Error("Unable to transition from state ".concat(stateSerializer(state), " on event ").concat(eventSerializer(event_1), ": ").concat(e.message));
}

@@ -186,3 +190,3 @@ if ((!filter || filter(nextState)) &&

try {
for (var _d = (e_3 = void 0, __values(utils_1.keys(adjacency[vertex]))), _e = _d.next(); !_e.done; _e = _d.next()) {
for (var _d = (e_3 = void 0, __values((0, utils_1.keys)(adjacency[vertex]))), _e = _d.next(); !_e.done; _e = _d.next()) {
var event_2 = _e.value;

@@ -281,3 +285,3 @@ var nextSegment = adjacency[vertex][event_2];

weight: path.length,
segments: __spreadArray([], __read(path))
segments: __spreadArray([], __read(path), false)
});

@@ -287,3 +291,3 @@ }

try {
for (var _b = __values(utils_1.keys(adjacency[fromStateSerial])), _c = _b.next(); !_c.done; _c = _b.next()) {
for (var _b = __values((0, utils_1.keys)(adjacency[fromStateSerial])), _c = _b.next(); !_c.done; _c = _b.next()) {
var subEvent = _c.value;

@@ -319,3 +323,3 @@ var nextSegment = adjacency[fromStateSerial][subEvent];

try {
for (var _b = __values(utils_1.keys(adjacency)), _c = _b.next(); !_c.done; _c = _b.next()) {
for (var _b = __values((0, utils_1.keys)(adjacency)), _c = _b.next(); !_c.done; _c = _b.next()) {
var nextStateSerial = _c.value;

@@ -337,11 +341,11 @@ util(machine.initialState, nextStateSerial);

var result = getSimplePaths(machine, options);
return utils_1.keys(result).map(function (key) { return result[key]; });
return (0, utils_1.keys)(result).map(function (key) { return result[key]; });
}
exports.getSimplePathsAsArray = getSimplePathsAsArray;
function toDirectedGraph(stateNode) {
var edges = utils_1.flatten(stateNode.transitions.map(function (t, transitionIndex) {
var edges = (0, utils_1.flatten)(stateNode.transitions.map(function (t, transitionIndex) {
var targets = t.target ? t.target : [stateNode];
return targets.map(function (target, targetIndex) {
var edge = {
id: stateNode.id + ":" + transitionIndex + ":" + targetIndex,
id: "".concat(stateNode.id, ":").concat(transitionIndex, ":").concat(targetIndex),
source: stateNode,

@@ -365,3 +369,3 @@ target: target,

stateNode: stateNode,
children: getChildren(stateNode).map(function (sn) { return toDirectedGraph(sn); }),
children: getChildren(stateNode).map(toDirectedGraph),
edges: edges,

@@ -412,3 +416,3 @@ toJSON: function () {

if (!nextSegment) {
throw new Error("Invalid transition from " + stateSerial + " with " + eventSerial);
throw new Error("Invalid transition from ".concat(stateSerial, " with ").concat(eventSerial));
}

@@ -415,0 +419,0 @@ var nextStateSerial = stateSerializer(nextSegment.state);

import { State, EventObject, StateValue, StateNode, TransitionDefinition } from 'xstate';
export declare type AnyStateNode = StateNode<any, any, any, any, any>;
export interface TransitionMap {

@@ -15,4 +16,4 @@ state: StateValue | undefined;

id: string;
source: StateNode;
target: StateNode;
source: AnyStateNode;
target: AnyStateNode;
label: DirectedGraphLabel;

@@ -19,0 +20,0 @@ transition: TransitionDefinition<any, any>;

{
"name": "@xstate/graph",
"version": "1.4.0",
"version": "1.4.1",
"description": "XState graph utilities",

@@ -14,3 +14,3 @@ "keywords": [

"author": "David Khourshid <davidkpiano@gmail.com>",
"homepage": "https://github.com/davidkpiano/xstate/tree/main/packages/xstate-test#readme",
"homepage": "https://github.com/statelyai/xstate/tree/main/packages/xstate-test#readme",
"license": "MIT",

@@ -29,3 +29,3 @@ "main": "lib/index.js",

"type": "git",
"url": "git+ssh://git@github.com/davidkpiano/xstate.git"
"url": "git+ssh://git@github.com/statelyai/xstate.git"
},

@@ -36,9 +36,9 @@ "scripts": {

"test": "jest",
"prepublish": "npm run build && npm run test"
"prepare": "npm run build"
},
"bugs": {
"url": "https://github.com/davidkpiano/xstate/issues"
"url": "https://github.com/statelyai/xstate/issues"
},
"peerDependencies": {
"xstate": "^4.9.0"
"xstate": "^4.29.0"
},

@@ -49,3 +49,3 @@ "devDependencies": {

"ts-jest": "^26.5.6",
"typescript": "^4.3.5",
"typescript": "^4.5.2",
"xstate": "*"

@@ -52,0 +52,0 @@ },

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc