browser-git-ops 0.0.2 → 0.0.5
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/README.md +291 -92
- package/dist/git/abstractAdapter.d.ts +167 -0
- package/dist/git/abstractAdapter.d.ts.map +1 -0
- package/dist/git/adapter.d.ts +23 -1
- package/dist/git/adapter.d.ts.map +1 -1
- package/dist/git/githubAdapter.d.ts +282 -35
- package/dist/git/githubAdapter.d.ts.map +1 -1
- package/dist/git/gitlabAdapter.d.ts +220 -34
- package/dist/git/gitlabAdapter.d.ts.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6199 -792
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +6199 -792
- package/dist/index.mjs.map +4 -4
- package/dist/virtualfs/changeTracker.d.ts +66 -0
- package/dist/virtualfs/changeTracker.d.ts.map +1 -0
- package/dist/virtualfs/conflictManager.d.ts +69 -0
- package/dist/virtualfs/conflictManager.d.ts.map +1 -0
- package/dist/virtualfs/hashUtils.d.ts +13 -0
- package/dist/virtualfs/hashUtils.d.ts.map +1 -0
- package/dist/virtualfs/indexManager.d.ts +57 -0
- package/dist/virtualfs/indexManager.d.ts.map +1 -0
- package/dist/virtualfs/indexedDatabaseStorage.d.ts +7 -0
- package/dist/virtualfs/indexedDatabaseStorage.d.ts.map +1 -0
- package/dist/virtualfs/inmemoryStorage.d.ts +8 -0
- package/dist/virtualfs/inmemoryStorage.d.ts.map +1 -0
- package/dist/virtualfs/localChangeApplier.d.ts +21 -0
- package/dist/virtualfs/localChangeApplier.d.ts.map +1 -0
- package/dist/virtualfs/localFileManager.d.ts +58 -0
- package/dist/virtualfs/localFileManager.d.ts.map +1 -0
- package/dist/virtualfs/metadataManager.d.ts +14 -0
- package/dist/virtualfs/metadataManager.d.ts.map +1 -0
- package/dist/virtualfs/opfsStorage.d.ts +2 -63
- package/dist/virtualfs/opfsStorage.d.ts.map +1 -1
- package/dist/virtualfs/remoteSynchronizer.d.ts +192 -0
- package/dist/virtualfs/remoteSynchronizer.d.ts.map +1 -0
- package/dist/virtualfs/storageBackend.d.ts +57 -4
- package/dist/virtualfs/storageBackend.d.ts.map +1 -1
- package/dist/virtualfs/types.d.ts +37 -0
- package/dist/virtualfs/types.d.ts.map +1 -1
- package/dist/virtualfs/virtualfs.d.ts +454 -87
- package/dist/virtualfs/virtualfs.d.ts.map +1 -1
- package/package.json +30 -13
- package/dist/virtualfs/indexedDbStorage.d.ts +0 -62
- package/dist/virtualfs/indexedDbStorage.d.ts.map +0 -1
|
@@ -1,28 +1,56 @@
|
|
|
1
|
-
import { IndexFile
|
|
2
|
-
import { StorageBackend } from './storageBackend';
|
|
1
|
+
import { IndexFile } from './types.ts';
|
|
2
|
+
import { StorageBackend } from './storageBackend.ts';
|
|
3
|
+
import { Logger } from '../git/abstractAdapter.ts';
|
|
4
|
+
import type { CommitHistoryQuery, CommitHistoryPage } from '../git/adapter.ts';
|
|
5
|
+
import type { BranchListQuery, BranchListPage } from './types.ts';
|
|
6
|
+
type RemoteSnapshotDescriptor = {
|
|
7
|
+
headSha: string;
|
|
8
|
+
shas: Record<string, string>;
|
|
9
|
+
fetchContent: (_paths: string[]) => Promise<Record<string, string>>;
|
|
10
|
+
};
|
|
3
11
|
/** Virtual file system - 永続化バックエンドを抽象化した仮想ファイルシステム */
|
|
4
12
|
export declare class VirtualFS {
|
|
5
|
-
private
|
|
6
|
-
private
|
|
7
|
-
private
|
|
8
|
-
private
|
|
9
|
-
private index;
|
|
13
|
+
private adapter;
|
|
14
|
+
private logger?;
|
|
15
|
+
private adapterMeta;
|
|
16
|
+
private indexManager;
|
|
10
17
|
private backend;
|
|
18
|
+
private applier;
|
|
19
|
+
private localFileManager;
|
|
20
|
+
private changeTracker;
|
|
21
|
+
private conflictManager;
|
|
22
|
+
private remoteSynchronizer;
|
|
11
23
|
/**
|
|
12
24
|
* VirtualFS のインスタンスを初期化します。
|
|
13
25
|
* @param options オプション
|
|
14
26
|
* @returns {void}
|
|
15
27
|
*/
|
|
16
28
|
constructor(options?: {
|
|
17
|
-
storageDir?: string;
|
|
18
29
|
backend?: StorageBackend;
|
|
30
|
+
logger?: Logger;
|
|
19
31
|
});
|
|
20
32
|
/**
|
|
21
|
-
*
|
|
22
|
-
* @
|
|
23
|
-
|
|
33
|
+
* public-facing property accessors for backwards compatibility with tests
|
|
34
|
+
* @returns {string}
|
|
35
|
+
*/
|
|
36
|
+
get head(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Setter for head
|
|
39
|
+
* @param {string} h - head value
|
|
40
|
+
* @returns {void}
|
|
41
|
+
*/
|
|
42
|
+
set head(h: string);
|
|
43
|
+
/**
|
|
44
|
+
* Get lastCommitKey
|
|
45
|
+
* @returns {string|undefined}
|
|
24
46
|
*/
|
|
25
|
-
|
|
47
|
+
get lastCommitKey(): string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Set lastCommitKey
|
|
50
|
+
* @param {string|undefined} k
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
set lastCommitKey(k: string | undefined);
|
|
26
54
|
/**
|
|
27
55
|
* VirtualFS の初期化を行います(バックエンド初期化と index 読み込み)。
|
|
28
56
|
* @returns {Promise<void>}
|
|
@@ -34,129 +62,303 @@ export declare class VirtualFS {
|
|
|
34
62
|
*/
|
|
35
63
|
private loadIndex;
|
|
36
64
|
/**
|
|
37
|
-
*
|
|
65
|
+
* Set adapter instance and persist adapter metadata into index file.
|
|
66
|
+
* @param adapter adapter instance (or null to clear)
|
|
67
|
+
* @param meta metadata to persist (e.g. { type:'github', opts: {...} })
|
|
38
68
|
* @returns {Promise<void>}
|
|
39
69
|
*/
|
|
40
|
-
|
|
70
|
+
setAdapter(adapter: any | null, meta?: any): Promise<void>;
|
|
41
71
|
/**
|
|
42
|
-
*
|
|
72
|
+
* Try to inject the configured logger into the adapter instance (best-effort).
|
|
73
|
+
* @returns {Promise<void>}
|
|
43
74
|
*/
|
|
75
|
+
private _tryInjectLogger;
|
|
44
76
|
/**
|
|
45
|
-
*
|
|
46
|
-
* @
|
|
47
|
-
|
|
77
|
+
* Persist adapter metadata into the index file (best-effort).
|
|
78
|
+
* @returns {Promise<void>}
|
|
79
|
+
*/
|
|
80
|
+
private _tryPersistAdapterMeta;
|
|
81
|
+
/**
|
|
82
|
+
* Return persisted adapter metadata from the index (or cached meta).
|
|
83
|
+
* This does not necessarily instantiate the adapter instance; use
|
|
84
|
+
* `getAdapterInstance()` to obtain an instantiated adapter.
|
|
85
|
+
* @returns {Promise<any|null>}
|
|
86
|
+
*/
|
|
87
|
+
getAdapter(): Promise<any | null>;
|
|
88
|
+
/**
|
|
89
|
+
* Return or lazily create the adapter instance based on persisted metadata.
|
|
90
|
+
* @returns {Promise<any|null>}
|
|
91
|
+
*/
|
|
92
|
+
getAdapterInstance(): Promise<any | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Load adapterMeta from index if not present.
|
|
95
|
+
* @returns {Promise<void>}
|
|
96
|
+
*/
|
|
97
|
+
private _ensureAdapterMetaLoaded;
|
|
98
|
+
/**
|
|
99
|
+
* Create adapter instance for given type and options. Returns null on failure.
|
|
100
|
+
* @param type adapter type string
|
|
101
|
+
* @param opts adapter options
|
|
102
|
+
* @returns {any|null}
|
|
103
|
+
*/
|
|
104
|
+
private _instantiateAdapter;
|
|
105
|
+
/**
|
|
106
|
+
* Helper: obtain backend listFilesRaw in a safe manner.
|
|
107
|
+
* @returns {Promise<any[]>}
|
|
108
|
+
*/
|
|
109
|
+
private _getBackendFilesRaw;
|
|
110
|
+
/**
|
|
111
|
+
* Helper: apply parsed info text into stats object when possible.
|
|
112
|
+
* @param infoTxt raw info text
|
|
113
|
+
* @param stats stats object to mutate
|
|
114
|
+
* @returns {void}
|
|
115
|
+
*/
|
|
116
|
+
private _applyInfoTxtToStats;
|
|
117
|
+
/**
|
|
118
|
+
* Find a matched backend entry for the given filepath.
|
|
119
|
+
* @param filepath target filepath
|
|
120
|
+
* @param filesRaw backend raw listing
|
|
121
|
+
* @returns {any|null}
|
|
122
|
+
*/
|
|
123
|
+
private _findMatchedFile;
|
|
124
|
+
/**
|
|
125
|
+
* Create default stats object with consistent shape.
|
|
126
|
+
* @param now current Date
|
|
127
|
+
* @returns {any}
|
|
128
|
+
*/
|
|
129
|
+
private _createDefaultStats;
|
|
130
|
+
/**
|
|
131
|
+
* Populate stats.gitCommitSha from adapterMeta if available.
|
|
132
|
+
* @param stats stats object to mutate
|
|
133
|
+
* @returns {void}
|
|
134
|
+
*/
|
|
135
|
+
private _populateCommitShaFromMeta;
|
|
136
|
+
/**
|
|
137
|
+
* Try to resolve commit SHA from an instantiated adapter when needed.
|
|
138
|
+
* @param stats stats object to mutate
|
|
139
|
+
* @returns {Promise<void>}
|
|
140
|
+
*/
|
|
141
|
+
private _resolveCommitShaFromAdapter;
|
|
142
|
+
/**
|
|
143
|
+
* Safely get adapter instance, returning null on error.
|
|
144
|
+
* @returns {Promise<any|null>}
|
|
145
|
+
*/
|
|
146
|
+
private _safeGetAdapterInstance;
|
|
147
|
+
/**
|
|
148
|
+
* Helper: populate stats.gitCommitSha using adapterMeta or adapter.resolveRef when available.
|
|
149
|
+
* @param stats stats object to mutate
|
|
48
150
|
* @returns {Promise<void>}
|
|
49
151
|
*/
|
|
50
|
-
|
|
152
|
+
private _resolveAdapterCommitShaIfNeeded;
|
|
51
153
|
/**
|
|
52
|
-
*
|
|
154
|
+
* Determine whether a normalized path is an exact file entry in the provided entries.
|
|
155
|
+
* @param normalizedDirectory normalized directory string
|
|
156
|
+
* @param keys index keys array
|
|
157
|
+
* @param entries index entries object
|
|
158
|
+
* @returns {boolean}
|
|
159
|
+
*/
|
|
160
|
+
private _isExactFile;
|
|
161
|
+
/**
|
|
162
|
+
* Collect immediate child names from index entries for given directory.
|
|
163
|
+
* @param normalizedDirectory normalized directory string
|
|
164
|
+
* @param entries index entries object
|
|
165
|
+
* @returns {Set<string>} set of immediate child names
|
|
166
|
+
*/
|
|
167
|
+
private _collectNamesFromIndex;
|
|
168
|
+
/**
|
|
169
|
+
* Process a single index key for a non-root directory and add immediate child when applicable.
|
|
170
|
+
* @param key index key
|
|
171
|
+
* @param normalizedDirectory normalized directory string
|
|
172
|
+
* @param outNames set to mutate
|
|
173
|
+
* @returns {void}
|
|
174
|
+
*/
|
|
175
|
+
private _processIndexKeyForDirectory;
|
|
176
|
+
/**
|
|
177
|
+
* Safe wrapper for backend.listFiles returning [] on failure.
|
|
178
|
+
* @param normalizedDirectory directory path
|
|
179
|
+
* @returns {Promise<any[]>}
|
|
180
|
+
*/
|
|
181
|
+
private _getBackendList;
|
|
182
|
+
/**
|
|
183
|
+
* Helper for collecting names when scanning root directory entries.
|
|
184
|
+
* @param key index key
|
|
185
|
+
* @param outNames set to mutate
|
|
186
|
+
* @returns {void}
|
|
187
|
+
*/
|
|
188
|
+
private _collectNamesFromIndexRoot;
|
|
189
|
+
/**
|
|
190
|
+
* Check whether normalizedDirectory corresponds to an exact file entry.
|
|
191
|
+
* @param normalizedDirectory normalized directory string
|
|
192
|
+
* @param entries index entries object
|
|
193
|
+
* @returns {boolean}
|
|
194
|
+
*/
|
|
195
|
+
private _hasExactEntry;
|
|
196
|
+
/**
|
|
197
|
+
* Consult backend.listFiles to collect immediate child names for given directory.
|
|
198
|
+
* Best-effort: logs and returns empty set on failure.
|
|
199
|
+
* @param normalizedDirectory normalized directory string
|
|
200
|
+
* @returns {Promise<Set<string>>}
|
|
201
|
+
*/
|
|
202
|
+
private _collectNamesFromBackend;
|
|
203
|
+
/**
|
|
204
|
+
* Return true when backend supports listFiles
|
|
205
|
+
* @returns {boolean}
|
|
206
|
+
*/
|
|
207
|
+
private _backendSupportsListFiles;
|
|
208
|
+
/**
|
|
209
|
+
* Process a single backend listFiles entry and add immediate child name to outNames when applicable.
|
|
210
|
+
* @param it backend entry
|
|
211
|
+
* @param normalizedDirectory normalized directory string
|
|
212
|
+
* @param outNames set to mutate
|
|
213
|
+
* @returns {void}
|
|
214
|
+
*/
|
|
215
|
+
private _processBackendEntry;
|
|
216
|
+
/**
|
|
217
|
+
* Build Dirent-like lightweight objects for given names.
|
|
218
|
+
* @param names array of names
|
|
219
|
+
* @param keys array of index keys
|
|
220
|
+
* @param entries index entries object
|
|
221
|
+
* @param normalizedDirectory normalized directory string
|
|
222
|
+
* @returns {Array<any>} array of Dirent-like objects
|
|
223
|
+
*/
|
|
224
|
+
private _buildDirentTypes;
|
|
225
|
+
/**
|
|
226
|
+
* Determine whether a childPath corresponds to a file, directory, or both.
|
|
227
|
+
* @param childPath path of child
|
|
228
|
+
* @param keys index keys
|
|
229
|
+
* @param entries index entries
|
|
230
|
+
* @returns {{isFile:boolean,isDirectory:boolean}}
|
|
231
|
+
*/
|
|
232
|
+
private _determineChildType;
|
|
233
|
+
/**
|
|
234
|
+
* Return persisted adapter metadata (if any).
|
|
235
|
+
* @returns {any|null}
|
|
236
|
+
*/
|
|
237
|
+
getAdapterMeta(): any | null;
|
|
238
|
+
/**
|
|
239
|
+
* ファイルを書き込みます(ローカル編集)。
|
|
53
240
|
* @param {string} filepath ファイルパス
|
|
241
|
+
* @param {string} content コンテンツ
|
|
54
242
|
* @returns {Promise<void>}
|
|
55
243
|
*/
|
|
56
|
-
|
|
244
|
+
writeFile(filepath: string, content: string): Promise<void>;
|
|
57
245
|
/**
|
|
58
246
|
* rename を delete + create の合成で行うヘルパ
|
|
59
247
|
* @param from 元パス
|
|
60
248
|
* @param to 新パス
|
|
61
249
|
*/
|
|
62
|
-
|
|
250
|
+
renameFile(from: string, to: string): Promise<void>;
|
|
63
251
|
/**
|
|
64
252
|
* ワークスペース/ベースからファイル内容を読み出します。
|
|
65
253
|
* @param {string} filepath ファイルパス
|
|
66
254
|
* @returns {Promise<string|null>} ファイル内容または null
|
|
67
255
|
*/
|
|
68
|
-
|
|
256
|
+
readFile(filepath: string): Promise<string | null>;
|
|
69
257
|
/**
|
|
70
|
-
*
|
|
71
|
-
* @param {
|
|
72
|
-
* @
|
|
73
|
-
* @returns {Promise<void>}
|
|
258
|
+
* 衝突ファイル(.git-conflict/配下)を取得します。
|
|
259
|
+
* @param {string} filepath ファイルパス
|
|
260
|
+
* @returns {Promise<string|null>} ファイル内容または null
|
|
74
261
|
*/
|
|
75
|
-
|
|
262
|
+
readConflict(filepath: string): Promise<string | null>;
|
|
76
263
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
264
|
+
* fs.stat 互換: 指定ファイルのメタ情報を返す
|
|
265
|
+
* ワークスペース上の情報を優先し、未取得時は Git のメタ情報で補完する。
|
|
266
|
+
* @returns {Promise<any>} stats オブジェクト
|
|
79
267
|
*/
|
|
80
|
-
|
|
268
|
+
stat(filepath: string): Promise<any>;
|
|
81
269
|
/**
|
|
82
|
-
*
|
|
83
|
-
* @returns {string[]}
|
|
270
|
+
* fs.unlink 互換: ファイルを削除する
|
|
84
271
|
*/
|
|
85
|
-
|
|
272
|
+
unlink(filepath: string): Promise<void>;
|
|
86
273
|
/**
|
|
87
|
-
*
|
|
88
|
-
* @returns {TombstoneEntry[]}
|
|
274
|
+
* fs.mkdir 互換 (簡易実装): workspace 側にディレクトリ情報を書き込む
|
|
89
275
|
*/
|
|
90
|
-
|
|
276
|
+
mkdir(dirpath: string, _options?: {
|
|
277
|
+
recursive?: boolean;
|
|
278
|
+
mode?: number;
|
|
279
|
+
}): Promise<void>;
|
|
91
280
|
/**
|
|
92
|
-
*
|
|
93
|
-
* @returns {TombstoneEntry[]}
|
|
281
|
+
* fs.rmdir 互換 (簡易実装)
|
|
94
282
|
*/
|
|
283
|
+
rmdir(dirpath: string, options?: {
|
|
284
|
+
recursive?: boolean;
|
|
285
|
+
}): Promise<void>;
|
|
95
286
|
/**
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
path: string;
|
|
102
|
-
content: string;
|
|
103
|
-
} | {
|
|
104
|
-
type: 'update';
|
|
105
|
-
path: string;
|
|
106
|
-
content: string;
|
|
107
|
-
baseSha?: string | undefined;
|
|
108
|
-
} | {
|
|
109
|
-
type: 'delete';
|
|
110
|
-
path: string;
|
|
111
|
-
baseSha: string;
|
|
112
|
-
})[]>;
|
|
287
|
+
* Return list of child paths for given dirpath based on index entries.
|
|
288
|
+
* @param dirpath directory path
|
|
289
|
+
* @returns {Promise<string[]>}
|
|
290
|
+
*/
|
|
291
|
+
private _listChildrenOfDir;
|
|
113
292
|
/**
|
|
114
|
-
*
|
|
115
|
-
* @
|
|
293
|
+
* Delete array of children using localFileManager, logging failures per-child.
|
|
294
|
+
* @param children array of paths
|
|
295
|
+
* @returns {Promise<void>}
|
|
116
296
|
*/
|
|
117
|
-
private
|
|
297
|
+
private _deleteChildrenRecursive;
|
|
118
298
|
/**
|
|
119
|
-
*
|
|
120
|
-
* @returns {Array<
|
|
299
|
+
* fs.readdir 互換 (簡易実装)
|
|
300
|
+
* @returns {Promise<string[]|Array<any>>}
|
|
121
301
|
*/
|
|
122
|
-
|
|
302
|
+
readdir(dirpath: string, options?: {
|
|
303
|
+
withFileTypes?: boolean;
|
|
304
|
+
}): Promise<any[]>;
|
|
123
305
|
/**
|
|
124
|
-
*
|
|
125
|
-
* @
|
|
306
|
+
* Return an empty array when names is empty according to options, else null to continue.
|
|
307
|
+
* @param names array of names
|
|
308
|
+
* @param options readdir options
|
|
309
|
+
* @returns {Array<any>|null}
|
|
126
310
|
*/
|
|
127
|
-
private
|
|
311
|
+
private _returnIfNoNames;
|
|
128
312
|
/**
|
|
129
|
-
*
|
|
130
|
-
*
|
|
313
|
+
* Gather immediate child names for a directory using index and backend as fallback.
|
|
314
|
+
* Throws ENOTDIR when the path represents a file.
|
|
315
|
+
* @param dirpath original directory path
|
|
316
|
+
* @param entries index entries object
|
|
317
|
+
* @param keys array of index keys
|
|
318
|
+
* @returns {Promise<string[]>} immediate child names
|
|
131
319
|
*/
|
|
132
|
-
private
|
|
320
|
+
private _gatherDirectoryNames;
|
|
133
321
|
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* @
|
|
322
|
+
* 指定パスのリモート衝突ファイル (.git-conflict/) を削除して
|
|
323
|
+
* 競合を解消済とマークします。
|
|
324
|
+
* @param {string} filepath ファイルパス
|
|
325
|
+
* @returns {Promise<boolean>} 成功したら true
|
|
137
326
|
*/
|
|
138
|
-
|
|
327
|
+
resolveConflict(filepath: string): Promise<boolean>;
|
|
139
328
|
/**
|
|
140
|
-
*
|
|
329
|
+
* リモートのベーススナップショットを適用します。
|
|
330
|
+
* @param {{[path:string]:string}} snapshot path->content のマップ
|
|
331
|
+
* @param {string} headSha リモート HEAD
|
|
141
332
|
* @returns {Promise<void>}
|
|
142
333
|
*/
|
|
143
|
-
private
|
|
334
|
+
private applyBaseSnapshot;
|
|
144
335
|
/**
|
|
145
|
-
*
|
|
146
|
-
* @
|
|
336
|
+
* 指定エラーが non-fast-forward を示すか判定します。
|
|
337
|
+
* @param {any} err 例外オブジェクト
|
|
338
|
+
* @returns {boolean}
|
|
339
|
+
*/
|
|
340
|
+
private _isNonFastForwardError;
|
|
341
|
+
/**
|
|
342
|
+
* インデックス情報を返します。
|
|
343
|
+
* @returns {Promise<IndexFile>}
|
|
344
|
+
*/
|
|
345
|
+
getIndex(): Promise<IndexFile>;
|
|
346
|
+
/**
|
|
347
|
+
* 登録されているパス一覧を返します。
|
|
348
|
+
* @returns {string[]}
|
|
147
349
|
*/
|
|
148
|
-
private
|
|
350
|
+
private listPaths;
|
|
351
|
+
/**
|
|
352
|
+
* ワークスペースとインデックスから変更セットを生成します。
|
|
353
|
+
* @returns {Promise<Array<{type:string,path:string,content?:string,baseSha?:string}>>} 変更リスト
|
|
354
|
+
*/
|
|
355
|
+
getChangeSet(): Promise<any[]>;
|
|
149
356
|
/**
|
|
150
357
|
* ローカルに対する変更(create/update/delete)を適用するヘルパー
|
|
151
358
|
* @param {any} ch 変更オブジェクト
|
|
152
359
|
* @returns {Promise<void>}
|
|
153
360
|
*/
|
|
154
361
|
private _applyChangeLocally;
|
|
155
|
-
/**
|
|
156
|
-
* リモート側で削除されたエントリをローカルに反映します。
|
|
157
|
-
* @returns {Promise<void>}
|
|
158
|
-
*/
|
|
159
|
-
private _handleRemoteDeletion;
|
|
160
362
|
/**
|
|
161
363
|
* GitLab 風の actions ベースコミットフローで push を実行します。
|
|
162
364
|
* @returns {Promise<{commitSha:string}>}
|
|
@@ -167,24 +369,189 @@ export declare class VirtualFS {
|
|
|
167
369
|
* @returns {Promise<{commitSha:string}>}
|
|
168
370
|
*/
|
|
169
371
|
private _pushWithGitHubFlow;
|
|
372
|
+
/**
|
|
373
|
+
* Try to update remote ref and handle common non-fast-forward errors.
|
|
374
|
+
* Throws when the remote reports a non-fast-forward conflict.
|
|
375
|
+
*/
|
|
376
|
+
private _tryUpdateRef;
|
|
377
|
+
/**
|
|
378
|
+
* Apply changes locally, update index head and persist index.
|
|
379
|
+
* Returns the commit result object for callers.
|
|
380
|
+
* @returns {Promise<{commitSha:string}>}
|
|
381
|
+
*/
|
|
382
|
+
private _applyChangesAndFinalize;
|
|
383
|
+
/**
|
|
384
|
+
* Handle push when an adapter is provided (delegates to _pushWithActions/_pushWithGitHubFlow).
|
|
385
|
+
* Records commitKey in index metadata and returns the push result.
|
|
386
|
+
* @returns {Promise<{commitSha:string}>}
|
|
387
|
+
*/
|
|
388
|
+
private _handlePushWithAdapter;
|
|
170
389
|
/**
|
|
171
390
|
* リモートのスナップショットを取り込み、コンフリクト情報を返します。
|
|
172
391
|
* @param {string} remoteHead リモート HEAD
|
|
173
392
|
* @param {{[path:string]:string}} baseSnapshot path->content マップ
|
|
174
393
|
* @returns {Promise<{conflicts:Array<import('./types').ConflictEntry>}>}
|
|
175
394
|
*/
|
|
176
|
-
pull(
|
|
177
|
-
|
|
395
|
+
pull(remote: RemoteSnapshotDescriptor | string | {
|
|
396
|
+
fetchSnapshot: () => Promise<RemoteSnapshotDescriptor>;
|
|
397
|
+
}, baseSnapshot?: Record<string, string>): Promise<any>;
|
|
398
|
+
/**
|
|
399
|
+
* Pull by a specified commit-ish reference. Resolves the ref, fetches snapshot and
|
|
400
|
+
* delegates to remote synchronizer. Persists adapter branch meta on success.
|
|
401
|
+
* @param {string} reference commit-ish to resolve
|
|
402
|
+
* @param {Record<string,string>=} baseSnapshot optional base snapshot
|
|
403
|
+
* @returns {Promise<any>} pull result
|
|
404
|
+
*/
|
|
405
|
+
private _pullByRef;
|
|
406
|
+
/**
|
|
407
|
+
* Pull using the persisted adapterMeta.opts.branch (or 'main').
|
|
408
|
+
* @param {Record<string,string>=} baseSnapshot optional base snapshot
|
|
409
|
+
* @returns {Promise<any>} pull result
|
|
410
|
+
*/
|
|
411
|
+
private _pullUsingPersistedBranch;
|
|
412
|
+
/**
|
|
413
|
+
* Handle the case when pull() is called with no args: try persisted adapter branch if possible.
|
|
414
|
+
* Returns the pull result when handled, or null to indicate caller should continue.
|
|
415
|
+
* @param {Record<string,string>=} baseSnapshot optional base snapshot
|
|
416
|
+
* @returns {Promise<any|null>}
|
|
417
|
+
*/
|
|
418
|
+
private _handlePullNoArgs;
|
|
419
|
+
/**
|
|
420
|
+
* Persist the requested branch into adapter metadata (best-effort).
|
|
421
|
+
* @param {string} branch branch name to persist
|
|
422
|
+
* @returns {Promise<void>}
|
|
423
|
+
*/
|
|
424
|
+
private _persistAdapterBranchMeta;
|
|
425
|
+
/**
|
|
426
|
+
* Best-effort: set backend branch scope when backend supports it.
|
|
427
|
+
* @param branch branch name to set
|
|
428
|
+
* @returns {Promise<void>}
|
|
429
|
+
*/
|
|
430
|
+
private _trySetBackendBranch;
|
|
431
|
+
/**
|
|
432
|
+
* Ensure adapterMeta is loaded from index when missing.
|
|
433
|
+
* @returns {Promise<boolean>} true when adapterMeta is available
|
|
434
|
+
*/
|
|
435
|
+
private _loadAdapterMetaIfNeeded;
|
|
436
|
+
/**
|
|
437
|
+
* Persist current adapterMeta into the index file (best-effort).
|
|
438
|
+
* @returns {Promise<void>}
|
|
439
|
+
*/
|
|
440
|
+
private _writeAdapterMetaToIndex;
|
|
441
|
+
/**
|
|
442
|
+
* Normalize remote input which may be a headSha or a full descriptor.
|
|
443
|
+
* @param {RemoteSnapshotDescriptor | string} remote remote descriptor or headSha
|
|
444
|
+
* @param {Record<string,string>=} baseSnapshot optional snapshot when remote is a headSha
|
|
445
|
+
* @returns {Promise<RemoteSnapshotDescriptor>} normalized descriptor
|
|
446
|
+
*/
|
|
447
|
+
private _normalizeRemoteInput;
|
|
448
|
+
/**
|
|
449
|
+
* Obtain remote snapshot (via persisted adapter if available) and
|
|
450
|
+
* compute simple diffs against the current index.
|
|
451
|
+
* Returns an object containing the resolved `remote` descriptor (or null),
|
|
452
|
+
* `remoteShas` map and `diffs` array (strings like `added: path` / `updated: path`).
|
|
453
|
+
* @returns {Promise<{remote: RemoteSnapshotDescriptor|null, remoteShas: Record<string,string>, diffs: string[]}>}
|
|
454
|
+
*/
|
|
455
|
+
getRemoteDiffs(remote?: RemoteSnapshotDescriptor | string | {
|
|
456
|
+
fetchSnapshot: () => Promise<RemoteSnapshotDescriptor>;
|
|
457
|
+
}): Promise<{
|
|
458
|
+
remote: RemoteSnapshotDescriptor | null;
|
|
459
|
+
remoteShas: Record<string, string>;
|
|
460
|
+
diffs: string[];
|
|
178
461
|
}>;
|
|
462
|
+
/**
|
|
463
|
+
* Delegate commit history listing to the underlying adapter when available.
|
|
464
|
+
* Thin passthrough used by UI/CLI to retrieve commit summaries and paging info.
|
|
465
|
+
* @param {CommitHistoryQuery} query
|
|
466
|
+
* @returns {Promise<CommitHistoryPage>}
|
|
467
|
+
*/
|
|
468
|
+
listCommits(query: CommitHistoryQuery): Promise<CommitHistoryPage>;
|
|
469
|
+
/**
|
|
470
|
+
* Delegate branch listing to the underlying adapter when available.
|
|
471
|
+
* @param {BranchListQuery} query
|
|
472
|
+
* @returns {Promise<BranchListPage>}
|
|
473
|
+
*/
|
|
474
|
+
listBranches(query?: BranchListQuery): Promise<BranchListPage>;
|
|
475
|
+
/**
|
|
476
|
+
* Create a remote-only branch via the configured adapter.
|
|
477
|
+
* @param {{name:string, fromRef?:string}} input
|
|
478
|
+
* @returns {Promise<import('./types.ts').CreateBranchResult>}
|
|
479
|
+
*/
|
|
480
|
+
createBranch(input: import('./types.ts').CreateBranchInput): Promise<import('./types.ts').CreateBranchResult>;
|
|
481
|
+
/**
|
|
482
|
+
* Resolve a source reference for createBranch.
|
|
483
|
+
* Preference order: explicit input.fromRef, index.head, adapter default branch.
|
|
484
|
+
* Returns empty string when no resolution found.
|
|
485
|
+
* @param {import('./types.ts').CreateBranchInput} input createBranch input
|
|
486
|
+
* @param {any} instAdapter adapter instance
|
|
487
|
+
* @returns {Promise<string>} resolved ref or empty string
|
|
488
|
+
*/
|
|
489
|
+
private _resolveCreateBranchFrom;
|
|
490
|
+
/**
|
|
491
|
+
* Attempt to resolve the default branch via adapter metadata.
|
|
492
|
+
* @param {any} instAdapter adapter instance
|
|
493
|
+
* @returns {Promise<string|null>} resolved SHA or null when not found
|
|
494
|
+
*/
|
|
495
|
+
private _resolveAdapterDefaultBranch;
|
|
496
|
+
/**
|
|
497
|
+
* Convenience to get default branch name from adapter repository metadata.
|
|
498
|
+
* Returns null when adapter not available.
|
|
499
|
+
* @returns {Promise<string|null>}
|
|
500
|
+
*/
|
|
501
|
+
getDefaultBranch(): Promise<string | null>;
|
|
502
|
+
/**
|
|
503
|
+
* Persist repository metadata into IndexFile.adapter.opts for session persistence.
|
|
504
|
+
* Best-effort: failures are ignored.
|
|
505
|
+
* @returns {Promise<void>}
|
|
506
|
+
*/
|
|
507
|
+
private _persistRepositoryMetadata;
|
|
508
|
+
/**
|
|
509
|
+
* Try persisting repository metadata when available. Best-effort.
|
|
510
|
+
* @param instAdapter adapter instance or null
|
|
511
|
+
* @param result branch list result used for fallback default branch detection
|
|
512
|
+
* @returns {Promise<void>}
|
|
513
|
+
*/
|
|
514
|
+
private _maybePersistRepositoryMetadata;
|
|
515
|
+
/**
|
|
516
|
+
* Extracted helper to persist default branch candidate derived from branch list.
|
|
517
|
+
* @param result branch list result
|
|
518
|
+
* @returns {Promise<void>}
|
|
519
|
+
*/
|
|
520
|
+
private _persistDefaultBranchCandidate;
|
|
521
|
+
/**
|
|
522
|
+
* Normalize a resolved descriptor (string headSha or object) into a
|
|
523
|
+
* RemoteSnapshotDescriptor or null.
|
|
524
|
+
* @param {RemoteSnapshotDescriptor|string|null} resolved descriptor or headSha
|
|
525
|
+
* @returns {Promise<RemoteSnapshotDescriptor|null>} 正規化された descriptor または null
|
|
526
|
+
*/
|
|
527
|
+
private _toNormalizedDescriptor;
|
|
528
|
+
/**
|
|
529
|
+
* Resolve the provided `remote` parameter into either a headSha string or a full
|
|
530
|
+
* `RemoteSnapshotDescriptor`. Centralizes adapter fetching and fallback behavior
|
|
531
|
+
* to keep `pull()` small and easier to lint.
|
|
532
|
+
* @param remote remote descriptor or adapter-like object or headSha
|
|
533
|
+
* @param baseSnapshot optional snapshot used when normalizing a headSha
|
|
534
|
+
* @returns {Promise<RemoteSnapshotDescriptor|string>} resolved descriptor or headSha
|
|
535
|
+
*/
|
|
536
|
+
private _resolveDescriptor;
|
|
537
|
+
/**
|
|
538
|
+
* Try to obtain a snapshot descriptor from the persisted adapter instance.
|
|
539
|
+
* @returns {Promise<RemoteSnapshotDescriptor|null>} snapshot descriptor or null when unavailable
|
|
540
|
+
*/
|
|
541
|
+
private _fetchSnapshotFromAdapterInstance;
|
|
179
542
|
/**
|
|
180
543
|
* 変更をコミットしてリモートへ反映します。adapter が無ければローカルシミュレーションします。
|
|
181
544
|
* @param {import('./types').CommitInput} input コミット入力
|
|
182
|
-
* @param {import('../git/adapter').GitAdapter} [adapter] 任意のアダプタ
|
|
183
545
|
* @returns {Promise<{commitSha:string}>}
|
|
184
546
|
*/
|
|
185
|
-
push(input: import('./types').CommitInput
|
|
186
|
-
commitSha:
|
|
547
|
+
push(input: import('./types.ts').CommitInput): Promise<{
|
|
548
|
+
commitSha: string;
|
|
187
549
|
}>;
|
|
550
|
+
/**
|
|
551
|
+
* Ensure `input.parentSha` is a string; prefer current index head when available.
|
|
552
|
+
* @param input CommitInput
|
|
553
|
+
*/
|
|
554
|
+
private _ensureParentSha;
|
|
188
555
|
}
|
|
189
556
|
export default VirtualFS;
|
|
190
557
|
//# sourceMappingURL=virtualfs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualfs.d.ts","sourceRoot":"","sources":["../../src/virtualfs/virtualfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"virtualfs.d.ts","sourceRoot":"","sources":["../../src/virtualfs/virtualfs.ts"],"names":[],"mappings":"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"}
|