@mak-98/dirvi-cli 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/dir-buffer-helpers.d.ts.map +1 -1
- package/dist/application/display-rows.d.ts.map +1 -1
- package/dist/application/fold-helpers.d.ts.map +1 -1
- package/dist/application/reducer.d.ts.map +1 -1
- package/dist/application/reducer.js +1 -1
- package/dist/domain/event-message.d.ts +12 -0
- package/dist/domain/event-message.d.ts.map +1 -0
- package/dist/domain/event-message.js +1 -0
- package/dist/index.js +2 -5
- package/dist/ui/App.d.ts +4 -2
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +18 -3
- package/dist/ui/AppShell.d.ts +3 -3
- package/dist/ui/AppShell.d.ts.map +1 -1
- package/dist/ui/AppShell.js +1 -1
- package/dist/ui/components/DirEntries.d.ts.map +1 -1
- package/dist/ui/components/UnixEntry.d.ts +1 -1
- package/dist/ui/components/UnixEntry.d.ts.map +1 -1
- package/dist/ui/components/UnixEntry.js +2 -2
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dir-buffer-helpers.d.ts","sourceRoot":"","sources":["../../src/application/dir-buffer-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"dir-buffer-helpers.d.ts","sourceRoot":"","sources":["../../src/application/dir-buffer-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvE,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS,GACd,SAAS,GAAG,SAAS,CA2BvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-rows.d.ts","sourceRoot":"","sources":["../../src/application/display-rows.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EACV,SAAS,EACT,QAAQ,
|
|
1
|
+
{"version":3,"file":"display-rows.d.ts","sourceRoot":"","sources":["../../src/application/display-rows.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EACV,SAAS,EACT,QAAQ,EAIT,MAAM,WAAW,CAAC;AAsDnB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,GACd,UAAU,EAAE,CAEd;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,SAAS,GACd,UAAU,GAAG,SAAS,CAqBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold-helpers.d.ts","sourceRoot":"","sources":["../../src/application/fold-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGpE,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAEzE;AAED,wBAAgB,aAAa,
|
|
1
|
+
{"version":3,"file":"fold-helpers.d.ts","sourceRoot":"","sources":["../../src/application/fold-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGpE,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAEzE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,KAAK,EAAE,SAAS,GACf,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,aAAa,EAAE,EACrB,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,GACnC,QAAQ,CAkBV;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,QAAQ,CAOvE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,GAAG,QAAQ,CAS1E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,EAAE,aAAa,GACvB,QAAQ,CA8BV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/application/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EAEb,SAAS,EACT,IAAI,EAGL,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/application/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EAEb,SAAS,EACT,IAAI,EAGL,MAAM,WAAW,CAAC;AASnB,MAAM,MAAM,MAAM,GACd;IACE,IAAI,EAAE,WAAW,CAAC;CACnB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;CACnB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;CACjB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;CACjB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;CAChB,GACD;IACE,IAAI,EAAE,YAAY,CAAC;CACpB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;CAChB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA8EN,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA+MxD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { rowsEqual, entryNamesEqual, } from 'dirvi-lib';
|
|
2
|
-
import { updateFoldNodeAtPath, unfoldFoldSequence, addFold } from './fold-helpers.js';
|
|
2
|
+
import { updateFoldNodeAtPath, unfoldFoldSequence, addFold, } from './fold-helpers.js';
|
|
3
3
|
import { createDisplayRows, displayRowAtPath } from './display-rows.js';
|
|
4
4
|
import { entryAtPath } from './dir-buffer-helpers.js';
|
|
5
5
|
function updateEntries(entries, currentPath, newEntries) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EntryPath, View } from 'dirvi-lib';
|
|
2
|
+
export type EventMessage = {
|
|
3
|
+
type: 'view';
|
|
4
|
+
view: View;
|
|
5
|
+
} | {
|
|
6
|
+
type: 'displayed-files-paths';
|
|
7
|
+
paths: string[];
|
|
8
|
+
} | {
|
|
9
|
+
type: 'file';
|
|
10
|
+
path: EntryPath;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=event-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-message.d.ts","sourceRoot":"","sources":["../../src/domain/event-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,MAAM,YAAY,GACpB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
CHANGED
|
@@ -14,10 +14,7 @@ const uiOutput = process.stderr;
|
|
|
14
14
|
// separate JSON Lines message.
|
|
15
15
|
// Note: if you pipe output you'll need to use FORCE_COLOR=3
|
|
16
16
|
// to keep interactive screen colored.
|
|
17
|
-
const
|
|
18
|
-
if (process.stdout.isTTY) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
17
|
+
const emitEventMsg = (message) => {
|
|
21
18
|
process.stdout.write(`${JSON.stringify(message)}\n`);
|
|
22
19
|
};
|
|
23
20
|
const enterAlternateScreen = '\u001b[?1049h\u001b[2J\u001b[H\u001b[?25l';
|
|
@@ -48,7 +45,7 @@ program
|
|
|
48
45
|
alternateScreenActive = true;
|
|
49
46
|
}
|
|
50
47
|
try {
|
|
51
|
-
const app = render(_jsx(AppShell, { ...initialProps, print:
|
|
48
|
+
const app = render(_jsx(AppShell, { ...initialProps, print: (process.stdout.isTTY) ? undefined : emitEventMsg, onError: (error) => {
|
|
52
49
|
appError = error;
|
|
53
50
|
} }), { stdout: uiOutput });
|
|
54
51
|
// Errors thrown while leaving this await still execute the finally block.
|
package/dist/ui/App.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { DisplayRow } from 'dirvi-lib';
|
|
1
2
|
import type { UnixAbsolutePath, View } from 'dirvi-lib';
|
|
2
|
-
import {
|
|
3
|
+
import { EventMessage } from '../domain/event-message.js';
|
|
3
4
|
export type AppProps = {
|
|
4
5
|
cwdAddress: UnixAbsolutePath;
|
|
5
6
|
initialView: View;
|
|
6
|
-
print?: (message:
|
|
7
|
+
print?: (message: EventMessage) => void;
|
|
7
8
|
onError?: (error: Error) => void;
|
|
8
9
|
};
|
|
9
10
|
export declare function App({ cwdAddress, initialView, print, onError }: AppProps): import("react").JSX.Element | null;
|
|
11
|
+
export declare function displayedFilePaths(rows: readonly DisplayRow[]): string[];
|
|
10
12
|
//# sourceMappingURL=App.d.ts.map
|
package/dist/ui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAqB,MAAM,WAAW,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAMxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,IAAI,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,sCA+GxE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,EAAE,CAUxE"}
|
package/dist/ui/App.js
CHANGED
|
@@ -8,14 +8,20 @@ import { inputToInputResult } from '../infrastructure/input.js';
|
|
|
8
8
|
import DirEntries from './components/DirEntries.js';
|
|
9
9
|
import { createDisplayRows } from '../application/display-rows.js';
|
|
10
10
|
import { entryAtPath } from '../application/dir-buffer-helpers.js';
|
|
11
|
+
import * as path from 'node:path';
|
|
11
12
|
export function App({ cwdAddress, initialView, print, onError }) {
|
|
12
13
|
const [view, dispatch] = useReducer(reducer, initialView);
|
|
13
14
|
const { buffer, folds, cursor } = view;
|
|
14
|
-
const
|
|
15
|
+
const displayRows = createDisplayRows(buffer, folds);
|
|
15
16
|
const pendingInput = useRef(undefined);
|
|
17
|
+
const [exitStatus, setExitStatus] = useState();
|
|
16
18
|
// Print view on changes
|
|
17
19
|
useEffect(() => {
|
|
18
20
|
print?.({ type: 'view', view: view });
|
|
21
|
+
print?.({
|
|
22
|
+
type: 'displayed-files-paths',
|
|
23
|
+
paths: displayedFilePaths(displayRows),
|
|
24
|
+
});
|
|
19
25
|
}, [view, print]);
|
|
20
26
|
// --- Input ---
|
|
21
27
|
useInput((input, key) => {
|
|
@@ -85,6 +91,15 @@ export function App({ cwdAddress, initialView, print, onError }) {
|
|
|
85
91
|
return null;
|
|
86
92
|
}
|
|
87
93
|
// --- JSX ---
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
return (_jsx(Box, { flexDirection: "column", children: buffer.entries.length === 0 || cursor === undefined ? (_jsx(Text, { dimColor: true, children: "Directory is empty." })) : (_jsx(DirEntries, { rows: displayRows, cursor: cursor })) }));
|
|
95
|
+
}
|
|
96
|
+
export function displayedFilePaths(rows) {
|
|
97
|
+
return rows.flatMap((row) => {
|
|
98
|
+
if ((row.kind !== 'entry') || (row.entry.kind !== 'file')) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
return [
|
|
102
|
+
path.posix.join(...row.parentPath.map(String), String(row.entry.name)),
|
|
103
|
+
];
|
|
104
|
+
});
|
|
90
105
|
}
|
package/dist/ui/AppShell.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { UnixAbsolutePath, View } from 'dirvi-lib';
|
|
2
|
-
import {
|
|
2
|
+
import { EventMessage } from '../domain/event-message.js';
|
|
3
3
|
export type EmptyView = {
|
|
4
4
|
cursor: undefined;
|
|
5
5
|
};
|
|
6
6
|
export type ShellAppProps = {
|
|
7
7
|
cwdAddress: UnixAbsolutePath;
|
|
8
8
|
initialView: View | EmptyView;
|
|
9
|
-
print?: (message:
|
|
9
|
+
print?: (message: EventMessage) => void;
|
|
10
10
|
onError?: (error: Error) => void;
|
|
11
11
|
};
|
|
12
|
-
export declare function AppShell({ cwdAddress, initialView, print, onError }: ShellAppProps): import("react").JSX.Element;
|
|
12
|
+
export declare function AppShell({ cwdAddress, initialView, print, onError, }: ShellAppProps): import("react").JSX.Element;
|
|
13
13
|
//# sourceMappingURL=AppShell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../src/ui/AppShell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../src/ui/AppShell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,UAAU,EACV,WAAW,EACX,KAAK,EACL,OAAO,GACR,EAAE,aAAa,+BAaf"}
|
package/dist/ui/AppShell.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Text } from 'ink';
|
|
3
3
|
import { App } from './App.js';
|
|
4
|
-
export function AppShell({ cwdAddress, initialView, print, onError }) {
|
|
4
|
+
export function AppShell({ cwdAddress, initialView, print, onError, }) {
|
|
5
5
|
if (initialView.cursor === undefined) {
|
|
6
6
|
return _jsx(Text, { dimColor: true, children: "Directory is empty." });
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirEntries.d.ts","sourceRoot":"","sources":["../../../src/ui/components/DirEntries.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQpD,iBAAS,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+
|
|
1
|
+
{"version":3,"file":"DirEntries.d.ts","sourceRoot":"","sources":["../../../src/ui/components/DirEntries.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQpD,iBAAS,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,+BA0D3E;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnixEntry.d.ts","sourceRoot":"","sources":["../../../src/ui/components/UnixEntry.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"UnixEntry.d.ts","sourceRoot":"","sources":["../../../src/ui/components/UnixEntry.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,+BAmBA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Text } from 'ink';
|
|
3
|
-
export function UnixEntry({ entry, selected }) {
|
|
3
|
+
export function UnixEntry({ entry, selected, }) {
|
|
4
4
|
switch (entry.kind) {
|
|
5
5
|
case 'file':
|
|
6
|
-
return
|
|
6
|
+
return _jsx(Text, { inverse: selected, children: entry.name });
|
|
7
7
|
case 'symlink':
|
|
8
8
|
return (_jsxs(Text, { inverse: selected, children: [entry.name, " -> ", entry.target] }));
|
|
9
9
|
case 'directory':
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mak-98/dirvi-cli",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "A Vim-inspired TUI for browsing directories.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "GPL-3.0-or-later",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
],
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"commander": "^13.0.0",
|
|
16
|
-
"dirvi-lib": "0.
|
|
16
|
+
"dirvi-lib": "0.2.0",
|
|
17
17
|
"ink": "^7.1.1",
|
|
18
18
|
"react": "^19.0.0"
|
|
19
19
|
},
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"build": "tsc",
|
|
28
28
|
"dev": "FORCE_COLOR=3 tsx src/index.tsx",
|
|
29
29
|
"start": "node dist/index.js",
|
|
30
|
-
"typecheck": "tsc --noEmit"
|
|
30
|
+
"typecheck": "tsc --noEmit",
|
|
31
|
+
"update-global": "npm install --global @mak-98/dirvi-cli@latest"
|
|
31
32
|
}
|
|
32
33
|
}
|