@workjournal/cli 0.1.0 → 0.2.0
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/api-client.d.ts +28 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +114 -0
- package/dist/api-client.js.map +1 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +6 -3
- package/dist/auth.js.map +1 -1
- package/dist/commands/entries.d.ts +6 -0
- package/dist/commands/entries.d.ts.map +1 -0
- package/dist/commands/entries.js +92 -0
- package/dist/commands/entries.js.map +1 -0
- package/dist/commands/export.d.ts +2 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +22 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/invites.d.ts +4 -0
- package/dist/commands/invites.d.ts.map +1 -0
- package/dist/commands/invites.js +45 -0
- package/dist/commands/invites.js.map +1 -0
- package/dist/commands/journals.d.ts +6 -0
- package/dist/commands/journals.d.ts.map +1 -0
- package/dist/commands/journals.js +70 -0
- package/dist/commands/journals.js.map +1 -0
- package/dist/commands/shares.d.ts +3 -0
- package/dist/commands/shares.d.ts.map +1 -0
- package/dist/commands/shares.js +34 -0
- package/dist/commands/shares.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.d.ts +1 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +1 -1
- package/dist/credentials.js.map +1 -1
- package/dist/formatting.d.ts +9 -0
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +37 -0
- package/dist/formatting.js.map +1 -0
- package/dist/index.js +385 -51
- package/dist/index.js.map +1 -1
- package/dist/project-config.d.ts +18 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +55 -0
- package/dist/project-config.js.map +1 -0
- package/dist/wsl.d.ts +5 -0
- package/dist/wsl.d.ts.map +1 -0
- package/dist/wsl.js +33 -0
- package/dist/wsl.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { existsSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
const PROJECT_CONFIG_FILENAME = '.workjournal';
|
|
4
|
+
/**
|
|
5
|
+
* Walk from `startDir` (default `process.cwd()`) upward, looking for a `.workjournal` JSON file.
|
|
6
|
+
* Returns the parsed config or `null` if not found or malformed.
|
|
7
|
+
*/
|
|
8
|
+
export function findProjectConfig(startDir) {
|
|
9
|
+
const configPath = getProjectConfigPath(startDir);
|
|
10
|
+
if (!configPath)
|
|
11
|
+
return null;
|
|
12
|
+
try {
|
|
13
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
14
|
+
const parsed = JSON.parse(raw);
|
|
15
|
+
if (parsed && typeof parsed === 'object' && typeof parsed.journal_id === 'string') {
|
|
16
|
+
const journalId = parsed.journal_id.trim();
|
|
17
|
+
if (journalId.length > 0)
|
|
18
|
+
return { journal_id: journalId };
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Return the path to the `.workjournal` file found by walking upward from `startDir`,
|
|
28
|
+
* or `null` if none exists.
|
|
29
|
+
*/
|
|
30
|
+
export function getProjectConfigPath(startDir) {
|
|
31
|
+
let dir = startDir ?? process.cwd();
|
|
32
|
+
for (;;) {
|
|
33
|
+
const candidate = join(dir, PROJECT_CONFIG_FILENAME);
|
|
34
|
+
if (existsSync(candidate)) {
|
|
35
|
+
return candidate;
|
|
36
|
+
}
|
|
37
|
+
const parent = dirname(dir);
|
|
38
|
+
if (parent === dir) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
dir = parent;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Write a `.workjournal` config file to the given directory using atomic tmp+rename.
|
|
46
|
+
*/
|
|
47
|
+
export function writeProjectConfig(dir, journalId) {
|
|
48
|
+
const configPath = join(dir, PROJECT_CONFIG_FILENAME);
|
|
49
|
+
const tmpPath = `${configPath}.tmp`;
|
|
50
|
+
writeFileSync(tmpPath, `${JSON.stringify({ journal_id: journalId }, null, '\t')}\n`, {
|
|
51
|
+
mode: 0o600,
|
|
52
|
+
});
|
|
53
|
+
renameSync(tmpPath, configPath);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=project-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAM/C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IAClD,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACzD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACrD,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpC,SAAS,CAAC;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,SAAiB;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,GAAG,UAAU,MAAM,CAAC;IACpC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACpF,IAAI,EAAE,KAAK;KACX,CAAC,CAAC;IACH,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/wsl.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsl.d.ts","sourceRoot":"","sources":["../src/wsl.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhF"}
|
package/dist/wsl.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline/promises';
|
|
2
|
+
import { CONFIG_DIR } from './credentials.js';
|
|
3
|
+
export function isWindowsNodeOnWsl() {
|
|
4
|
+
return process.platform === 'win32' && !!process.env['WSL_DISTRO_NAME'];
|
|
5
|
+
}
|
|
6
|
+
export async function warnIfWsl(options) {
|
|
7
|
+
if (!isWindowsNodeOnWsl())
|
|
8
|
+
return;
|
|
9
|
+
if (process.env['WORKJOURNAL_CONFIG_DIR'])
|
|
10
|
+
return;
|
|
11
|
+
const distro = process.env['WSL_DISTRO_NAME'];
|
|
12
|
+
process.stderr.write(`\nWarning: Node.js is running as a Windows binary inside WSL (distro: ${distro}).\n` +
|
|
13
|
+
`Credentials will be saved to: ${CONFIG_DIR}/credentials.json\n` +
|
|
14
|
+
`This path is on the Windows filesystem and may not be accessible from Linux tools in WSL.\n\n` +
|
|
15
|
+
`Recommended fix: install Node.js natively inside WSL:\n` +
|
|
16
|
+
` curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash\n` +
|
|
17
|
+
` nvm install 22\n\n` +
|
|
18
|
+
`To override the credential location, set WORKJOURNAL_CONFIG_DIR.\n\n`);
|
|
19
|
+
if (options.interactive && process.stdin.isTTY) {
|
|
20
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
21
|
+
try {
|
|
22
|
+
const answer = await rl.question('Continue? [y/N] ');
|
|
23
|
+
if (answer.trim().toLowerCase() !== 'y') {
|
|
24
|
+
process.stderr.write('Aborted.\n');
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
rl.close();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=wsl.js.map
|
package/dist/wsl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsl.js","sourceRoot":"","sources":["../src/wsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,kBAAkB;IACjC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAiC;IAChE,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAO;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAAE,OAAO;IAElD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,yEAAyE,MAAM,MAAM;QACpF,iCAAiC,UAAU,qBAAqB;QAChE,+FAA+F;QAC/F,yDAAyD;QACzD,qFAAqF;QACrF,sBAAsB;QACtB,sEAAsE,CACvE,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACF,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED