browser-git-ops 0.0.2 → 0.0.4

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 (46) hide show
  1. package/README.md +71 -97
  2. package/dist/git/abstractAdapter.d.ts +183 -0
  3. package/dist/git/abstractAdapter.d.ts.map +1 -0
  4. package/dist/git/adapter.d.ts +23 -1
  5. package/dist/git/adapter.d.ts.map +1 -1
  6. package/dist/git/githubAdapter.d.ts +354 -35
  7. package/dist/git/githubAdapter.d.ts.map +1 -1
  8. package/dist/git/gitlabAdapter.d.ts +297 -20
  9. package/dist/git/gitlabAdapter.d.ts.map +1 -1
  10. package/dist/index.d.ts +7 -6
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +6012 -843
  13. package/dist/index.js.map +4 -4
  14. package/dist/index.mjs +6012 -843
  15. package/dist/index.mjs.map +4 -4
  16. package/dist/virtualfs/changeTracker.d.ts +66 -0
  17. package/dist/virtualfs/changeTracker.d.ts.map +1 -0
  18. package/dist/virtualfs/conflictManager.d.ts +69 -0
  19. package/dist/virtualfs/conflictManager.d.ts.map +1 -0
  20. package/dist/virtualfs/hashUtils.d.ts +13 -0
  21. package/dist/virtualfs/hashUtils.d.ts.map +1 -0
  22. package/dist/virtualfs/indexManager.d.ts +57 -0
  23. package/dist/virtualfs/indexManager.d.ts.map +1 -0
  24. package/dist/virtualfs/indexedDatabaseStorage.d.ts +7 -0
  25. package/dist/virtualfs/indexedDatabaseStorage.d.ts.map +1 -0
  26. package/dist/virtualfs/inmemoryStorage.d.ts +8 -0
  27. package/dist/virtualfs/inmemoryStorage.d.ts.map +1 -0
  28. package/dist/virtualfs/localChangeApplier.d.ts +21 -0
  29. package/dist/virtualfs/localChangeApplier.d.ts.map +1 -0
  30. package/dist/virtualfs/localFileManager.d.ts +58 -0
  31. package/dist/virtualfs/localFileManager.d.ts.map +1 -0
  32. package/dist/virtualfs/metadataManager.d.ts +18 -0
  33. package/dist/virtualfs/metadataManager.d.ts.map +1 -0
  34. package/dist/virtualfs/opfsStorage.d.ts +2 -63
  35. package/dist/virtualfs/opfsStorage.d.ts.map +1 -1
  36. package/dist/virtualfs/remoteSynchronizer.d.ts +192 -0
  37. package/dist/virtualfs/remoteSynchronizer.d.ts.map +1 -0
  38. package/dist/virtualfs/storageBackend.d.ts +57 -4
  39. package/dist/virtualfs/storageBackend.d.ts.map +1 -1
  40. package/dist/virtualfs/types.d.ts +37 -0
  41. package/dist/virtualfs/types.d.ts.map +1 -1
  42. package/dist/virtualfs/virtualfs.d.ts +290 -86
  43. package/dist/virtualfs/virtualfs.d.ts.map +1 -1
  44. package/package.json +29 -13
  45. package/dist/virtualfs/indexedDbStorage.d.ts +0 -62
  46. package/dist/virtualfs/indexedDbStorage.d.ts.map +0 -1
@@ -1,4 +1,8 @@
1
- import { IndexFile } from './types';
1
+ import { IndexFile } from './types.ts';
2
+ /**
3
+ * Storage セグメント
4
+ */
5
+ export type Segment = 'workspace' | 'base' | 'conflict' | 'conflictBlob' | 'info' | 'info-workspace' | 'info-git';
2
6
  /**
3
7
  * 永続化レイヤーの抽象インターフェース
4
8
  * Storage の具体実装はこの契約に従うこと
@@ -24,21 +28,70 @@ export interface StorageBackend {
24
28
  * ファイルコンテンツを保存
25
29
  * @param {string} filepath
26
30
  * @param {string} content
31
+ * @param {Segment} segment 保存先セグメント
27
32
  * @returns {Promise<void>}
28
33
  */
