vertex-notes 0.1.3 → 0.1.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/dist/commands/login.js
CHANGED
|
@@ -124,8 +124,12 @@ var Login = class extends Command {
|
|
|
124
124
|
options: { redirectTo: redirectUrl, skipBrowserRedirect: false }
|
|
125
125
|
}).then(({ data }) => {
|
|
126
126
|
if (data.url) {
|
|
127
|
+
console.log(`
|
|
128
|
+
If browser doesn't open, visit:
|
|
129
|
+
${data.url}
|
|
130
|
+
`);
|
|
127
131
|
import("child_process").then(({ exec }) => {
|
|
128
|
-
const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ?
|
|
132
|
+
const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? 'start ""' : "xdg-open";
|
|
129
133
|
exec(`${cmd} "${data.url}"`);
|
|
130
134
|
});
|
|
131
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/login.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createServer } from \"node:http\";\nimport { createInterface } from \"node:readline\";\nimport { createSupabaseClient } from \"@vertex/core\";\nimport { loadConfig, saveConfig } from \"../lib/config.js\";\n\nexport default class Login extends Command {\n static override description = \"Log in to Vertex\";\n\n async run(): Promise<void> {\n const config = loadConfig();\n\n this.log(\"\\n How would you like to log in?\\n\");\n this.log(\" 1) GitHub\");\n this.log(\" 2) Google\");\n this.log(\" 3) Email & Password\\n\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const choice = await new Promise<string>((resolve) => {\n rl.question(\" Choice (1/2/3): \", (ans) => { rl.close(); resolve(ans.trim()); });\n });\n\n if (choice === \"3\") {\n await this.emailLogin(config);\n return;\n }\n\n const provider = choice === \"2\" ? \"google\" : \"github\";\n await this.oauthLogin(config, provider);\n }\n\n private async emailLogin(config: ReturnType<typeof loadConfig>): Promise<void> {\n const rl1 = createInterface({ input: process.stdin, output: process.stdout });\n const email = await new Promise<string>((resolve) => {\n rl1.question(\" Email: \", (ans) => { rl1.close(); resolve(ans.trim()); });\n });\n\n const rl2 = createInterface({ input: process.stdin, output: process.stdout });\n const password = await new Promise<string>((resolve) => {\n rl2.question(\" Password: \", (ans) => { rl2.close(); resolve(ans.trim()); });\n });\n\n const rl3 = createInterface({ input: process.stdin, output: process.stdout });\n const isSignup = await new Promise<string>((resolve) => {\n rl3.question(\" Sign in or sign up? (in/up): \", (ans) => { rl3.close(); resolve(ans.trim().toLowerCase()); });\n });\n\n const client = createSupabaseClient(config.supabaseUrl, config.supabaseAnonKey);\n\n if (isSignup === \"up\") {\n const { error } = await client.auth.signUp({ email, password });\n if (error) {\n this.error(`Sign up failed: ${error.message}`);\n }\n this.log(\" Check your email to confirm your account, then run: vertex login\");\n process.exit(0);\n }\n\n const { data, error } = await client.auth.signInWithPassword({ email, password });\n if (error) {\n this.error(`Login failed: ${error.message}`);\n }\n\n if (data.session) {\n saveConfig({\n accessToken: data.session.access_token,\n refreshToken: data.session.refresh_token,\n userId: data.session.user.id,\n email: data.session.user.email,\n });\n this.log(` Logged in as ${data.session.user.email}`);\n }\n process.exit(0);\n }\n\n private async oauthLogin(config: ReturnType<typeof loadConfig>, provider: \"github\" | \"google\"): Promise<void> {\n const port = 54321;\n const redirectUrl = `http://localhost:${port}/callback`;\n\n this.log(` Opening browser for ${provider} login...`);\n\n const tokenPromise = new Promise<{ access_token: string; refresh_token: string }>((resolve, reject) => {\n const server = createServer((req, res) => {\n const url = new URL(req.url ?? \"/\", `http://localhost:${port}`);\n\n if (url.pathname === \"/callback\") {\n const accessToken = url.searchParams.get(\"access_token\");\n const refreshToken = url.searchParams.get(\"refresh_token\");\n\n if (accessToken && refreshToken) {\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(\"<h2 style='font-family:sans-serif;text-align:center;margin-top:40vh'>Logged in! You can close this tab.</h2>\");\n server.close();\n resolve({ access_token: accessToken, refresh_token: refreshToken });\n return;\n }\n\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(`\n <html><body>\n <script>\n const hash = window.location.hash.substring(1);\n const params = new URLSearchParams(hash);\n const at = params.get(\"access_token\");\n const rt = params.get(\"refresh_token\");\n if (at && rt) {\n window.location.href = \"/callback?access_token=\" + encodeURIComponent(at) + \"&refresh_token=\" + encodeURIComponent(rt);\n } else {\n document.body.innerHTML = \"<h2 style='font-family:sans-serif;text-align:center;margin-top:40vh'>Login failed. Try again.</h2>\";\n }\n </script>\n <h2 style=\"font-family:sans-serif;text-align:center;margin-top:40vh\">Completing login...</h2>\n </body></html>\n `);\n return;\n }\n\n res.writeHead(404);\n res.end(\"Not found\");\n });\n\n server.listen(port, () => {\n const client = createSupabaseClient(config.supabaseUrl, config.supabaseAnonKey);\n client.auth.signInWithOAuth({\n provider,\n options: { redirectTo: redirectUrl, skipBrowserRedirect: false },\n }).then(({ data }) => {\n if (data.url) {\n import(\"node:child_process\").then(({ exec }) => {\n const cmd = process.platform === \"darwin\" ? \"open\" : process.platform === \"win32\" ? \"start\" : \"xdg-open\";\n exec(`${cmd} \"${data.url}\"`);\n });\n }\n });\n });\n\n setTimeout(() => {\n server.close();\n reject(new Error(\"Login timed out after 120 seconds\"));\n }, 120_000);\n });\n\n try {\n const tokens = await tokenPromise;\n\n const client = createSupabaseClient(config.supabaseUrl, config.supabaseAnonKey);\n const { data } = await client.auth.setSession({\n access_token: tokens.access_token,\n refresh_token: tokens.refresh_token,\n });\n\n saveConfig({\n accessToken: tokens.access_token,\n refreshToken: tokens.refresh_token,\n userId: data.session?.user.id,\n email: data.session?.user.email,\n });\n\n this.log(` Logged in as ${data.session?.user.email ?? \"unknown\"}`);\n process.exit(0);\n } catch (err) {\n this.error(`Login failed: ${err instanceof Error ? err.message : err}`);\n }\n }\n}\n"],"mappings":"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","names":["error"]}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/login.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createServer } from \"node:http\";\nimport { createInterface } from \"node:readline\";\nimport { createSupabaseClient } from \"@vertex/core\";\nimport { loadConfig, saveConfig } from \"../lib/config.js\";\n\nexport default class Login extends Command {\n static override description = \"Log in to Vertex\";\n\n async run(): Promise<void> {\n const config = loadConfig();\n\n this.log(\"\\n How would you like to log in?\\n\");\n this.log(\" 1) GitHub\");\n this.log(\" 2) Google\");\n this.log(\" 3) Email & Password\\n\");\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const choice = await new Promise<string>((resolve) => {\n rl.question(\" Choice (1/2/3): \", (ans) => { rl.close(); resolve(ans.trim()); });\n });\n\n if (choice === \"3\") {\n await this.emailLogin(config);\n return;\n }\n\n const provider = choice === \"2\" ? \"google\" : \"github\";\n await this.oauthLogin(config, provider);\n }\n\n private async emailLogin(config: ReturnType<typeof loadConfig>): Promise<void> {\n const rl1 = createInterface({ input: process.stdin, output: process.stdout });\n const email = await new Promise<string>((resolve) => {\n rl1.question(\" Email: \", (ans) => { rl1.close(); resolve(ans.trim()); });\n });\n\n const rl2 = createInterface({ input: process.stdin, output: process.stdout });\n const password = await new Promise<string>((resolve) => {\n rl2.question(\" Password: \", (ans) => { rl2.close(); resolve(ans.trim()); });\n });\n\n const rl3 = createInterface({ input: process.stdin, output: process.stdout });\n const isSignup = await new Promise<string>((resolve) => {\n rl3.question(\" Sign in or sign up? (in/up): \", (ans) => { rl3.close(); resolve(ans.trim().toLowerCase()); });\n });\n\n const client = createSupabaseClient(config.supabaseUrl, config.supabaseAnonKey);\n\n if (isSignup === \"up\") {\n const { error } = await client.auth.signUp({ email, password });\n if (error) {\n this.error(`Sign up failed: ${error.message}`);\n }\n this.log(\" Check your email to confirm your account, then run: vertex login\");\n process.exit(0);\n }\n\n const { data, error } = await client.auth.signInWithPassword({ email, password });\n if (error) {\n this.error(`Login failed: ${error.message}`);\n }\n\n if (data.session) {\n saveConfig({\n accessToken: data.session.access_token,\n refreshToken: data.session.refresh_token,\n userId: data.session.user.id,\n email: data.session.user.email,\n });\n this.log(` Logged in as ${data.session.user.email}`);\n }\n process.exit(0);\n }\n\n private async oauthLogin(config: ReturnType<typeof loadConfig>, provider: \"github\" | \"google\"): Promise<void> {\n const port = 54321;\n const redirectUrl = `http://localhost:${port}/callback`;\n\n this.log(` Opening browser for ${provider} login...`);\n\n const tokenPromise = new Promise<{ access_token: string; refresh_token: string }>((resolve, reject) => {\n const server = createServer((req, res) => {\n const url = new URL(req.url ?? \"/\", `http://localhost:${port}`);\n\n if (url.pathname === \"/callback\") {\n const accessToken = url.searchParams.get(\"access_token\");\n const refreshToken = url.searchParams.get(\"refresh_token\");\n\n if (accessToken && refreshToken) {\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(\"<h2 style='font-family:sans-serif;text-align:center;margin-top:40vh'>Logged in! You can close this tab.</h2>\");\n server.close();\n resolve({ access_token: accessToken, refresh_token: refreshToken });\n return;\n }\n\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(`\n <html><body>\n <script>\n const hash = window.location.hash.substring(1);\n const params = new URLSearchParams(hash);\n const at = params.get(\"access_token\");\n const rt = params.get(\"refresh_token\");\n if (at && rt) {\n window.location.href = \"/callback?access_token=\" + encodeURIComponent(at) + \"&refresh_token=\" + encodeURIComponent(rt);\n } else {\n document.body.innerHTML = \"<h2 style='font-family:sans-serif;text-align:center;margin-top:40vh'>Login failed. Try again.</h2>\";\n }\n </script>\n <h2 style=\"font-family:sans-serif;text-align:center;margin-top:40vh\">Completing login...</h2>\n </body></html>\n `);\n return;\n }\n\n res.writeHead(404);\n res.end(\"Not found\");\n });\n\n server.listen(port, () => {\n const client = createSupabaseClient(config.supabaseUrl, config.supabaseAnonKey);\n client.auth.signInWithOAuth({\n provider,\n options: { redirectTo: redirectUrl, skipBrowserRedirect: false },\n }).then(({ data }) => {\n if (data.url) {\n console.log(`\\n If browser doesn't open, visit:\\n ${data.url}\\n`);\n import(\"node:child_process\").then(({ exec }) => {\n const cmd = process.platform === \"darwin\" ? \"open\"\n : process.platform === \"win32\" ? 'start \"\"'\n : \"xdg-open\";\n exec(`${cmd} \"${data.url}\"`);\n });\n }\n });\n });\n\n setTimeout(() => {\n server.close();\n reject(new Error(\"Login timed out after 120 seconds\"));\n }, 120_000);\n });\n\n try {\n const tokens = await tokenPromise;\n\n const client = createSupabaseClient(config.supabaseUrl, config.supabaseAnonKey);\n const { data } = await client.auth.setSession({\n access_token: tokens.access_token,\n refresh_token: tokens.refresh_token,\n });\n\n saveConfig({\n accessToken: tokens.access_token,\n refreshToken: tokens.refresh_token,\n userId: data.session?.user.id,\n email: data.session?.user.email,\n });\n\n this.log(` Logged in as ${data.session?.user.email ?? \"unknown\"}`);\n process.exit(0);\n } catch (err) {\n this.error(`Login failed: ${err instanceof Error ? err.message : err}`);\n }\n }\n}\n"],"mappings":"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","names":["error"]}
|