hacklab 0.6.7 → 0.7.4
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 +36 -6
- package/dist/card.d.ts +66 -0
- package/dist/card.d.ts.map +1 -0
- package/dist/card.js +151 -0
- package/dist/card.js.map +1 -0
- package/dist/commands/brag.d.ts.map +1 -1
- package/dist/commands/brag.js +5 -0
- package/dist/commands/brag.js.map +1 -1
- package/dist/commands/chat.d.ts +21 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +109 -14
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +21 -9
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +5 -0
- package/dist/commands/drop.js.map +1 -1
- package/dist/commands/essay.d.ts +24 -0
- package/dist/commands/essay.d.ts.map +1 -0
- package/dist/commands/essay.js +434 -0
- package/dist/commands/essay.js.map +1 -0
- package/dist/commands/hacker.d.ts +2 -0
- package/dist/commands/hacker.d.ts.map +1 -0
- package/dist/commands/hacker.js +119 -0
- package/dist/commands/hacker.js.map +1 -0
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +153 -11
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +13 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +2 -0
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/org.d.ts +0 -2
- package/dist/commands/org.d.ts.map +1 -1
- package/dist/commands/org.js +1 -17
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +25 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +92 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +44 -21
- package/dist/index.js.map +1 -1
- package/dist/posthog.d.ts +9 -0
- package/dist/posthog.d.ts.map +1 -0
- package/dist/posthog.js +20 -0
- package/dist/posthog.js.map +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +20 -0
- package/dist/registry.js.map +1 -1
- package/dist/scanners/index.d.ts +24 -2
- package/dist/scanners/index.d.ts.map +1 -1
- package/dist/scanners/index.js +103 -15
- package/dist/scanners/index.js.map +1 -1
- package/dist/session.d.ts +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +16 -0
- package/dist/session.js.map +1 -1
- package/dist/ui.d.ts +12 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +56 -0
- package/dist/ui.js.map +1 -1
- package/dist/utils/npmGlobal.d.ts +30 -0
- package/dist/utils/npmGlobal.d.ts.map +1 -0
- package/dist/utils/npmGlobal.js +69 -0
- package/dist/utils/npmGlobal.js.map +1 -0
- package/dist/utils/updateCheck.d.ts +6 -0
- package/dist/utils/updateCheck.d.ts.map +1 -1
- package/dist/utils/updateCheck.js +7 -2
- package/dist/utils/updateCheck.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { accessSync, constants, existsSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
// Shared plumbing for the two places that shell out to `npm i -g hacklab`: the
|
|
6
|
+
// `hacklab update` command and (conceptually) the curl|sh installer. The point
|
|
7
|
+
// of the H1 approach is to never let npm's raw EACCES stack trace reach the
|
|
8
|
+
// user: probe whether npm's global folder is writable up front, and if it isn't,
|
|
9
|
+
// reconfigure npm to a user-owned prefix (npm's own documented remedy) instead
|
|
10
|
+
// of escalating to sudo. That fix is persistent, so every future `npm i -g`
|
|
11
|
+
// works too — which is the whole reason the update nag can safely point here.
|
|
12
|
+
/**
|
|
13
|
+
* npm's executable name. On Windows npm is a `.cmd` shim, and recent Node
|
|
14
|
+
* refuses to spawn `.cmd`/`.bat` without a shell, so callers pass `shell: true`
|
|
15
|
+
* on win32 (see {@link runNpm}).
|
|
16
|
+
*/
|
|
17
|
+
export const NPM_BIN = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
18
|
+
/**
|
|
19
|
+
* Run npm with fixed (never user-supplied) args. `capture` pipes stdout/stderr
|
|
20
|
+
* back as strings; otherwise the child inherits the terminal so npm's own
|
|
21
|
+
* progress shows through. `shell: true` on Windows is required to launch the
|
|
22
|
+
* `.cmd` shim; the args here are all literals, so there's nothing to escape.
|
|
23
|
+
*/
|
|
24
|
+
export function runNpm(args, opts = {}) {
|
|
25
|
+
return spawnSync(NPM_BIN, args, {
|
|
26
|
+
stdio: opts.capture ? ['ignore', 'pipe', 'pipe'] : 'inherit',
|
|
27
|
+
encoding: 'utf8',
|
|
28
|
+
shell: process.platform === 'win32',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** The directory npm would drop a global package into (`npm root -g`), or ''. */
|
|
32
|
+
export function npmGlobalRoot() {
|
|
33
|
+
const res = runNpm(['root', '-g'], { capture: true });
|
|
34
|
+
return res.status === 0 && res.stdout ? res.stdout.trim() : '';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Walk up from `p` to the nearest ancestor that exists on disk. We can't test
|
|
38
|
+
* writability of a directory npm hasn't created yet (`…/lib/node_modules`
|
|
39
|
+
* frequently doesn't exist), so we check the closest thing that does — mkdir
|
|
40
|
+
* succeeds iff that ancestor is writable.
|
|
41
|
+
*/
|
|
42
|
+
export function firstExistingAncestor(p) {
|
|
43
|
+
let d = p;
|
|
44
|
+
while (d && !existsSync(d)) {
|
|
45
|
+
const parent = dirname(d);
|
|
46
|
+
if (parent === d)
|
|
47
|
+
break; // hit the filesystem root
|
|
48
|
+
d = parent;
|
|
49
|
+
}
|
|
50
|
+
return d;
|
|
51
|
+
}
|
|
52
|
+
/** Can the current user create/write inside `dir` (probing its nearest existing ancestor)? */
|
|
53
|
+
export function isWritable(dir) {
|
|
54
|
+
const target = firstExistingAncestor(dir);
|
|
55
|
+
if (!target)
|
|
56
|
+
return false;
|
|
57
|
+
try {
|
|
58
|
+
accessSync(target, constants.W_OK);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** The user-owned prefix we reconfigure npm to when the system one is read-only. */
|
|
66
|
+
export function userNpmPrefix() {
|
|
67
|
+
return join(homedir(), '.npm-global');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=npmGlobal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmGlobal.js","sourceRoot":"","sources":["../../src/utils/npmGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CACpB,IAAc,EACd,OAA8B,EAAE;IAEhC,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACpC,CAAC,CAAA;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAS;IAC7C,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,MAAM,KAAK,CAAC;YAAE,MAAK,CAAC,0BAA0B;QAClD,CAAC,GAAG,MAAM,CAAA;IACZ,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAI,CAAC;QACH,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/** Numeric-dotted compare: is published version `a` newer than running `b`? */
|
|
2
2
|
export declare function isNewerVersion(a: string, b: string): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Ask the npm registry for hacklab's latest published version. Timeout-guarded
|
|
5
|
+
* and never throws — a failed/slow lookup resolves to undefined so callers (the
|
|
6
|
+
* daily nag, `hacklab update`) can degrade gracefully rather than block.
|
|
7
|
+
*/
|
|
8
|
+
export declare function fetchLatest(): Promise<string | undefined>;
|
|
3
9
|
/**
|
|
4
10
|
* Print a one-line "newer version available" nudge to stderr. No-ops (instantly,
|
|
5
11
|
* no network) when stdout isn't a TTY (piped / CI / `--json` consumers) or when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateCheck.d.ts","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"AAsBA,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAc5D;
|
|
1
|
+
{"version":3,"file":"updateCheck.d.ts","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"AAsBA,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAc5D;AAoBD;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa/D;AAcD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBrE"}
|
|
@@ -49,7 +49,12 @@ async function readCache() {
|
|
|
49
49
|
}
|
|
50
50
|
return null;
|
|
51
51
|
}
|
|
52
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Ask the npm registry for hacklab's latest published version. Timeout-guarded
|
|
54
|
+
* and never throws — a failed/slow lookup resolves to undefined so callers (the
|
|
55
|
+
* daily nag, `hacklab update`) can degrade gracefully rather than block.
|
|
56
|
+
*/
|
|
57
|
+
export async function fetchLatest() {
|
|
53
58
|
try {
|
|
54
59
|
const res = await fetch(`https://registry.npmjs.org/${PACKAGE}/latest`, {
|
|
55
60
|
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
@@ -96,7 +101,7 @@ export async function notifyIfOutdated(current) {
|
|
|
96
101
|
}
|
|
97
102
|
}
|
|
98
103
|
if (latest && isNewerVersion(latest, current)) {
|
|
99
|
-
console.error(dim(`↑ hacklab ${latest} is available (you have ${current}) · update:
|
|
104
|
+
console.error(dim(`↑ hacklab ${latest} is available (you have ${current}) · update: hacklab update`));
|
|
100
105
|
}
|
|
101
106
|
}
|
|
102
107
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,qEAAqE;AAErE,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AACxC,iFAAiF;AACjF,6EAA6E;AAC7E,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAC5B,MAAM,OAAO,GAAG,SAAS,CAAA;AAEzB,qFAAqF;AACrF,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAA;AAC7D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IACjD,+EAA+E;IAC/E,8CAA8C;IAC9C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACpB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACpB,gFAAgF;QAChF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QACpD,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAG5D,CAAA;QACD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACxE,OAAO;gBACL,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,GAAG,YAAY;aACjD,CAAA;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,WAAW;
|
|
1
|
+
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hacklab",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -30,7 +30,9 @@
|
|
|
30
30
|
"@resvg/resvg-js": "^2.6.2",
|
|
31
31
|
"@vercel/og": "^0.11.1",
|
|
32
32
|
"chalk": "^5.6.2",
|
|
33
|
+
"posthog-node": "^5.45.2",
|
|
33
34
|
"satori": "^0.26.0",
|
|
35
|
+
"string-width": "^7.2.0",
|
|
34
36
|
"yaml": "^2.8.3",
|
|
35
37
|
"zod": "^4.3.6"
|
|
36
38
|
},
|