29
- writeBlob(_filepath: string, _content: string): Promise<void>;
34
+ writeBlob(_filepath: string, _content: string, _segment?: Segment): Promise<void>;
30
35
  /**
31
36
  * ファイルコンテンツを読み出す
32
37
  * @param {string} filepath
38
+ * @param {Segment} segment 読み出すセグメント
33
39
  * @returns {Promise<string|null>}
34
40
  */
35
- readBlob(_filepath: string): Promise<string | null>;
41
+ readBlob(_filepath: string, _segment?: Segment): Promise<string | null>;
36
42
  /**
37
43
  * ファイルを削除する
38
44
  * @param {string} filepath
45
+ * @param {Segment} [segment] 削除するセグメント(省略時は全セグメント削除)
39
46
  * @returns {Promise<void>}
40
47
  */
41
- deleteBlob(_filepath: string): Promise<void>;
48
+ deleteBlob(_filepath: string, _segment?: Segment): Promise<void>;
49
+ /**
50
+ * 指定プレフィックス配下のファイル一覧を取得します。
51
+ * @param prefix 取得対象のディレクトリプレフィックス(省略時はルート)
52
+ * @param segment 取得対象セグメント(省略時は 'workspace')
53
+ * @param recursive サブディレクトリも含める場合は true(デフォルト true)
54
+ * @returns Promise<Array<{path:string, info:string|null}>>
55
+ */
56
+ listFiles(_prefix?: string, _segment?: Segment, _recursive?: boolean): Promise<Array<{
57
+ path: string;
58
+ info: string | null;
59
+ }>>;
60
+ /**
61
+ * Raw listing that returns implementation-specific URIs and a normalized path.
62
+ * @returns Promise<Array<{ uri: string; path: string; info?: string | null }>>
63
+ */
64
+ listFilesRaw?(_prefix?: string, _recursive?: boolean): Promise<Array<{
65
+ uri: string;
66
+ path: string;
67
+ info?: string | null;
68
+ }>>;
69
+ /**
70
+ * Set the currently-active branch name for backends that scope data by branch.
71
+ * Implementations may ignore this call if branch-scoped storage is unsupported.
72
+ * @param branch branch name or undefined to clear
73
+ */
74
+ setBranch?(_branch?: string | null): void;
75
+ }
76
+ /**
77
+ * StorageBackend の "静的側"(コンストラクタ/クラス)を表現する型。
78
+ * クラス実装はこの型を満たすことで `canUse()` の静的メソッドを持つことが保証されます。
79
+ */
80
+ export interface StorageBackendConstructor {
81
+ /**
82
+ * コンストラクタ。ルートパスやDB名などのオプション引数を受け取れるようにする。
83
+ * 実装側はこの引数を利用して初期化を行うことができます。
84
+ */
85
+ new (_root?: string): StorageBackend;
86
+ /**
87
+ * このストレージ実装が利用可能かどうかを返す(例: 環境依存のチェック)。
88
+ */
89
+ canUse(): boolean;
90
+ /**
91
+ * このストレージ実装で利用可能なルートパスあるいはDB名の一覧を返す。
92
+ * 例えばローカルFS実装ならベースディレクトリ名、IndexedDB実装ならDB名候補を返す等。
93
+ */
94
+ availableRoots(): string[] | Promise<string[]>;
42
95
  }
43
96
  export default StorageBackend;
44
97
  //# sourceMappingURL=storageBackend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storageBackend.d.ts","sourceRoot":"","sources":["../../src/virtualfs/storageBackend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACtC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACnD;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"storageBackend.d.ts","sourceRoot":"","sources":["../../src/virtualfs/storageBackend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,GAAG,MAAM,GAAG,gBAAgB,GAAG,UAAU,CAAA;AAEjH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACtC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjF;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAEvE;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhE;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC,CAAA;IAE5H;;;OAGG;IACH,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC,CAAA;IAE1H;;;;OAIG;IACH,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;CAW1C;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,KAAK,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAAA;IACpC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAA;IACjB;;;OAGG;IACH,cAAc,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC/C;AAED,eAAe,cAAc,CAAA"}
