@silo-code/sdk 0.43.0 → 0.44.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/extension-storage.d.ts +56 -8
- package/dist/extension-storage.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/extension-storage.ts +58 -8
- package/src/index.ts +1 -0
|
@@ -33,6 +33,24 @@ export interface ExtensionStorage {
|
|
|
33
33
|
*/
|
|
34
34
|
subscribe(listener: () => void): Disposable;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* One workspace's per-extension storage directory, as returned by
|
|
38
|
+
* {@link ExtensionStorageScopes.workspaceDirs}: the workspace's id paired with
|
|
39
|
+
* the absolute path to that workspace's directory for the calling extension.
|
|
40
|
+
*
|
|
41
|
+
* @category Core Types
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
export interface WorkspaceStorageDir {
|
|
45
|
+
/** The workspace this directory belongs to. */
|
|
46
|
+
readonly workspaceId: string;
|
|
47
|
+
/**
|
|
48
|
+
* Absolute path to `~/.config/silo/extension-storage/<your-id>/workspaces/<workspaceId>`.
|
|
49
|
+
* Readable and writable through {@link ExtensionContext.files} with no
|
|
50
|
+
* `fs:*` permission, like every other own-storage path.
|
|
51
|
+
*/
|
|
52
|
+
readonly dir: string;
|
|
53
|
+
}
|
|
36
54
|
/**
|
|
37
55
|
* The persisted-storage scopes available to an extension, exposed as
|
|
38
56
|
* {@link ExtensionContext.storage}: two key/value bags for settings-sized
|
|
@@ -85,23 +103,53 @@ export interface ExtensionStorageScopes {
|
|
|
85
103
|
*/
|
|
86
104
|
globalDir(): Promise<string>;
|
|
87
105
|
/**
|
|
88
|
-
* An absolute path to a directory of your own scoped to
|
|
89
|
-
*
|
|
90
|
-
* {@link ExtensionStorageScopes.workspace}. Created on first call, at
|
|
106
|
+
* An absolute path to a directory of your own scoped to a **workspace** — the
|
|
107
|
+
* filesystem counterpart to {@link ExtensionStorageScopes.workspace}. Lives at
|
|
91
108
|
* `~/.config/silo/extension-storage/<your-id>/workspaces/<workspaceId>`.
|
|
92
109
|
*
|
|
93
110
|
* Everything {@link ExtensionStorageScopes.globalDir} says about permissions
|
|
94
|
-
* and relative paths applies here too.
|
|
95
|
-
*
|
|
96
|
-
* workspace
|
|
111
|
+
* and relative paths applies here too.
|
|
112
|
+
*
|
|
113
|
+
* @param workspaceId - Which workspace's directory to resolve. Omit for the
|
|
114
|
+
* **active** workspace — the path then changes as the active workspace
|
|
115
|
+
* switches, so don't cache it across a switch, and the call rejects with
|
|
116
|
+
* `NoWorkspaceError` when no workspace is open. Pass an id (from
|
|
117
|
+
* {@link ExtensionContext.workspaces}) to resolve **any** workspace's
|
|
118
|
+
* directory, active or not — the aggregating case (a view over every
|
|
119
|
+
* workspace's data).
|
|
120
|
+
* @param options - `create` (default `true`) creates the directory if it is
|
|
121
|
+
* missing, matching the historical behaviour — every caller that then
|
|
122
|
+
* **writes** into the path needs this, because {@link FileService.writeText}
|
|
123
|
+
* does not create parent directories. Pass `create: false` when you only
|
|
124
|
+
* need the path to **read** from (a missing file already reads as absent);
|
|
125
|
+
* nothing is written to disk for a workspace that has no data yet.
|
|
97
126
|
*
|
|
98
127
|
* The directory follows the workspace's **identity**, not its folder path:
|
|
99
128
|
* deleting a workspace and re-adding the same folder gives you a new, empty
|
|
100
129
|
* directory (the same rule {@link ExtensionStorageScopes.workspace} follows).
|
|
101
130
|
* Deleting a workspace leaves the directory on disk.
|
|
131
|
+
*/
|
|
132
|
+
workspaceDir(workspaceId?: string, options?: {
|
|
133
|
+
create?: boolean;
|
|
134
|
+
}): Promise<string>;
|
|
135
|
+
/**
|
|
136
|
+
* Resolve a storage directory for **every open workspace** in one call — the
|
|
137
|
+
* building block for a surface that aggregates per-workspace data (a
|
|
138
|
+
* cross-workspace list, say) without making a separate
|
|
139
|
+
* {@link ExtensionStorageScopes.workspaceDir} call per workspace.
|
|
140
|
+
*
|
|
141
|
+
* Returns one entry per workspace in
|
|
142
|
+
* {@link WorkspaceService.getState}`().open`, each `{ workspaceId, dir }`.
|
|
143
|
+
* There is no ordering guarantee — match entries to workspaces by
|
|
144
|
+
* `workspaceId`.
|
|
102
145
|
*
|
|
103
|
-
*
|
|
146
|
+
* @param options - `create` (default `true`) behaves exactly as it does on
|
|
147
|
+
* {@link ExtensionStorageScopes.workspaceDir}. The aggregating case passes
|
|
148
|
+
* `create: false`: it only reads each workspace's data, so no directory is
|
|
149
|
+
* created for a workspace that has none.
|
|
104
150
|
*/
|
|
105
|
-
|
|
151
|
+
workspaceDirs(options?: {
|
|
152
|
+
create?: boolean;
|
|
153
|
+
}): Promise<readonly WorkspaceStorageDir[]>;
|
|
106
154
|
}
|
|
107
155
|
//# sourceMappingURL=extension-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-storage.d.ts","sourceRoot":"","sources":["../src/extension-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IACpC,kDAAkD;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,gDAAgD;IAChD,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B
|
|
1
|
+
{"version":3,"file":"extension-storage.d.ts","sourceRoot":"","sources":["../src/extension-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IACpC,kDAAkD;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,gDAAgD;IAChD,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,YAAY,CACV,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;CAC7C"}
|
package/dist/index.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export type { SearchService, SearchOptions, SearchMatch, SearchFileResult, Searc
|
|
|
35
35
|
export type { Permission } from "./permissions.js";
|
|
36
36
|
export { PathDeniedError, NoWorkspaceError } from "./permissions.js";
|
|
37
37
|
export type { ThemeService, ThemeState, ThemePreset, ResolvedTheme, ThemeBase, ThemeVars, CustomTheme, ThemeExport, } from "./theme-service.js";
|
|
38
|
-
export type { ExtensionStorage, ExtensionStorageScopes, } from "./extension-storage.js";
|
|
38
|
+
export type { ExtensionStorage, ExtensionStorageScopes, WorkspaceStorageDir, } from "./extension-storage.js";
|
|
39
39
|
export type { DndService, DndItem, DndMime, DragInit, DndMode, DropContext, DropTargetHandlers, } from "./dnd-service.js";
|
|
40
40
|
export { DND_MIME } from "./dnd-service.js";
|
|
41
41
|
export type { UiService, FileFilter, MenuItem, MenuItemTrailing, MenuSeparator, MenuHeader, MenuEntry, ShowMenuOptions, ConfirmOptions, PromptOptions, ModalOptions, ConfirmDontShowAgainMode, ConfirmDontShowAgainOptions, NotifyAction, NotifyOptions, BusyStatusUrgency, BusyStatusEntry, BusyStatusApi, } from "./ui-service.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA6HH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA6HH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA8BlE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAyBzC,sEAAsE;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAkCjD,8EAA8E;AAC9E,8EAA8E;AAC9E,6DAA6D;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,yEAAyE;AACzE,iFAAiF;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,4EAA4E;AAC5E,qDAAqD;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,4DAA4D;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,wEAAwE;AACxE,iFAAiF;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAUvE,6EAA6E;AAC7E,wEAAwE;AACxE,+CAA+C;AAC/C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC"}
|
package/package.json
CHANGED
package/src/extension-storage.ts
CHANGED
|
@@ -35,6 +35,25 @@ export interface ExtensionStorage {
|
|
|
35
35
|
subscribe(listener: () => void): Disposable;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* One workspace's per-extension storage directory, as returned by
|
|
40
|
+
* {@link ExtensionStorageScopes.workspaceDirs}: the workspace's id paired with
|
|
41
|
+
* the absolute path to that workspace's directory for the calling extension.
|
|
42
|
+
*
|
|
43
|
+
* @category Core Types
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
export interface WorkspaceStorageDir {
|
|
47
|
+
/** The workspace this directory belongs to. */
|
|
48
|
+
readonly workspaceId: string;
|
|
49
|
+
/**
|
|
50
|
+
* Absolute path to `~/.config/silo/extension-storage/<your-id>/workspaces/<workspaceId>`.
|
|
51
|
+
* Readable and writable through {@link ExtensionContext.files} with no
|
|
52
|
+
* `fs:*` permission, like every other own-storage path.
|
|
53
|
+
*/
|
|
54
|
+
readonly dir: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
38
57
|
/**
|
|
39
58
|
* The persisted-storage scopes available to an extension, exposed as
|
|
40
59
|
* {@link ExtensionContext.storage}: two key/value bags for settings-sized
|
|
@@ -87,22 +106,53 @@ export interface ExtensionStorageScopes {
|
|
|
87
106
|
*/
|
|
88
107
|
globalDir(): Promise<string>;
|
|
89
108
|
/**
|
|
90
|
-
* An absolute path to a directory of your own scoped to
|
|
91
|
-
*
|
|
92
|
-
* {@link ExtensionStorageScopes.workspace}. Created on first call, at
|
|
109
|
+
* An absolute path to a directory of your own scoped to a **workspace** — the
|
|
110
|
+
* filesystem counterpart to {@link ExtensionStorageScopes.workspace}. Lives at
|
|
93
111
|
* `~/.config/silo/extension-storage/<your-id>/workspaces/<workspaceId>`.
|
|
94
112
|
*
|
|
95
113
|
* Everything {@link ExtensionStorageScopes.globalDir} says about permissions
|
|
96
|
-
* and relative paths applies here too.
|
|
97
|
-
*
|
|
98
|
-
* workspace
|
|
114
|
+
* and relative paths applies here too.
|
|
115
|
+
*
|
|
116
|
+
* @param workspaceId - Which workspace's directory to resolve. Omit for the
|
|
117
|
+
* **active** workspace — the path then changes as the active workspace
|
|
118
|
+
* switches, so don't cache it across a switch, and the call rejects with
|
|
119
|
+
* `NoWorkspaceError` when no workspace is open. Pass an id (from
|
|
120
|
+
* {@link ExtensionContext.workspaces}) to resolve **any** workspace's
|
|
121
|
+
* directory, active or not — the aggregating case (a view over every
|
|
122
|
+
* workspace's data).
|
|
123
|
+
* @param options - `create` (default `true`) creates the directory if it is
|
|
124
|
+
* missing, matching the historical behaviour — every caller that then
|
|
125
|
+
* **writes** into the path needs this, because {@link FileService.writeText}
|
|
126
|
+
* does not create parent directories. Pass `create: false` when you only
|
|
127
|
+
* need the path to **read** from (a missing file already reads as absent);
|
|
128
|
+
* nothing is written to disk for a workspace that has no data yet.
|
|
99
129
|
*
|
|
100
130
|
* The directory follows the workspace's **identity**, not its folder path:
|
|
101
131
|
* deleting a workspace and re-adding the same folder gives you a new, empty
|
|
102
132
|
* directory (the same rule {@link ExtensionStorageScopes.workspace} follows).
|
|
103
133
|
* Deleting a workspace leaves the directory on disk.
|
|
134
|
+
*/
|
|
135
|
+
workspaceDir(
|
|
136
|
+
workspaceId?: string,
|
|
137
|
+
options?: { create?: boolean },
|
|
138
|
+
): Promise<string>;
|
|
139
|
+
/**
|
|
140
|
+
* Resolve a storage directory for **every open workspace** in one call — the
|
|
141
|
+
* building block for a surface that aggregates per-workspace data (a
|
|
142
|
+
* cross-workspace list, say) without making a separate
|
|
143
|
+
* {@link ExtensionStorageScopes.workspaceDir} call per workspace.
|
|
144
|
+
*
|
|
145
|
+
* Returns one entry per workspace in
|
|
146
|
+
* {@link WorkspaceService.getState}`().open`, each `{ workspaceId, dir }`.
|
|
147
|
+
* There is no ordering guarantee — match entries to workspaces by
|
|
148
|
+
* `workspaceId`.
|
|
104
149
|
*
|
|
105
|
-
*
|
|
150
|
+
* @param options - `create` (default `true`) behaves exactly as it does on
|
|
151
|
+
* {@link ExtensionStorageScopes.workspaceDir}. The aggregating case passes
|
|
152
|
+
* `create: false`: it only reads each workspace's data, so no directory is
|
|
153
|
+
* created for a workspace that has none.
|
|
106
154
|
*/
|
|
107
|
-
|
|
155
|
+
workspaceDirs(options?: {
|
|
156
|
+
create?: boolean;
|
|
157
|
+
}): Promise<readonly WorkspaceStorageDir[]>;
|
|
108
158
|
}
|
package/src/index.ts
CHANGED
|
@@ -190,6 +190,7 @@ export type {
|
|
|
190
190
|
export type {
|
|
191
191
|
ExtensionStorage,
|
|
192
192
|
ExtensionStorageScopes,
|
|
193
|
+
WorkspaceStorageDir,
|
|
193
194
|
} from "./extension-storage";
|
|
194
195
|
// The drag-and-drop domain: the consumer service + its payload/handler shapes.
|
|
195
196
|
// DND_MIME is a value (the well-known MIME vocabulary), so it's a runtime export.
|