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.
Files changed (103) hide show
  1. package/dist/BrandSlot.svelte +2 -2
  2. package/dist/actions/ctx-actions.svelte.test.js +2 -2
  3. package/dist/artifact.d.ts +2 -0
  4. package/dist/boot/satellitePayload.d.ts +2 -0
  5. package/dist/boot/satellitePayload.test.js +19 -0
  6. package/dist/build.d.ts +7 -1
  7. package/dist/build.js +22 -3
  8. package/dist/build.test.js +27 -1
  9. package/dist/createShell.js +34 -9
  10. package/dist/documents/backends.d.ts +12 -0
  11. package/dist/documents/backends.js +230 -3
  12. package/dist/documents/backends.test.js +147 -1
  13. package/dist/documents/browse.d.ts +20 -0
  14. package/dist/documents/browse.js +35 -0
  15. package/dist/documents/browse.test.js +125 -0
  16. package/dist/documents/config.d.ts +2 -4
  17. package/dist/documents/config.js +3 -7
  18. package/dist/documents/handle.js +40 -0
  19. package/dist/documents/handle.test.js +88 -1
  20. package/dist/documents/http-backend.d.ts +11 -0
  21. package/dist/documents/http-backend.js +86 -0
  22. package/dist/documents/http-backend.test.js +117 -1
  23. package/dist/documents/index.d.ts +1 -1
  24. package/dist/documents/index.js +1 -1
  25. package/dist/documents/picker-api.test.js +2 -2
  26. package/dist/documents/types.d.ts +87 -14
  27. package/dist/documents/types.js +4 -0
  28. package/dist/host-entry.d.ts +1 -1
  29. package/dist/host-entry.js +1 -1
  30. package/dist/host.d.ts +1 -1
  31. package/dist/host.js +1 -1
  32. package/dist/layout/slotHostPool.svelte.js +2 -2
  33. package/dist/overlays/FloatFrame.svelte +1 -0
  34. package/dist/primitives/widgets/DocumentFilePicker.d.ts +6 -2
  35. package/dist/primitives/widgets/DocumentFilePicker.js +12 -5
  36. package/dist/primitives/widgets/DocumentFilePicker.svelte +23 -1
  37. package/dist/primitives/widgets/DocumentFilePicker.svelte.d.ts +14 -0
  38. package/dist/primitives/widgets/DocumentFilePicker.test.d.ts +1 -0
  39. package/dist/primitives/widgets/DocumentFilePicker.test.js +33 -0
  40. package/dist/primitives/widgets/DocumentOpener.svelte +20 -0
  41. package/dist/primitives/widgets/DocumentOpener.svelte.d.ts +14 -0
  42. package/dist/primitives/widgets/DocumentSaver.svelte +17 -0
  43. package/dist/primitives/widgets/DocumentSaver.svelte.d.ts +13 -0
  44. package/dist/primitives/widgets/_DocumentBrowser.svelte +414 -27
  45. package/dist/primitives/widgets/_DocumentBrowser.svelte.d.ts +12 -0
  46. package/dist/primitives/widgets/_DocumentBrowser.svelte.test.d.ts +1 -0
  47. package/dist/primitives/widgets/_DocumentBrowser.svelte.test.js +277 -0
  48. package/dist/primitives/widgets/_FolderConfirmDelete.svelte +57 -0
  49. package/dist/primitives/widgets/_FolderConfirmDelete.svelte.d.ts +12 -0
  50. package/dist/projects/session-state.svelte.d.ts +3 -0
  51. package/dist/projects/session-state.svelte.js +25 -0
  52. package/dist/projects/session-state.test.js +43 -2
  53. package/dist/projects-shard/ProjectsSection.svelte +14 -18
  54. package/dist/runtime/runVerb-shell.test.js +2 -2
  55. package/dist/runtime/runVerb.test.js +2 -2
  56. package/dist/sh3Api/headless.js +10 -0
  57. package/dist/sh3core-shard/appActions.js +5 -2
  58. package/dist/shards/activate-browse.test.js +2 -2
  59. package/dist/shards/activate-contributions.test.js +2 -2
  60. package/dist/shards/activate-error-isolation.test.js +3 -3
  61. package/dist/shards/activate-on-key-revoked.test.js +2 -2
  62. package/dist/shards/activate-runtime.test.js +2 -2
  63. package/dist/shards/activate.svelte.js +5 -5
  64. package/dist/shards/ctx-fetch.test.js +4 -4
  65. package/dist/shell-shard/Terminal.svelte +4 -1
  66. package/dist/shell-shard/Terminal.svelte.d.ts +2 -0
  67. package/dist/shell-shard/dispatch.d.ts +2 -0
  68. package/dist/shell-shard/dispatch.js +2 -0
  69. package/dist/shell-shard/manifest.js +7 -1
  70. package/dist/shell-shard/shellShard.svelte.js +1 -1
  71. package/dist/shell-shard/verbs/cat.d.ts +2 -0
  72. package/dist/shell-shard/verbs/cat.js +35 -0
  73. package/dist/shell-shard/verbs/cat.test.d.ts +1 -0
  74. package/dist/shell-shard/verbs/cat.test.js +49 -0
  75. package/dist/shell-shard/verbs/index.js +12 -0
  76. package/dist/shell-shard/verbs/ls.d.ts +2 -0
  77. package/dist/shell-shard/verbs/ls.js +48 -0
  78. package/dist/shell-shard/verbs/ls.test.d.ts +1 -0
  79. package/dist/shell-shard/verbs/ls.test.js +64 -0
  80. package/dist/shell-shard/verbs/mkdir.d.ts +2 -0
  81. package/dist/shell-shard/verbs/mkdir.js +30 -0
  82. package/dist/shell-shard/verbs/mkdir.test.d.ts +1 -0
  83. package/dist/shell-shard/verbs/mkdir.test.js +48 -0
  84. package/dist/shell-shard/verbs/mv.d.ts +2 -0
  85. package/dist/shell-shard/verbs/mv.js +33 -0
  86. package/dist/shell-shard/verbs/mv.test.d.ts +1 -0
  87. package/dist/shell-shard/verbs/mv.test.js +55 -0
  88. package/dist/shell-shard/verbs/rm.d.ts +2 -0
  89. package/dist/shell-shard/verbs/rm.js +28 -0
  90. package/dist/shell-shard/verbs/rm.test.d.ts +1 -0
  91. package/dist/shell-shard/verbs/rm.test.js +47 -0
  92. package/dist/shell-shard/verbs/scope-parse.d.ts +7 -0
  93. package/dist/shell-shard/verbs/scope-parse.js +33 -0
  94. package/dist/shell-shard/verbs/scope-parse.test.d.ts +1 -0
  95. package/dist/shell-shard/verbs/scope-parse.test.js +76 -0
  96. package/dist/shell-shard/verbs/xfer.d.ts +2 -0
  97. package/dist/shell-shard/verbs/xfer.js +87 -0
  98. package/dist/shell-shard/verbs/xfer.test.d.ts +1 -0
  99. package/dist/shell-shard/verbs/xfer.test.js +107 -0
  100. package/dist/verbs/types.d.ts +18 -0
  101. package/dist/version.d.ts +1 -1
  102. package/dist/version.js +1 -1
  103. 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';