@@ -3,12 +3,17 @@ export interface IndexEntry {
3
3
  path: string;
4
4
  state: FileState;
5
5
  baseSha?: string;
6
+ remoteSha?: string;
6
7
  workspaceSha?: string;
7
8
  updatedAt: number;
8
9
  }
9
10
  export interface IndexFile {
10
11
  head: string;
11
12
  lastCommitKey?: string;
13
+ adapter?: {
14
+ type: 'github' | 'gitlab' | string;
15
+ opts?: any;
16
+ };
12
17
  entries: Record<string, IndexEntry>;
13
18
  }
14
19
  export interface TombstoneEntry {
@@ -43,4 +48,36 @@ export interface CommitInput {
43
48
  ref?: string;
44
49
  commitKey?: string;
45
50
  }
51
+ export type BranchInfo = {
52
+ name: string;
53
+ commit: {
54
+ sha: string;
55
+ url: string;
56
+ };
57
+ protected: boolean;
58
+ isDefault: boolean;
59
+ };
60
+ export type BranchListQuery = {
61
+ perPage?: number;
62
+ page?: number;
63
+ };
64
+ export type BranchListPage = {
65
+ items: BranchInfo[];
66
+ nextPage?: number;
67
+ lastPage?: number;
68
+ };
69
+ export type RepositoryMetadata = {
70
+ defaultBranch: string;
71
+ name: string;
72
+ id?: string | number;
73
+ };
74
+ export type CreateBranchInput = {
75
+ name: string;
76
+ fromRef?: string;
77
+ };
78
+ export type CreateBranchResult = {
79
+ name: string;
80
+ sha: string;
81
+ ref: string;
82
+ };
46
83
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/virtualfs/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAA;AAE9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IAEZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/virtualfs/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAA;AAE9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IAEZ,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;QAClC,IAAI,CAAC,EAAE,GAAG,CAAA;KACX,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAGD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA"}
@@ -1,28 +1,68 @@
1
- import { IndexFile, TombstoneEntry } from './types';
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 storageDir;
6
- private base;
7
- private workspace;
8
- private tombstones;
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
- * コンテンツから SHA1 を計算します。
22
- * @param {string} content コンテンツ
23
- * @returns {string} 計算された SHA
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}
46
+ */
47
+ get lastCommitKey(): string | undefined;
48
+ /**
49
+ * Set lastCommitKey
50
+ * @param {string|undefined} k
51
+ * @returns {void}
52
+ */
53
+ set lastCommitKey(k: string | undefined);
54
+ /**
55
+ * SHA-1 helper wrapper (delegates to ./hashUtils)
56
+ * @param {string} content - ハッシュ対象の文字列
57
+ * @returns {Promise<string>} SHA-1 ハッシュの16進表現
24
58
  */
25
- private shaOf;
59
+ shaOf(content: string): Promise<string>;
60
+ /**
61
+ * SHA helper for Git blob formatting
62
+ * @param {string} content - blob コンテンツ
63
+ * @returns {Promise<string>} SHA-1 ハッシュの16進表現(git blob 用)
64
+ */
65
+ shaOfGitBlob(content: string): Promise<string>;
26
66
  /**
27
67
  * VirtualFS の初期化を行います(バックエンド初期化と index 読み込み)。
28
68
  * @returns {Promise<void>}
@@ -34,38 +74,89 @@ export declare class VirtualFS {
34
74
  */
35
75
  private loadIndex;
36
76
  /**
37
- * 内部インデックスを永続化します。
77
+ * Set adapter instance and persist adapter metadata into index file.
78
+ * @param adapter adapter instance (or null to clear)
79
+ * @param meta metadata to persist (e.g. { type:'github', opts: {...} })
38
80
  * @returns {Promise<void>}
39
81
  */
40
- private saveIndex;
82
+ setAdapter(adapter: any | null, meta?: any): Promise<void>;
41
83
  /**
42
- *
84
+ * Try to inject the configured logger into the adapter instance (best-effort).
85
+ * @returns {Promise<void>}
43
86
  */
