sh3-core 0.20.1 → 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/backends.d.ts +12 -0
- package/dist/documents/backends.js +230 -3
- package/dist/documents/backends.test.js +147 -1
- 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 +2 -4
- package/dist/documents/config.js +3 -7
- package/dist/documents/handle.js +40 -0
- package/dist/documents/handle.test.js +88 -1
- package/dist/documents/http-backend.d.ts +11 -0
- package/dist/documents/http-backend.js +86 -0
- package/dist/documents/http-backend.test.js +117 -1
- package/dist/documents/index.d.ts +1 -1
- package/dist/documents/index.js +1 -1
- package/dist/documents/picker-api.test.js +2 -2
- package/dist/documents/types.d.ts +87 -14
- package/dist/documents/types.js +4 -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/primitives/widgets/DocumentFilePicker.d.ts +6 -2
- package/dist/primitives/widgets/DocumentFilePicker.js +12 -5
- package/dist/primitives/widgets/DocumentFilePicker.svelte +23 -1
- package/dist/primitives/widgets/DocumentFilePicker.svelte.d.ts +14 -0
- package/dist/primitives/widgets/DocumentFilePicker.test.d.ts +1 -0
- package/dist/primitives/widgets/DocumentFilePicker.test.js +33 -0
- package/dist/primitives/widgets/DocumentOpener.svelte +20 -0
- package/dist/primitives/widgets/DocumentOpener.svelte.d.ts +14 -0
- package/dist/primitives/widgets/DocumentSaver.svelte +17 -0
- package/dist/primitives/widgets/DocumentSaver.svelte.d.ts +13 -0
- package/dist/primitives/widgets/_DocumentBrowser.svelte +414 -27
- package/dist/primitives/widgets/_DocumentBrowser.svelte.d.ts +12 -0
- package/dist/primitives/widgets/_DocumentBrowser.svelte.test.d.ts +1 -0
- package/dist/primitives/widgets/_DocumentBrowser.svelte.test.js +277 -0
- package/dist/primitives/widgets/_FolderConfirmDelete.svelte +57 -0
- package/dist/primitives/widgets/_FolderConfirmDelete.svelte.d.ts +12 -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/sh3Api/headless.js +10 -0
- 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 +5 -5
- package/dist/shards/ctx-fetch.test.js +4 -4
- package/dist/shell-shard/Terminal.svelte +4 -1
- package/dist/shell-shard/Terminal.svelte.d.ts +2 -0
- package/dist/shell-shard/dispatch.d.ts +2 -0
- package/dist/shell-shard/dispatch.js +2 -0
- package/dist/shell-shard/manifest.js +7 -1
- package/dist/shell-shard/shellShard.svelte.js +1 -1
- package/dist/shell-shard/verbs/cat.d.ts +2 -0
- package/dist/shell-shard/verbs/cat.js +35 -0
- package/dist/shell-shard/verbs/cat.test.d.ts +1 -0
- package/dist/shell-shard/verbs/cat.test.js +49 -0
- package/dist/shell-shard/verbs/index.js +12 -0
- package/dist/shell-shard/verbs/ls.d.ts +2 -0
- package/dist/shell-shard/verbs/ls.js +48 -0
- package/dist/shell-shard/verbs/ls.test.d.ts +1 -0
- package/dist/shell-shard/verbs/ls.test.js +64 -0
- package/dist/shell-shard/verbs/mkdir.d.ts +2 -0
- package/dist/shell-shard/verbs/mkdir.js +30 -0
- package/dist/shell-shard/verbs/mkdir.test.d.ts +1 -0
- package/dist/shell-shard/verbs/mkdir.test.js +48 -0
- package/dist/shell-shard/verbs/mv.d.ts +2 -0
- package/dist/shell-shard/verbs/mv.js +33 -0
- package/dist/shell-shard/verbs/mv.test.d.ts +1 -0
- package/dist/shell-shard/verbs/mv.test.js +55 -0
- package/dist/shell-shard/verbs/rm.d.ts +2 -0
- package/dist/shell-shard/verbs/rm.js +28 -0
- package/dist/shell-shard/verbs/rm.test.d.ts +1 -0
- package/dist/shell-shard/verbs/rm.test.js +47 -0
- package/dist/shell-shard/verbs/scope-parse.d.ts +7 -0
- package/dist/shell-shard/verbs/scope-parse.js +33 -0
- package/dist/shell-shard/verbs/scope-parse.test.d.ts +1 -0
- package/dist/shell-shard/verbs/scope-parse.test.js +76 -0
- package/dist/shell-shard/verbs/xfer.d.ts +2 -0
- package/dist/shell-shard/verbs/xfer.js +87 -0
- package/dist/shell-shard/verbs/xfer.test.d.ts +1 -0
- package/dist/shell-shard/verbs/xfer.test.js +107 -0
- package/dist/verbs/types.d.ts +18 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildTree } from './DocumentFilePicker';
|
|
3
|
+
describe('buildTree with explicit folders', () => {
|
|
4
|
+
const docs = [
|
|
5
|
+
{ shardId: 'sh1', path: 'a.md', size: 0, lastModified: 0 },
|
|
6
|
+
{ shardId: 'sh1', path: 'sub/b.md', size: 0, lastModified: 0 },
|
|
7
|
+
];
|
|
8
|
+
it('shard root returns shard list (folders ignored at root)', () => {
|
|
9
|
+
const items = buildTree(docs, [], null, '');
|
|
10
|
+
expect(items.map((i) => i.kind === 'folder' && i.name)).toEqual(['sh1']);
|
|
11
|
+
});
|
|
12
|
+
it('within a shard, merges implicit folders with empty explicit folders', () => {
|
|
13
|
+
const items = buildTree(docs, ['emptyDir'], 'sh1', '');
|
|
14
|
+
const folderNames = items.filter((i) => i.kind === 'folder').map((i) => i.name).sort();
|
|
15
|
+
expect(folderNames).toEqual(['emptyDir', 'sub']);
|
|
16
|
+
});
|
|
17
|
+
it('deduplicates explicit and implicit folders with the same name', () => {
|
|
18
|
+
const items = buildTree(docs, ['sub'], 'sh1', '');
|
|
19
|
+
const folderNames = items.filter((i) => i.kind === 'folder').map((i) => i.name);
|
|
20
|
+
expect(folderNames).toEqual(['sub']);
|
|
21
|
+
});
|
|
22
|
+
it('file items carry kind:"file"', () => {
|
|
23
|
+
const items = buildTree(docs, [], 'sh1', '');
|
|
24
|
+
const fileItems = items.filter((i) => i.kind === 'file');
|
|
25
|
+
expect(fileItems[0]).toMatchObject({ kind: 'file', name: 'a.md' });
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('OpenerValue type accepts folder kind', () => {
|
|
29
|
+
it('compiles with kind:"folder"', () => {
|
|
30
|
+
const v = { shardId: 'sh1', path: 'sub', kind: 'folder' };
|
|
31
|
+
expect(v === null || v === void 0 ? void 0 : v.kind).toBe('folder');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -5,10 +5,22 @@
|
|
|
5
5
|
import type { OpenerValue } from './DocumentFilePicker';
|
|
6
6
|
|
|
7
7
|
type DocListFn = () => Promise<Array<DocumentMeta & { shardId: string }>>;
|
|
8
|
+
type FolderListFn = (shardId: string, prefix: string) => Promise<string[]>;
|
|
9
|
+
type HandleFn = {
|
|
10
|
+
mkdir: (shardId: string, path: string) => Promise<void>;
|
|
11
|
+
rmdir: (shardId: string, path: string, opts: { recursive: boolean }) => Promise<void>;
|
|
12
|
+
renameFolder: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
13
|
+
rename: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
14
|
+
delete: (shardId: string, path: string) => Promise<void>;
|
|
15
|
+
};
|
|
8
16
|
|
|
9
17
|
let {
|
|
10
18
|
value = $bindable<OpenerValue>(null),
|
|
11
19
|
listDocuments,
|
|
20
|
+
listFolders,
|
|
21
|
+
handle,
|
|
22
|
+
readOnlyShard,
|
|
23
|
+
selectable = 'file',
|
|
12
24
|
disabled = false,
|
|
13
25
|
invalid = false,
|
|
14
26
|
size = 'md',
|
|
@@ -17,6 +29,10 @@
|
|
|
17
29
|
}: {
|
|
18
30
|
value?: OpenerValue;
|
|
19
31
|
listDocuments: DocListFn;
|
|
32
|
+
listFolders?: FolderListFn;
|
|
33
|
+
handle?: HandleFn;
|
|
34
|
+
readOnlyShard?: (shardId: string) => boolean;
|
|
35
|
+
selectable?: 'file' | 'folder' | 'both';
|
|
20
36
|
disabled?: boolean;
|
|
21
37
|
invalid?: boolean;
|
|
22
38
|
size?: 'sm' | 'md';
|
|
@@ -28,6 +44,10 @@
|
|
|
28
44
|
mode="open"
|
|
29
45
|
bind:value
|
|
30
46
|
{listDocuments}
|
|
47
|
+
{listFolders}
|
|
48
|
+
{handle}
|
|
49
|
+
{readOnlyShard}
|
|
50
|
+
{selectable}
|
|
31
51
|
{disabled}
|
|
32
52
|
{invalid}
|
|
33
53
|
{size}
|
|
@@ -4,9 +4,23 @@ import type { OpenerValue } from './DocumentFilePicker';
|
|
|
4
4
|
type DocListFn = () => Promise<Array<DocumentMeta & {
|
|
5
5
|
shardId: string;
|
|
6
6
|
}>>;
|
|
7
|
+
type FolderListFn = (shardId: string, prefix: string) => Promise<string[]>;
|
|
8
|
+
type HandleFn = {
|
|
9
|
+
mkdir: (shardId: string, path: string) => Promise<void>;
|
|
10
|
+
rmdir: (shardId: string, path: string, opts: {
|
|
11
|
+
recursive: boolean;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
renameFolder: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
14
|
+
rename: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
15
|
+
delete: (shardId: string, path: string) => Promise<void>;
|
|
16
|
+
};
|
|
7
17
|
type $$ComponentProps = {
|
|
8
18
|
value?: OpenerValue;
|
|
9
19
|
listDocuments: DocListFn;
|
|
20
|
+
listFolders?: FolderListFn;
|
|
21
|
+
handle?: HandleFn;
|
|
22
|
+
readOnlyShard?: (shardId: string) => boolean;
|
|
23
|
+
selectable?: 'file' | 'folder' | 'both';
|
|
10
24
|
disabled?: boolean;
|
|
11
25
|
invalid?: boolean;
|
|
12
26
|
size?: 'sm' | 'md';
|
|
@@ -5,10 +5,21 @@
|
|
|
5
5
|
import type { SaverValue } from './DocumentFilePicker';
|
|
6
6
|
|
|
7
7
|
type DocListFn = () => Promise<Array<DocumentMeta & { shardId: string }>>;
|
|
8
|
+
type FolderListFn = (shardId: string, prefix: string) => Promise<string[]>;
|
|
9
|
+
type HandleFn = {
|
|
10
|
+
mkdir: (shardId: string, path: string) => Promise<void>;
|
|
11
|
+
rmdir: (shardId: string, path: string, opts: { recursive: boolean }) => Promise<void>;
|
|
12
|
+
renameFolder: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
13
|
+
rename: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
14
|
+
delete: (shardId: string, path: string) => Promise<void>;
|
|
15
|
+
};
|
|
8
16
|
|
|
9
17
|
let {
|
|
10
18
|
value = $bindable<SaverValue>(null),
|
|
11
19
|
listDocuments,
|
|
20
|
+
listFolders,
|
|
21
|
+
handle,
|
|
22
|
+
readOnlyShard,
|
|
12
23
|
disabled = false,
|
|
13
24
|
invalid = false,
|
|
14
25
|
size = 'md',
|
|
@@ -17,6 +28,9 @@
|
|
|
17
28
|
}: {
|
|
18
29
|
value?: SaverValue;
|
|
19
30
|
listDocuments: DocListFn;
|
|
31
|
+
listFolders?: FolderListFn;
|
|
32
|
+
handle?: HandleFn;
|
|
33
|
+
readOnlyShard?: (shardId: string) => boolean;
|
|
20
34
|
disabled?: boolean;
|
|
21
35
|
invalid?: boolean;
|
|
22
36
|
size?: 'sm' | 'md';
|
|
@@ -28,6 +42,9 @@
|
|
|
28
42
|
mode="save"
|
|
29
43
|
bind:value
|
|
30
44
|
{listDocuments}
|
|
45
|
+
{listFolders}
|
|
46
|
+
{handle}
|
|
47
|
+
{readOnlyShard}
|
|
31
48
|
{disabled}
|
|
32
49
|
{invalid}
|
|
33
50
|
{size}
|
|
@@ -4,9 +4,22 @@ import type { SaverValue } from './DocumentFilePicker';
|
|
|
4
4
|
type DocListFn = () => Promise<Array<DocumentMeta & {
|
|
5
5
|
shardId: string;
|
|
6
6
|
}>>;
|
|
7
|
+
type FolderListFn = (shardId: string, prefix: string) => Promise<string[]>;
|
|
8
|
+
type HandleFn = {
|
|
9
|
+
mkdir: (shardId: string, path: string) => Promise<void>;
|
|
10
|
+
rmdir: (shardId: string, path: string, opts: {
|
|
11
|
+
recursive: boolean;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
renameFolder: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
14
|
+
rename: (shardId: string, oldPath: string, newPath: string) => Promise<void>;
|
|
15
|
+
delete: (shardId: string, path: string) => Promise<void>;
|
|
16
|
+
};
|
|
7
17
|
type $$ComponentProps = {
|
|
8
18
|
value?: SaverValue;
|
|
9
19
|
listDocuments: DocListFn;
|
|
20
|
+
listFolders?: FolderListFn;
|
|
21
|
+
handle?: HandleFn;
|
|
22
|
+
readOnlyShard?: (shardId: string) => boolean;
|
|
10
23
|
disabled?: boolean;
|
|
11
24
|
invalid?: boolean;
|
|
12
25
|
size?: 'sm' | 'md';
|