@flighthq/command 0.5.1-next.731.0ae0aa4 → 0.5.1-next.799.62ef0c7
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.
- package/README.md +2 -2
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +15 -8
- package/dist/command.js.map +1 -1
- package/dist/commandBinding.d.ts +2 -2
- package/dist/commandBinding.d.ts.map +1 -1
- package/dist/commandBinding.js +5 -4
- package/dist/commandBinding.js.map +1 -1
- package/dist/commandHistory.d.ts.map +1 -1
- package/dist/commandHistory.js +3 -2
- package/dist/commandHistory.js.map +1 -1
- package/package.json +6 -5
- package/src/command.test.ts +4 -2
- package/src/commandBinding.test.ts +2 -1
- package/src/commandHistory.test.ts +9 -4
- package/src/commandHistorySignals.test.ts +3 -2
- package/src/explainCommandDispatch.test.ts +5 -4
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/command`. The `@flig
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/command@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/command@0.5.1-next.799.62ef0c7](https://github.com/flighthq/flight/tree/62ef0c74f09f24177aac3695b2487b2d743d4fe6/packages/command)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/62ef0c74f09f24177aac3695b2487b2d743d4fe6/LICENSE.md)
|
package/dist/command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,OAAO,EAEP,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAiBlC,yDAAyD;AACzD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,KAAK,SAAK,GACT,mBAAmB,CAErB;AAED,wGAAwG;AACxG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,gBAAgB,CAEpG;AAID,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAQnH;AAGD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,GACd,uBAAuB,CASzB;AAQD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,WAAW,SAAI,EACf,IAAI,SAAI,GACP,sBAAsB,CAQxB;AAID,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,EAAE,EACnF,WAAW,SAAI,EACf,IAAI,SAAI,GACP,sBAAsB,CAQxB"}
|
package/dist/command.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { getNodeChildIndex } from '@flighthq/node/contract';
|
|
2
3
|
import { AddNodeChildCommandKind, CompositeCommandKind, RemoveNodeChildCommandKind, ReorderNodeChildCommandKind, SetNodePropertyCommandKind, } from '@flighthq/types/contract';
|
|
3
4
|
// Constructors for the built-in command kinds. Each returns PLAIN DATA — no method, no captured closure —
|
|
@@ -9,27 +10,33 @@ import { AddNodeChildCommandKind, CompositeCommandKind, RemoveNodeChildCommandKi
|
|
|
9
10
|
// command BEFORE applying the change by hand.
|
|
10
11
|
/** Adds `child` to `parent`. `index` of `-1` appends. */
|
|
11
12
|
export function createAddNodeChildCommand(label, parent, child, index = -1) {
|
|
12
|
-
return { child, index, kind: AddNodeChildCommandKind, label, parent };
|
|
13
|
+
return createEntity({ child, index, kind: AddNodeChildCommandKind, label, parent });
|
|
13
14
|
}
|
|
14
15
|
/** Applies `children` as one history entry, in order; undo runs them in reverse. Nesting is allowed. */
|
|
15
16
|
export function createCompositeCommand(label, children) {
|
|
16
|
-
return { children: [...children], kind: CompositeCommandKind, label };
|
|
17
|
+
return createEntity({ children: [...children], kind: CompositeCommandKind, label });
|
|
17
18
|
}
|
|
18
19
|
// Removes `child` from `parent`, capturing its CURRENT index so undo restores position and not merely
|
|
19
20
|
// membership. Build this before removing the child — once it is detached the index is gone.
|
|
20
21
|
export function createRemoveNodeChildCommand(label, parent, child) {
|
|
21
|
-
return {
|
|
22
|
+
return createEntity({
|
|
23
|
+
child,
|
|
24
|
+
index: getNodeChildIndex(parent, child),
|
|
25
|
+
kind: RemoveNodeChildCommandKind,
|
|
26
|
+
label,
|
|
27
|
+
parent,
|
|
28
|
+
});
|
|
22
29
|
}
|
|
23
30
|
// Moves `child` to `toIndex`, capturing where it started. Build this before moving the child.
|
|
24
31
|
export function createReorderNodeChildCommand(label, parent, child, toIndex) {
|
|
25
|
-
return {
|
|
32
|
+
return createEntity({
|
|
26
33
|
child,
|
|
27
34
|
fromIndex: getNodeChildIndex(parent, child),
|
|
28
35
|
kind: ReorderNodeChildCommandKind,
|
|
29
36
|
label,
|
|
30
37
|
parent,
|
|
31
38
|
toIndex,
|
|
32
|
-
};
|
|
39
|
+
});
|
|
33
40
|
}
|
|
34
41
|
// One property assignment. `before` is read from the node NOW, so build this before writing the value.
|
|
35
42
|
//
|
|
@@ -38,13 +45,13 @@ export function createReorderNodeChildCommand(label, parent, child, toIndex) {
|
|
|
38
45
|
// undo entry. Both default to 0, meaning every change is its own entry. `time` is supplied by the caller
|
|
39
46
|
// because this package takes no clock dependency — and a caller-supplied number stays serializable.
|
|
40
47
|
export function createSetNodePropertyCommand(label, target, property, value, mergeWindow = 0, time = 0) {
|
|
41
|
-
return {
|
|
48
|
+
return createEntity({
|
|
42
49
|
entries: [{ after: value, before: readNodeProperty(target, property), property, target }],
|
|
43
50
|
kind: SetNodePropertyCommandKind,
|
|
44
51
|
label,
|
|
45
52
|
mergeWindow,
|
|
46
53
|
time,
|
|
47
|
-
};
|
|
54
|
+
});
|
|
48
55
|
}
|
|
49
56
|
// Several property assignments applied together as one entry — the shape a gizmo drag produces when it
|
|
50
57
|
// writes x and y at once. Each `before` is read now, in the order given.
|
|
@@ -55,7 +62,7 @@ export function createSetNodePropertyCommandBatch(label, entries, mergeWindow =
|
|
|
55
62
|
property: entry.property,
|
|
56
63
|
target: entry.target,
|
|
57
64
|
}));
|
|
58
|
-
return { entries: captured, kind: SetNodePropertyCommandKind, label, mergeWindow, time };
|
|
65
|
+
return createEntity({ entries: captured, kind: SetNodePropertyCommandKind, label, mergeWindow, time });
|
|
59
66
|
}
|
|
60
67
|
function readNodeProperty(target, property) {
|
|
61
68
|
return target[property];
|
package/dist/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAW5D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAElC,0GAA0G;AAC1G,sGAAsG;AACtG,2FAA2F;AAC3F,EAAE;AACF,2GAA2G;AAC3G,2GAA2G;AAC3G,8CAA8C;AAE9C,yDAAyD;AACzD,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,MAAe,EACf,KAAc,EACd,KAAK,GAAG,CAAC,CAAC;IAEV,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|
package/dist/commandBinding.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { CommandBinding, CommandHistory, Kind
|
|
1
|
+
import type { CommandBinding, CommandBindingTable, CommandHistory, Kind } from '@flighthq/types/contract';
|
|
2
2
|
/** An empty command binding table. Every kind a history will dispatch must be registered into it. */
|
|
3
|
-
export declare function createCommandBindingTable():
|
|
3
|
+
export declare function createCommandBindingTable(): CommandBindingTable;
|
|
4
4
|
/** The binding registered for `kind`, or `null` when nothing is. */
|
|
5
5
|
export declare function getCommandBinding(history: Readonly<CommandHistory>, kind: Kind): CommandBinding | null;
|
|
6
6
|
export declare function hasCommandBinding(history: Readonly<CommandHistory>, kind: Kind): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandBinding.d.ts","sourceRoot":"","sources":["../src/commandBinding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commandBinding.d.ts","sourceRoot":"","sources":["../src/commandBinding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EACd,mBAAmB,EACnB,cAAc,EAGd,IAAI,EAML,MAAM,0BAA0B,CAAC;AAWlC,qGAAqG;AACrG,wBAAgB,yBAAyB,IAAI,mBAAmB,CAI/D;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,IAAI,CAEtG;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAExF;AAKD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEzG;AAID,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAM5E"}
|
package/dist/commandBinding.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { addNodeChildAt, getNodeChildCount, removeNodeChild, setNodeChildIndex } from '@flighthq/node/contract';
|
|
2
3
|
import { createKeyedTable, getRegistryTableEntry, withRegistryTableEntry } from '@flighthq/registry/contract';
|
|
3
4
|
import { AddNodeChildCommandKind, CommandBindingMissPolicy, CommandBindingRegistryId, CompositeCommandKind, RemoveNodeChildCommandKind, ReorderNodeChildCommandKind, SetNodePropertyCommandKind, } from '@flighthq/types/contract';
|
|
4
5
|
/** An empty command binding table. Every kind a history will dispatch must be registered into it. */
|
|
5
6
|
export function createCommandBindingTable() {
|
|
6
|
-
return createKeyedTable(CommandBindingRegistryId, CommandBindingMissPolicy);
|
|
7
|
+
return createEntity(createKeyedTable(CommandBindingRegistryId, CommandBindingMissPolicy));
|
|
7
8
|
}
|
|
8
9
|
/** The binding registered for `kind`, or `null` when nothing is. */
|
|
9
10
|
export function getCommandBinding(history, kind) {
|
|
@@ -19,7 +20,7 @@ export function hasCommandBinding(history, kind) {
|
|
|
19
20
|
// in, which is what keeps unused command kinds shakeable and lets a consumer override a built-in binding
|
|
20
21
|
// or add a vendor-prefixed kind of their own. Last write wins.
|
|
21
22
|
export function registerCommandBinding(history, kind, binding) {
|
|
22
|
-
history.bindings = withRegistryTableEntry(history.bindings, kind, binding);
|
|
23
|
+
history.bindings = createEntity(withRegistryTableEntry(history.bindings, kind, binding));
|
|
23
24
|
}
|
|
24
25
|
// Registers the five built-in kinds. An explicit call rather than a side effect at import: a history that
|
|
25
26
|
// only dispatches a caller's own kinds never references these, so they shake out of the bundle.
|
|
@@ -112,7 +113,7 @@ const setNodePropertyCommandBinding = {
|
|
|
112
113
|
if (a.entries[i].property !== b.entries[i].property)
|
|
113
114
|
return null;
|
|
114
115
|
}
|
|
115
|
-
return {
|
|
116
|
+
return createEntity({
|
|
116
117
|
entries: a.entries.map((entry, i) => ({
|
|
117
118
|
after: b.entries[i].after,
|
|
118
119
|
before: entry.before,
|
|
@@ -123,7 +124,7 @@ const setNodePropertyCommandBinding = {
|
|
|
123
124
|
label: b.label,
|
|
124
125
|
mergeWindow: b.mergeWindow,
|
|
125
126
|
time: b.time,
|
|
126
|
-
};
|
|
127
|
+
});
|
|
127
128
|
},
|
|
128
129
|
undo: (command) => {
|
|
129
130
|
const entries = command.entries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandBinding.js","sourceRoot":"","sources":["../src/commandBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"commandBinding.js","sourceRoot":"","sources":["../src/commandBinding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandHistory.d.ts","sourceRoot":"","sources":["../src/commandHistory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commandHistory.d.ts","sourceRoot":"","sources":["../src/commandHistory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIxE,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,OAAO,CAEzE;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,OAAO,CAEzE;AAID,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAQjE;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,OAAO,SAAI,GAAG,cAAc,CAWhE;AAUD,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAuBjF;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,OAAO,EAAE,CAE9F;AAED,qGAAqG;AACrG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAEhF;AAED,2DAA2D;AAC3D,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,IAAI,CAE3F;AAED,0DAA0D;AAC1D,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,IAAI,CAE3F;AAID,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAEnF;AAKD,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAS5D;AAED,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAS5D"}
|
package/dist/commandHistory.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { emitSignal } from '@flighthq/signals/contract';
|
|
2
3
|
import { createCommandBindingTable, getCommandBinding } from './commandBinding';
|
|
3
4
|
/** Whether there is an applied entry to reverse. */
|
|
@@ -22,7 +23,7 @@ export function clearCommandHistory(history) {
|
|
|
22
23
|
}
|
|
23
24
|
/** An empty history with no bindings registered. `maxSize` of `0` (the default) is unbounded. */
|
|
24
25
|
export function createCommandHistory(maxSize = 0) {
|
|
25
|
-
return {
|
|
26
|
+
return createEntity({
|
|
26
27
|
bindings: createCommandBindingTable(),
|
|
27
28
|
entries: [],
|
|
28
29
|
index: 0,
|
|
@@ -31,7 +32,7 @@ export function createCommandHistory(maxSize = 0) {
|
|
|
31
32
|
transactionDepth: 0,
|
|
32
33
|
transactionIndex: 0,
|
|
33
34
|
transactionLabel: null,
|
|
34
|
-
};
|
|
35
|
+
});
|
|
35
36
|
}
|
|
36
37
|
// Applies `command` and pushes it. Returns false and changes nothing when the command's kind has no
|
|
37
38
|
// registered binding — an unregistered kind is an expected lookup failure, so it takes a sentinel rather
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandHistory.js","sourceRoot":"","sources":["../src/commandHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,OAAiC;IAC9D,OAAO,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,OAAiC;IAC9D,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,sGAAsG;AACtG,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO;IAChE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAChC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,oBAAoB,CAAC,OAAO,GAAG,CAAC;IAC9C,OAAO;
|
|
1
|
+
{"version":3,"file":"commandHistory.js","sourceRoot":"","sources":["../src/commandHistory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/command",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.799.62ef0c7",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,10 +38,11 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/
|
|
42
|
-
"@flighthq/
|
|
43
|
-
"@flighthq/
|
|
44
|
-
"@flighthq/
|
|
41
|
+
"@flighthq/entity": "0.5.1-next.799.62ef0c7",
|
|
42
|
+
"@flighthq/node": "0.5.1-next.799.62ef0c7",
|
|
43
|
+
"@flighthq/registry": "0.5.1-next.799.62ef0c7",
|
|
44
|
+
"@flighthq/signals": "0.5.1-next.799.62ef0c7",
|
|
45
|
+
"@flighthq/types": "0.5.1-next.799.62ef0c7"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"typescript": "^5.3.0"
|
package/src/command.test.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { NodeAny } from '@flighthq/types/contract';
|
|
|
3
3
|
import {
|
|
4
4
|
AddNodeChildCommandKind,
|
|
5
5
|
CompositeCommandKind,
|
|
6
|
+
EntityRuntimeKey,
|
|
6
7
|
RemoveNodeChildCommandKind,
|
|
7
8
|
ReorderNodeChildCommandKind,
|
|
8
9
|
SetNodePropertyCommandKind,
|
|
@@ -19,11 +20,12 @@ import {
|
|
|
19
20
|
} from './command';
|
|
20
21
|
|
|
21
22
|
describe('createAddNodeChildCommand', () => {
|
|
22
|
-
it('is
|
|
23
|
+
it('is Entity data carrying its kind, and appends by default', () => {
|
|
23
24
|
const parent = node();
|
|
24
25
|
const child = node();
|
|
25
26
|
const command = createAddNodeChildCommand('Add sprite', parent, child);
|
|
26
|
-
expect(
|
|
27
|
+
expect(Object.hasOwn(command, EntityRuntimeKey)).toBe(true);
|
|
28
|
+
expect(command).toMatchObject({ child, index: -1, kind: AddNodeChildCommandKind, label: 'Add sprite', parent });
|
|
27
29
|
});
|
|
28
30
|
|
|
29
31
|
it('records an explicit insertion index', () => {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { addNodeChild, createNode, getNodeChildCount, getNodeChildIndex } from '@flighthq/node/contract';
|
|
2
3
|
import type { CommandBinding, NodeAny, SetNodePropertyCommand } from '@flighthq/types/contract';
|
|
3
4
|
import { SetNodePropertyCommandKind } from '@flighthq/types/contract';
|
|
@@ -49,7 +50,7 @@ describe('registerCommandBinding', () => {
|
|
|
49
50
|
execute: () => seen.push('execute'),
|
|
50
51
|
undo: () => seen.push('undo'),
|
|
51
52
|
});
|
|
52
|
-
executeCommand(history, { kind: 'acme.Custom', label: 'Custom' });
|
|
53
|
+
executeCommand(history, createEntity({ kind: 'acme.Custom', label: 'Custom' }));
|
|
53
54
|
undoCommand(history);
|
|
54
55
|
expect(seen).toEqual(['execute', 'undo']);
|
|
55
56
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { createNode, getNodeChildCount } from '@flighthq/node/contract';
|
|
2
3
|
import { connectSignal } from '@flighthq/signals/contract';
|
|
3
4
|
import type { Command, CommandHistory, NodeAny } from '@flighthq/types/contract';
|
|
@@ -77,7 +78,7 @@ describe('createCommandHistory', () => {
|
|
|
77
78
|
describe('executeCommand', () => {
|
|
78
79
|
it('refuses an unregistered kind rather than pushing an entry undo would skip', () => {
|
|
79
80
|
const history = createCommandHistory();
|
|
80
|
-
expect(executeCommand(history,
|
|
81
|
+
expect(executeCommand(history, command('acme.Unbound', 'Nope'))).toBe(false);
|
|
81
82
|
expect(getCommandHistoryEntries(history)).toHaveLength(0);
|
|
82
83
|
});
|
|
83
84
|
|
|
@@ -173,8 +174,8 @@ describe('undoCommand', () => {
|
|
|
173
174
|
execute: () => undefined,
|
|
174
175
|
undo: (command) => order.push(command.label),
|
|
175
176
|
});
|
|
176
|
-
executeCommand(history,
|
|
177
|
-
executeCommand(history,
|
|
177
|
+
executeCommand(history, command('test.Ordered', 'One'));
|
|
178
|
+
executeCommand(history, command('test.Ordered', 'Two'));
|
|
178
179
|
undoCommand(history);
|
|
179
180
|
undoCommand(history);
|
|
180
181
|
expect(order).toEqual(['Two', 'One']);
|
|
@@ -182,7 +183,11 @@ describe('undoCommand', () => {
|
|
|
182
183
|
});
|
|
183
184
|
|
|
184
185
|
function counter(label: string): Command {
|
|
185
|
-
return
|
|
186
|
+
return command('test.Counter', label);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function command(kind: string, label: string): Command {
|
|
190
|
+
return createEntity({ kind, label });
|
|
186
191
|
}
|
|
187
192
|
|
|
188
193
|
// A history bound to one inert kind, so stack behaviour can be tested without any graph mutation.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { connectSignal } from '@flighthq/signals/contract';
|
|
2
3
|
import { describe, expect, it } from 'vitest';
|
|
3
4
|
|
|
@@ -19,7 +20,7 @@ describe('enableCommandHistorySignals', () => {
|
|
|
19
20
|
let changes = 0;
|
|
20
21
|
connectSignal(enableCommandHistorySignals(history), () => changes++);
|
|
21
22
|
|
|
22
|
-
executeCommand(history, { kind: 'test.Counter', label: 'One' });
|
|
23
|
+
executeCommand(history, createEntity({ kind: 'test.Counter', label: 'One' }));
|
|
23
24
|
expect(changes).toBe(1);
|
|
24
25
|
undoCommand(history);
|
|
25
26
|
expect(changes).toBe(2);
|
|
@@ -30,7 +31,7 @@ describe('enableCommandHistorySignals', () => {
|
|
|
30
31
|
const history = createCommandHistory();
|
|
31
32
|
let changes = 0;
|
|
32
33
|
connectSignal(enableCommandHistorySignals(history), () => changes++);
|
|
33
|
-
executeCommand(history, { kind: 'acme.Unbound', label: 'Nope' });
|
|
34
|
+
executeCommand(history, createEntity({ kind: 'acme.Unbound', label: 'Nope' }));
|
|
34
35
|
expect(changes).toBe(0);
|
|
35
36
|
});
|
|
36
37
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
1
2
|
import { describe, expect, it } from 'vitest';
|
|
2
3
|
|
|
3
4
|
import { createCompositeCommand } from './command';
|
|
@@ -8,7 +9,7 @@ import { explainCommandDispatch } from './explainCommandDispatch';
|
|
|
8
9
|
describe('explainCommandDispatch', () => {
|
|
9
10
|
it('names the unregistered kind behind a refusal', () => {
|
|
10
11
|
const history = createCommandHistory();
|
|
11
|
-
expect(explainCommandDispatch(history, { kind: 'acme.Unbound', label: 'Nope' })).toEqual({
|
|
12
|
+
expect(explainCommandDispatch(history, createEntity({ kind: 'acme.Unbound', label: 'Nope' }))).toEqual({
|
|
12
13
|
missingKind: 'acme.Unbound',
|
|
13
14
|
resolved: false,
|
|
14
15
|
});
|
|
@@ -17,7 +18,7 @@ describe('explainCommandDispatch', () => {
|
|
|
17
18
|
it('resolves when the kind is registered', () => {
|
|
18
19
|
const history = createCommandHistory();
|
|
19
20
|
registerCommandBinding(history, 'acme.Bound', { execute: () => undefined, undo: () => undefined });
|
|
20
|
-
expect(explainCommandDispatch(history, { kind: 'acme.Bound', label: 'Yes' })).toEqual({
|
|
21
|
+
expect(explainCommandDispatch(history, createEntity({ kind: 'acme.Bound', label: 'Yes' }))).toEqual({
|
|
21
22
|
missingKind: null,
|
|
22
23
|
resolved: true,
|
|
23
24
|
});
|
|
@@ -28,7 +29,7 @@ describe('explainCommandDispatch', () => {
|
|
|
28
29
|
it('descends into a composite and names an unbound child kind', () => {
|
|
29
30
|
const history = createCommandHistory();
|
|
30
31
|
registerCommandBinding(history, 'CompositeCommand', { execute: () => undefined, undo: () => undefined });
|
|
31
|
-
const composite = createCompositeCommand('Group', [{ kind: 'acme.Unbound', label: 'Child' }]);
|
|
32
|
+
const composite = createCompositeCommand('Group', [createEntity({ kind: 'acme.Unbound', label: 'Child' })]);
|
|
32
33
|
expect(explainCommandDispatch(history, composite).missingKind).toBe('acme.Unbound');
|
|
33
34
|
});
|
|
34
35
|
|
|
@@ -36,7 +37,7 @@ describe('explainCommandDispatch', () => {
|
|
|
36
37
|
const history = createCommandHistory();
|
|
37
38
|
registerCommandBinding(history, 'CompositeCommand', { execute: () => undefined, undo: () => undefined });
|
|
38
39
|
registerCommandBinding(history, 'acme.Bound', { execute: () => undefined, undo: () => undefined });
|
|
39
|
-
const composite = createCompositeCommand('Group', [{ kind: 'acme.Bound', label: 'Child' }]);
|
|
40
|
+
const composite = createCompositeCommand('Group', [createEntity({ kind: 'acme.Bound', label: 'Child' })]);
|
|
40
41
|
expect(explainCommandDispatch(history, composite).resolved).toBe(true);
|
|
41
42
|
});
|
|
42
43
|
});
|