@tryglen/cli 0.3.0 → 0.4.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/bin.js +15 -1
- package/dist/bin.js.map +1 -1
- package/dist/commands/install.js +33 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.js +0 -7
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +0 -2
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/onboard.d.ts +3 -0
- package/dist/commands/onboard.js +20 -0
- package/dist/commands/onboard.js.map +1 -0
- package/package.json +1 -1
- package/dist/_utils/login-lock.d.ts +0 -3
- package/dist/_utils/login-lock.js +0 -32
- package/dist/_utils/login-lock.js.map +0 -1
package/dist/bin.js
CHANGED
|
@@ -157,5 +157,19 @@ cli.on("command:*", () => {
|
|
|
157
157
|
});
|
|
158
158
|
cli.help();
|
|
159
159
|
cli.version(cliVersion);
|
|
160
|
-
|
|
160
|
+
// Bare `glen` (no args): first-run onboarding when fresh + interactive,
|
|
161
|
+
// otherwise help. Never prompts in scripts/hooks (maybeOnboard checks TTY).
|
|
162
|
+
// No process.exit here — exiting right after console-based help output can
|
|
163
|
+
// truncate piped stdout; let the event loop drain and exit naturally.
|
|
164
|
+
const isBareInvocation = process.argv.length <= 2;
|
|
165
|
+
if (isBareInvocation) {
|
|
166
|
+
const { maybeOnboard } = await import("./commands/onboard.js");
|
|
167
|
+
const result = await maybeOnboard();
|
|
168
|
+
if (!(result.ok && result.value === "ran")) {
|
|
169
|
+
cli.outputHelp();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
cli.parse();
|
|
174
|
+
}
|
|
161
175
|
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -3,8 +3,10 @@ import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import prompts from "prompts";
|
|
6
|
+
import { readCredentials } from "../_utils/credentials.js";
|
|
6
7
|
import { err, fromPromise, ok } from "../_utils/result.js";
|
|
7
8
|
import { isInstalled } from "../_utils/which.js";
|
|
9
|
+
import { login } from "./login.js";
|
|
8
10
|
// ---------------------------------------------------------------------------
|
|
9
11
|
// Settings path (GLEN_CLAUDE_SETTINGS_PATH env var is for test overrides only)
|
|
10
12
|
// ---------------------------------------------------------------------------
|
|
@@ -107,6 +109,34 @@ const handlePostInstall = async (agent) => {
|
|
|
107
109
|
}
|
|
108
110
|
};
|
|
109
111
|
// ---------------------------------------------------------------------------
|
|
112
|
+
// Connect prompt — both install paths end here so a fresh user always gets
|
|
113
|
+
// nudged into `glen login`. Never prompts when non-interactive or logged in.
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
const promptConnect = async () => {
|
|
116
|
+
const creds = await readCredentials();
|
|
117
|
+
if (creds)
|
|
118
|
+
return;
|
|
119
|
+
if (!process.stdout.isTTY) {
|
|
120
|
+
process.stdout.write(" Run `glen login` to connect your account.\n\n");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const response = await prompts({
|
|
124
|
+
type: "confirm",
|
|
125
|
+
name: "connect",
|
|
126
|
+
message: "Connect your glen account now?",
|
|
127
|
+
initial: true,
|
|
128
|
+
});
|
|
129
|
+
if (!response.connect) {
|
|
130
|
+
process.stdout.write(" Run `glen login` when you're ready.\n\n");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const result = await login();
|
|
134
|
+
if (!result.ok) {
|
|
135
|
+
process.stdout.write(` ✗ login failed: ${result.error}\n`);
|
|
136
|
+
process.stdout.write(" Run `glen login` to try again.\n\n");
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
110
140
|
// Main install command
|
|
111
141
|
// ---------------------------------------------------------------------------
|
|
112
142
|
const install = async () => {
|
|
@@ -115,6 +145,7 @@ const install = async () => {
|
|
|
115
145
|
if (detected.length === 0) {
|
|
116
146
|
process.stdout.write(" ⚠ Could not find Claude Code or Codex installed.\n");
|
|
117
147
|
process.stdout.write(" See https://tryglen.com/docs/plugins for manual install instructions.\n\n");
|
|
148
|
+
await promptConnect();
|
|
118
149
|
return err("no agents detected");
|
|
119
150
|
}
|
|
120
151
|
process.stdout.write(" Detected coding agents:\n");
|
|
@@ -137,6 +168,7 @@ const install = async () => {
|
|
|
137
168
|
const selected = (response.plugins ?? []);
|
|
138
169
|
if (selected.length === 0) {
|
|
139
170
|
process.stdout.write(" No plugins selected.\n");
|
|
171
|
+
await promptConnect();
|
|
140
172
|
return ok(undefined);
|
|
141
173
|
}
|
|
142
174
|
for (const agent of selected) {
|
|
@@ -158,7 +190,7 @@ const install = async () => {
|
|
|
158
190
|
await handlePostInstall(agent);
|
|
159
191
|
}
|
|
160
192
|
process.stdout.write("\n Done! Start a conversation in either agent — glen memory is active.\n");
|
|
161
|
-
|
|
193
|
+
await promptConnect();
|
|
162
194
|
return ok(undefined);
|
|
163
195
|
};
|
|
164
196
|
export { install };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAe,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -3,16 +3,12 @@ import { buildConnectUrl } from "../_utils/build-connect-url.js";
|
|
|
3
3
|
import { config } from "../_utils/config.js";
|
|
4
4
|
import { writeCredentials } from "../_utils/credentials.js";
|
|
5
5
|
import { httpJson } from "../_utils/http.js";
|
|
6
|
-
import { acquireLoginLock, releaseLoginLock } from "../_utils/login-lock.js";
|
|
7
6
|
import { startLoopbackServer } from "../_utils/loopback-server.js";
|
|
8
7
|
import { openBrowser } from "../_utils/open-browser.js";
|
|
9
8
|
import { err, ok } from "../_utils/result.js";
|
|
10
9
|
import { writeState } from "../_utils/state.js";
|
|
11
10
|
const WAIT_MS = 10 * 60_000;
|
|
12
11
|
const login = async () => {
|
|
13
|
-
const lockAcquired = await acquireLoginLock();
|
|
14
|
-
if (!lockAcquired)
|
|
15
|
-
return err("another login is already in progress");
|
|
16
12
|
const state = randomBytes(32).toString("hex");
|
|
17
13
|
const verifier = randomBytes(48).toString("base64url");
|
|
18
14
|
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
@@ -28,11 +24,9 @@ const login = async () => {
|
|
|
28
24
|
openBrowser(url);
|
|
29
25
|
const cb = await waitForCallback().catch(() => null);
|
|
30
26
|
if (!cb?.code) {
|
|
31
|
-
await releaseLoginLock();
|
|
32
27
|
return err("login callback timed out or was cancelled");
|
|
33
28
|
}
|
|
34
29
|
if (cb.state !== state) {
|
|
35
|
-
await releaseLoginLock();
|
|
36
30
|
return err("login state mismatch (possible local interception)");
|
|
37
31
|
}
|
|
38
32
|
const exchangeResult = await httpJson(config.exchangeUrl, {
|
|
@@ -41,7 +35,6 @@ const login = async () => {
|
|
|
41
35
|
body: JSON.stringify({ code: cb.code, verifier }),
|
|
42
36
|
timeoutMs: 15_000,
|
|
43
37
|
});
|
|
44
|
-
await releaseLoginLock();
|
|
45
38
|
if (!exchangeResult.ok)
|
|
46
39
|
return err("key exchange failed (network error)");
|
|
47
40
|
if (!exchangeResult.value.isOk)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC;AAE5B,MAAM,KAAK,GAAG,KAAK,IAAmC,EAAE;IACtD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE5E,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,MAAM,mBAAmB,CAChE,OAAO,EACP,KAAK,CACN,CAAC;IACF,MAAM,GAAG,GAAG,eAAe,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,WAAW;QACrB,KAAK;QACL,SAAS;KACV,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,MAAM,CAAC,CAAC;IAC/D,WAAW,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;QACxD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAC1E,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;QAC5B,OAAO,GAAG,CAAC,6BAA6B,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,IAAsC,CAAC;IAC5E,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;QACxD,OAAO,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC;QACzC,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,OAAO,CAAC,MAAM;KACpB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE/D,uDAAuD;IACvD,sEAAsE;IACtE,MAAM,MAAM,GAAI,OAA6B,CAAC,GAAG,IAAI,IAAI,CAAC;IAC1D,MAAM,GAAG,GACP,MAAM,KAAK,IAAI;QACf,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAQ,MAAkC,CAAC,EAAE,KAAK,QAAQ;QAC1D,OAAQ,MAAkC,CAAC,IAAI,KAAK,QAAQ;QAC5D,OAAQ,MAAkC,CAAC,IAAI,KAAK,QAAQ;QAC1D,CAAC,CAAE,MAAqD;QACxD,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC;YACnC,WAAW,EAAE,GAAG,CAAC,EAAE;YACnB,aAAa,EAAE,GAAG,CAAC,IAAI;YACvB,aAAa,EAAE,GAAG,CAAC,IAAI;YACvB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,GAAG,CAAC,IAAI,2BAA2B,CAC3E,CAAC;YACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,qEAAqE;QACrE,6CAA6C;IAC/C,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yEAAyE,CAC1E,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { clearCredentials } from "../_utils/credentials.js";
|
|
2
|
-
import { releaseLoginLock } from "../_utils/login-lock.js";
|
|
3
2
|
import { ok } from "../_utils/result.js";
|
|
4
3
|
import { clearState } from "../_utils/state.js";
|
|
5
4
|
const logout = async () => {
|
|
6
5
|
await clearCredentials();
|
|
7
6
|
await clearState();
|
|
8
|
-
await releaseLoginLock();
|
|
9
7
|
process.stdout.write("✓ Signed out of glen (credentials removed).\n");
|
|
10
8
|
return ok(undefined);
|
|
11
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAe,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,MAAM,GAAG,KAAK,IAAmC,EAAE;IACvD,MAAM,gBAAgB,EAAE,CAAC;IACzB,MAAM,UAAU,EAAE,CAAC;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACtE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { readCredentials } from "../_utils/credentials.js";
|
|
2
|
+
import { ok } from "../_utils/result.js";
|
|
3
|
+
import { install } from "./install.js";
|
|
4
|
+
// First-run onboarding for bare `glen`. Fires only on a fresh interactive
|
|
5
|
+
// setup (no credentials + TTY); everything else returns "skip" so bin.ts
|
|
6
|
+
// falls through to help. The connect/login prompt chains inside install().
|
|
7
|
+
const maybeOnboard = async () => {
|
|
8
|
+
const creds = await readCredentials();
|
|
9
|
+
if (creds || !process.stdout.isTTY)
|
|
10
|
+
return ok("skip");
|
|
11
|
+
process.stdout.write("\n 🏔️ glen — let's get you set up\n");
|
|
12
|
+
// install() prints its own guidance for every outcome (including "no
|
|
13
|
+
// agents detected", an err) — onboarding continues to the summary regardless.
|
|
14
|
+
await install();
|
|
15
|
+
process.stdout.write("\n That's it! Open Claude Code or Codex — glen runs automatically.\n" +
|
|
16
|
+
" Anytime: `glen status` · `glen org switch` · `glen --help`\n\n");
|
|
17
|
+
return ok("ran");
|
|
18
|
+
};
|
|
19
|
+
export { maybeOnboard };
|
|
20
|
+
//# sourceMappingURL=onboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAe,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,YAAY,GAAG,KAAK,IAA6C,EAAE;IACvE,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE9D,qEAAqE;IACrE,8EAA8E;IAC9E,MAAM,OAAO,EAAE,CAAC;IAEhB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;QACrE,kEAAkE,CACrE,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { stat, unlink, writeFile } from "node:fs/promises";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { credentialsPath } from "./credentials.js";
|
|
4
|
-
import { fromPromise } from "./result.js";
|
|
5
|
-
const LOCK_TTL_MS = 10 * 1000; // 10 seconds — short so stale locks from crashed hooks don't block login
|
|
6
|
-
const lockPath = () => {
|
|
7
|
-
return join(dirname(credentialsPath()), ".login.lock");
|
|
8
|
-
};
|
|
9
|
-
const acquireLoginLock = async () => {
|
|
10
|
-
const path = lockPath();
|
|
11
|
-
// Attempt exclusive create — fails with EEXIST if lock already held.
|
|
12
|
-
const writeResult = await fromPromise(writeFile(path, String(Date.now()), { flag: "wx" }));
|
|
13
|
-
if (writeResult.ok)
|
|
14
|
-
return true;
|
|
15
|
-
// Lock file exists — check if stale.
|
|
16
|
-
const statResult = await fromPromise(stat(path));
|
|
17
|
-
if (!statResult.ok)
|
|
18
|
-
return false; // disappeared between write and stat — another process won
|
|
19
|
-
const age = Date.now() - statResult.value.mtimeMs;
|
|
20
|
-
if (age < LOCK_TTL_MS)
|
|
21
|
-
return false; // fresh lock held by another process
|
|
22
|
-
// Stale — remove and retry once with exclusive create.
|
|
23
|
-
await fromPromise(unlink(path));
|
|
24
|
-
const retryResult = await fromPromise(writeFile(path, String(Date.now()), { flag: "wx" }));
|
|
25
|
-
return retryResult.ok;
|
|
26
|
-
};
|
|
27
|
-
const releaseLoginLock = async () => {
|
|
28
|
-
const path = lockPath();
|
|
29
|
-
await fromPromise(unlink(path));
|
|
30
|
-
};
|
|
31
|
-
export { acquireLoginLock, releaseLoginLock };
|
|
32
|
-
//# sourceMappingURL=login-lock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login-lock.js","sourceRoot":"","sources":["../../src/_utils/login-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,yEAAyE;AAExG,MAAM,QAAQ,GAAG,GAAW,EAAE;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,IAAsB,EAAE;IACpD,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IAExB,qEAAqE;IACrE,MAAM,WAAW,GAAG,MAAM,WAAW,CACnC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACpD,CAAC;IACF,IAAI,WAAW,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAEhC,qCAAqC;IACrC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC,CAAC,2DAA2D;IAC7F,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IAClD,IAAI,GAAG,GAAG,WAAW;QAAE,OAAO,KAAK,CAAC,CAAC,qCAAqC;IAE1E,uDAAuD;IACvD,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,MAAM,WAAW,CACnC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACpD,CAAC;IACF,OAAO,WAAW,CAAC,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,IAAmB,EAAE;IACjD,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
|