@dsh-workbench/core 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client.js +698 -305
- package/dist/client/client.body.js +698 -305
- package/dist/client/index.js +550 -157
- package/dist/host/index.js +78 -3
- package/dist/types/app/layouts/market/discover-confirm.d.ts +1 -1
- package/dist/types/app/layouts/market/discover-detail.d.ts +1 -0
- package/dist/types/app/layouts/market/discover-installing.d.ts +8 -0
- package/dist/types/app/layouts/market/discover-rows.d.ts +4 -2
- package/dist/types/app/layouts/market/discover-states.d.ts +6 -0
- package/dist/types/app/layouts/market/discover-transport.d.ts +7 -0
- package/dist/types/app/layouts/market/discover-versions.d.ts +2 -1
- package/dist/types/app/layouts/market/use-discover.d.ts +8 -1
- package/dist/types/app/layouts/market/use-git-transport.d.ts +19 -0
- package/dist/types/app/layouts/market/use-module-versions.d.ts +1 -0
- package/dist/types/kernel/contract/market-index.d.ts +2 -2
- package/dist/types/shared/api/host/git-exec.d.ts +2 -0
- package/dist/types/shared/api/host/git-probe.d.ts +6 -0
- package/dist/types/shared/api/host/git-routes.d.ts +3 -0
- package/dist/types/shared/hooks/market-queries.d.ts +2 -1
- package/package.json +3 -3
package/dist/host/index.js
CHANGED
|
@@ -4545,6 +4545,7 @@ function checkVersionRange(contract, version) {
|
|
|
4545
4545
|
}
|
|
4546
4546
|
var MARKET_DISCOVER_ROUTE = "panels/market-discover";
|
|
4547
4547
|
var MARKET_DOC_ROUTE = "panels/market-doc";
|
|
4548
|
+
var MARKET_GIT_PROBE_ROUTE = "panels/git-probe";
|
|
4548
4549
|
var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
|
|
4549
4550
|
var MARKET_SOURCES_RESOURCE = "market-sources";
|
|
4550
4551
|
var MARKET_SOURCES_ROUTE = "panels/market-sources";
|
|
@@ -5533,6 +5534,80 @@ function bundleInspectHandler(ctx) {
|
|
|
5533
5534
|
};
|
|
5534
5535
|
}
|
|
5535
5536
|
//#endregion
|
|
5537
|
+
//#region src/shared/api/host/git-exec.ts
|
|
5538
|
+
var NO_PROMPT_ENV = [
|
|
5539
|
+
"GIT_TERMINAL_PROMPT=0",
|
|
5540
|
+
"GIT_ASKPASS=/usr/bin/false",
|
|
5541
|
+
"SSH_ASKPASS=/usr/bin/false",
|
|
5542
|
+
"SSH_ASKPASS_REQUIRE=never",
|
|
5543
|
+
"GCM_INTERACTIVE=never",
|
|
5544
|
+
"GIT_SSH_COMMAND=ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new"
|
|
5545
|
+
];
|
|
5546
|
+
function gitNoPromptPrefix() {
|
|
5547
|
+
return [quoteShellArg("env"), ...NO_PROMPT_ENV.map((one) => quoteShellArg(one))].join(" ");
|
|
5548
|
+
}
|
|
5549
|
+
function withoutAskpassNoise(text) {
|
|
5550
|
+
return text.split("\n").filter((line) => !/unable to read askpass response/i.test(line)).join("\n").trim();
|
|
5551
|
+
}
|
|
5552
|
+
//#endregion
|
|
5553
|
+
//#region src/shared/api/host/git-probe.ts
|
|
5554
|
+
var PROBE_TIMEOUT_MS = 1e4;
|
|
5555
|
+
var AUTH_TEXT = /authentication failed|could not read (username|password)|permission denied|terminal prompts disabled|host key verification failed|repository not found|no such identity|access denied|unauthorized|forbidden/;
|
|
5556
|
+
function classifyGitProbe(stderr, timedOut) {
|
|
5557
|
+
if (timedOut) return "unreachable";
|
|
5558
|
+
return AUTH_TEXT.test(stderr.toLowerCase()) ? "auth" : "unreachable";
|
|
5559
|
+
}
|
|
5560
|
+
async function probeGitAddress(shell, url, options = {}) {
|
|
5561
|
+
const line = [
|
|
5562
|
+
gitNoPromptPrefix(),
|
|
5563
|
+
quoteShellArg("git"),
|
|
5564
|
+
quoteShellArg("ls-remote"),
|
|
5565
|
+
quoteShellArg(url),
|
|
5566
|
+
quoteShellArg("HEAD")
|
|
5567
|
+
].join(" ");
|
|
5568
|
+
let result;
|
|
5569
|
+
try {
|
|
5570
|
+
result = await runShell(shell, line, { timeoutMs: options.timeoutMs ?? PROBE_TIMEOUT_MS });
|
|
5571
|
+
} catch (error) {
|
|
5572
|
+
return {
|
|
5573
|
+
status: "unreachable",
|
|
5574
|
+
detail: error instanceof Error ? error.message : String(error)
|
|
5575
|
+
};
|
|
5576
|
+
}
|
|
5577
|
+
if (result.exitCode === 0) return { status: "ok" };
|
|
5578
|
+
const detail = tailLines(withoutAskpassNoise(result.stderr || result.stdout), 3);
|
|
5579
|
+
return {
|
|
5580
|
+
status: classifyGitProbe(`${result.stderr}\n${result.stdout}`, result.timedOut),
|
|
5581
|
+
...detail === "" ? {} : { detail }
|
|
5582
|
+
};
|
|
5583
|
+
}
|
|
5584
|
+
//#endregion
|
|
5585
|
+
//#region src/shared/api/host/git-routes.ts
|
|
5586
|
+
function gitProbeHandler(ctx) {
|
|
5587
|
+
return async (search) => {
|
|
5588
|
+
const url = param(search, "url");
|
|
5589
|
+
if (url === void 0) return {
|
|
5590
|
+
ok: false,
|
|
5591
|
+
error: {
|
|
5592
|
+
code: "workbench/no-url",
|
|
5593
|
+
message: "要探哪个地址?缺 url。"
|
|
5594
|
+
}
|
|
5595
|
+
};
|
|
5596
|
+
const shell = ctx.get("shell");
|
|
5597
|
+
if (shell === void 0) return {
|
|
5598
|
+
ok: false,
|
|
5599
|
+
error: {
|
|
5600
|
+
code: "workbench/no-shell",
|
|
5601
|
+
message: "这台机器上没有执行缝,探不了 git 地址"
|
|
5602
|
+
}
|
|
5603
|
+
};
|
|
5604
|
+
return {
|
|
5605
|
+
ok: true,
|
|
5606
|
+
...await probeGitAddress(shell, url)
|
|
5607
|
+
};
|
|
5608
|
+
};
|
|
5609
|
+
}
|
|
5610
|
+
//#endregion
|
|
5536
5611
|
//#region src/shared/api/host/host-routes.ts
|
|
5537
5612
|
function createHostRoutes(input) {
|
|
5538
5613
|
const { ctx, facts, opencli, running, profile } = input;
|
|
@@ -5542,6 +5617,7 @@ function createHostRoutes(input) {
|
|
|
5542
5617
|
[DSH_PLUGINS_ROUTE]: profile.dshPlugins(ctx),
|
|
5543
5618
|
[BUNDLE_REGISTRIES_ROUTE]: bundleRegistriesHandler(ctx),
|
|
5544
5619
|
[BUNDLE_INSPECT_ROUTE]: bundleInspectHandler(ctx),
|
|
5620
|
+
[MARKET_GIT_PROBE_ROUTE]: gitProbeHandler(ctx),
|
|
5545
5621
|
[MODULE_VERSIONS_ROUTE]: moduleVersionsHandler(ctx, ctx.get("shell"), running, () => profile.selfUpdateView(dshHome(), basename(profile.dirOf(ctx) ?? "")))
|
|
5546
5622
|
};
|
|
5547
5623
|
}
|
|
@@ -13075,7 +13151,6 @@ function publishPreviewRoutes(workshop, inferredAuthorOf = async () => void 0) {
|
|
|
13075
13151
|
var DEFAULT_TTL_MS = 3e5;
|
|
13076
13152
|
var DEFAULT_TIMEOUT_MS$2 = 3e4;
|
|
13077
13153
|
var DEFAULT_MAX_BYTES$1 = 4194304;
|
|
13078
|
-
var GIT_NO_PROMPT = `${quoteShellArg("env")} GIT_TERMINAL_PROMPT=0`;
|
|
13079
13154
|
function messageOf$1(error) {
|
|
13080
13155
|
return error instanceof Error ? error.message : String(error);
|
|
13081
13156
|
}
|
|
@@ -13137,7 +13212,7 @@ function gitProblemOf(source) {
|
|
|
13137
13212
|
};
|
|
13138
13213
|
}
|
|
13139
13214
|
function tail(text) {
|
|
13140
|
-
return text
|
|
13215
|
+
return withoutAskpassNoise(text).split("\n").filter((line) => line !== "").slice(-3).join(" ");
|
|
13141
13216
|
}
|
|
13142
13217
|
function classifyGitError(stderr, timedOut) {
|
|
13143
13218
|
if (timedOut) return {
|
|
@@ -13241,7 +13316,7 @@ function createMarketIndexReader(options) {
|
|
|
13241
13316
|
}
|
|
13242
13317
|
};
|
|
13243
13318
|
try {
|
|
13244
|
-
const result = await runShell(shell, `${
|
|
13319
|
+
const result = await runShell(shell, `${gitNoPromptPrefix()} ${line}`, { timeoutMs });
|
|
13245
13320
|
if (result.exitCode !== 0) return {
|
|
13246
13321
|
ok: false,
|
|
13247
13322
|
problem: classifyGitError(result.stderr, result.timedOut),
|
|
@@ -9,6 +9,6 @@ export interface DiscoverConfirmProps {
|
|
|
9
9
|
readonly locale: string;
|
|
10
10
|
readonly choice: DiscoverChoice | null;
|
|
11
11
|
readonly onCancel: () => void;
|
|
12
|
-
readonly onConfirm: () => void;
|
|
12
|
+
readonly onConfirm: (url?: string) => void;
|
|
13
13
|
}
|
|
14
14
|
export declare function DiscoverConfirm({ t, locale, choice, onCancel, onConfirm }: DiscoverConfirmProps): JSX.Element | null;
|
|
@@ -8,5 +8,6 @@ export interface DiscoverDetailProps {
|
|
|
8
8
|
readonly onBack: () => void;
|
|
9
9
|
readonly onInstall: (entry: DiscoverEntry, version: DiscoverVersionRow) => void;
|
|
10
10
|
readonly onShowInstalled: (name: string) => void;
|
|
11
|
+
readonly installDisabled?: boolean;
|
|
11
12
|
}
|
|
12
13
|
export declare function DiscoverDetail(props: DiscoverDetailProps): JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Translate } from '@dsh-workbench/shared';
|
|
2
|
+
export interface DiscoverInstallingProps {
|
|
3
|
+
readonly t: Translate;
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly cancelling: boolean;
|
|
6
|
+
readonly onCancel: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function DiscoverInstalling({ t, name, cancelling, onCancel }: DiscoverInstallingProps): JSX.Element;
|
|
@@ -7,6 +7,7 @@ export interface DiscoverRowsProps {
|
|
|
7
7
|
readonly onOpen: (name: string) => void;
|
|
8
8
|
readonly onInstall: (entry: DiscoverEntry, version: DiscoverVersionRow) => void;
|
|
9
9
|
readonly onShowInstalled: (name: string) => void;
|
|
10
|
+
readonly installDisabled?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare function canInstall(version: DiscoverVersionRow | undefined): boolean;
|
|
12
13
|
export declare function sourceTextOf(t: Translate, version: DiscoverVersionRow): string;
|
|
@@ -14,11 +15,12 @@ export declare function MarketIcon({ src, size }: {
|
|
|
14
15
|
readonly src?: string | undefined;
|
|
15
16
|
readonly size?: number;
|
|
16
17
|
}): JSX.Element;
|
|
17
|
-
export declare function EntryAction({ t, entry, title, onInstall, onShowInstalled, }: {
|
|
18
|
+
export declare function EntryAction({ t, entry, title, onInstall, onShowInstalled, installDisabled, }: {
|
|
18
19
|
readonly t: Translate;
|
|
19
20
|
readonly entry: DiscoverEntry;
|
|
20
21
|
readonly title: string;
|
|
21
22
|
readonly onInstall: (entry: DiscoverEntry, version: DiscoverVersionRow) => void;
|
|
22
23
|
readonly onShowInstalled: (name: string) => void;
|
|
24
|
+
readonly installDisabled?: boolean;
|
|
23
25
|
}): JSX.Element | null;
|
|
24
|
-
export declare function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled }: DiscoverRowsProps): JSX.Element;
|
|
26
|
+
export declare function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled, installDisabled }: DiscoverRowsProps): JSX.Element;
|
|
@@ -23,3 +23,9 @@ export declare function DiscoverNoSource({ t, onAdd }: {
|
|
|
23
23
|
readonly t: Translate;
|
|
24
24
|
readonly onAdd: () => void;
|
|
25
25
|
}): JSX.Element;
|
|
26
|
+
export declare function DiscoverReadFailure({ t, text, auth, onRetry, }: {
|
|
27
|
+
readonly t: Translate;
|
|
28
|
+
readonly text: string;
|
|
29
|
+
readonly auth: boolean;
|
|
30
|
+
readonly onRetry: () => void;
|
|
31
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Translate } from '@dsh-workbench/shared';
|
|
2
|
+
import type { GitTransportState } from './use-git-transport';
|
|
3
|
+
export interface DiscoverTransportProps {
|
|
4
|
+
readonly t: Translate;
|
|
5
|
+
readonly transport: GitTransportState;
|
|
6
|
+
}
|
|
7
|
+
export declare function DiscoverTransport({ t, transport }: DiscoverTransportProps): JSX.Element;
|
|
@@ -5,5 +5,6 @@ export interface DiscoverVersionsProps {
|
|
|
5
5
|
readonly locale: string;
|
|
6
6
|
readonly entry: DiscoverEntry;
|
|
7
7
|
readonly onInstall: (entry: DiscoverEntry, version: DiscoverVersionRow) => void;
|
|
8
|
+
readonly installDisabled?: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare function DiscoverVersions({ t, locale, entry, onInstall }: DiscoverVersionsProps): JSX.Element;
|
|
10
|
+
export declare function DiscoverVersions({ t, locale, entry, onInstall, installDisabled }: DiscoverVersionsProps): JSX.Element;
|
|
@@ -7,6 +7,8 @@ interface InstallTarget {
|
|
|
7
7
|
}
|
|
8
8
|
export type InstallVerdict = {
|
|
9
9
|
readonly kind: 'done';
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'cancelled';
|
|
10
12
|
} | {
|
|
11
13
|
readonly kind: 'failed';
|
|
12
14
|
readonly text: string;
|
|
@@ -38,10 +40,14 @@ export interface DiscoverController {
|
|
|
38
40
|
readonly writeFailed: string | null;
|
|
39
41
|
readonly provisionFailed: string | null;
|
|
40
42
|
readonly busy: boolean;
|
|
43
|
+
readonly installing: string | null;
|
|
44
|
+
readonly cancelling: boolean;
|
|
45
|
+
readonly installDisabled: boolean;
|
|
41
46
|
readonly addingSource: boolean;
|
|
42
47
|
readonly manageOpen: boolean;
|
|
43
48
|
readonly problem: {
|
|
44
49
|
readonly id: string;
|
|
50
|
+
readonly kind: string;
|
|
45
51
|
readonly detail: string;
|
|
46
52
|
} | null;
|
|
47
53
|
readonly uninitialized: {
|
|
@@ -70,7 +76,8 @@ export interface DiscoverController {
|
|
|
70
76
|
readonly addSource: (url: string) => void;
|
|
71
77
|
readonly removeSourceById: (id: string) => void;
|
|
72
78
|
readonly selectSource: (id: string) => void;
|
|
73
|
-
readonly install: () => void;
|
|
79
|
+
readonly install: (url?: string) => void;
|
|
80
|
+
readonly cancelInstall: () => void;
|
|
74
81
|
}
|
|
75
82
|
export declare function useDiscover(t: Translate, active: boolean, onInstalled: () => void): DiscoverController;
|
|
76
83
|
export type { InstallTarget };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { GitProbeStatus, MarketIndexGitSource } from '../../../kernel/contract/market-index';
|
|
2
|
+
export type TransportProbe = GitProbeStatus | 'checking' | 'unknown';
|
|
3
|
+
export interface GitTransportRow {
|
|
4
|
+
readonly kind: 'https' | 'ssh';
|
|
5
|
+
readonly url: string;
|
|
6
|
+
}
|
|
7
|
+
export interface GitTransportState {
|
|
8
|
+
readonly rows: readonly GitTransportRow[];
|
|
9
|
+
readonly chosen: string | null;
|
|
10
|
+
readonly states: Readonly<Record<string, TransportProbe>>;
|
|
11
|
+
readonly custom: string;
|
|
12
|
+
readonly customState: TransportProbe | null;
|
|
13
|
+
readonly probing: boolean;
|
|
14
|
+
readonly ready: boolean;
|
|
15
|
+
setChosen(url: string): void;
|
|
16
|
+
setCustom(value: string): void;
|
|
17
|
+
checkCustom(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function useGitTransport(source: MarketIndexGitSource | null): GitTransportState;
|
|
@@ -6,6 +6,7 @@ export interface ModuleVersionsState {
|
|
|
6
6
|
readonly workbench: WorkbenchVersion | null;
|
|
7
7
|
readonly selfUpdate: WorkbenchSelfUpdate | null;
|
|
8
8
|
readonly read: boolean;
|
|
9
|
+
readonly checking: boolean;
|
|
9
10
|
readonly checkedAt: number | null;
|
|
10
11
|
}
|
|
11
12
|
export interface ModuleVersionsView extends ModuleVersionsState {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { MARKET_DISCOVER_ROUTE, MARKET_DOC_ROUTE, MARKET_INDEX_FORMAT, MARKET_INDEX_PATH, MARKET_PUBLISH_PREVIEW_ROUTE, MARKET_SOURCES_RESOURCE, MARKET_SOURCES_ROUTE, MARKET_WORKBENCH_LABEL, } from '@dsh-workbench/shared/contract/protocol/market-index';
|
|
2
|
-
export type { DiscoverCompat, DiscoverDoc, DiscoverDocKind, DiscoverEntry, DiscoverFilter, DiscoverInstallState, DiscoverPayload, DiscoverProblem, DiscoverSourceRow, DiscoverState, DiscoverVersionRow, IndexSourceSpec, MarketClaim, MarketIndex, MarketIndexCategory, MarketIndexEngines, MarketIndexEntry, MarketIndexEntryMetadata, MarketIndexGitSource, MarketIndexLabel, MarketIndexMetadata, MarketIndexNpmSource, MarketIndexParse, MarketIndexProblem, MarketIndexProblemKind, MarketIndexSortKey, MarketIndexSource, MarketIndexVersion, MarketLocalizedText, MarketPublishDestination, MarketSourceConfig, MarketSourceKind, MarketSourcePolicy, MarketSourcesAction, MarketSourcesPayload, PublishChangelog, PublishPreview, } from '@dsh-workbench/shared/contract/protocol/market-index';
|
|
1
|
+
export { MARKET_DISCOVER_ROUTE, MARKET_DOC_ROUTE, MARKET_GIT_PROBE_ROUTE, MARKET_INDEX_FORMAT, MARKET_INDEX_PATH, MARKET_PUBLISH_PREVIEW_ROUTE, MARKET_SOURCES_RESOURCE, MARKET_SOURCES_ROUTE, MARKET_WORKBENCH_LABEL, } from '@dsh-workbench/shared/contract/protocol/market-index';
|
|
2
|
+
export type { DiscoverCompat, DiscoverDoc, DiscoverDocKind, DiscoverEntry, DiscoverFilter, DiscoverInstallState, DiscoverPayload, DiscoverProblem, DiscoverSourceRow, DiscoverState, DiscoverVersionRow, GitProbePayload, GitProbeStatus, IndexSourceSpec, MarketClaim, MarketIndex, MarketIndexCategory, MarketIndexEngines, MarketIndexEntry, MarketIndexEntryMetadata, MarketIndexGitSource, MarketIndexLabel, MarketIndexMetadata, MarketIndexNpmSource, MarketIndexParse, MarketIndexProblem, MarketIndexProblemKind, MarketIndexSortKey, MarketIndexSource, MarketIndexVersion, MarketLocalizedText, MarketPublishDestination, MarketSourceConfig, MarketSourceKind, MarketSourcePolicy, MarketSourcesAction, MarketSourcesPayload, PublishChangelog, PublishPreview, } from '@dsh-workbench/shared/contract/protocol/market-index';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DshShell } from '@dsh-workbench/shared';
|
|
2
|
+
import type { GitProbePayload, GitProbeStatus } from '../../../kernel/contract/market-index';
|
|
3
|
+
export declare function classifyGitProbe(stderr: string, timedOut: boolean): GitProbeStatus;
|
|
4
|
+
export declare function probeGitAddress(shell: DshShell, url: string, options?: {
|
|
5
|
+
readonly timeoutMs?: number;
|
|
6
|
+
}): Promise<GitProbePayload>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ApiResponse } from '@dsh-workbench/shared';
|
|
2
|
-
import { type DiscoverDoc, type DiscoverDocKind, type DiscoverPayload, type MarketSourcesPayload, type PublishPreview } from '../../kernel/contract/market-index';
|
|
2
|
+
import { type DiscoverDoc, type DiscoverDocKind, type DiscoverPayload, type GitProbePayload, type MarketSourcesPayload, type PublishPreview } from '../../kernel/contract/market-index';
|
|
3
3
|
export declare function readMarketDiscover(options?: {
|
|
4
4
|
readonly force?: boolean;
|
|
5
5
|
}): Promise<ApiResponse<DiscoverPayload>>;
|
|
6
6
|
export declare function readMarketSources(): Promise<ApiResponse<MarketSourcesPayload>>;
|
|
7
|
+
export declare function readGitProbe(url: string): Promise<ApiResponse<GitProbePayload>>;
|
|
7
8
|
export declare function readMarketDoc(name: string, version: string, kind: DiscoverDocKind): Promise<ApiResponse<{
|
|
8
9
|
readonly doc: DiscoverDoc;
|
|
9
10
|
}>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-workbench/core",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "个人工作台:Agent 工作台(左栏 + 常驻对话 + 自研右侧数据面板)。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"icon": "./icon.svg",
|
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
"proper-lockfile": "^4.1.2",
|
|
101
101
|
"which": "^7.0.0",
|
|
102
102
|
"write-file-atomic": "^8.0.0",
|
|
103
|
-
"@dsh-workbench/shared": "1.1.
|
|
104
|
-
"@dsh-workbench/adapters-default": "1.1.
|
|
103
|
+
"@dsh-workbench/shared": "1.1.3",
|
|
104
|
+
"@dsh-workbench/adapters-default": "1.1.3"
|
|
105
105
|
},
|
|
106
106
|
"license": "MIT",
|
|
107
107
|
"repository": {
|