87
+ private _tryInjectLogger;
44
88
  /**
45
- * ワークスペースにファイルを書き込みます(ローカル編集)。
89
+ * Persist adapter metadata into the index file (best-effort).
90
+ * @returns {Promise<void>}
91
+ */
92
+ private _tryPersistAdapterMeta;
93
+ /**
94
+ * Return persisted adapter metadata from the index (or cached meta).
95
+ * This does not necessarily instantiate the adapter instance; use
96
+ * `getAdapterInstance()` to obtain an instantiated adapter.
97
+ * @returns {Promise<any|null>}
98
+ */
99
+ getAdapter(): Promise<any | null>;
100
+ /**
101
+ * Return or lazily create the adapter instance based on persisted metadata.
102
+ * @returns {Promise<any|null>}
103
+ */
104
+ getAdapterInstance(): Promise<any | null>;
105
+ /**
106
+ * Load adapterMeta from index if not present.
107
+ * @returns {Promise<void>}
108
+ */
109
+ private _ensureAdapterMetaLoaded;
110
+ /**
111
+ * Create adapter instance for given type and options. Returns null on failure.
112
+ * @param type adapter type string
113
+ * @param opts adapter options
114
+ * @returns {any|null}
115
+ */
116
+ private _instantiateAdapter;
117
+ /**
118
+ * Return persisted adapter metadata (if any).
119
+ * @returns {any|null}
120
+ */
121
+ getAdapterMeta(): any | null;
122
+ /**
123
+ * ファイルを書き込みます(ローカル編集)。
46
124
  * @param {string} filepath ファイルパス
47
125
  * @param {string} content コンテンツ
48
126
  * @returns {Promise<void>}
49
127
  */
50
- writeWorkspace(filepath: string, content: string): Promise<void>;
128
+ writeFile(filepath: string, content: string): Promise<void>;
51
129
  /**
52
- * ワークスペース上のファイルを削除します(トゥームストーン作成を含む)。
130
+ * ファイルを削除します(トゥームストーン作成を含む)。
53
131
  * @param {string} filepath ファイルパス
54
132
  * @returns {Promise<void>}
55
133
  */
56
- deleteWorkspace(filepath: string): Promise<void>;
134
+ deleteFile(filepath: string): Promise<void>;
57
135
  /**
58
136
  * rename を delete + create の合成で行うヘルパ
59
137
  * @param from 元パス
60
138
  * @param to 新パス
61
139
  */
62
- renameWorkspace(from: string, to: string): Promise<void>;
140
+ renameFile(from: string, to: string): Promise<void>;
63
141
  /**
64
142
  * ワークスペース/ベースからファイル内容を読み出します。
65
143
  * @param {string} filepath ファイルパス
66
144
  * @returns {Promise<string|null>} ファイル内容または null
67
145
  */
68
- readWorkspace(filepath: string): Promise<string | null>;
146
+ readFile(filepath: string): Promise<string | null>;
147
+ /**
148
+ * 衝突ファイル(.git-conflict/配下)を取得します。
149
+ * @param {string} filepath ファイルパス
150
+ * @returns {Promise<string|null>} ファイル内容または null
151
+ */
152
+ readConflict(filepath: string): Promise<string | null>;
153
+ /**
154
+ * 指定パスのリモート衝突ファイル (.git-conflict/) を削除して
155
+ * 競合を解消済とマークします。
156
+ * @param {string} filepath ファイルパス
157
+ * @returns {Promise<boolean>} 成功したら true
158
+ */
159
+ resolveConflict(filepath: string): Promise<boolean>;
69
160
  /**
70
161
  * リモートのベーススナップショットを適用します。
71
162
  * @param {{[path:string]:string}} snapshot path->content のマップ
@@ -73,118 +164,231 @@ export declare class VirtualFS {
73
164
  * @returns {Promise<void>}
74
165
  */
75
166
  applyBaseSnapshot(snapshot: Record<string, string>, headSha: string): Promise<void>;
