@openvcs/sdk 0.2.4 → 0.2.6
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 +68 -9
- package/lib/build.d.ts +8 -0
- package/lib/build.js +81 -2
- package/lib/dist.js +1 -0
- package/lib/init.js +2 -2
- package/lib/runtime/factory.d.ts +3 -0
- package/lib/runtime/factory.js +153 -0
- package/lib/runtime/index.d.ts +7 -4
- package/lib/runtime/index.js +13 -154
- package/lib/runtime/registration.d.ts +39 -0
- package/lib/runtime/registration.js +37 -0
- package/lib/runtime/vcs-delegate-base.d.ts +125 -0
- package/lib/runtime/vcs-delegate-base.js +249 -0
- package/lib/runtime/vcs-delegate-metadata.d.ts +120 -0
- package/lib/runtime/vcs-delegate-metadata.js +58 -0
- package/package.json +3 -2
- package/src/lib/build.ts +104 -2
- package/src/lib/dist.ts +2 -0
- package/src/lib/init.ts +2 -2
- package/src/lib/runtime/factory.ts +182 -0
- package/src/lib/runtime/index.ts +14 -177
- package/src/lib/runtime/registration.ts +93 -0
- package/src/lib/runtime/vcs-delegate-base.ts +481 -0
- package/src/lib/runtime/vcs-delegate-metadata.ts +165 -0
- package/test/build.test.js +147 -6
- package/test/cli.test.js +5 -3
- package/test/dist.test.js +27 -18
- package/test/init.test.js +6 -2
- package/test/runtime.test.js +118 -1
- package/test/tsconfig.json +8 -0
- package/test/vcs-delegate-base.test.js +169 -0
- package/test/vcs-delegate-base.types.ts +44 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { PluginDelegates, PluginImplements, VcsDelegates } from '../types';
|
|
2
|
+
import type { PluginRuntime, PluginRuntimeContext, PluginRuntimeTransport } from './contracts';
|
|
3
|
+
/** Describes the plugin module startup hook invoked by the generated bootstrap. */
|
|
4
|
+
export type OnPluginStartHandler = () => void | Promise<void>;
|
|
5
|
+
/** Describes runtime-wide options applied by the generated bootstrap. */
|
|
6
|
+
export interface PluginModuleDefinition {
|
|
7
|
+
/** Stores optional `plugin.*` delegates contributed by the plugin module. */
|
|
8
|
+
plugin?: PluginDelegates<PluginRuntimeContext>;
|
|
9
|
+
/** Stores optional `vcs.*` delegates contributed by the plugin module. */
|
|
10
|
+
vcs?: VcsDelegates<PluginRuntimeContext>;
|
|
11
|
+
/** Stores optional capability overrides for `plugin.initialize`. */
|
|
12
|
+
implements?: Partial<PluginImplements>;
|
|
13
|
+
/** Stores the `host.log` target emitted by the runtime. */
|
|
14
|
+
logTarget?: string;
|
|
15
|
+
/** Stores the timeout in milliseconds for request handlers. */
|
|
16
|
+
timeout?: number;
|
|
17
|
+
/** Called during stop() after pending operations complete. */
|
|
18
|
+
onShutdown?: (error?: Error) => void | Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/** Describes one imported plugin module consumed by the generated bootstrap. */
|
|
21
|
+
export interface PluginBootstrapModule {
|
|
22
|
+
/** Stores the plugin author's declarative runtime definition. */
|
|
23
|
+
PluginDefinition?: PluginModuleDefinition;
|
|
24
|
+
/** Stores the plugin author's startup hook. */
|
|
25
|
+
OnPluginStart?: OnPluginStartHandler;
|
|
26
|
+
}
|
|
27
|
+
/** Describes the generated bootstrap inputs used to import and start a plugin. */
|
|
28
|
+
export interface BootstrapPluginModuleOptions {
|
|
29
|
+
/** Imports the plugin author's compiled runtime module. */
|
|
30
|
+
importPluginModule: () => Promise<PluginBootstrapModule>;
|
|
31
|
+
/** Stores the plugin module path for error messages. */
|
|
32
|
+
modulePath: string;
|
|
33
|
+
/** Overrides the transport used by the runtime loop. */
|
|
34
|
+
transport?: PluginRuntimeTransport;
|
|
35
|
+
}
|
|
36
|
+
/** Creates a runtime from one declarative plugin module definition. */
|
|
37
|
+
export declare function createRegisteredPluginRuntime(definition?: PluginModuleDefinition): PluginRuntime;
|
|
38
|
+
/** Imports the author module, applies its definition, runs `OnPluginStart`, and starts the runtime loop. */
|
|
39
|
+
export declare function bootstrapPluginModule(options: BootstrapPluginModuleOptions): Promise<PluginRuntime>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright © 2025-2026 OpenVCS Contributors
|
|
3
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.createRegisteredPluginRuntime = createRegisteredPluginRuntime;
|
|
6
|
+
exports.bootstrapPluginModule = bootstrapPluginModule;
|
|
7
|
+
const factory_1 = require("./factory");
|
|
8
|
+
/** Creates a runtime from one declarative plugin module definition. */
|
|
9
|
+
function createRegisteredPluginRuntime(definition = {}) {
|
|
10
|
+
const options = {
|
|
11
|
+
plugin: definition.plugin,
|
|
12
|
+
vcs: definition.vcs,
|
|
13
|
+
implements: definition.implements,
|
|
14
|
+
logTarget: definition.logTarget,
|
|
15
|
+
timeout: definition.timeout,
|
|
16
|
+
onShutdown: definition.onShutdown,
|
|
17
|
+
};
|
|
18
|
+
return (0, factory_1.createPluginRuntime)(options);
|
|
19
|
+
}
|
|
20
|
+
/** Imports the author module, applies its definition, runs `OnPluginStart`, and starts the runtime loop. */
|
|
21
|
+
async function bootstrapPluginModule(options) {
|
|
22
|
+
const pluginModule = await options.importPluginModule();
|
|
23
|
+
const onPluginStart = pluginModule.OnPluginStart;
|
|
24
|
+
if (typeof onPluginStart !== 'function') {
|
|
25
|
+
throw new Error(`plugin module '${options.modulePath}' must export OnPluginStart()`);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
await onPluginStart();
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
32
|
+
throw new Error(`plugin startup failed: ${message}`);
|
|
33
|
+
}
|
|
34
|
+
const runtime = createRegisteredPluginRuntime(pluginModule.PluginDefinition);
|
|
35
|
+
runtime.start(options.transport);
|
|
36
|
+
return runtime;
|
|
37
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type * as VcsTypes from '../types';
|
|
2
|
+
import type { PluginRuntimeContext } from './contracts';
|
|
3
|
+
import { type VcsDelegateAssignments, type VcsDelegateMethodName } from './vcs-delegate-metadata';
|
|
4
|
+
/** Describes one synchronous or asynchronous VCS delegate return value. */
|
|
5
|
+
type VcsHandlerResult<TResult> = TResult | Promise<TResult>;
|
|
6
|
+
/** Builds exact `vcs.*` delegates from ordinary class methods. */
|
|
7
|
+
export declare abstract class VcsDelegateBase<TDeps, TContext = PluginRuntimeContext> {
|
|
8
|
+
/** Stores the runtime services exposed to the delegate implementation. */
|
|
9
|
+
protected readonly deps: TDeps;
|
|
10
|
+
/** Creates one delegate base with the provided runtime dependencies. */
|
|
11
|
+
constructor(deps: TDeps);
|
|
12
|
+
/** Builds an SDK `vcs.*` delegate map from the subclass overrides. */
|
|
13
|
+
toDelegates(): VcsDelegateAssignments<TContext>;
|
|
14
|
+
/** Assigns one typed class method to its exact `vcs.*` delegate name. */
|
|
15
|
+
private assignDelegate;
|
|
16
|
+
/**
|
|
17
|
+
* Throws when a subclass does not implement one required delegate method.
|
|
18
|
+
*
|
|
19
|
+
* The `never` return type is intentional: base stubs should never contribute
|
|
20
|
+
* a usable value, and subclasses should override the method with the exact
|
|
21
|
+
* signature inherited from `VcsDelegateBase`.
|
|
22
|
+
*/
|
|
23
|
+
protected unimplemented(methodName: VcsDelegateMethodName): never;
|
|
24
|
+
/** Handles `vcs.get_caps`. */
|
|
25
|
+
getCaps(_params: VcsTypes.RequestParams, _context: TContext): VcsHandlerResult<VcsTypes.VcsCapabilities>;
|
|
26
|
+
/** Handles `vcs.open`. */
|
|
27
|
+
open(_params: VcsTypes.VcsOpenParams, _context: TContext): VcsHandlerResult<VcsTypes.VcsSessionResult>;
|
|
28
|
+
/** Handles `vcs.close`. */
|
|
29
|
+
close(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<null>;
|
|
30
|
+
/** Handles `vcs.clone_repo`. */
|
|
31
|
+
cloneRepo(_params: VcsTypes.VcsCloneRepoParams, _context: TContext): VcsHandlerResult<null>;
|
|
32
|
+
/** Handles `vcs.get_workdir`. */
|
|
33
|
+
getWorkdir(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<string>;
|
|
34
|
+
/** Handles `vcs.get_current_branch`. */
|
|
35
|
+
getCurrentBranch(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<string | null>;
|
|
36
|
+
/** Handles `vcs.list_branches`. */
|
|
37
|
+
listBranches(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<VcsTypes.VcsBranchEntry[]>;
|
|
38
|
+
/** Handles `vcs.list_local_branches`. */
|
|
39
|
+
listLocalBranches(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<string[]>;
|
|
40
|
+
/** Handles `vcs.create_branch`. */
|
|
41
|
+
createBranch(_params: VcsTypes.VcsCreateBranchParams, _context: TContext): VcsHandlerResult<null>;
|
|
42
|
+
/** Handles `vcs.checkout_branch`. */
|
|
43
|
+
checkoutBranch(_params: VcsTypes.VcsCheckoutBranchParams, _context: TContext): VcsHandlerResult<null>;
|
|
44
|
+
/** Handles `vcs.ensure_remote`. */
|
|
45
|
+
ensureRemote(_params: VcsTypes.VcsEnsureRemoteParams, _context: TContext): VcsHandlerResult<null>;
|
|
46
|
+
/** Handles `vcs.list_remotes`. */
|
|
47
|
+
listRemotes(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<VcsTypes.VcsRemoteEntry[]>;
|
|
48
|
+
/** Handles `vcs.remove_remote`. */
|
|
49
|
+
removeRemote(_params: VcsTypes.VcsRemoveRemoteParams, _context: TContext): VcsHandlerResult<null>;
|
|
50
|
+
/** Handles `vcs.fetch`. */
|
|
51
|
+
fetch(_params: VcsTypes.VcsFetchParams, _context: TContext): VcsHandlerResult<null>;
|
|
52
|
+
/** Handles `vcs.fetch_with_options`. */
|
|
53
|
+
fetchWithOptions(_params: VcsTypes.VcsFetchParams, _context: TContext): VcsHandlerResult<null>;
|
|
54
|
+
/** Handles `vcs.push`. */
|
|
55
|
+
push(_params: VcsTypes.VcsPushParams, _context: TContext): VcsHandlerResult<null>;
|
|
56
|
+
/** Handles `vcs.pull_ff_only`. */
|
|
57
|
+
pullFfOnly(_params: VcsTypes.VcsPullFfOnlyParams, _context: TContext): VcsHandlerResult<null>;
|
|
58
|
+
/** Handles `vcs.commit`. */
|
|
59
|
+
commit(_params: VcsTypes.VcsCommitParams, _context: TContext): VcsHandlerResult<string>;
|
|
60
|
+
/** Handles `vcs.commit_index`. */
|
|
61
|
+
commitIndex(_params: VcsTypes.VcsCommitParams, _context: TContext): VcsHandlerResult<string>;
|
|
62
|
+
/** Handles `vcs.get_status_summary`. */
|
|
63
|
+
getStatusSummary(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<VcsTypes.StatusSummary>;
|
|
64
|
+
/** Handles `vcs.get_status_payload`. */
|
|
65
|
+
getStatusPayload(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<VcsTypes.StatusPayload>;
|
|
66
|
+
/** Handles `vcs.list_commits`. */
|
|
67
|
+
listCommits(_params: VcsTypes.VcsListCommitsParams, _context: TContext): VcsHandlerResult<VcsTypes.CommitEntry[]>;
|
|
68
|
+
/** Handles `vcs.diff_file`. */
|
|
69
|
+
diffFile(_params: VcsTypes.VcsDiffFileParams, _context: TContext): VcsHandlerResult<string[]>;
|
|
70
|
+
/** Handles `vcs.diff_commit`. */
|
|
71
|
+
diffCommit(_params: VcsTypes.VcsDiffCommitParams, _context: TContext): VcsHandlerResult<string[]>;
|
|
72
|
+
/** Handles `vcs.get_conflict_details`. */
|
|
73
|
+
getConflictDetails(_params: VcsTypes.VcsGetConflictDetailsParams, _context: TContext): VcsHandlerResult<VcsTypes.VcsConflictDetails>;
|
|
74
|
+
/** Handles `vcs.checkout_conflict_side`. */
|
|
75
|
+
checkoutConflictSide(_params: VcsTypes.VcsCheckoutConflictSideParams, _context: TContext): VcsHandlerResult<null>;
|
|
76
|
+
/** Handles `vcs.write_merge_result`. */
|
|
77
|
+
writeMergeResult(_params: VcsTypes.VcsWriteMergeResultParams, _context: TContext): VcsHandlerResult<null>;
|
|
78
|
+
/** Handles `vcs.stage_patch`. */
|
|
79
|
+
stagePatch(_params: VcsTypes.VcsStagePatchParams, _context: TContext): VcsHandlerResult<null>;
|
|
80
|
+
/** Handles `vcs.discard_paths`. */
|
|
81
|
+
discardPaths(_params: VcsTypes.VcsDiscardPathsParams, _context: TContext): VcsHandlerResult<null>;
|
|
82
|
+
/** Handles `vcs.apply_reverse_patch`. */
|
|
83
|
+
applyReversePatch(_params: VcsTypes.VcsApplyReversePatchParams, _context: TContext): VcsHandlerResult<null>;
|
|
84
|
+
/** Handles `vcs.delete_branch`. */
|
|
85
|
+
deleteBranch(_params: VcsTypes.VcsDeleteBranchParams, _context: TContext): VcsHandlerResult<null>;
|
|
86
|
+
/** Handles `vcs.rename_branch`. */
|
|
87
|
+
renameBranch(_params: VcsTypes.VcsRenameBranchParams, _context: TContext): VcsHandlerResult<null>;
|
|
88
|
+
/** Handles `vcs.merge_into_current`. */
|
|
89
|
+
mergeIntoCurrent(_params: VcsTypes.VcsMergeIntoCurrentParams, _context: TContext): VcsHandlerResult<null>;
|
|
90
|
+
/** Handles `vcs.merge_abort`. */
|
|
91
|
+
mergeAbort(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<null>;
|
|
92
|
+
/** Handles `vcs.merge_continue`. */
|
|
93
|
+
mergeContinue(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<null>;
|
|
94
|
+
/** Handles `vcs.is_merge_in_progress`. */
|
|
95
|
+
isMergeInProgress(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<boolean>;
|
|
96
|
+
/** Handles `vcs.set_branch_upstream`. */
|
|
97
|
+
setBranchUpstream(_params: VcsTypes.VcsSetBranchUpstreamParams, _context: TContext): VcsHandlerResult<null>;
|
|
98
|
+
/** Handles `vcs.get_branch_upstream`. */
|
|
99
|
+
getBranchUpstream(_params: VcsTypes.VcsGetBranchUpstreamParams, _context: TContext): VcsHandlerResult<string | null>;
|
|
100
|
+
/** Handles `vcs.hard_reset_head`. */
|
|
101
|
+
hardResetHead(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<null>;
|
|
102
|
+
/** Handles `vcs.reset_soft_to`. */
|
|
103
|
+
resetSoftTo(_params: VcsTypes.VcsResetSoftToParams, _context: TContext): VcsHandlerResult<null>;
|
|
104
|
+
/** Handles `vcs.get_identity`. */
|
|
105
|
+
getIdentity(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<VcsTypes.VcsIdentity | null>;
|
|
106
|
+
/** Handles `vcs.set_identity_local`. */
|
|
107
|
+
setIdentityLocal(_params: VcsTypes.VcsSetIdentityLocalParams, _context: TContext): VcsHandlerResult<null>;
|
|
108
|
+
/** Handles `vcs.list_stashes`. */
|
|
109
|
+
listStashes(_params: VcsTypes.VcsSessionParams, _context: TContext): VcsHandlerResult<VcsTypes.StashEntry[]>;
|
|
110
|
+
/** Handles `vcs.stash_push`. */
|
|
111
|
+
stashPush(_params: VcsTypes.VcsStashPushParams, _context: TContext): VcsHandlerResult<string>;
|
|
112
|
+
/** Handles `vcs.stash_apply`. */
|
|
113
|
+
stashApply(_params: VcsTypes.VcsStashSelectorParams, _context: TContext): VcsHandlerResult<null>;
|
|
114
|
+
/** Handles `vcs.stash_pop`. */
|
|
115
|
+
stashPop(_params: VcsTypes.VcsStashSelectorParams, _context: TContext): VcsHandlerResult<null>;
|
|
116
|
+
/** Handles `vcs.stash_drop`. */
|
|
117
|
+
stashDrop(_params: VcsTypes.VcsStashSelectorParams, _context: TContext): VcsHandlerResult<null>;
|
|
118
|
+
/** Handles `vcs.stash_show`. */
|
|
119
|
+
stashShow(_params: VcsTypes.VcsStashSelectorParams, _context: TContext): VcsHandlerResult<string>;
|
|
120
|
+
/** Handles `vcs.cherry_pick`. */
|
|
121
|
+
cherryPick(_params: VcsTypes.VcsCherryPickParams, _context: TContext): VcsHandlerResult<null>;
|
|
122
|
+
/** Handles `vcs.revert_commit`. */
|
|
123
|
+
revertCommit(_params: VcsTypes.VcsRevertCommitParams, _context: TContext): VcsHandlerResult<null>;
|
|
124
|
+
}
|
|
125
|
+
export {};
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright © 2025-2026 OpenVCS Contributors
|
|
3
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.VcsDelegateBase = void 0;
|
|
6
|
+
const vcs_delegate_metadata_1 = require("./vcs-delegate-metadata");
|
|
7
|
+
/** Builds exact `vcs.*` delegates from ordinary class methods. */
|
|
8
|
+
class VcsDelegateBase {
|
|
9
|
+
/** Stores the runtime services exposed to the delegate implementation. */
|
|
10
|
+
deps;
|
|
11
|
+
/** Creates one delegate base with the provided runtime dependencies. */
|
|
12
|
+
constructor(deps) {
|
|
13
|
+
this.deps = deps;
|
|
14
|
+
}
|
|
15
|
+
/** Builds an SDK `vcs.*` delegate map from the subclass overrides. */
|
|
16
|
+
toDelegates() {
|
|
17
|
+
const delegates = {};
|
|
18
|
+
const delegatePrototype = Object.getPrototypeOf(this);
|
|
19
|
+
const basePrototype = VcsDelegateBase.prototype;
|
|
20
|
+
for (const delegateMethod of Object.keys(vcs_delegate_metadata_1.VCS_DELEGATE_METHOD_MAPPINGS)) {
|
|
21
|
+
const handler = delegatePrototype?.[delegateMethod];
|
|
22
|
+
if (typeof handler !== 'function' || handler === basePrototype[delegateMethod]) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
this.assignDelegate(delegates, delegateMethod, handler);
|
|
26
|
+
}
|
|
27
|
+
return delegates;
|
|
28
|
+
}
|
|
29
|
+
/** Assigns one typed class method to its exact `vcs.*` delegate name. */
|
|
30
|
+
assignDelegate(delegates, delegateMethod, handler) {
|
|
31
|
+
const rpcMethod = vcs_delegate_metadata_1.VCS_DELEGATE_METHOD_MAPPINGS[delegateMethod];
|
|
32
|
+
// `bind` loses the method-specific key correlation here; the cast is
|
|
33
|
+
// safe because `assignDelegate` is only called with handlers that were
|
|
34
|
+
// verified against `VcsDelegateBindings<TContext>` in the loop above.
|
|
35
|
+
const boundHandler = handler.bind(this);
|
|
36
|
+
delegates[rpcMethod] = boundHandler;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Throws when a subclass does not implement one required delegate method.
|
|
40
|
+
*
|
|
41
|
+
* The `never` return type is intentional: base stubs should never contribute
|
|
42
|
+
* a usable value, and subclasses should override the method with the exact
|
|
43
|
+
* signature inherited from `VcsDelegateBase`.
|
|
44
|
+
*/
|
|
45
|
+
unimplemented(methodName) {
|
|
46
|
+
throw new Error(`VCS delegate method '${methodName}' must be overridden before registration`);
|
|
47
|
+
}
|
|
48
|
+
/** Handles `vcs.get_caps`. */
|
|
49
|
+
getCaps(_params, _context) {
|
|
50
|
+
return this.unimplemented('getCaps');
|
|
51
|
+
}
|
|
52
|
+
/** Handles `vcs.open`. */
|
|
53
|
+
open(_params, _context) {
|
|
54
|
+
return this.unimplemented('open');
|
|
55
|
+
}
|
|
56
|
+
/** Handles `vcs.close`. */
|
|
57
|
+
close(_params, _context) {
|
|
58
|
+
return this.unimplemented('close');
|
|
59
|
+
}
|
|
60
|
+
/** Handles `vcs.clone_repo`. */
|
|
61
|
+
cloneRepo(_params, _context) {
|
|
62
|
+
return this.unimplemented('cloneRepo');
|
|
63
|
+
}
|
|
64
|
+
/** Handles `vcs.get_workdir`. */
|
|
65
|
+
getWorkdir(_params, _context) {
|
|
66
|
+
return this.unimplemented('getWorkdir');
|
|
67
|
+
}
|
|
68
|
+
/** Handles `vcs.get_current_branch`. */
|
|
69
|
+
getCurrentBranch(_params, _context) {
|
|
70
|
+
return this.unimplemented('getCurrentBranch');
|
|
71
|
+
}
|
|
72
|
+
/** Handles `vcs.list_branches`. */
|
|
73
|
+
listBranches(_params, _context) {
|
|
74
|
+
return this.unimplemented('listBranches');
|
|
75
|
+
}
|
|
76
|
+
/** Handles `vcs.list_local_branches`. */
|
|
77
|
+
listLocalBranches(_params, _context) {
|
|
78
|
+
return this.unimplemented('listLocalBranches');
|
|
79
|
+
}
|
|
80
|
+
/** Handles `vcs.create_branch`. */
|
|
81
|
+
createBranch(_params, _context) {
|
|
82
|
+
return this.unimplemented('createBranch');
|
|
83
|
+
}
|
|
84
|
+
/** Handles `vcs.checkout_branch`. */
|
|
85
|
+
checkoutBranch(_params, _context) {
|
|
86
|
+
return this.unimplemented('checkoutBranch');
|
|
87
|
+
}
|
|
88
|
+
/** Handles `vcs.ensure_remote`. */
|
|
89
|
+
ensureRemote(_params, _context) {
|
|
90
|
+
return this.unimplemented('ensureRemote');
|
|
91
|
+
}
|
|
92
|
+
/** Handles `vcs.list_remotes`. */
|
|
93
|
+
listRemotes(_params, _context) {
|
|
94
|
+
return this.unimplemented('listRemotes');
|
|
95
|
+
}
|
|
96
|
+
/** Handles `vcs.remove_remote`. */
|
|
97
|
+
removeRemote(_params, _context) {
|
|
98
|
+
return this.unimplemented('removeRemote');
|
|
99
|
+
}
|
|
100
|
+
/** Handles `vcs.fetch`. */
|
|
101
|
+
fetch(_params, _context) {
|
|
102
|
+
return this.unimplemented('fetch');
|
|
103
|
+
}
|
|
104
|
+
/** Handles `vcs.fetch_with_options`. */
|
|
105
|
+
fetchWithOptions(_params, _context) {
|
|
106
|
+
return this.unimplemented('fetchWithOptions');
|
|
107
|
+
}
|
|
108
|
+
/** Handles `vcs.push`. */
|
|
109
|
+
push(_params, _context) {
|
|
110
|
+
return this.unimplemented('push');
|
|
111
|
+
}
|
|
112
|
+
/** Handles `vcs.pull_ff_only`. */
|
|
113
|
+
pullFfOnly(_params, _context) {
|
|
114
|
+
return this.unimplemented('pullFfOnly');
|
|
115
|
+
}
|
|
116
|
+
/** Handles `vcs.commit`. */
|
|
117
|
+
commit(_params, _context) {
|
|
118
|
+
return this.unimplemented('commit');
|
|
119
|
+
}
|
|
120
|
+
/** Handles `vcs.commit_index`. */
|
|
121
|
+
commitIndex(_params, _context) {
|
|
122
|
+
return this.unimplemented('commitIndex');
|
|
123
|
+
}
|
|
124
|
+
/** Handles `vcs.get_status_summary`. */
|
|
125
|
+
getStatusSummary(_params, _context) {
|
|
126
|
+
return this.unimplemented('getStatusSummary');
|
|
127
|
+
}
|
|
128
|
+
/** Handles `vcs.get_status_payload`. */
|
|
129
|
+
getStatusPayload(_params, _context) {
|
|
130
|
+
return this.unimplemented('getStatusPayload');
|
|
131
|
+
}
|
|
132
|
+
/** Handles `vcs.list_commits`. */
|
|
133
|
+
listCommits(_params, _context) {
|
|
134
|
+
return this.unimplemented('listCommits');
|
|
135
|
+
}
|
|
136
|
+
/** Handles `vcs.diff_file`. */
|
|
137
|
+
diffFile(_params, _context) {
|
|
138
|
+
return this.unimplemented('diffFile');
|
|
139
|
+
}
|
|
140
|
+
/** Handles `vcs.diff_commit`. */
|
|
141
|
+
diffCommit(_params, _context) {
|
|
142
|
+
return this.unimplemented('diffCommit');
|
|
143
|
+
}
|
|
144
|
+
/** Handles `vcs.get_conflict_details`. */
|
|
145
|
+
getConflictDetails(_params, _context) {
|
|
146
|
+
return this.unimplemented('getConflictDetails');
|
|
147
|
+
}
|
|
148
|
+
/** Handles `vcs.checkout_conflict_side`. */
|
|
149
|
+
checkoutConflictSide(_params, _context) {
|
|
150
|
+
return this.unimplemented('checkoutConflictSide');
|
|
151
|
+
}
|
|
152
|
+
/** Handles `vcs.write_merge_result`. */
|
|
153
|
+
writeMergeResult(_params, _context) {
|
|
154
|
+
return this.unimplemented('writeMergeResult');
|
|
155
|
+
}
|
|
156
|
+
/** Handles `vcs.stage_patch`. */
|
|
157
|
+
stagePatch(_params, _context) {
|
|
158
|
+
return this.unimplemented('stagePatch');
|
|
159
|
+
}
|
|
160
|
+
/** Handles `vcs.discard_paths`. */
|
|
161
|
+
discardPaths(_params, _context) {
|
|
162
|
+
return this.unimplemented('discardPaths');
|
|
163
|
+
}
|
|
164
|
+
/** Handles `vcs.apply_reverse_patch`. */
|
|
165
|
+
applyReversePatch(_params, _context) {
|
|
166
|
+
return this.unimplemented('applyReversePatch');
|
|
167
|
+
}
|
|
168
|
+
/** Handles `vcs.delete_branch`. */
|
|
169
|
+
deleteBranch(_params, _context) {
|
|
170
|
+
return this.unimplemented('deleteBranch');
|
|
171
|
+
}
|
|
172
|
+
/** Handles `vcs.rename_branch`. */
|
|
173
|
+
renameBranch(_params, _context) {
|
|
174
|
+
return this.unimplemented('renameBranch');
|
|
175
|
+
}
|
|
176
|
+
/** Handles `vcs.merge_into_current`. */
|
|
177
|
+
mergeIntoCurrent(_params, _context) {
|
|
178
|
+
return this.unimplemented('mergeIntoCurrent');
|
|
179
|
+
}
|
|
180
|
+
/** Handles `vcs.merge_abort`. */
|
|
181
|
+
mergeAbort(_params, _context) {
|
|
182
|
+
return this.unimplemented('mergeAbort');
|
|
183
|
+
}
|
|
184
|
+
/** Handles `vcs.merge_continue`. */
|
|
185
|
+
mergeContinue(_params, _context) {
|
|
186
|
+
return this.unimplemented('mergeContinue');
|
|
187
|
+
}
|
|
188
|
+
/** Handles `vcs.is_merge_in_progress`. */
|
|
189
|
+
isMergeInProgress(_params, _context) {
|
|
190
|
+
return this.unimplemented('isMergeInProgress');
|
|
191
|
+
}
|
|
192
|
+
/** Handles `vcs.set_branch_upstream`. */
|
|
193
|
+
setBranchUpstream(_params, _context) {
|
|
194
|
+
return this.unimplemented('setBranchUpstream');
|
|
195
|
+
}
|
|
196
|
+
/** Handles `vcs.get_branch_upstream`. */
|
|
197
|
+
getBranchUpstream(_params, _context) {
|
|
198
|
+
return this.unimplemented('getBranchUpstream');
|
|
199
|
+
}
|
|
200
|
+
/** Handles `vcs.hard_reset_head`. */
|
|
201
|
+
hardResetHead(_params, _context) {
|
|
202
|
+
return this.unimplemented('hardResetHead');
|
|
203
|
+
}
|
|
204
|
+
/** Handles `vcs.reset_soft_to`. */
|
|
205
|
+
resetSoftTo(_params, _context) {
|
|
206
|
+
return this.unimplemented('resetSoftTo');
|
|
207
|
+
}
|
|
208
|
+
/** Handles `vcs.get_identity`. */
|
|
209
|
+
getIdentity(_params, _context) {
|
|
210
|
+
return this.unimplemented('getIdentity');
|
|
211
|
+
}
|
|
212
|
+
/** Handles `vcs.set_identity_local`. */
|
|
213
|
+
setIdentityLocal(_params, _context) {
|
|
214
|
+
return this.unimplemented('setIdentityLocal');
|
|
215
|
+
}
|
|
216
|
+
/** Handles `vcs.list_stashes`. */
|
|
217
|
+
listStashes(_params, _context) {
|
|
218
|
+
return this.unimplemented('listStashes');
|
|
219
|
+
}
|
|
220
|
+
/** Handles `vcs.stash_push`. */
|
|
221
|
+
stashPush(_params, _context) {
|
|
222
|
+
return this.unimplemented('stashPush');
|
|
223
|
+
}
|
|
224
|
+
/** Handles `vcs.stash_apply`. */
|
|
225
|
+
stashApply(_params, _context) {
|
|
226
|
+
return this.unimplemented('stashApply');
|
|
227
|
+
}
|
|
228
|
+
/** Handles `vcs.stash_pop`. */
|
|
229
|
+
stashPop(_params, _context) {
|
|
230
|
+
return this.unimplemented('stashPop');
|
|
231
|
+
}
|
|
232
|
+
/** Handles `vcs.stash_drop`. */
|
|
233
|
+
stashDrop(_params, _context) {
|
|
234
|
+
return this.unimplemented('stashDrop');
|
|
235
|
+
}
|
|
236
|
+
/** Handles `vcs.stash_show`. */
|
|
237
|
+
stashShow(_params, _context) {
|
|
238
|
+
return this.unimplemented('stashShow');
|
|
239
|
+
}
|
|
240
|
+
/** Handles `vcs.cherry_pick`. */
|
|
241
|
+
cherryPick(_params, _context) {
|
|
242
|
+
return this.unimplemented('cherryPick');
|
|
243
|
+
}
|
|
244
|
+
/** Handles `vcs.revert_commit`. */
|
|
245
|
+
revertCommit(_params, _context) {
|
|
246
|
+
return this.unimplemented('revertCommit');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
exports.VcsDelegateBase = VcsDelegateBase;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type * as VcsTypes from '../types';
|
|
2
|
+
import type { PluginRuntimeContext } from './contracts';
|
|
3
|
+
/** Stores the typed class-method signatures supported by `VcsDelegateBase`. */
|
|
4
|
+
export type VcsDelegateBindings<TContext> = {
|
|
5
|
+
getCaps: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_caps']>;
|
|
6
|
+
open: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.open']>;
|
|
7
|
+
close: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.close']>;
|
|
8
|
+
cloneRepo: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.clone_repo']>;
|
|
9
|
+
getWorkdir: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_workdir']>;
|
|
10
|
+
getCurrentBranch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_current_branch']>;
|
|
11
|
+
listBranches: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.list_branches']>;
|
|
12
|
+
listLocalBranches: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.list_local_branches']>;
|
|
13
|
+
createBranch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.create_branch']>;
|
|
14
|
+
checkoutBranch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.checkout_branch']>;
|
|
15
|
+
ensureRemote: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.ensure_remote']>;
|
|
16
|
+
listRemotes: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.list_remotes']>;
|
|
17
|
+
removeRemote: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.remove_remote']>;
|
|
18
|
+
fetch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.fetch']>;
|
|
19
|
+
fetchWithOptions: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.fetch_with_options']>;
|
|
20
|
+
push: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.push']>;
|
|
21
|
+
pullFfOnly: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.pull_ff_only']>;
|
|
22
|
+
commit: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.commit']>;
|
|
23
|
+
commitIndex: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.commit_index']>;
|
|
24
|
+
getStatusSummary: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_status_summary']>;
|
|
25
|
+
getStatusPayload: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_status_payload']>;
|
|
26
|
+
listCommits: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.list_commits']>;
|
|
27
|
+
diffFile: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.diff_file']>;
|
|
28
|
+
diffCommit: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.diff_commit']>;
|
|
29
|
+
getConflictDetails: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_conflict_details']>;
|
|
30
|
+
checkoutConflictSide: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.checkout_conflict_side']>;
|
|
31
|
+
writeMergeResult: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.write_merge_result']>;
|
|
32
|
+
stagePatch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.stage_patch']>;
|
|
33
|
+
discardPaths: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.discard_paths']>;
|
|
34
|
+
applyReversePatch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.apply_reverse_patch']>;
|
|
35
|
+
deleteBranch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.delete_branch']>;
|
|
36
|
+
renameBranch: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.rename_branch']>;
|
|
37
|
+
mergeIntoCurrent: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.merge_into_current']>;
|
|
38
|
+
mergeAbort: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.merge_abort']>;
|
|
39
|
+
mergeContinue: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.merge_continue']>;
|
|
40
|
+
isMergeInProgress: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.is_merge_in_progress']>;
|
|
41
|
+
setBranchUpstream: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.set_branch_upstream']>;
|
|
42
|
+
getBranchUpstream: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_branch_upstream']>;
|
|
43
|
+
hardResetHead: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.hard_reset_head']>;
|
|
44
|
+
resetSoftTo: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.reset_soft_to']>;
|
|
45
|
+
getIdentity: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.get_identity']>;
|
|
46
|
+
setIdentityLocal: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.set_identity_local']>;
|
|
47
|
+
listStashes: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.list_stashes']>;
|
|
48
|
+
stashPush: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.stash_push']>;
|
|
49
|
+
stashApply: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.stash_apply']>;
|
|
50
|
+
stashPop: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.stash_pop']>;
|
|
51
|
+
stashDrop: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.stash_drop']>;
|
|
52
|
+
stashShow: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.stash_show']>;
|
|
53
|
+
cherryPick: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.cherry_pick']>;
|
|
54
|
+
revertCommit: NonNullable<VcsTypes.VcsDelegates<TContext>['vcs.revert_commit']>;
|
|
55
|
+
};
|
|
56
|
+
/** Enumerates the class-friendly method names recognized by `VcsDelegateBase`. */
|
|
57
|
+
export type VcsDelegateMethodName = keyof VcsDelegateBindings<PluginRuntimeContext>;
|
|
58
|
+
/** Maps one delegate class method to the SDK runtime RPC key it implements. */
|
|
59
|
+
export declare const VCS_DELEGATE_METHOD_MAPPINGS: {
|
|
60
|
+
readonly getCaps: "vcs.get_caps";
|
|
61
|
+
readonly open: "vcs.open";
|
|
62
|
+
readonly close: "vcs.close";
|
|
63
|
+
readonly cloneRepo: "vcs.clone_repo";
|
|
64
|
+
readonly getWorkdir: "vcs.get_workdir";
|
|
65
|
+
readonly getCurrentBranch: "vcs.get_current_branch";
|
|
66
|
+
readonly listBranches: "vcs.list_branches";
|
|
67
|
+
readonly listLocalBranches: "vcs.list_local_branches";
|
|
68
|
+
readonly createBranch: "vcs.create_branch";
|
|
69
|
+
readonly checkoutBranch: "vcs.checkout_branch";
|
|
70
|
+
readonly ensureRemote: "vcs.ensure_remote";
|
|
71
|
+
readonly listRemotes: "vcs.list_remotes";
|
|
72
|
+
readonly removeRemote: "vcs.remove_remote";
|
|
73
|
+
readonly fetch: "vcs.fetch";
|
|
74
|
+
readonly fetchWithOptions: "vcs.fetch_with_options";
|
|
75
|
+
readonly push: "vcs.push";
|
|
76
|
+
readonly pullFfOnly: "vcs.pull_ff_only";
|
|
77
|
+
readonly commit: "vcs.commit";
|
|
78
|
+
readonly commitIndex: "vcs.commit_index";
|
|
79
|
+
readonly getStatusSummary: "vcs.get_status_summary";
|
|
80
|
+
readonly getStatusPayload: "vcs.get_status_payload";
|
|
81
|
+
readonly listCommits: "vcs.list_commits";
|
|
82
|
+
readonly diffFile: "vcs.diff_file";
|
|
83
|
+
readonly diffCommit: "vcs.diff_commit";
|
|
84
|
+
readonly getConflictDetails: "vcs.get_conflict_details";
|
|
85
|
+
readonly checkoutConflictSide: "vcs.checkout_conflict_side";
|
|
86
|
+
readonly writeMergeResult: "vcs.write_merge_result";
|
|
87
|
+
readonly stagePatch: "vcs.stage_patch";
|
|
88
|
+
readonly discardPaths: "vcs.discard_paths";
|
|
89
|
+
readonly applyReversePatch: "vcs.apply_reverse_patch";
|
|
90
|
+
readonly deleteBranch: "vcs.delete_branch";
|
|
91
|
+
readonly renameBranch: "vcs.rename_branch";
|
|
92
|
+
readonly mergeIntoCurrent: "vcs.merge_into_current";
|
|
93
|
+
readonly mergeAbort: "vcs.merge_abort";
|
|
94
|
+
readonly mergeContinue: "vcs.merge_continue";
|
|
95
|
+
readonly isMergeInProgress: "vcs.is_merge_in_progress";
|
|
96
|
+
readonly setBranchUpstream: "vcs.set_branch_upstream";
|
|
97
|
+
readonly getBranchUpstream: "vcs.get_branch_upstream";
|
|
98
|
+
readonly hardResetHead: "vcs.hard_reset_head";
|
|
99
|
+
readonly resetSoftTo: "vcs.reset_soft_to";
|
|
100
|
+
readonly getIdentity: "vcs.get_identity";
|
|
101
|
+
readonly setIdentityLocal: "vcs.set_identity_local";
|
|
102
|
+
readonly listStashes: "vcs.list_stashes";
|
|
103
|
+
readonly stashPush: "vcs.stash_push";
|
|
104
|
+
readonly stashApply: "vcs.stash_apply";
|
|
105
|
+
readonly stashPop: "vcs.stash_pop";
|
|
106
|
+
readonly stashDrop: "vcs.stash_drop";
|
|
107
|
+
readonly stashShow: "vcs.stash_show";
|
|
108
|
+
readonly cherryPick: "vcs.cherry_pick";
|
|
109
|
+
readonly revertCommit: "vcs.revert_commit";
|
|
110
|
+
};
|
|
111
|
+
/** Resolves the RPC method implemented by one class-friendly delegate method. */
|
|
112
|
+
export type VcsDelegateRpcMethodName<TMethodName extends VcsDelegateMethodName> = (typeof VCS_DELEGATE_METHOD_MAPPINGS)[TMethodName];
|
|
113
|
+
/** Describes the callable prototype surface required by `toDelegates()`. */
|
|
114
|
+
export type VcsDelegatePrototype<TContext> = {
|
|
115
|
+
[TMethodName in keyof VcsDelegateBindings<TContext>]: VcsDelegateBindings<TContext>[TMethodName];
|
|
116
|
+
};
|
|
117
|
+
/** Stores the exact `vcs.*` delegate object shape produced from class methods. */
|
|
118
|
+
export type VcsDelegateAssignments<TContext> = {
|
|
119
|
+
[TMethodName in VcsDelegateMethodName as VcsDelegateRpcMethodName<TMethodName>]?: VcsDelegateBindings<TContext>[TMethodName];
|
|
120
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright © 2025-2026 OpenVCS Contributors
|
|
3
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.VCS_DELEGATE_METHOD_MAPPINGS = void 0;
|
|
6
|
+
/** Maps one delegate class method to the SDK runtime RPC key it implements. */
|
|
7
|
+
exports.VCS_DELEGATE_METHOD_MAPPINGS = {
|
|
8
|
+
getCaps: 'vcs.get_caps',
|
|
9
|
+
open: 'vcs.open',
|
|
10
|
+
close: 'vcs.close',
|
|
11
|
+
cloneRepo: 'vcs.clone_repo',
|
|
12
|
+
getWorkdir: 'vcs.get_workdir',
|
|
13
|
+
getCurrentBranch: 'vcs.get_current_branch',
|
|
14
|
+
listBranches: 'vcs.list_branches',
|
|
15
|
+
listLocalBranches: 'vcs.list_local_branches',
|
|
16
|
+
createBranch: 'vcs.create_branch',
|
|
17
|
+
checkoutBranch: 'vcs.checkout_branch',
|
|
18
|
+
ensureRemote: 'vcs.ensure_remote',
|
|
19
|
+
listRemotes: 'vcs.list_remotes',
|
|
20
|
+
removeRemote: 'vcs.remove_remote',
|
|
21
|
+
fetch: 'vcs.fetch',
|
|
22
|
+
fetchWithOptions: 'vcs.fetch_with_options',
|
|
23
|
+
push: 'vcs.push',
|
|
24
|
+
pullFfOnly: 'vcs.pull_ff_only',
|
|
25
|
+
commit: 'vcs.commit',
|
|
26
|
+
commitIndex: 'vcs.commit_index',
|
|
27
|
+
getStatusSummary: 'vcs.get_status_summary',
|
|
28
|
+
getStatusPayload: 'vcs.get_status_payload',
|
|
29
|
+
listCommits: 'vcs.list_commits',
|
|
30
|
+
diffFile: 'vcs.diff_file',
|
|
31
|
+
diffCommit: 'vcs.diff_commit',
|
|
32
|
+
getConflictDetails: 'vcs.get_conflict_details',
|
|
33
|
+
checkoutConflictSide: 'vcs.checkout_conflict_side',
|
|
34
|
+
writeMergeResult: 'vcs.write_merge_result',
|
|
35
|
+
stagePatch: 'vcs.stage_patch',
|
|
36
|
+
discardPaths: 'vcs.discard_paths',
|
|
37
|
+
applyReversePatch: 'vcs.apply_reverse_patch',
|
|
38
|
+
deleteBranch: 'vcs.delete_branch',
|
|
39
|
+
renameBranch: 'vcs.rename_branch',
|
|
40
|
+
mergeIntoCurrent: 'vcs.merge_into_current',
|
|
41
|
+
mergeAbort: 'vcs.merge_abort',
|
|
42
|
+
mergeContinue: 'vcs.merge_continue',
|
|
43
|
+
isMergeInProgress: 'vcs.is_merge_in_progress',
|
|
44
|
+
setBranchUpstream: 'vcs.set_branch_upstream',
|
|
45
|
+
getBranchUpstream: 'vcs.get_branch_upstream',
|
|
46
|
+
hardResetHead: 'vcs.hard_reset_head',
|
|
47
|
+
resetSoftTo: 'vcs.reset_soft_to',
|
|
48
|
+
getIdentity: 'vcs.get_identity',
|
|
49
|
+
setIdentityLocal: 'vcs.set_identity_local',
|
|
50
|
+
listStashes: 'vcs.list_stashes',
|
|
51
|
+
stashPush: 'vcs.stash_push',
|
|
52
|
+
stashApply: 'vcs.stash_apply',
|
|
53
|
+
stashPop: 'vcs.stash_pop',
|
|
54
|
+
stashDrop: 'vcs.stash_drop',
|
|
55
|
+
stashShow: 'vcs.stash_show',
|
|
56
|
+
cherryPick: 'vcs.cherry_pick',
|
|
57
|
+
revertCommit: 'vcs.revert_commit',
|
|
58
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openvcs/sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "OpenVCS SDK CLI for plugin scaffolding and .ovcsp tar.gz packaging",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"homepage": "https://openvcs.app/",
|
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "node scripts/build-sdk.js",
|
|
35
|
-
"test": "npm run build && node --test test/*.test.js",
|
|
35
|
+
"test": "npm run build && npm run test:types && node --test test/*.test.js",
|
|
36
|
+
"test:types": "node ./node_modules/typescript/bin/tsc -p test/tsconfig.json",
|
|
36
37
|
"prepack": "npm run build",
|
|
37
38
|
"preopenvcs": "npm run build",
|
|
38
39
|
"openvcs": "node bin/openvcs.js"
|