varlock 0.0.0 → 0.0.2
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 +46 -0
- package/bin/cli.js +2 -0
- package/dist/auto-load.d.ts +2 -0
- package/dist/auto-load.js +11 -0
- package/dist/auto-load.js.map +1 -0
- package/dist/chunk-332HXE6L.js +53 -0
- package/dist/chunk-332HXE6L.js.map +1 -0
- package/dist/chunk-33ROL4J5.js +1013 -0
- package/dist/chunk-33ROL4J5.js.map +1 -0
- package/dist/chunk-4WO4BGKU.js +70 -0
- package/dist/chunk-4WO4BGKU.js.map +1 -0
- package/dist/chunk-6YLXKXKR.js +225 -0
- package/dist/chunk-6YLXKXKR.js.map +1 -0
- package/dist/chunk-7UQXFWKN.js +82 -0
- package/dist/chunk-7UQXFWKN.js.map +1 -0
- package/dist/chunk-B4UBSMSZ.js +142 -0
- package/dist/chunk-B4UBSMSZ.js.map +1 -0
- package/dist/chunk-CPA2D42B.js +146 -0
- package/dist/chunk-CPA2D42B.js.map +1 -0
- package/dist/chunk-DAZNZPLN.js +675 -0
- package/dist/chunk-DAZNZPLN.js.map +1 -0
- package/dist/chunk-G4BD2BPH.js +2310 -0
- package/dist/chunk-G4BD2BPH.js.map +1 -0
- package/dist/chunk-LQZ6ICSS.js +21 -0
- package/dist/chunk-LQZ6ICSS.js.map +1 -0
- package/dist/chunk-O2QPQ5MG.js +98 -0
- package/dist/chunk-O2QPQ5MG.js.map +1 -0
- package/dist/chunk-QCC3P7BT.js +39 -0
- package/dist/chunk-QCC3P7BT.js.map +1 -0
- package/dist/chunk-RCHPHIHX.js +15 -0
- package/dist/chunk-RCHPHIHX.js.map +1 -0
- package/dist/chunk-RY3YIJFG.js +681 -0
- package/dist/chunk-RY3YIJFG.js.map +1 -0
- package/dist/chunk-XCFZJA7V.js +32 -0
- package/dist/chunk-XCFZJA7V.js.map +1 -0
- package/dist/chunk-XN24GZXQ.js +35 -0
- package/dist/chunk-XN24GZXQ.js.map +1 -0
- package/dist/chunk-Z55UMN2B.js +69 -0
- package/dist/chunk-Z55UMN2B.js.map +1 -0
- package/dist/cli/cli-executable.d.ts +2 -0
- package/dist/cli/cli-executable.js +205 -0
- package/dist/cli/cli-executable.js.map +1 -0
- package/dist/doctor.command-SHZI7SR3.js +6 -0
- package/dist/doctor.command-SHZI7SR3.js.map +1 -0
- package/dist/dotenv-compat.d.ts +2 -0
- package/dist/dotenv-compat.js +11 -0
- package/dist/dotenv-compat.js.map +1 -0
- package/dist/en-US-TSGNDI2P.js +22 -0
- package/dist/en-US-TSGNDI2P.js.map +1 -0
- package/dist/encrypt.command-VGJABHNK.js +6 -0
- package/dist/encrypt.command-VGJABHNK.js.map +1 -0
- package/dist/help.command-YZDL2VEQ.js +5 -0
- package/dist/help.command-YZDL2VEQ.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/init.command-ERPGU436.js +10 -0
- package/dist/init.command-ERPGU436.js.map +1 -0
- package/dist/ja-JP-UBPCQAAD.js +22 -0
- package/dist/ja-JP-UBPCQAAD.js.map +1 -0
- package/dist/load.command-LQDSWJSK.js +9 -0
- package/dist/load.command-LQDSWJSK.js.map +1 -0
- package/dist/login.command-22RUZJLR.js +7 -0
- package/dist/login.command-22RUZJLR.js.map +1 -0
- package/dist/opt-out.command-Y4KUQ6PQ.js +5 -0
- package/dist/opt-out.command-Y4KUQ6PQ.js.map +1 -0
- package/dist/run.command-OF3UV7AD.js +9 -0
- package/dist/run.command-OF3UV7AD.js.map +1 -0
- package/package.json +50 -3
- package/notes.md +0 -3
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { __commonJS, __name, __toESM } from './chunk-XN24GZXQ.js';
|
|
2
|
+
|
|
3
|
+
// ../../node_modules/.pnpm/ansis@4.1.0/node_modules/ansis/index.cjs
|
|
4
|
+
var require_ansis = __commonJS({
|
|
5
|
+
"../../node_modules/.pnpm/ansis@4.1.0/node_modules/ansis/index.cjs"(exports, module) {
|
|
6
|
+
var e;
|
|
7
|
+
var t;
|
|
8
|
+
var r;
|
|
9
|
+
var { defineProperty: n, setPrototypeOf: l, create: o, keys: s } = Object;
|
|
10
|
+
var i = "";
|
|
11
|
+
var { round: c, max: a2 } = Math;
|
|
12
|
+
var p = /* @__PURE__ */ __name((e2) => {
|
|
13
|
+
let t2 = /([a-f\d]{3,6})/i.exec(e2)?.[1], r2 = t2?.length, n2 = parseInt(6 ^ r2 ? 3 ^ r2 ? "0" : t2[0] + t2[0] + t2[1] + t2[1] + t2[2] + t2[2] : t2, 16);
|
|
14
|
+
return [n2 >> 16 & 255, n2 >> 8 & 255, 255 & n2];
|
|
15
|
+
}, "p");
|
|
16
|
+
var u = /* @__PURE__ */ __name((e2, t2, r2) => e2 ^ t2 || t2 ^ r2 ? 16 + 36 * c(e2 / 51) + 6 * c(t2 / 51) + c(r2 / 51) : 8 > e2 ? 16 : e2 > 248 ? 231 : c(24 * (e2 - 8) / 247) + 232, "u");
|
|
17
|
+
var d = /* @__PURE__ */ __name((e2) => {
|
|
18
|
+
let t2, r2, n2, l2, o2;
|
|
19
|
+
return 8 > e2 ? 30 + e2 : 16 > e2 ? e2 - 8 + 90 : (232 > e2 ? (o2 = (e2 -= 16) % 36, t2 = (e2 / 36 | 0) / 5, r2 = (o2 / 6 | 0) / 5, n2 = o2 % 6 / 5) : t2 = r2 = n2 = (10 * (e2 - 232) + 8) / 255, l2 = 2 * a2(t2, r2, n2), l2 ? 30 + (c(n2) << 2 | c(r2) << 1 | c(t2)) + (2 ^ l2 ? 0 : 60) : 30);
|
|
20
|
+
}, "d");
|
|
21
|
+
var g = (() => {
|
|
22
|
+
let r2 = /* @__PURE__ */ __name((e2) => o2.some((t2) => e2.test(t2)), "r"), n2 = globalThis, l2 = n2.process ?? {}, o2 = l2.argv ?? [], i2 = l2.env ?? {}, c2 = -1;
|
|
23
|
+
try {
|
|
24
|
+
e = "," + s(i2).join(",");
|
|
25
|
+
} catch (e2) {
|
|
26
|
+
i2 = {}, c2 = 0;
|
|
27
|
+
}
|
|
28
|
+
let a3 = "FORCE_COLOR", p2 = { false: 0, 0: 0, 1: 1, 2: 2, 3: 3 }[i2[a3]] ?? -1, u2 = a3 in i2 && p2 || r2(/^--color=?(true|always)?$/);
|
|
29
|
+
return u2 && (c2 = p2), ~c2 || (c2 = ((r3, n3, l3) => (t = r3.TERM, { "24bit": 3, truecolor: 3, ansi256: 2, ansi: 1 }[r3.COLORTERM] || (r3.CI ? /,GITHUB/.test(e) ? 3 : 1 : n3 && "dumb" !== t ? l3 ? 3 : /-256/.test(t) ? 2 : 1 : 0)))(i2, !!i2.PM2_HOME || i2.NEXT_RUNTIME?.includes("edge") || !!l2.stdout?.isTTY, "win32" === l2.platform)), !p2 || i2.NO_COLOR || r2(/^--(no-color|color=(false|never))$/) ? 0 : n2.window?.chrome || u2 && !c2 ? 3 : c2;
|
|
30
|
+
})();
|
|
31
|
+
var f = { open: i, close: i };
|
|
32
|
+
var h = 39;
|
|
33
|
+
var b = 49;
|
|
34
|
+
var O = {};
|
|
35
|
+
var m = /* @__PURE__ */ __name(({ p: e2 }, { open: t2, close: n2 }) => {
|
|
36
|
+
let o2 = /* @__PURE__ */ __name((e3, ...r2) => {
|
|
37
|
+
if (!e3) {
|
|
38
|
+
if (t2 && t2 === n2) return t2;
|
|
39
|
+
if ((e3 ?? i) === i) return i;
|
|
40
|
+
}
|
|
41
|
+
let l2, s3 = e3.raw ? String.raw({ raw: e3 }, ...r2) : i + e3, c3 = o2.p, a3 = c3.o, p2 = c3.c;
|
|
42
|
+
if (s3.includes("\x1B")) for (; c3; c3 = c3.p) {
|
|
43
|
+
let { open: e4, close: t3 } = c3, r3 = t3.length, n3 = i, o3 = 0;
|
|
44
|
+
if (r3) for (; ~(l2 = s3.indexOf(t3, o3)); o3 = l2 + r3) n3 += s3.slice(o3, l2) + e4;
|
|
45
|
+
s3 = n3 + s3.slice(o3);
|
|
46
|
+
}
|
|
47
|
+
return a3 + (s3.includes("\n") ? s3.replace(/(\r?\n)/g, p2 + "$1" + a3) : s3) + p2;
|
|
48
|
+
}, "o"), s2 = t2, c2 = n2;
|
|
49
|
+
return e2 && (s2 = e2.o + t2, c2 = n2 + e2.c), l(o2, r), o2.p = { open: t2, close: n2, o: s2, c: c2, p: e2 }, o2.open = s2, o2.close = c2, o2;
|
|
50
|
+
}, "m");
|
|
51
|
+
var w = /* @__PURE__ */ __name(function(e2 = g) {
|
|
52
|
+
let t2 = { Ansis: w, level: e2, isSupported: /* @__PURE__ */ __name(() => s2, "isSupported"), strip: /* @__PURE__ */ __name((e3) => e3.replace(/[][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, i), "strip"), extend(e3) {
|
|
53
|
+
for (let t3 in e3) {
|
|
54
|
+
let r2 = e3[t3], l2 = (typeof r2)[0], o2 = "s" === l2 ? x(...p(r2)) : r2;
|
|
55
|
+
O[t3] = "f" === l2 ? { get() {
|
|
56
|
+
return (...e4) => m(this, r2(...e4));
|
|
57
|
+
} } : { get() {
|
|
58
|
+
let e4 = m(this, o2);
|
|
59
|
+
return n(this, t3, { value: e4 }), e4;
|
|
60
|
+
} };
|
|
61
|
+
}
|
|
62
|
+
return r = o({}, O), l(t2, r), t2;
|
|
63
|
+
} }, s2 = e2 > 0, c2 = /* @__PURE__ */ __name((e3, t3) => s2 ? { open: `\x1B[${e3}m`, close: `\x1B[${t3}m` } : f, "c"), a3 = /* @__PURE__ */ __name((e3) => (t3) => e3(...p(t3)), "a"), y2 = /* @__PURE__ */ __name((e3, t3) => (r2, n2, l2) => c2(`${e3}8;2;${r2};${n2};${l2}`, t3), "y"), R = /* @__PURE__ */ __name((e3, t3) => (r2, n2, l2) => c2(((e4, t4, r3) => d(u(e4, t4, r3)))(r2, n2, l2) + e3, t3), "R"), $ = /* @__PURE__ */ __name((e3) => (t3, r2, n2) => e3(u(t3, r2, n2)), "$"), x = y2(3, h), T = y2(4, b), v = /* @__PURE__ */ __name((e3) => c2("38;5;" + e3, h), "v"), C = /* @__PURE__ */ __name((e3) => c2("48;5;" + e3, b), "C");
|
|
64
|
+
2 === e2 ? (x = $(v), T = $(C)) : 1 === e2 && (x = R(0, h), T = R(10, b), v = /* @__PURE__ */ __name((e3) => c2(d(e3), h), "v"), C = /* @__PURE__ */ __name((e3) => c2(d(e3) + 10, b), "C"));
|
|
65
|
+
let E, M = { fg: v, bg: C, rgb: x, bgRgb: T, hex: a3(x), bgHex: a3(T), visible: f, reset: c2(0, 0), bold: c2(1, 22), dim: c2(2, 22), italic: c2(3, 23), underline: c2(4, 24), inverse: c2(7, 27), hidden: c2(8, 28), strikethrough: c2(9, 29) }, I = "Bright";
|
|
66
|
+
return "black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map((e3, t3) => {
|
|
67
|
+
E = "bg" + e3[0].toUpperCase() + e3.slice(1), 8 > t3 ? (M[e3 + I] = c2(90 + t3, h), M[E + I] = c2(100 + t3, b)) : t3 = 60, M[e3] = c2(30 + t3, h), M[E] = c2(40 + t3, b);
|
|
68
|
+
}), t2.extend(M);
|
|
69
|
+
}, "w");
|
|
70
|
+
var y = new w();
|
|
71
|
+
module.exports = y, y.default = y;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// ../../node_modules/.pnpm/ansis@4.1.0/node_modules/ansis/index.mjs
|
|
76
|
+
var import_index = __toESM(require_ansis(), 1);
|
|
77
|
+
var ansis_default = import_index.default;
|
|
78
|
+
var { Ansis, fg, bg, rgb, bgRgb, hex, bgHex, reset, inverse, hidden, visible, bold, dim, italic, underline, strikethrough, black, red, green, yellow, blue, magenta, cyan, white, gray, redBright, greenBright, yellowBright, blueBright, magentaBright, cyanBright, whiteBright, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bgGray, bgRedBright, bgGreenBright, bgYellowBright, bgBlueBright, bgMagentaBright, bgCyanBright, bgWhiteBright } = import_index.default;
|
|
79
|
+
|
|
80
|
+
export { ansis_default };
|
|
81
|
+
//# sourceMappingURL=chunk-7UQXFWKN.js.map
|
|
82
|
+
//# sourceMappingURL=chunk-7UQXFWKN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/ansis@4.1.0/node_modules/ansis/index.cjs","../../../node_modules/.pnpm/ansis@4.1.0/node_modules/ansis/index.mjs"],"names":["a","e","t","r","n","l","o","i","c","p","u","s","y"],"mappings":"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","file":"chunk-7UQXFWKN.js","sourcesContent":["let e,t,r,{defineProperty:n,setPrototypeOf:l,create:o,keys:s}=Object,i=\"\",{round:c,max:a}=Math,p=e=>{let t=/([a-f\\d]{3,6})/i.exec(e)?.[1],r=t?.length,n=parseInt(6^r?3^r?\"0\":t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t,16);return[n>>16&255,n>>8&255,255&n]},u=(e,t,r)=>e^t||t^r?16+36*c(e/51)+6*c(t/51)+c(r/51):8>e?16:e>248?231:c(24*(e-8)/247)+232,d=e=>{let t,r,n,l,o;return 8>e?30+e:16>e?e-8+90:(232>e?(o=(e-=16)%36,t=(e/36|0)/5,r=(o/6|0)/5,n=o%6/5):t=r=n=(10*(e-232)+8)/255,l=2*a(t,r,n),l?30+(c(n)<<2|c(r)<<1|c(t))+(2^l?0:60):30)},g=(()=>{let r=e=>o.some((t=>e.test(t))),n=globalThis,l=n.process??{},o=l.argv??[],i=l.env??{},c=-1;try{e=\",\"+s(i).join(\",\")}catch(e){i={},c=0}let a=\"FORCE_COLOR\",p={false:0,0:0,1:1,2:2,3:3}[i[a]]??-1,u=a in i&&p||r(/^--color=?(true|always)?$/);return u&&(c=p),~c||(c=((r,n,l)=>(t=r.TERM,{\"24bit\":3,truecolor:3,ansi256:2,ansi:1}[r.COLORTERM]||(r.CI?/,GITHUB/.test(e)?3:1:n&&\"dumb\"!==t?l?3:/-256/.test(t)?2:1:0)))(i,!!i.PM2_HOME||i.NEXT_RUNTIME?.includes(\"edge\")||!!l.stdout?.isTTY,\"win32\"===l.platform)),!p||i.NO_COLOR||r(/^--(no-color|color=(false|never))$/)?0:n.window?.chrome||u&&!c?3:c})(),f={open:i,close:i},h=39,b=49,O={},m=({p:e},{open:t,close:n})=>{let o=(e,...r)=>{if(!e){if(t&&t===n)return t;if((e??i)===i)return i}let l,s=e.raw?String.raw({raw:e},...r):i+e,c=o.p,a=c.o,p=c.c;if(s.includes(\"\u001b\"))for(;c;c=c.p){let{open:e,close:t}=c,r=t.length,n=i,o=0;if(r)for(;~(l=s.indexOf(t,o));o=l+r)n+=s.slice(o,l)+e;s=n+s.slice(o)}return a+(s.includes(\"\\n\")?s.replace(/(\\r?\\n)/g,p+\"$1\"+a):s)+p},s=t,c=n;return e&&(s=e.o+t,c=n+e.c),l(o,r),o.p={open:t,close:n,o:s,c,p:e},o.open=s,o.close=c,o};const w=function(e=g){let t={Ansis:w,level:e,isSupported:()=>s,strip:e=>e.replace(/[\u001b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,i),extend(e){for(let t in e){let r=e[t],l=(typeof r)[0],o=\"s\"===l?x(...p(r)):r;O[t]=\"f\"===l?{get(){return(...e)=>m(this,r(...e))}}:{get(){let e=m(this,o);return n(this,t,{value:e}),e}}}return r=o({},O),l(t,r),t}},s=e>0,c=(e,t)=>s?{open:`\u001b[${e}m`,close:`\u001b[${t}m`}:f,a=e=>t=>e(...p(t)),y=(e,t)=>(r,n,l)=>c(`${e}8;2;${r};${n};${l}`,t),R=(e,t)=>(r,n,l)=>c(((e,t,r)=>d(u(e,t,r)))(r,n,l)+e,t),$=e=>(t,r,n)=>e(u(t,r,n)),x=y(3,h),T=y(4,b),v=e=>c(\"38;5;\"+e,h),C=e=>c(\"48;5;\"+e,b);2===e?(x=$(v),T=$(C)):1===e&&(x=R(0,h),T=R(10,b),v=e=>c(d(e),h),C=e=>c(d(e)+10,b));let E,M={fg:v,bg:C,rgb:x,bgRgb:T,hex:a(x),bgHex:a(T),visible:f,reset:c(0,0),bold:c(1,22),dim:c(2,22),italic:c(3,23),underline:c(4,24),inverse:c(7,27),hidden:c(8,28),strikethrough:c(9,29)},I=\"Bright\";return\"black,red,green,yellow,blue,magenta,cyan,white,gray\".split(\",\").map(((e,t)=>{E=\"bg\"+e[0].toUpperCase()+e.slice(1),8>t?(M[e+I]=c(90+t,h),M[E+I]=c(100+t,b)):t=60,M[e]=c(30+t,h),M[E]=c(40+t,b)})),t.extend(M)},y=new w;module.exports=y,y.default=y;\n","import a from\"./index.cjs\";export default a;export const{Ansis,fg,bg,rgb,bgRgb,hex,bgHex,reset,inverse,hidden,visible,bold,dim,italic,underline,strikethrough,black,red,green,yellow,blue,magenta,cyan,white,gray,redBright,greenBright,yellowBright,blueBright,magentaBright,cyanBright,whiteBright,bgBlack,bgRed,bgGreen,bgYellow,bgBlue,bgMagenta,bgCyan,bgWhite,bgGray,bgRedBright,bgGreenBright,bgYellowBright,bgBlueBright,bgMagentaBright,bgCyanBright,bgWhiteBright}=a;"]}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { ge, pD } from './chunk-DAZNZPLN.js';
|
|
2
|
+
import { define } from './chunk-33ROL4J5.js';
|
|
3
|
+
import { __name } from './chunk-XN24GZXQ.js';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import net from 'node:net';
|
|
7
|
+
import crypto from 'node:crypto';
|
|
8
|
+
import Debug from 'debug';
|
|
9
|
+
|
|
10
|
+
var debug = Debug("varlock:native-app-client");
|
|
11
|
+
var VarlockNativeAppClient = class {
|
|
12
|
+
static {
|
|
13
|
+
__name(this, "VarlockNativeAppClient");
|
|
14
|
+
}
|
|
15
|
+
socket;
|
|
16
|
+
messageQueue;
|
|
17
|
+
isInitialized = false;
|
|
18
|
+
isConnected;
|
|
19
|
+
socketPath;
|
|
20
|
+
constructor(opts) {
|
|
21
|
+
this.socket = new net.Socket();
|
|
22
|
+
this.messageQueue = /* @__PURE__ */ new Map();
|
|
23
|
+
this.isConnected = false;
|
|
24
|
+
this.socketPath = opts?.socketPath ?? path.resolve(
|
|
25
|
+
os.homedir(),
|
|
26
|
+
"Library/Containers/dev.dmno.macapp/Data/dmno-ipc"
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
generateMessageId() {
|
|
30
|
+
const timestamp = Date.now().toString(36);
|
|
31
|
+
const random = crypto.randomBytes(4).toString("hex");
|
|
32
|
+
return `${timestamp}-${random}`;
|
|
33
|
+
}
|
|
34
|
+
initializeSocket() {
|
|
35
|
+
this.isInitialized = true;
|
|
36
|
+
return new Promise((resolve, _reject) => {
|
|
37
|
+
this.socket.on("connect", () => {
|
|
38
|
+
debug("Connected to native app");
|
|
39
|
+
this.isConnected = true;
|
|
40
|
+
resolve(true);
|
|
41
|
+
});
|
|
42
|
+
this.socket.on("data", (data) => {
|
|
43
|
+
debug("> received data");
|
|
44
|
+
try {
|
|
45
|
+
const messageLength = data.readUInt32LE(0);
|
|
46
|
+
const messageData = data.slice(4, 4 + messageLength);
|
|
47
|
+
const message = JSON.parse(messageData.toString());
|
|
48
|
+
debug("> message", message);
|
|
49
|
+
if (message.type === "__disconnect") {
|
|
50
|
+
this.cleanup();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (message.id && this.messageQueue.has(message.id)) {
|
|
54
|
+
const { resolve: qResolve } = this.messageQueue.get(message.id);
|
|
55
|
+
this.messageQueue.delete(message.id);
|
|
56
|
+
qResolve(message.result);
|
|
57
|
+
} else {
|
|
58
|
+
console.log("Received message without ID:", message);
|
|
59
|
+
}
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error("Error processing message:", error);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
this.socket.on("error", (error) => {
|
|
65
|
+
console.error("Socket error:", error);
|
|
66
|
+
this.cleanup();
|
|
67
|
+
});
|
|
68
|
+
this.socket.on("close", () => {
|
|
69
|
+
debug("socket closed");
|
|
70
|
+
this.isConnected = false;
|
|
71
|
+
this.cleanup();
|
|
72
|
+
});
|
|
73
|
+
this.socket.connect(this.socketPath);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
sendMessage(message) {
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
if (!this.isConnected) {
|
|
79
|
+
reject(new Error("Socket is not connected"));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const messageId = this.generateMessageId();
|
|
83
|
+
const messageWithId = {
|
|
84
|
+
...message,
|
|
85
|
+
id: messageId
|
|
86
|
+
};
|
|
87
|
+
const jsonData = JSON.stringify(messageWithId);
|
|
88
|
+
const messageBytes = new TextEncoder().encode(jsonData);
|
|
89
|
+
const lengthBytes = new Uint8Array(4);
|
|
90
|
+
const view = new DataView(lengthBytes.buffer);
|
|
91
|
+
view.setUint32(0, messageBytes.length, true);
|
|
92
|
+
const combinedBytes = new Uint8Array(4 + messageBytes.length);
|
|
93
|
+
combinedBytes.set(lengthBytes);
|
|
94
|
+
combinedBytes.set(messageBytes, 4);
|
|
95
|
+
this.messageQueue.set(messageId, { resolve, reject });
|
|
96
|
+
this.socket.write(combinedBytes);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async encrypt(plaintext) {
|
|
100
|
+
if (!this.isInitialized) await this.initializeSocket();
|
|
101
|
+
return this.sendMessage({
|
|
102
|
+
action: "encrypt",
|
|
103
|
+
payload: { plaintext }
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async decrypt(ciphertext) {
|
|
107
|
+
if (!this.isInitialized) await this.initializeSocket();
|
|
108
|
+
return this.sendMessage({
|
|
109
|
+
action: "decrypt",
|
|
110
|
+
payload: { ciphertext }
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
cleanup() {
|
|
114
|
+
for (const { reject } of this.messageQueue.values()) {
|
|
115
|
+
reject(new Error("Connection closed"));
|
|
116
|
+
}
|
|
117
|
+
this.messageQueue.clear();
|
|
118
|
+
this.socket.end();
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// src/cli/commands/encrypt.command.ts
|
|
123
|
+
var commandSpec = define({
|
|
124
|
+
name: "encrypt",
|
|
125
|
+
description: "Encrypt environment variables in your .env file",
|
|
126
|
+
args: {}
|
|
127
|
+
});
|
|
128
|
+
var commandFn = /* @__PURE__ */ __name(async (ctx) => {
|
|
129
|
+
console.log("");
|
|
130
|
+
console.log("\u{1F9D9} Encrypting environment variables... \u2728");
|
|
131
|
+
const rawValue = await ge({ message: "Enter the value you want to encrypt" });
|
|
132
|
+
if (pD(rawValue)) process.exit(0);
|
|
133
|
+
const client = new VarlockNativeAppClient();
|
|
134
|
+
await client.initializeSocket();
|
|
135
|
+
const encryptedValue = await client.encrypt(rawValue);
|
|
136
|
+
console.log("Copy this into your .env.local file and rename the key appropriately:\n");
|
|
137
|
+
console.log(`SOME_SENSITIVE_KEY=varlock("${encryptedValue}")`);
|
|
138
|
+
}, "commandFn");
|
|
139
|
+
|
|
140
|
+
export { commandFn, commandSpec };
|
|
141
|
+
//# sourceMappingURL=chunk-B4UBSMSZ.js.map
|
|
142
|
+
//# sourceMappingURL=chunk-B4UBSMSZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/native-app-client.ts","../src/cli/commands/encrypt.command.ts"],"names":[],"mappings":"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","file":"chunk-B4UBSMSZ.js","sourcesContent":["import path from 'node:path';\nimport os from 'node:os';\nimport net from 'node:net';\nimport crypto from 'node:crypto';\nimport Debug from 'debug';\n\nconst debug = Debug('varlock:native-app-client');\n\nconst MAC_APP_PATH = 'Library/Containers/dev.dmno.macapp';\nconst IPC_SOCKET_FILE_PATH = 'Data/dmno-ipc';\n\nexport class VarlockNativeAppClient {\n private socket: net.Socket;\n\n private messageQueue: Map<string, { resolve: (value: any) => void; reject: (error: Error) => void }>;\n\n private isInitialized: boolean = false;\n private isConnected: boolean;\n private socketPath: string;\n\n constructor(opts?: { socketPath?: string }) {\n this.socket = new net.Socket();\n this.messageQueue = new Map();\n this.isConnected = false;\n this.socketPath = opts?.socketPath ?? path.resolve(\n os.homedir(),\n 'Library/Containers/dev.dmno.macapp/Data/dmno-ipc',\n );\n }\n\n private generateMessageId(): string {\n // Generate a unique ID using timestamp and random bytes\n const timestamp = Date.now().toString(36); // Base36 timestamp\n const random = crypto.randomBytes(4).toString('hex'); // 8 random hex chars\n return `${timestamp}-${random}`;\n }\n\n initializeSocket() {\n this.isInitialized = true;\n\n return new Promise((resolve, _reject) => {\n this.socket.on('connect', () => {\n debug('Connected to native app');\n this.isConnected = true;\n resolve(true);\n });\n\n this.socket.on('data', (data: Buffer) => {\n debug('> received data');\n try {\n // Read message length (4 bytes, little endian)\n const messageLength = data.readUInt32LE(0);\n const messageData = data.slice(4, 4 + messageLength);\n const message = JSON.parse(messageData.toString());\n\n debug('> message', message);\n\n // Handle special messages\n if (message.type === '__disconnect') {\n this.cleanup();\n return;\n }\n\n // Handle response messages\n if (message.id && this.messageQueue.has(message.id)) {\n const { resolve: qResolve } = this.messageQueue.get(message.id)!;\n this.messageQueue.delete(message.id);\n qResolve(message.result);\n } else {\n console.log('Received message without ID:', message);\n }\n } catch (error) {\n console.error('Error processing message:', error);\n }\n });\n\n this.socket.on('error', (error) => {\n console.error('Socket error:', error);\n // TODO: if error is related to initial connection, reject the promise\n this.cleanup();\n });\n\n this.socket.on('close', () => {\n debug('socket closed');\n this.isConnected = false;\n this.cleanup();\n });\n\n this.socket.connect(this.socketPath);\n });\n }\n\n private sendMessage(message: any): Promise<any> {\n return new Promise((resolve, reject) => {\n if (!this.isConnected) {\n reject(new Error('Socket is not connected'));\n return;\n }\n\n const messageId = this.generateMessageId();\n const messageWithId = {\n ...message,\n id: messageId,\n };\n\n const jsonData = JSON.stringify(messageWithId);\n const messageBytes = new TextEncoder().encode(jsonData);\n\n // Create length prefix (4 bytes, little endian)\n const lengthBytes = new Uint8Array(4);\n const view = new DataView(lengthBytes.buffer);\n view.setUint32(0, messageBytes.length, true);\n\n // Combine length and message\n const combinedBytes = new Uint8Array(4 + messageBytes.length);\n combinedBytes.set(lengthBytes);\n combinedBytes.set(messageBytes, 4);\n\n // Store promise handlers\n this.messageQueue.set(messageId, { resolve, reject });\n\n // Send message\n this.socket.write(combinedBytes);\n });\n }\n\n public async encrypt(plaintext: string): Promise<any> {\n if (!this.isInitialized) await this.initializeSocket();\n return this.sendMessage({\n action: 'encrypt',\n payload: { plaintext },\n });\n }\n\n public async decrypt(ciphertext: string): Promise<any> {\n if (!this.isInitialized) await this.initializeSocket();\n return this.sendMessage({\n action: 'decrypt',\n payload: { ciphertext },\n });\n }\n\n public cleanup() {\n // Reject all pending messages\n for (const { reject } of this.messageQueue.values()) {\n reject(new Error('Connection closed'));\n }\n this.messageQueue.clear();\n this.socket.end();\n }\n}\n\n// // Example usage:\n// async function main() {\n// const client = new VarlockNativeAppClient();\n\n// try {\n// await client.initializeSocket();\n\n// // Send multiple messages\n// const encryptedHello = await client.encrypt('hello world');\n// console.log('Encrypted data:', encryptedHello);\n\n// const decryptedHello = await client.decrypt(encryptedHello);\n// console.log('Decrypted data:', decryptedHello);\n\n// // Keep the process running\n// process.on('SIGINT', () => {\n// client.cleanup();\n// process.exit(0);\n// });\n// } catch (error) {\n// console.error('Error:', error);\n// process.exit(1);\n// }\n// }\n\n// main();\n","\nimport { define } from 'gunshi';\nimport { isCancel, password } from '@clack/prompts';\n\nimport { VarlockNativeAppClient } from '../../lib/native-app-client';\nimport { TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\nexport const commandSpec = define({\n name: 'encrypt',\n description: 'Encrypt environment variables in your .env file',\n args: {},\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n console.log('');\n console.log('🧙 Encrypting environment variables... ✨');\n // intro('🧙 Encrypting environment variables... ✨');\n\n const rawValue = await password({ message: 'Enter the value you want to encrypt' });\n if (isCancel(rawValue)) process.exit(0);\n\n const client = new VarlockNativeAppClient();\n await client.initializeSocket();\n const encryptedValue = await client.encrypt(rawValue);\n\n console.log('Copy this into your .env.local file and rename the key appropriately:\\n');\n console.log(`SOME_SENSITIVE_KEY=varlock(\"${encryptedValue}\")`);\n\n // const envGraph = await loadEnvGraph();\n // await envGraph.resolveEnvValues();\n // const resolvedEnv = envGraph.getResolvedEnvObject();\n\n // TODO: need to reimplement using the new parser\n\n // const client = new VarlockNativeAppClient();\n // await client.initializeSocket();\n\n // for (const envFile of loadedEnv.files) {\n // let changeCount = 0;\n // for (const itemKey in envFile.items) {\n // const item = envFile.items[itemKey];\n // if (item.decorators?.sensitive) {\n // if ('value' in item && item.value) {\n // console.log('Encrypting', itemKey, envFile.path);\n // const encryptedValue = await client.encrypt(item.value);\n // delete item.value;\n // (item as any).resolverName = 'varlock';\n // (item as any).resolverArgs = [encryptedValue];\n // changeCount++;\n // }\n // } else {\n // if ('resolverName' in item && item.resolverName === 'varlock') {\n // console.log('Decrypting', itemKey, envFile.path);\n // const encryptedValue = item.resolverArgs[0];\n // if (typeof encryptedValue !== 'string') {\n // throw new Error('Expected encrypted value to be a string');\n // }\n // const decryptedValue = await client.decrypt(encryptedValue);\n // (item as any).value = decryptedValue;\n // delete (item as any).resolverName;\n // delete (item as any).resolverArgs;\n // changeCount++;\n // }\n // }\n // }\n\n // const updatedEnvFileStr = dumpDotEnvContents(envFile.parsedContents);\n // await fs.writeFile(envFile.path, updatedEnvFileStr);\n\n // log.success(`Updated ${changeCount} items in ${envFile.path}`);\n // }\n\n // console.log(loadedEnv);\n\n // const unencryptedKeys: Array<string> = [];\n // parsedEnv.forEach((item) => {\n // if (item.type !== 'item') return;\n // if (item.key.startsWith('_VARLOCK_')) return;\n // if (!('value' in item) || !item.value) return;\n\n // unencryptedKeys.push(item.key);\n // });\n\n // if (unencryptedKeys.length === 0) {\n // console.log('No items to encrypt. Exiting...');\n // return;\n // }\n\n // const selectedKeys = await multiselect({\n // message: 'Select env item(s) to encrypt 🔏',\n // options: unencryptedKeys.map((key) => ({\n // value: key,\n // label: key,\n // })),\n // initialValues: unencryptedKeys,\n // required: false,\n // });\n\n // if (isCancel(selectedKeys) || !selectedKeys.length) {\n // console.log('No items selected. Exiting...');\n // return;\n // }\n\n // for (const item of parsedEnv) {\n // if (item.type === 'item' && selectedKeys.includes(item.key)) {\n // if (!('value' in item) || !item.value) throw new Error(`Item ${item.key} has no value`);\n // const encryptedValue = await client.encrypt(item.value);\n // delete item.value;\n // (item as any).resolverName = 'varlock';\n // (item as any).resolverArgs = [encryptedValue];\n // }\n // }\n\n // // write the updated env file\n\n // const updatedEnvFileStr = dumpDotEnvContents(parsedEnv);\n // await fs.writeFile(envFilePath, updatedEnvFileStr);\n\n // outro(`Encrypted ${selectedKeys.length} items!`);\n};\n\n"]}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { logLines } from './chunk-LQZ6ICSS.js';
|
|
2
|
+
import { define } from './chunk-33ROL4J5.js';
|
|
3
|
+
import { ansis_default } from './chunk-7UQXFWKN.js';
|
|
4
|
+
import { __name } from './chunk-XN24GZXQ.js';
|
|
5
|
+
import { setTimeout } from 'node:timers/promises';
|
|
6
|
+
import os from 'node:os';
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
|
|
9
|
+
// src/config.ts
|
|
10
|
+
var CONFIG = {
|
|
11
|
+
// VARLOCK_API_URL: 'http://localhost:8888',
|
|
12
|
+
VARLOCK_API_URL: "https://api.varlock.dev",
|
|
13
|
+
GITHUB_APP_CLIENT_ID: "Iv23li50gB8bMxLauiJQ",
|
|
14
|
+
// varlock.dev app
|
|
15
|
+
POSTHOG_API_KEY: "phc_bfzH97VIta8yQa8HrsgmitqS6rTydjMISs0m8aqJTnq",
|
|
16
|
+
POSTHOG_HOST: "https://ph.varlock.dev"
|
|
17
|
+
};
|
|
18
|
+
var platform = os.platform();
|
|
19
|
+
var isWindows = platform.match(/^win/i);
|
|
20
|
+
var isMac = platform.match(/^darwin/i);
|
|
21
|
+
var isLinux = !isWindows && !isMac;
|
|
22
|
+
function openUrl(url) {
|
|
23
|
+
if (isWindows) {
|
|
24
|
+
spawn("cmd", ["/c", "start", " ", url], { detached: true });
|
|
25
|
+
} else if (isMac) {
|
|
26
|
+
spawn("open", [url], { detached: true });
|
|
27
|
+
} else if (isLinux) {
|
|
28
|
+
spawn("xdg-open", [url], { detached: true });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
__name(openUrl, "openUrl");
|
|
32
|
+
|
|
33
|
+
// src/cli/helpers/key-press.ts
|
|
34
|
+
async function keyPressed(keys = true) {
|
|
35
|
+
process.stdin.setRawMode(true);
|
|
36
|
+
return new Promise((resolve) => {
|
|
37
|
+
function keyPressHandler(d) {
|
|
38
|
+
const keyStr = d.toString();
|
|
39
|
+
if (["", ""].includes(keyStr)) {
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
if (keys === true || keys.includes(keyStr)) {
|
|
43
|
+
process.stdin.setRawMode(false);
|
|
44
|
+
process.stdin.off("data", keyPressHandler);
|
|
45
|
+
resolve();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
__name(keyPressHandler, "keyPressHandler");
|
|
49
|
+
process.stdin.on("data", keyPressHandler);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
__name(keyPressed, "keyPressed");
|
|
53
|
+
|
|
54
|
+
// src/cli/commands/login.command.ts
|
|
55
|
+
var commandSpec = define({
|
|
56
|
+
name: "login",
|
|
57
|
+
description: "Authenticate (using GitHub)",
|
|
58
|
+
args: {}
|
|
59
|
+
});
|
|
60
|
+
var commandFn = /* @__PURE__ */ __name(async (ctx) => {
|
|
61
|
+
const codeReq = await fetch("https://github.com/login/device/code", {
|
|
62
|
+
method: "POST",
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
client_id: CONFIG.GITHUB_APP_CLIENT_ID
|
|
65
|
+
}),
|
|
66
|
+
headers: {
|
|
67
|
+
"Content-Type": "application/json",
|
|
68
|
+
Accept: "application/json"
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
if (codeReq.status !== 200) {
|
|
72
|
+
console.log("Failed to initiate GitHub device flow login!");
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
const ghCodeInfo = await codeReq.json();
|
|
76
|
+
logLines([
|
|
77
|
+
"\u{1F511} Authenticating using GitHub:",
|
|
78
|
+
"",
|
|
79
|
+
`First please copy this code: ${ansis_default.bold.magenta(ghCodeInfo.user_code)}`,
|
|
80
|
+
"",
|
|
81
|
+
`Log in @ ${ghCodeInfo.verification_uri}`,
|
|
82
|
+
"",
|
|
83
|
+
"Press ENTER to open in your default browser..."
|
|
84
|
+
]);
|
|
85
|
+
await keyPressed(["\r"]);
|
|
86
|
+
console.log(ansis_default.italic.gray("... please complete login on github.com ..."));
|
|
87
|
+
openUrl(ghCodeInfo.verification_uri);
|
|
88
|
+
const pollMs = ghCodeInfo.interval * 1e3;
|
|
89
|
+
const expiresMs = ghCodeInfo.expires_in * 1e3;
|
|
90
|
+
const startAt = /* @__PURE__ */ new Date();
|
|
91
|
+
let oauthStatus;
|
|
92
|
+
while (true) {
|
|
93
|
+
await setTimeout(pollMs);
|
|
94
|
+
try {
|
|
95
|
+
const oauthStatusReq = await fetch("https://github.com/login/oauth/access_token", {
|
|
96
|
+
method: "POST",
|
|
97
|
+
body: JSON.stringify({
|
|
98
|
+
client_id: CONFIG.GITHUB_APP_CLIENT_ID,
|
|
99
|
+
device_code: ghCodeInfo.device_code,
|
|
100
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code"
|
|
101
|
+
}),
|
|
102
|
+
headers: {
|
|
103
|
+
"Content-Type": "application/json",
|
|
104
|
+
Accept: "application/json"
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
oauthStatus = await oauthStatusReq.json();
|
|
108
|
+
} catch (err) {
|
|
109
|
+
console.log(err);
|
|
110
|
+
}
|
|
111
|
+
if (oauthStatus.error === "access_denied") {
|
|
112
|
+
console.log("\u274C Login attempt was cancelled! Please try again.");
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
if (oauthStatus.access_token) break;
|
|
116
|
+
if ((/* @__PURE__ */ new Date()).getTime() - startAt.getTime() > expiresMs) {
|
|
117
|
+
console.log("\u274C Login timed out! Please try again.");
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const authReq = await fetch(`${CONFIG.VARLOCK_API_URL}/github/auth-from-device-flow`, {
|
|
122
|
+
method: "POST",
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
accessToken: oauthStatus.access_token,
|
|
125
|
+
refreshToken: oauthStatus.refresh_token,
|
|
126
|
+
accessTokenExpiresAt: new Date(Date.now() + oauthStatus.expires_in * 1e3).toISOString(),
|
|
127
|
+
refreshTokenExpiresAt: new Date(Date.now() + oauthStatus.refresh_token_expires_in * 1e3).toISOString(),
|
|
128
|
+
tokenType: oauthStatus.token_type,
|
|
129
|
+
scope: oauthStatus.scope
|
|
130
|
+
}),
|
|
131
|
+
headers: {
|
|
132
|
+
"Content-Type": "application/json",
|
|
133
|
+
Accept: "application/json"
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
if (authReq.status !== 200) {
|
|
137
|
+
console.log(await authReq.json());
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
const authRes = await authReq.json();
|
|
141
|
+
console.log(`\u2705 Logged in as ${authRes.user.githubUsername} (${authRes.user.name})!`);
|
|
142
|
+
}, "commandFn");
|
|
143
|
+
|
|
144
|
+
export { CONFIG, commandFn, commandSpec };
|
|
145
|
+
//# sourceMappingURL=chunk-CPA2D42B.js.map
|
|
146
|
+
//# sourceMappingURL=chunk-CPA2D42B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/cli/helpers/open-url.ts","../src/cli/helpers/key-press.ts","../src/cli/commands/login.command.ts"],"names":["delay"],"mappings":"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","file":"chunk-CPA2D42B.js","sourcesContent":["// TODO: figure out dev vs prod env vars... would be great to use varlock here!\n\n// NOTE - these keys are safe to publish\n\nexport const CONFIG = {\n // VARLOCK_API_URL: 'http://localhost:8888',\n VARLOCK_API_URL: 'https://api.varlock.dev',\n GITHUB_APP_CLIENT_ID: 'Iv23li50gB8bMxLauiJQ', // varlock.dev app\n POSTHOG_API_KEY: 'phc_bfzH97VIta8yQa8HrsgmitqS6rTydjMISs0m8aqJTnq',\n POSTHOG_HOST: 'https://ph.varlock.dev',\n};\n","import os from 'node:os';\nimport { spawn } from 'node:child_process';\n\nconst platform = os.platform();\n\nconst isWindows = platform.match(/^win/i);\nconst isMac = platform.match(/^darwin/i);\nconst isLinux = (!isWindows && !isMac);\n\n/** opens a url using the default browser */\nexport function openUrl(url: string) {\n if (isWindows) {\n spawn('cmd', ['/c', 'start', ' ', url], { detached: true });\n } else if (isMac) {\n spawn('open', [url], { detached: true });\n } else if (isLinux) {\n // TODO: maybe check for x-www-browser instead?\n spawn('xdg-open', [url], { detached: true });\n }\n}\n","\nexport async function keyPressed(keys: Array<string> | true = true) {\n process.stdin.setRawMode(true);\n return new Promise<void>((resolve) => {\n function keyPressHandler(d: Buffer) {\n const keyStr = d.toString();\n // exit on ctrl+c or ctrl+d\n if (['\\u0003', '\\u0004'].includes(keyStr)) {\n process.exit(1);\n }\n if (keys === true || keys.includes(keyStr)) {\n process.stdin.setRawMode(false);\n process.stdin.off('data', keyPressHandler);\n resolve();\n }\n }\n process.stdin.on('data', keyPressHandler);\n });\n}\n","\nimport { setTimeout as delay } from 'node:timers/promises';\nimport ansis from 'ansis';\nimport { define } from 'gunshi';\nimport { logLines } from '../helpers/pretty-format';\nimport { CONFIG } from '../../config';\nimport { openUrl } from '../helpers/open-url';\nimport { keyPressed } from '../helpers/key-press';\nimport { TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\n\nexport const commandSpec = define({\n name: 'login',\n description: 'Authenticate (using GitHub)',\n args: {},\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const codeReq = await fetch('https://github.com/login/device/code', {\n method: 'POST',\n body: JSON.stringify({\n client_id: CONFIG.GITHUB_APP_CLIENT_ID,\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n if (codeReq.status !== 200) {\n console.log('Failed to initiate GitHub device flow login!');\n process.exit(1);\n }\n\n const ghCodeInfo = await codeReq.json() as {\n device_code: string;\n user_code: string;\n verification_uri: string;\n expires_in: number;\n interval: number;\n };\n\n logLines([\n '🔑 Authenticating using GitHub:',\n '',\n `First please copy this code: ${ansis.bold.magenta(ghCodeInfo.user_code)}`,\n '',\n `Log in @ ${ghCodeInfo.verification_uri}`,\n '',\n 'Press ENTER to open in your default browser...',\n ]);\n await keyPressed(['\\r']);\n console.log(ansis.italic.gray('... please complete login on github.com ...'));\n openUrl(ghCodeInfo.verification_uri);\n\n const pollMs = ghCodeInfo.interval * 1000;\n const expiresMs = ghCodeInfo.expires_in * 1000;\n const startAt = new Date();\n\n let oauthStatus: any;\n while (true) {\n await delay(pollMs);\n try {\n const oauthStatusReq = await fetch('https://github.com/login/oauth/access_token', {\n method: 'POST',\n body: JSON.stringify({\n client_id: CONFIG.GITHUB_APP_CLIENT_ID,\n device_code: ghCodeInfo.device_code,\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n oauthStatus = await oauthStatusReq.json();\n } catch (err) {\n console.log(err);\n }\n\n // we are expecting to see { error: 'authorization_pending' }\n // probably a few more error types we could bail early on\n if (oauthStatus.error === 'access_denied') {\n console.log('❌ Login attempt was cancelled! Please try again.');\n process.exit(1);\n }\n\n // if we got the token, we break and continue\n if (oauthStatus.access_token) break;\n\n // if we've been polling for too long, give up\n if (new Date().getTime() - startAt.getTime() > expiresMs) {\n console.log('❌ Login timed out! Please try again.');\n process.exit(1);\n }\n }\n\n // oauthStatus when completed looks like:\n // {\n // access_token: 'ghu_abcxyz',\n // expires_in: 28800,\n // refresh_token: 'ghr_abcxyz',\n // refresh_token_expires_in: 15897600,\n // token_type: 'bearer',\n // scope: ''\n // }\n\n // pass along github auth info to API, which will fetch info from HG, handle login/signup, return JWT\n const authReq = await fetch(`${CONFIG.VARLOCK_API_URL}/github/auth-from-device-flow`, {\n method: 'POST',\n body: JSON.stringify({\n accessToken: oauthStatus.access_token,\n refreshToken: oauthStatus.refresh_token,\n accessTokenExpiresAt: new Date(Date.now() + oauthStatus.expires_in * 1000).toISOString(),\n refreshTokenExpiresAt: new Date(Date.now() + oauthStatus.refresh_token_expires_in * 1000).toISOString(),\n tokenType: oauthStatus.token_type,\n scope: oauthStatus.scope,\n }),\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n if (authReq.status !== 200) {\n console.log(await authReq.json());\n process.exit(1);\n }\n\n const authRes = await authReq.json() as {\n user: {\n githubUserId: string;\n githubUsername: string;\n name: string;\n },\n token: string;\n isNewUser: boolean;\n publicKey?: string;\n };\n\n // TODO: if app exists, pass off login info to it instead of storing in home folder\n // otherwise save login info in ~/.varlock/identity.json\n // also save it along with a new keypair if necessary, and send the public key to the api\n\n console.log(`✅ Logged in as ${authRes.user.githubUsername} (${authRes.user.name})!`);\n};\n"]}
|