167
+ /**
168
+ * 指定エラーが non-fast-forward を示すか判定します。
169
+ * @param {any} err 例外オブジェクト
170
+ * @returns {boolean}
171
+ */
172
+ private _isNonFastForwardError;
76
173
  /**
77
174
  * インデックス情報を返します。
78
- * @returns {IndexFile}
175
+ * @returns {Promise<IndexFile>}
79
176
  */
80
- getIndex(): IndexFile;
177
+ getIndex(): Promise<IndexFile>;
81
178
  /**
82
179
  * 登録されているパス一覧を返します。
83
180
  * @returns {string[]}
84
181
  */
85
- listPaths(): string[];
182
+ listPaths(): Promise<string[]>;
183
+ /**
184
+ * ワークスペースとインデックスから変更セットを生成します。
185
+ * @returns {Promise<Array<{type:string,path:string,content?:string,baseSha?:string}>>} 変更リスト
186
+ */
187
+ getChangeSet(): Promise<any[]>;
86
188
  /**
87
- * tombstone を返します。
88
- * @returns {TombstoneEntry[]}
189
+ * ローカルに対する変更(create/update/delete)を適用するヘルパー
190
+ * @param {any} ch 変更オブジェクト
191
+ * @returns {Promise<void>}
89
192
  */
90
- getTombstones(): TombstoneEntry[];
193
+ private _applyChangeLocally;
91
194
  /**
92
- * tombstone を返します。
93
- * @returns {TombstoneEntry[]}
195
+ * GitLab 風の actions ベースコミットフローで push を実行します。
196
+ * @returns {Promise<{commitSha:string}>}
94
197
  */
198
+ private _pushWithActions;
95
199
  /**
96
- * ワークスペースとインデックスから変更セットを生成します。
97
- * @returns {Promise<Array<{type:string,path:string,content?:string,baseSha?:string}>>} 変更リスト
98
- */
99
- getChangeSet(): Promise<({
100
- type: 'create';
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
- })[]>;
200
+ * GitHub 風の blob/tree/commit フローで push を実行します。
201
+ * @returns {Promise<{commitSha:string}>}
202
+ */
203
+ private _pushWithGitHubFlow;
204
+ /**
205
+ * Try to update remote ref and handle common non-fast-forward errors.
206
+ * Throws when the remote reports a non-fast-forward conflict.
207
+ */
208
+ private _tryUpdateRef;
209
+ /**
210
+ * Apply changes locally, update index head and persist index.
211
+ * Returns the commit result object for callers.
212
+ * @returns {Promise<{commitSha:string}>}
213
+ */
214
+ private _applyChangesAndFinalize;
113
215
  /**
114
- * tombstone からの削除変更リストを生成します。
115
- * @returns {Array<{type:'delete',path:string,baseSha:string}>}
216
+ * Handle push when an adapter is provided (delegates to _pushWithActions/_pushWithGitHubFlow).
217
+ * Records commitKey in index metadata and returns the push result.
218
+ * @returns {Promise<{commitSha:string}>}
219
+ */
220
+ private _handlePushWithAdapter;
221
+ /**
222
+ * リモートのスナップショットを取り込み、コンフリクト情報を返します。
223
+ * @param {string} remoteHead リモート HEAD
224
+ * @param {{[path:string]:string}} baseSnapshot path->content マップ
225
+ * @returns {Promise<{conflicts:Array<import('./types').ConflictEntry>}>}
116
226
  */
117
- private _changesFromTombstones;
227
+ pull(remote: RemoteSnapshotDescriptor | string | {
228
+ fetchSnapshot: () => Promise<RemoteSnapshotDescriptor>;
229
+ }, baseSnapshot?: Record<string, string>): Promise<any>;
118
230
  /**
119
- * index entries から create/update の変更リストを生成します。
120
- * @returns {Array<{type:'create'|'update',path:string,content:string,baseSha?:string}>}
231
+ * Pull by a specified commit-ish reference. Resolves the ref, fetches snapshot and
232
+ * delegates to remote synchronizer. Persists adapter branch meta on success.
233
+ * @param {string} reference commit-ish to resolve
234
+ * @param {Record<string,string>=} baseSnapshot optional base snapshot
235
+ * @returns {Promise<any>} pull result
121
236
  */
