@poveste/shared 0.6.0 → 0.7.0
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/dist/codegen/const.d.ts +0 -1
- package/dist/codegen/index.d.ts +0 -1
- package/dist/codegen/serialize-js.d.ts +0 -1
- package/dist/codegen/util.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/setup.d.ts +0 -1
- package/dist/state.d.ts +0 -1
- package/dist/story.d.ts +0 -1
- package/dist/type-utils.d.ts +0 -1
- package/dist/types/command.d.ts +0 -1
- package/dist/types/config.d.ts +0 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/plugin.d.ts +0 -1
- package/dist/types/prompt.d.ts +0 -1
- package/dist/types/story.d.ts +0 -1
- package/package.json +14 -4
- package/dist/codegen/const.d.ts.map +0 -1
- package/dist/codegen/index.d.ts.map +0 -1
- package/dist/codegen/serialize-js.d.ts.map +0 -1
- package/dist/codegen/util.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/setup.d.ts.map +0 -1
- package/dist/state.d.ts.map +0 -1
- package/dist/story.d.ts.map +0 -1
- package/dist/type-utils.d.ts.map +0 -1
- package/dist/types/command.d.ts.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/prompt.d.ts.map +0 -1
- package/dist/types/story.d.ts.map +0 -1
- package/src/__tests__/setup.spec.ts +0 -60
- package/src/__tests__/state.spec.ts +0 -353
- package/src/codegen/const.ts +0 -17
- package/src/codegen/index.ts +0 -3
- package/src/codegen/serialize-js.ts +0 -143
- package/src/codegen/util.ts +0 -77
- package/src/index.ts +0 -6
- package/src/setup.ts +0 -29
- package/src/state.ts +0 -374
- package/src/story.ts +0 -10
- package/src/type-utils.ts +0 -1
- package/src/types/command.ts +0 -38
- package/src/types/config.ts +0 -288
- package/src/types/index.ts +0 -5
- package/src/types/plugin.ts +0 -135
- package/src/types/prompt.ts +0 -25
- package/src/types/story.ts +0 -221
- package/tsconfig.json +0 -51
package/dist/codegen/const.d.ts
CHANGED
package/dist/codegen/index.d.ts
CHANGED
package/dist/codegen/util.d.ts
CHANGED
|
@@ -8,4 +8,3 @@ interface AutoBuildingOject {
|
|
|
8
8
|
}
|
|
9
9
|
export declare function createAutoBuildingObject(format?: (key: string) => string, specialKeysHandler?: (target: any, p: string | symbol) => (() => unknown) | null, key?: string, depth?: number): AutoBuildingOject;
|
|
10
10
|
export {};
|
|
11
|
-
//# sourceMappingURL=util.d.ts.map
|
package/dist/index.d.ts
CHANGED
package/dist/setup.d.ts
CHANGED
|
@@ -10,4 +10,3 @@ export type SetupModule = Record<string, unknown> | undefined;
|
|
|
10
10
|
* materialized, so the lookup happens at runtime where it belongs.
|
|
11
11
|
*/
|
|
12
12
|
export declare function getSetupHook<T>(mod: SetupModule, name: string | string[]): T | undefined;
|
|
13
|
-
//# sourceMappingURL=setup.d.ts.map
|
package/dist/state.d.ts
CHANGED
package/dist/story.d.ts
CHANGED
package/dist/type-utils.d.ts
CHANGED
package/dist/types/command.d.ts
CHANGED
package/dist/types/config.d.ts
CHANGED
package/dist/types/index.d.ts
CHANGED
package/dist/types/plugin.d.ts
CHANGED
package/dist/types/prompt.d.ts
CHANGED
|
@@ -17,4 +17,3 @@ export interface SelectPrompt extends PromptBase<string> {
|
|
|
17
17
|
options: SelectPromptOption[] | ((search: string, answers: Record<string, any>) => Awaitable<SelectPromptOption[]>);
|
|
18
18
|
}
|
|
19
19
|
export type Prompt = TextPrompt | SelectPrompt;
|
|
20
|
-
//# sourceMappingURL=prompt.d.ts.map
|
package/dist/types/story.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,29 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poveste/shared",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.0",
|
|
5
5
|
"description": "Shared utilities for Poveste",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Sorin Gitlan"
|
|
8
8
|
},
|
|
9
9
|
"license": "MIT",
|
|
10
|
+
"homepage": "https://poveste.dev",
|
|
10
11
|
"repository": {
|
|
11
12
|
"url": "https://github.com/poveste-dev/poveste.git",
|
|
12
13
|
"type": "git",
|
|
13
14
|
"directory": "packages/poveste-shared"
|
|
14
15
|
},
|
|
16
|
+
"bugs": "https://github.com/poveste-dev/poveste/issues",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"poveste"
|
|
19
|
+
],
|
|
15
20
|
"publishConfig": {
|
|
16
21
|
"access": "public"
|
|
17
22
|
},
|
|
18
23
|
"sideEffects": false,
|
|
19
24
|
"exports": {
|
|
20
25
|
".": "./dist/index.js",
|
|
21
|
-
"./*": "./*"
|
|
22
|
-
"./client-node": "./dist/client/server/run.js"
|
|
26
|
+
"./*": "./*"
|
|
23
27
|
},
|
|
24
28
|
"main": "./dist/index.js",
|
|
25
29
|
"module": "./dist/index.js",
|
|
26
30
|
"types": "./dist/index.d.ts",
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
36
|
+
},
|
|
27
37
|
"peerDependencies": {
|
|
28
38
|
"vite": "^8.0.0"
|
|
29
39
|
},
|
|
@@ -34,7 +44,7 @@
|
|
|
34
44
|
"pathe": "^1.1.2",
|
|
35
45
|
"picocolors": "^1.1.1",
|
|
36
46
|
"unhead": "^3.1.0",
|
|
37
|
-
"@poveste/vendors": "^0.
|
|
47
|
+
"@poveste/vendors": "^0.7.0"
|
|
38
48
|
},
|
|
39
49
|
"devDependencies": {
|
|
40
50
|
"typescript": "5.6.3",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/codegen/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,UAgBxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-js.d.ts","sourceRoot":"","sources":["../../src/codegen/serialize-js.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CA4B9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/codegen/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,SAAI,YAEhD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,UAiBpC;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACjD,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,GAAG,CAAA;CACX;AAED,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,SAAK,EAAE,KAAK,SAAI,GAAG,iBAAiB,CA8CnM"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA"}
|
package/dist/setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;AAE7D;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAgBxF"}
|
package/dist/state.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,IAAI,KAAA,OAczB;AAED,wBAAgB,IAAI,CAAC,IAAI,KAAA,EAAE,IAAI,EAAE,MAAM,EAAE,MAQxC;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAsC7F;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,UAAQ,WAiEnE;AA2BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CA4B9E;AA4DD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB;IAI/B;;;;OAIG;eACQ,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAU3C;;;;;;;;;;OAUG;oBACa,GAAG;EAItB"}
|
package/dist/story.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../src/story.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UASjC,CAAA"}
|
package/dist/type-utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../src/type-utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/types/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,OAAQ,SAAQ,oBAAoB;IACnD,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAA;IAC/C,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAA;CACnF;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,oBAAoB,CAAA;AAE1D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,6BAA6B,CAAA;IACpC,YAAY,EAAE,KAAK,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,aAAa,CAC5B,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC7B,SAAQ,OAAO;IACf,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;IAC3C,eAAe,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAChE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/types/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,UAAU,CAAC,MAAM;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;CACpH;AAKD,MAAM,MAAM,MAAM,GAAG,UAAU,GAC3B,YAAY,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/types/story.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
-
import { getSetupHook } from '../setup.js'
|
|
3
|
-
|
|
4
|
-
afterEach(() => {
|
|
5
|
-
vi.restoreAllMocks()
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
describe('getSetupHook', () => {
|
|
9
|
-
it('reads a hook by a single name', () => {
|
|
10
|
-
const hook = () => {}
|
|
11
|
-
expect(getSetupHook({ setupVanilla: hook }, 'setupVanilla')).toBe(hook)
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
it('ignores a non-function export of the right name', () => {
|
|
15
|
-
expect(getSetupHook({ setupVanilla: 'not a function' }, 'setupVanilla')).toBeUndefined()
|
|
16
|
-
expect(getSetupHook({ setupVanilla: undefined }, 'setupVanilla')).toBeUndefined()
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
it('tolerates a missing module', () => {
|
|
20
|
-
expect(getSetupHook(undefined, 'setupVanilla')).toBeUndefined()
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it.each([
|
|
24
|
-
['the established name', 'setupVue3'],
|
|
25
|
-
['the unnumbered alias', 'setupVue'],
|
|
26
|
-
])('finds a hook exported under %s', (_label, name) => {
|
|
27
|
-
const hook = () => {}
|
|
28
|
-
expect(getSetupHook({ [name]: hook }, ['setupVue3', 'setupVue'])).toBe(hook)
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
it('returns undefined when none of the names are exported', () => {
|
|
32
|
-
expect(getSetupHook({ setupSvelte5: () => {} }, ['setupVue3', 'setupVue'])).toBeUndefined()
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
describe('when a setup file exports more than one alias', () => {
|
|
36
|
-
// The whole point of the alias is that existing files keep working, so the
|
|
37
|
-
// established name has to win regardless of the order they are declared in.
|
|
38
|
-
it('runs the earlier name in the list, not the first declared', () => {
|
|
39
|
-
const legacy = () => {}
|
|
40
|
-
const renamed = () => {}
|
|
41
|
-
expect(getSetupHook({ setupVue: renamed, setupVue3: legacy }, ['setupVue3', 'setupVue'])).toBe(legacy)
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
it('warns, naming which one actually runs', () => {
|
|
45
|
-
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
46
|
-
getSetupHook({ setupVue3: () => {}, setupVue: () => {} }, ['setupVue3', 'setupVue'])
|
|
47
|
-
|
|
48
|
-
expect(warn).toHaveBeenCalledOnce()
|
|
49
|
-
const message = warn.mock.calls[0][0] as string
|
|
50
|
-
expect(message).toContain('setupVue3, setupVue')
|
|
51
|
-
expect(message).toContain('Only setupVue3 runs')
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('stays quiet when only one is exported', () => {
|
|
55
|
-
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
56
|
-
getSetupHook({ setupVue: () => {} }, ['setupVue3', 'setupVue'])
|
|
57
|
-
expect(warn).not.toHaveBeenCalled()
|
|
58
|
-
})
|
|
59
|
-
})
|
|
60
|
-
})
|
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest'
|
|
2
|
-
import { applyState, createStateBaseline, diffState, isEquivalent } from '../state.js'
|
|
3
|
-
|
|
4
|
-
describe('isEquivalent', () => {
|
|
5
|
-
it('compares primitives the way Vue decides whether to trigger', () => {
|
|
6
|
-
expect(isEquivalent(1, 1)).toBe(true)
|
|
7
|
-
expect(isEquivalent('a', 'a')).toBe(true)
|
|
8
|
-
expect(isEquivalent(null, null)).toBe(true)
|
|
9
|
-
expect(isEquivalent(undefined, undefined)).toBe(true)
|
|
10
|
-
// `Object.is`, not `===`: matches Vue's `hasChanged` on both of its oddities.
|
|
11
|
-
expect(isEquivalent(Number.NaN, Number.NaN)).toBe(true)
|
|
12
|
-
expect(isEquivalent(0, -0)).toBe(false)
|
|
13
|
-
expect(isEquivalent(1, '1')).toBe(false)
|
|
14
|
-
expect(isEquivalent(0, false)).toBe(false)
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
it('recurses into plain objects and arrays', () => {
|
|
18
|
-
expect(isEquivalent({ a: 1, b: { c: [1, 2] } }, { a: 1, b: { c: [1, 2] } })).toBe(true)
|
|
19
|
-
expect(isEquivalent({ a: 1, b: { c: [1, 2] } }, { a: 1, b: { c: [1, 3] } })).toBe(false)
|
|
20
|
-
expect(isEquivalent([1, 2], [1, 2, 3])).toBe(false)
|
|
21
|
-
expect(isEquivalent({ a: 1 }, { a: 1, b: 2 })).toBe(false)
|
|
22
|
-
expect(isEquivalent({ a: 1, b: 2 }, { a: 1 })).toBe(false)
|
|
23
|
-
// Same key count, different keys.
|
|
24
|
-
expect(isEquivalent({ a: 1 }, { b: 1 })).toBe(false)
|
|
25
|
-
// An array and an object are never equivalent, however similar.
|
|
26
|
-
expect(isEquivalent([], {})).toBe(false)
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it('refuses to compare anything with a prototype of its own', () => {
|
|
30
|
-
// Both would report an empty key list, so a structural walk would call them
|
|
31
|
-
// equal. Reporting "different" makes the caller write, which is what it did
|
|
32
|
-
// before this guard existed.
|
|
33
|
-
expect(isEquivalent(new Date(0), new Date(1))).toBe(false)
|
|
34
|
-
expect(isEquivalent(new Date(0), new Date(0))).toBe(false)
|
|
35
|
-
expect(isEquivalent(new Map([['a', 1]]), new Map())).toBe(false)
|
|
36
|
-
expect(isEquivalent(new Set([1]), new Set([2]))).toBe(false)
|
|
37
|
-
expect(isEquivalent(/a/, /b/)).toBe(false)
|
|
38
|
-
|
|
39
|
-
class Point { constructor(public x = 1) {} }
|
|
40
|
-
expect(isEquivalent(new Point(), new Point())).toBe(false)
|
|
41
|
-
// ...but the identical instance is still identical.
|
|
42
|
-
const point = new Point()
|
|
43
|
-
expect(isEquivalent(point, point)).toBe(true)
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
it('terminates on cyclic state', () => {
|
|
47
|
-
const a: any = { name: 'a' }
|
|
48
|
-
a.self = a
|
|
49
|
-
const b: any = { name: 'a' }
|
|
50
|
-
b.self = b
|
|
51
|
-
|
|
52
|
-
expect(isEquivalent(a, b)).toBe(true)
|
|
53
|
-
|
|
54
|
-
const c: any = { name: 'c' }
|
|
55
|
-
c.self = c
|
|
56
|
-
expect(isEquivalent(a, c)).toBe(false)
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
it('handles objects created without a prototype', () => {
|
|
60
|
-
const bare = Object.create(null)
|
|
61
|
-
bare.a = 1
|
|
62
|
-
expect(isEquivalent(bare, { a: 1 })).toBe(true)
|
|
63
|
-
})
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
describe('applyState', () => {
|
|
67
|
-
it('copies values across', () => {
|
|
68
|
-
const target: any = { a: 1 }
|
|
69
|
-
applyState(target, { a: 2, b: 3 })
|
|
70
|
-
expect(target).toEqual({ a: 2, b: 3 })
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
it('merges into an existing object rather than replacing it', () => {
|
|
74
|
-
const nested = { a: 1, b: 2 }
|
|
75
|
-
const target: any = { nested }
|
|
76
|
-
applyState(target, { nested: { a: 9 } })
|
|
77
|
-
// Same object, updated in place — the sandbox bridge depends on this.
|
|
78
|
-
expect(target.nested).toBe(nested)
|
|
79
|
-
expect(target.nested).toEqual({ a: 9, b: 2 })
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
it('replaces the object when override is set', () => {
|
|
83
|
-
const nested = { a: 1, b: 2 }
|
|
84
|
-
const target: any = { nested }
|
|
85
|
-
applyState(target, { nested: { a: 9 } }, true)
|
|
86
|
-
expect(target.nested).not.toBe(nested)
|
|
87
|
-
expect(target.nested).toEqual({ a: 9 })
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
it('leaves identity alone when the incoming value is equivalent', () => {
|
|
91
|
-
// The behaviour #95 turns on. `toRawDeep` rebuilds every object on its way
|
|
92
|
-
// through the state sync, so without this the assignment below would land a
|
|
93
|
-
// new identity over an equal one and trigger every watcher on it.
|
|
94
|
-
const list = [1, 2, 3]
|
|
95
|
-
const nested = { a: 1 }
|
|
96
|
-
const target: any = { list, nested, count: 0 }
|
|
97
|
-
|
|
98
|
-
applyState(target, { list: [1, 2, 3], nested: { a: 1 }, count: 0 })
|
|
99
|
-
|
|
100
|
-
expect(target.list).toBe(list)
|
|
101
|
-
expect(target.nested).toBe(nested)
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
it('creates a key the target does not have, even when the value is undefined', () => {
|
|
105
|
-
// `undefined` is equivalent to `undefined`, so the skip has to check that
|
|
106
|
-
// the key exists before it trusts that. A story is allowed to declare its
|
|
107
|
-
// shape upfront — `initState: () => ({ text: 'hi', pending: undefined })` —
|
|
108
|
-
// and the controls panel lists the keys the state actually has.
|
|
109
|
-
const target: any = {}
|
|
110
|
-
applyState(target, { text: 'hi', pending: undefined })
|
|
111
|
-
|
|
112
|
-
expect(Object.keys(target)).toEqual(['text', 'pending'])
|
|
113
|
-
expect('pending' in target).toBe(true)
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
it('still skips an existing key whose value is already undefined', () => {
|
|
117
|
-
const target: any = { pending: undefined }
|
|
118
|
-
expect(applyState(target, { pending: undefined })).toBe(false)
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
it('still writes when only part of an equivalent-looking value differs', () => {
|
|
122
|
-
const target: any = { nested: { a: 1, b: 2 } }
|
|
123
|
-
applyState(target, { nested: { a: 1, b: 3 } })
|
|
124
|
-
expect(target.nested).toEqual({ a: 1, b: 3 })
|
|
125
|
-
})
|
|
126
|
-
|
|
127
|
-
it('replaces an object with a value it cannot merge into it', () => {
|
|
128
|
-
// The merge branch used to be chosen from the *target*'s type alone, so an
|
|
129
|
-
// incoming primitive met `for (const nested in 5)` — no iterations, nothing
|
|
130
|
-
// written, and the write silently dropped. A story swapping an object for a
|
|
131
|
-
// scalar is ordinary; a sync that records the write as done while the far
|
|
132
|
-
// side never got it then reverts that edit on the next pass.
|
|
133
|
-
const target: any = { config: { a: 1 }, list: { a: 1 } }
|
|
134
|
-
|
|
135
|
-
expect(applyState(target, { config: 5 })).toBe(true)
|
|
136
|
-
expect(target.config).toBe(5)
|
|
137
|
-
|
|
138
|
-
expect(applyState(target, { list: [1, 2] })).toBe(true)
|
|
139
|
-
expect(target.list).toEqual([1, 2])
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
it('swallows writes to read-only properties', () => {
|
|
143
|
-
const target: any = {}
|
|
144
|
-
Object.defineProperty(target, 'ro', { get: () => 1, enumerable: true })
|
|
145
|
-
expect(() => applyState(target, { ro: 2 })).not.toThrow()
|
|
146
|
-
expect(target.ro).toBe(1)
|
|
147
|
-
})
|
|
148
|
-
|
|
149
|
-
it('cannot express a key removal', () => {
|
|
150
|
-
// Not a wish list — every state sync in the repo is built around knowing
|
|
151
|
-
// this. `applyState` iterates the incoming keys, so a key the source has
|
|
152
|
-
// dropped is simply never visited and survives on the target.
|
|
153
|
-
const target: any = { a: 1, gone: 2 }
|
|
154
|
-
applyState(target, { a: 1 })
|
|
155
|
-
expect(target.gone).toBe(2)
|
|
156
|
-
})
|
|
157
|
-
})
|
|
158
|
-
|
|
159
|
-
// `plugin-svelte` and the sandbox bridge hold a flag meaning "ignore the next
|
|
160
|
-
// firing, it is the echo of my own write", and clear it when that firing
|
|
161
|
-
// arrives. This return value is what tells them whether a firing is coming at
|
|
162
|
-
// all. Report `true` when nothing moved and the flag stays set forever,
|
|
163
|
-
// swallowing the next real edit — which is #95. (`plugin-vue` has since dropped
|
|
164
|
-
// the flag for a baseline; see `createStateBaseline` below.)
|
|
165
|
-
describe('applyState reporting whether it wrote', () => {
|
|
166
|
-
it('reports a write', () => {
|
|
167
|
-
expect(applyState({ a: 1 }, { a: 2 })).toBe(true)
|
|
168
|
-
expect(applyState({}, { a: 1 })).toBe(true)
|
|
169
|
-
expect(applyState({ list: [1] }, { list: [1, 2] })).toBe(true)
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
it('reports nothing for a state that already matches', () => {
|
|
173
|
-
expect(applyState({ a: 1 }, { a: 1 })).toBe(false)
|
|
174
|
-
expect(applyState({ nested: { a: 1 } }, { nested: { a: 1 } })).toBe(false)
|
|
175
|
-
expect(applyState({ list: [1, 2] }, { list: [1, 2] })).toBe(false)
|
|
176
|
-
expect(applyState({ a: 1 }, {})).toBe(false)
|
|
177
|
-
})
|
|
178
|
-
|
|
179
|
-
it('reports nothing when a merge only drops keys it cannot drop', () => {
|
|
180
|
-
// The exact shape of #95, and the case that makes the naive answer wrong.
|
|
181
|
-
// `{ a: 1, b: 2 }` and `{ a: 1 }` are not equivalent, so this reaches the
|
|
182
|
-
// merge — but merging leaves the target byte for byte as it was, because
|
|
183
|
-
// the only difference is a key the merge has no way to remove.
|
|
184
|
-
const target: any = { items: { a: 1, b: 2 } }
|
|
185
|
-
expect(applyState(target, { items: { a: 1 } })).toBe(false)
|
|
186
|
-
expect(target.items).toEqual({ a: 1, b: 2 })
|
|
187
|
-
})
|
|
188
|
-
|
|
189
|
-
it('reports a write when a merge does change something', () => {
|
|
190
|
-
const target: any = { items: { a: 1, b: 2 } }
|
|
191
|
-
expect(applyState(target, { items: { a: 9 } })).toBe(true)
|
|
192
|
-
expect(target.items).toEqual({ a: 9, b: 2 })
|
|
193
|
-
})
|
|
194
|
-
|
|
195
|
-
it('reports a write it could not actually make', () => {
|
|
196
|
-
// Known and deliberately left alone: a setter that silently drops the value
|
|
197
|
-
// — Vue's read-only `computed` is the one that occurs in practice — still
|
|
198
|
-
// counts. Getting this right means reading back after every write, and the
|
|
199
|
-
// consequence of being wrong here is the pre-existing behaviour rather than
|
|
200
|
-
// a new failure.
|
|
201
|
-
const target: any = {}
|
|
202
|
-
Object.defineProperty(target, 'ro', { get: () => 1, enumerable: true, configurable: true })
|
|
203
|
-
expect(applyState(target, { ro: 2 })).toBe(true)
|
|
204
|
-
})
|
|
205
|
-
})
|
|
206
|
-
|
|
207
|
-
describe('diffState', () => {
|
|
208
|
-
it('reports nothing when the two match', () => {
|
|
209
|
-
expect(diffState({ a: 1 }, { a: 1 })).toBeNull()
|
|
210
|
-
expect(diffState({ nested: { a: 1 } }, { nested: { a: 1 } })).toBeNull()
|
|
211
|
-
expect(diffState({ list: [1, 2] }, { list: [1, 2] })).toBeNull()
|
|
212
|
-
})
|
|
213
|
-
|
|
214
|
-
it('reports only the keys that moved', () => {
|
|
215
|
-
expect(diffState({ a: 1, b: 2 }, { a: 1, b: 3 })).toEqual({ b: 3 })
|
|
216
|
-
})
|
|
217
|
-
|
|
218
|
-
it('reports a key the baseline has never seen', () => {
|
|
219
|
-
expect(diffState({}, { a: 1 })).toEqual({ a: 1 })
|
|
220
|
-
expect(diffState({}, { a: undefined })).toEqual({ a: undefined })
|
|
221
|
-
})
|
|
222
|
-
|
|
223
|
-
it('narrows a nested object to its own changed keys', () => {
|
|
224
|
-
// The point of the whole exercise: what is not sent cannot be clobbered, so
|
|
225
|
-
// the far side keeps its concurrent edit to `b`.
|
|
226
|
-
expect(diffState({ items: { a: 1, b: 2 } }, { items: { a: 9, b: 2 } })).toEqual({ items: { a: 9 } })
|
|
227
|
-
})
|
|
228
|
-
|
|
229
|
-
it('narrows one level and no further, which is as far as applyState merges', () => {
|
|
230
|
-
// `applyState` assigns what it finds at depth two, so a narrowed object there
|
|
231
|
-
// would land as the whole value and drop `y`.
|
|
232
|
-
expect(diffState({ deep: { inner: { x: 1, y: 2 } } }, { deep: { inner: { x: 9, y: 2 } } }))
|
|
233
|
-
.toEqual({ deep: { inner: { x: 9, y: 2 } } })
|
|
234
|
-
})
|
|
235
|
-
|
|
236
|
-
it('carries an `_h` key whole, because applyState replaces rather than merges it', () => {
|
|
237
|
-
// The sandbox bridge needs those replaced outright, so `applyState` sends
|
|
238
|
-
// them down the assignment branch. Narrowing one would empty it.
|
|
239
|
-
expect(diffState({ _hPropState: { a: 1, b: 2 } }, { _hPropState: { a: 9, b: 2 } }))
|
|
240
|
-
.toEqual({ _hPropState: { a: 9, b: 2 } })
|
|
241
|
-
})
|
|
242
|
-
|
|
243
|
-
it('carries an array whole', () => {
|
|
244
|
-
// `applyState` assigns arrays rather than merging them, so a partial one
|
|
245
|
-
// would be read as the entire new value.
|
|
246
|
-
expect(diffState({ list: [1, 2] }, { list: [1, 2, 3] })).toEqual({ list: [1, 2, 3] })
|
|
247
|
-
})
|
|
248
|
-
|
|
249
|
-
it('carries a value whole when the two sides are not both plain objects', () => {
|
|
250
|
-
expect(diffState({ a: 1 }, { a: { b: 2 } })).toEqual({ a: { b: 2 } })
|
|
251
|
-
expect(diffState({ a: { b: 2 } }, { a: 1 })).toEqual({ a: 1 })
|
|
252
|
-
})
|
|
253
|
-
|
|
254
|
-
it('ignores a removal, at any depth', () => {
|
|
255
|
-
// Deliberate, and the reason the baseline stays usable. `applyState` cannot
|
|
256
|
-
// express a removal, so reporting one produces a write that changes nothing
|
|
257
|
-
// — and one the baseline would go on reporting on every later pass.
|
|
258
|
-
expect(diffState({ a: 1, gone: 2 }, { a: 1 })).toBeNull()
|
|
259
|
-
expect(diffState({ items: { a: 1, gone: 2 } }, { items: { a: 1 } })).toBeNull()
|
|
260
|
-
})
|
|
261
|
-
})
|
|
262
|
-
|
|
263
|
-
describe('createStateBaseline', () => {
|
|
264
|
-
it('reports everything the first time, since it has agreed to nothing yet', () => {
|
|
265
|
-
const baseline = createStateBaseline()
|
|
266
|
-
expect(baseline.take({ a: 1, b: 2 })).toEqual({ a: 1, b: 2 })
|
|
267
|
-
})
|
|
268
|
-
|
|
269
|
-
it('reports nothing for a repeat, which is what makes an echo recognisable', () => {
|
|
270
|
-
const baseline = createStateBaseline()
|
|
271
|
-
baseline.take({ a: 1 })
|
|
272
|
-
expect(baseline.take({ a: 1 })).toBeNull()
|
|
273
|
-
})
|
|
274
|
-
|
|
275
|
-
it('reports each side only its own change', () => {
|
|
276
|
-
// #96 in miniature. Both sides changed a different key in the same tick, so
|
|
277
|
-
// each holds one fresh value and one stale one — and is asked about the
|
|
278
|
-
// fresh one alone.
|
|
279
|
-
const baseline = createStateBaseline()
|
|
280
|
-
baseline.take({ a: 0, b: 0 })
|
|
281
|
-
|
|
282
|
-
expect(baseline.take({ a: 1, b: 0 })).toEqual({ a: 1 })
|
|
283
|
-
expect(baseline.take({ a: 1, b: 1 })).toEqual({ b: 1 })
|
|
284
|
-
expect(baseline.take({ a: 1, b: 1 })).toBeNull()
|
|
285
|
-
})
|
|
286
|
-
|
|
287
|
-
it('stops reporting an `_h` key once the far side holds the shrunk value', () => {
|
|
288
|
-
// `_h` keys are replaced whole rather than merged, so the baseline has to
|
|
289
|
-
// record them the same way. Merging instead leaves behind a nested key the
|
|
290
|
-
// real state has dropped, and the baseline can never match again — every
|
|
291
|
-
// later pass reports the same phantom change, forever. Every Vue story
|
|
292
|
-
// carries `_hPropState`, so "forever" means every story whose auto-props
|
|
293
|
-
// ever shrink.
|
|
294
|
-
const baseline = createStateBaseline()
|
|
295
|
-
baseline.take({ _hPropState: { a: 1, b: 2 } })
|
|
296
|
-
|
|
297
|
-
expect(baseline.take({ _hPropState: { a: 9 } })).toEqual({ _hPropState: { a: 9 } })
|
|
298
|
-
expect(baseline.take({ _hPropState: { a: 9 } })).toBeNull()
|
|
299
|
-
})
|
|
300
|
-
|
|
301
|
-
it('keeps a key the far side removed rather than replaying it', () => {
|
|
302
|
-
const baseline = createStateBaseline()
|
|
303
|
-
baseline.take({ a: 1, gone: 2 })
|
|
304
|
-
|
|
305
|
-
expect(baseline.take({ a: 1 })).toBeNull()
|
|
306
|
-
// Still agreed as far as the side that kept it is concerned, so it does not
|
|
307
|
-
// come back the next time that side is asked.
|
|
308
|
-
expect(baseline.take({ a: 1, gone: 2 })).toBeNull()
|
|
309
|
-
})
|
|
310
|
-
|
|
311
|
-
it('does not keep a reference to what it was handed', () => {
|
|
312
|
-
// The caller passes the same object on to `applyState`, which assigns it
|
|
313
|
-
// into a reactive state. Sharing it would let a later write land in the
|
|
314
|
-
// baseline too, and an edit the baseline already knows is an edit dropped.
|
|
315
|
-
const baseline = createStateBaseline()
|
|
316
|
-
const next: any = { list: [1, 2], nested: { a: 1 } }
|
|
317
|
-
baseline.take(next)
|
|
318
|
-
|
|
319
|
-
next.list.push(3)
|
|
320
|
-
next.nested.a = 9
|
|
321
|
-
|
|
322
|
-
expect(baseline.take({ list: [1, 2, 3], nested: { a: 9 } }))
|
|
323
|
-
.toEqual({ list: [1, 2, 3], nested: { a: 9 } })
|
|
324
|
-
})
|
|
325
|
-
|
|
326
|
-
it('survives a cyclic state', () => {
|
|
327
|
-
const baseline = createStateBaseline()
|
|
328
|
-
const next: any = { name: 'a' }
|
|
329
|
-
next.self = next
|
|
330
|
-
|
|
331
|
-
expect(() => baseline.take(next)).not.toThrow()
|
|
332
|
-
expect(baseline.take(next)).toBeNull()
|
|
333
|
-
})
|
|
334
|
-
|
|
335
|
-
it('survives a cyclic state that changes', () => {
|
|
336
|
-
// The harder half. `isEquivalent` short-circuits an unchanged cycle before
|
|
337
|
-
// the diff ever recurses; a changed one gets past it, and then meets the
|
|
338
|
-
// same pair on every lap.
|
|
339
|
-
const baseline = createStateBaseline()
|
|
340
|
-
const first: any = { name: 'a' }
|
|
341
|
-
first.self = first
|
|
342
|
-
baseline.take(first)
|
|
343
|
-
|
|
344
|
-
const second: any = { name: 'b' }
|
|
345
|
-
second.self = second
|
|
346
|
-
|
|
347
|
-
// `self.name` did genuinely move, so it is reported at that path too. The
|
|
348
|
-
// walk terminates because it stops after one level, not because a cycle is
|
|
349
|
-
// detected — below that the value is carried whole, cycle and all.
|
|
350
|
-
expect(baseline.take(second)).toEqual({ name: 'b', self: { name: 'b', self: second } })
|
|
351
|
-
expect(baseline.take(second)).toBeNull()
|
|
352
|
-
})
|
|
353
|
-
})
|