sh3-core 0.20.2 → 0.20.3
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/BrandSlot.svelte +2 -2
- package/dist/actions/ctx-actions.svelte.test.js +2 -2
- package/dist/artifact.d.ts +2 -0
- package/dist/boot/satellitePayload.d.ts +2 -0
- package/dist/boot/satellitePayload.test.js +19 -0
- package/dist/build.d.ts +7 -1
- package/dist/build.js +22 -3
- package/dist/build.test.js +27 -1
- package/dist/createShell.js +34 -9
- package/dist/documents/browse.d.ts +20 -0
- package/dist/documents/browse.js +35 -0
- package/dist/documents/browse.test.js +125 -0
- package/dist/documents/config.d.ts +0 -4
- package/dist/documents/config.js +0 -8
- package/dist/documents/http-backend.d.ts +5 -0
- package/dist/documents/http-backend.js +25 -0
- package/dist/documents/http-backend.test.js +66 -0
- package/dist/documents/index.d.ts +1 -1
- package/dist/documents/index.js +1 -1
- package/dist/documents/types.d.ts +11 -0
- package/dist/host-entry.d.ts +1 -1
- package/dist/host-entry.js +1 -1
- package/dist/host.d.ts +1 -1
- package/dist/host.js +1 -1
- package/dist/layout/slotHostPool.svelte.js +2 -2
- package/dist/overlays/FloatFrame.svelte +1 -0
- package/dist/projects/session-state.svelte.d.ts +3 -0
- package/dist/projects/session-state.svelte.js +25 -0
- package/dist/projects/session-state.test.js +43 -2
- package/dist/projects-shard/ProjectsSection.svelte +14 -18
- package/dist/runtime/runVerb-shell.test.js +2 -2
- package/dist/runtime/runVerb.test.js +2 -2
- package/dist/sh3core-shard/appActions.js +5 -2
- package/dist/shards/activate-browse.test.js +2 -2
- package/dist/shards/activate-contributions.test.js +2 -2
- package/dist/shards/activate-error-isolation.test.js +3 -3
- package/dist/shards/activate-on-key-revoked.test.js +2 -2
- package/dist/shards/activate-runtime.test.js +2 -2
- package/dist/shards/activate.svelte.js +4 -4
- package/dist/shards/ctx-fetch.test.js +4 -4
- package/dist/shell-shard/verbs/xfer.js +13 -27
- package/dist/shell-shard/verbs/xfer.test.js +36 -25
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, vi } from 'vitest';
|
|
2
2
|
import { xferVerb } from './xfer';
|
|
3
3
|
function makeDocs(overrides = {}) {
|
|
4
|
-
return Object.assign({ listDocuments: vi.fn(async () => []), listShards: vi.fn(async () => []), watchDocuments: vi.fn(() => () => { }), transferToScope: vi.fn(async () => { }) }, overrides);
|
|
4
|
+
return Object.assign({ listDocuments: vi.fn(async () => []), listShards: vi.fn(async () => []), watchDocuments: vi.fn(() => () => { }), transferToScope: vi.fn(async () => { }), listDocumentsIn: vi.fn(async () => []), transferBetweenScopes: vi.fn(async () => { }) }, overrides);
|
|
5
5
|
}
|
|
6
6
|
function makeSh3(scope) {
|
|
7
7
|
return {
|
|
@@ -32,13 +32,15 @@ describe('xfer verb', () => {
|
|
|
32
32
|
const err = pushed.find((e) => e.kind === 'status' && e.level === 'error');
|
|
33
33
|
expect(err).toBeDefined();
|
|
34
34
|
});
|
|
35
|
-
it('
|
|
35
|
+
it('works from personal (non-project) scope', async () => {
|
|
36
|
+
const transferBetweenScopes = vi.fn(async () => { });
|
|
37
|
+
const docs = makeDocs({ transferBetweenScopes });
|
|
36
38
|
const sh3 = makeSh3(personalScope);
|
|
37
|
-
const { ctx, pushed } = makeCtx(
|
|
38
|
-
await xferVerb.run(ctx, ['notes/draft.md', '@
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
expect(
|
|
39
|
+
const { ctx, pushed } = makeCtx(docs, sh3);
|
|
40
|
+
await xferVerb.run(ctx, ['@me:notes/draft.md', '@project-proj-abc:notes/draft.md']);
|
|
41
|
+
expect(transferBetweenScopes).toHaveBeenCalledWith('user-me', 'notes', 'draft.md', 'proj-abc', 'notes', 'draft.md', expect.objectContaining({ delete: true }));
|
|
42
|
+
const ok = pushed.find((e) => e.kind === 'status' && e.level === 'info');
|
|
43
|
+
expect(ok).toBeDefined();
|
|
42
44
|
});
|
|
43
45
|
it('emits usage error when fewer than two args', async () => {
|
|
44
46
|
const sh3 = makeSh3(projectScope);
|
|
@@ -47,50 +49,59 @@ describe('xfer verb', () => {
|
|
|
47
49
|
const err = pushed.find((e) => e.kind === 'status' && e.level === 'error');
|
|
48
50
|
expect(err.text).toMatch(/usage/i);
|
|
49
51
|
});
|
|
50
|
-
it('moves
|
|
51
|
-
const
|
|
52
|
-
const docs = makeDocs({
|
|
52
|
+
it('moves a doc from project to personal scope', async () => {
|
|
53
|
+
const transferBetweenScopes = vi.fn(async () => { });
|
|
54
|
+
const docs = makeDocs({ transferBetweenScopes });
|
|
53
55
|
const sh3 = makeSh3(projectScope);
|
|
54
56
|
const { ctx, pushed } = makeCtx(docs, sh3);
|
|
55
57
|
await xferVerb.run(ctx, ['@project-proj-abc:notes/draft.md', '@me:notes/draft.md']);
|
|
56
|
-
expect(
|
|
58
|
+
expect(transferBetweenScopes).toHaveBeenCalledWith('proj-abc', 'notes', 'draft.md', 'user-me', 'notes', 'draft.md', expect.objectContaining({ delete: true }));
|
|
57
59
|
const ok = pushed.find((e) => e.kind === 'status' && e.level === 'info');
|
|
58
60
|
expect(ok).toBeDefined();
|
|
59
61
|
});
|
|
60
62
|
it('-C flag copies without deleting source', async () => {
|
|
61
|
-
const
|
|
62
|
-
const docs = makeDocs({
|
|
63
|
+
const transferBetweenScopes = vi.fn(async () => { });
|
|
64
|
+
const docs = makeDocs({ transferBetweenScopes });
|
|
63
65
|
const sh3 = makeSh3(projectScope);
|
|
64
66
|
const { ctx } = makeCtx(docs, sh3);
|
|
65
67
|
await xferVerb.run(ctx, ['-C', '@project-proj-abc:notes/draft.md', '@me:notes/draft.md']);
|
|
66
|
-
expect(
|
|
68
|
+
expect(transferBetweenScopes).toHaveBeenCalledWith('proj-abc', 'notes', 'draft.md', 'user-me', 'notes', 'draft.md', expect.objectContaining({ delete: false }));
|
|
67
69
|
});
|
|
68
|
-
it('
|
|
69
|
-
const
|
|
70
|
-
const docs = makeDocs({
|
|
70
|
+
it('allows @me as source when project scope is active', async () => {
|
|
71
|
+
const transferBetweenScopes = vi.fn(async () => { });
|
|
72
|
+
const docs = makeDocs({ transferBetweenScopes });
|
|
71
73
|
const sh3 = makeSh3(projectScope);
|
|
72
74
|
const { ctx, pushed } = makeCtx(docs, sh3);
|
|
73
|
-
// @me src while project is active → src tenant differs from active
|
|
74
75
|
await xferVerb.run(ctx, ['@me:notes/draft.md', '@project-proj-abc:notes/draft.md']);
|
|
75
|
-
expect(
|
|
76
|
+
expect(transferBetweenScopes).toHaveBeenCalledWith('user-me', 'notes', 'draft.md', 'proj-abc', 'notes', 'draft.md', expect.objectContaining({ delete: true }));
|
|
77
|
+
const ok = pushed.find((e) => e.kind === 'status' && e.level === 'info');
|
|
78
|
+
expect(ok).toBeDefined();
|
|
79
|
+
});
|
|
80
|
+
it('emits error when source and destination are identical', async () => {
|
|
81
|
+
const transferBetweenScopes = vi.fn(async () => { });
|
|
82
|
+
const docs = makeDocs({ transferBetweenScopes });
|
|
83
|
+
const sh3 = makeSh3(projectScope);
|
|
84
|
+
const { ctx, pushed } = makeCtx(docs, sh3);
|
|
85
|
+
await xferVerb.run(ctx, ['@project-proj-abc:notes/draft.md', '@project-proj-abc:notes/draft.md']);
|
|
86
|
+
expect(transferBetweenScopes).not.toHaveBeenCalled();
|
|
76
87
|
const err = pushed.find((e) => e.kind === 'status' && e.level === 'error');
|
|
77
|
-
expect(err).
|
|
88
|
+
expect(err.text).toMatch(/same/i);
|
|
78
89
|
});
|
|
79
90
|
it('-R flag recurses over all docs matching src prefix', async () => {
|
|
80
|
-
const
|
|
91
|
+
const transferBetweenScopes = vi.fn(async () => { });
|
|
81
92
|
const allDocs = [
|
|
82
93
|
{ shardId: 'notes', path: 'ideas/a.md', size: 1, lastModified: 0 },
|
|
83
94
|
{ shardId: 'notes', path: 'ideas/b.md', size: 1, lastModified: 0 },
|
|
84
95
|
{ shardId: 'notes', path: 'other.md', size: 1, lastModified: 0 },
|
|
85
96
|
];
|
|
86
97
|
const docs = makeDocs({
|
|
87
|
-
|
|
88
|
-
|
|
98
|
+
transferBetweenScopes,
|
|
99
|
+
listDocumentsIn: vi.fn(async () => allDocs),
|
|
89
100
|
});
|
|
90
101
|
const sh3 = makeSh3(projectScope);
|
|
91
102
|
const { ctx } = makeCtx(docs, sh3);
|
|
92
103
|
await xferVerb.run(ctx, ['-R', '@project-proj-abc:notes/ideas', '@me:notes/ideas']);
|
|
93
|
-
|
|
94
|
-
expect(
|
|
104
|
+
expect(transferBetweenScopes).toHaveBeenCalledTimes(2);
|
|
105
|
+
expect(transferBetweenScopes).toHaveBeenCalledWith('proj-abc', 'notes', 'ideas/a.md', 'user-me', 'notes', 'ideas/a.md', expect.objectContaining({ delete: true }));
|
|
95
106
|
});
|
|
96
107
|
});
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** Auto-generated from package.json — do not edit manually. */
|
|
2
|
-
export declare const VERSION = "0.20.
|
|
2
|
+
export declare const VERSION = "0.20.3";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** Auto-generated from package.json — do not edit manually. */
|
|
2
|
-
export const VERSION = '0.20.
|
|
2
|
+
export const VERSION = '0.20.3';
|