122
- private _changesFromIndexEntries;
237
+ private _pullByRef;
123
238
  /**
124
- * 追加状態のエントリから create 変更を生成します。
125
- * @returns {Array<{type:'create',path:string,content:string}>}
239
+ * Pull using the persisted adapterMeta.opts.branch (or 'main').
240
+ * @param {Record<string,string>=} baseSnapshot optional base snapshot
241
+ * @returns {Promise<any>} pull result
126
242
  */
127
- private _changesFromAddedEntries;
243
+ private _pullUsingPersistedBranch;
128
244
  /**
129
- * 変更状態のエントリから update 変更を生成します。
130
- * @returns {Array<{type:'update',path:string,content:string,baseSha:string}>}
245
+ * Handle the case when pull() is called with no args: try persisted adapter branch if possible.
246
+ * Returns the pull result when handled, or null to indicate caller should continue.
247
+ * @param {Record<string,string>=} baseSnapshot optional base snapshot
248
+ * @returns {Promise<any|null>}
131
249
  */
132
- private _changesFromModifiedEntries;
250
+ private _handlePullNoArgs;
133
251
  /**
134
- * リモートスナップショットからの差分取り込み時に、単一パスを評価して
135
- * 必要なら conflicts に追加、もしくは base を更新します。
252
+ * Persist the requested branch into adapter metadata (best-effort).
253
+ * @param {string} branch branch name to persist
254
+ * @returns {Promise<void>}
255
+ */
256
+ private _persistAdapterBranchMeta;
257
+ /**
258
+ * Best-effort: set backend branch scope when backend supports it.
259
+ * @param branch branch name to set
136
260
  * @returns {Promise<void>}
137
261
  */
138
- private _handleRemotePath;
262
+ private _trySetBackendBranch;
263
+ /**
264
+ * Ensure adapterMeta is loaded from index when missing.
265
+ * @returns {Promise<boolean>} true when adapterMeta is available
266
+ */
267
+ private _loadAdapterMetaIfNeeded;
139
268
  /**
140
- * リモートに存在するがローカルにないパスを処理します。
269
+ * Persist current adapterMeta into the index file (best-effort).
141
270
  * @returns {Promise<void>}
142
271
  */
143
- private _handleRemoteNew;
272
+ private _writeAdapterMetaToIndex;
273
+ /**
274
+ * Normalize remote input which may be a headSha or a full descriptor.
275
+ * @param {RemoteSnapshotDescriptor | string} remote remote descriptor or headSha
276
+ * @param {Record<string,string>=} baseSnapshot optional snapshot when remote is a headSha
277
+ * @returns {Promise<RemoteSnapshotDescriptor>} normalized descriptor
278
+ */
279
+ private _normalizeRemoteInput;
280
+ /**
281
+ * Obtain remote snapshot (via persisted adapter if available) and
282
+ * compute simple diffs against the current index.
283
+ * Returns an object containing the resolved `remote` descriptor (or null),
284
+ * `remoteShas` map and `diffs` array (strings like `added: path` / `updated: path`).
285
+ * @returns {Promise<{remote: RemoteSnapshotDescriptor|null, remoteShas: Record<string,string>, diffs: string[]}>}
286
+ */
287
+ getRemoteDiffs(remote?: RemoteSnapshotDescriptor | string | {
288
+ fetchSnapshot: () => Promise<RemoteSnapshotDescriptor>;
289
+ }): Promise<{
290
+ remote: RemoteSnapshotDescriptor | null;
291
+ remoteShas: Record<string, string>;
292
+ diffs: string[];
293
+ }>;
294
+ /**
295
+ * Delegate commit history listing to the underlying adapter when available.
296
+ * Thin passthrough used by UI/CLI to retrieve commit summaries and paging info.
297
+ * @param {CommitHistoryQuery} query
298
+ * @returns {Promise<CommitHistoryPage>}
299
+ */
300
+ listCommits(query: CommitHistoryQuery): Promise<CommitHistoryPage>;
301
+ /**
302
+ * Delegate branch listing to the underlying adapter when available.
303
+ * @param {BranchListQuery} query
304
+ * @returns {Promise<BranchListPage>}
305
+ */
306
+ listBranches(query?: BranchListQuery): Promise<BranchListPage>;
144
307
  /**
145
- * リモートに存在し、かつローカルにエントリがあるパスを処理します。
308
+ * Create a remote-only branch via the configured adapter.
309
+ * @param {{name:string, fromRef?:string}} input
310
+ * @returns {Promise<import('./types.ts').CreateBranchResult>}
311
+ */
312
+ createBranch(input: import('./types.ts').CreateBranchInput): Promise<import('./types.ts').CreateBranchResult>;
313
+ /**
314
+ * Resolve a source reference for createBranch.
315
+ * Preference order: explicit input.fromRef, index.head, adapter default branch.
316
+ * Returns empty string when no resolution found.
317
+ * @param {import('./types.ts').CreateBranchInput} input createBranch input
318
+ * @param {any} instAdapter adapter instance
319
+ * @returns {Promise<string>} resolved ref or empty string
320
+ */
321
+ private _resolveCreateBranchFrom;
322
+ /**
323
+ * Attempt to resolve the default branch via adapter metadata.
324
+ * @param {any} instAdapter adapter instance
325
+ * @returns {Promise<string|null>} resolved SHA or null when not found
326
+ */
327
+ private _resolveAdapterDefaultBranch;
328
+ /**
329
+ * Convenience to get default branch name from adapter repository metadata.
330
+ * Returns null when adapter not available.
331
+ * @returns {Promise<string|null>}
332
+ */
333
+ getDefaultBranch(): Promise<string | null>;
334
+ /**
335
+ * Persist repository metadata into IndexFile.adapter.opts for session persistence.
336
+ * Best-effort: failures are ignored.
146
337
  * @returns {Promise<void>}
147
338
  */
148
- private _handleRemoteExisting;
339
+ private _persistRepositoryMetadata;
149
340
  /**
150
- * ローカルに対する変更(create/update/delete)を適用するヘルパー
151
- * @param {any} ch 変更オブジェクト
341
+ * Normalize a resolved descriptor (string headSha or object) into a
342
+ * RemoteSnapshotDescriptor or null. Helper to reduce cognitive complexity.
343
+ * @returns {Promise<RemoteSnapshotDescriptor|null>} 正規化された descriptor または null
344
+ */
345
+ /**
346
+ * Try persisting repository metadata when available. Best-effort.
347
+ * @param instAdapter adapter instance or null
348
+ * @param result branch list result used for fallback default branch detection
152
349
  * @returns {Promise<void>}
153
350
  */
154
- private _applyChangeLocally;
351
+ private _maybePersistRepositoryMetadata;
155
352
  /**
156
- * リモート側で削除されたエントリをローカルに反映します。
353
+ * Extracted helper to persist default branch candidate derived from branch list.
354
+ * @param result branch list result
157
355
  * @returns {Promise<void>}
158
356
  */
159
- private _handleRemoteDeletion;
357
+ private _persistDefaultBranchCandidate;
160
358
  /**
161
- * GitLab 風の actions ベースコミットフローで push を実行します。
162
- * @returns {Promise<{commitSha:string}>}
359
+ * Normalize a resolved descriptor (string headSha or object) into a
360
+ * RemoteSnapshotDescriptor or null.
361
+ * @param {RemoteSnapshotDescriptor|string|null} resolved descriptor or headSha
362
+ * @returns {Promise<RemoteSnapshotDescriptor|null>} 正規化された descriptor または null
163
363
  */
164
- private _pushWithActions;
364
+ private _toNormalizedDescriptor;
165
365
  /**
166
- * GitHub 風の blob/tree/commit フローで push を実行します。
167
- * @returns {Promise<{commitSha:string}>}
366
+ * Resolve the provided `remote` parameter into either a headSha string or a full
367
+ * `RemoteSnapshotDescriptor`. Centralizes adapter fetching and fallback behavior
368
+ * to keep `pull()` small and easier to lint.
369
+ * @param remote remote descriptor or adapter-like object or headSha
370
+ * @param baseSnapshot optional snapshot used when normalizing a headSha
371
+ * @returns {Promise<RemoteSnapshotDescriptor|string>} resolved descriptor or headSha
168
372
  */
169
- private _pushWithGitHubFlow;
373
+ private _resolveDescriptor;
170
374
  /**
171
- * リモートのスナップショットを取り込み、コンフリクト情報を返します。
172
- * @param {string} remoteHead リモート HEAD
173
- * @param {{[path:string]:string}} baseSnapshot path->content マップ
174
- * @returns {Promise<{conflicts:Array<import('./types').ConflictEntry>}>}
375
+ * Try to obtain a snapshot descriptor from the persisted adapter instance.
376
+ * @returns {Promise<RemoteSnapshotDescriptor|null>} snapshot descriptor or null when unavailable
175
377
  */
176
- pull(remoteHead: string, baseSnapshot: Record<string, string>): Promise<{
177
- conflicts: import("./types").ConflictEntry[];
178
- }>;
378
+ private _fetchSnapshotFromAdapterInstance;
179
379
  /**
180
380
  * 変更をコミットしてリモートへ反映します。adapter が無ければローカルシミュレーションします。
181
381
  * @param {import('./types').CommitInput} input コミット入力
182
- * @param {import('../git/adapter').GitAdapter} [adapter] 任意のアダプタ
183
382
  * @returns {Promise<{commitSha:string}>}
184
383
  */
185
- push(input: import('./types').CommitInput, adapter?: import('../git/adapter').GitAdapter): Promise<{
186
- commitSha: any;
384
+ push(input: import('./types.ts').CommitInput): Promise<{
385
+ commitSha: string;
187
386
  }>;
387
+ /**
388
+ * Ensure `input.parentSha` is a string; prefer current index head when available.
389
+ * @param input CommitInput
390
+ */
391
+ private _ensureParentSha;
188
392
  }
189
393
  export default VirtualFS;
190
394
  //# 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,SAAS,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,sDAAsD;AACtD,qBAAa,SAAS;IACpB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,IAAI,CAAsD;IAClE,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,OAAO,CAAgB;IAE/B;;;;OAIG;gBACS,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,cAAc,CAAA;KAAE;IAOvE;;;;OAIG;YACW,KAAK;IAQnB;;;OAGG;IACG,IAAI;IAKV;;;OAGG;YACW,SAAS;IAmBvB;;;OAGG;YACW,SAAS;IAIvB;;OAEG;IACH;;;;;OAKG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAkBtD;;;;OAIG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM;IAqBtC;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAa9C;;;;OAIG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM;IAWpC;;;;;OAKG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;IA2BzE;;;OAGG;IACH,QAAQ,IAAI,SAAS;IAIrB;;;OAGG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;;OAGG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;;OAGG;IAEH;;;QAGI;IACI,YAAY;cAGN,QAAQ;cAAQ,MAAM;iBAAW,MAAM;;cACvC,QAAQ;cAAQ,MAAM;iBAAW,MAAM;;;cACvC,QAAQ;cAAQ,MAAM;iBAAW,MAAM;;IAQrD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAWnC;;;;OAIG;YACW,iBAAiB;IAS/B;;;OAGG;YACW,gBAAgB;IAa9B;;;OAGG;YACW,qBAAqB;IAkBnC;;;;OAIG;YACW,mBAAmB;IAqBjC;;;OAGG;YACW,qBAAqB;IAYnC;;;OAGG;YACW,gBAAgB;IAe9B;;;OAGG;YACW,mBAAmB;IAkBjC;;;;;OAKG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;IA6BnE;;;;;OAKG;IACG,IAAI,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,gBAAgB,EAAE,UAAU;;;CAkD/F;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"virtualfs.d.ts","sourceRoot":"","sources":["../../src/virtualfs/virtualfs.ts"],"names":[],"mappings":"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"}