surrge 0.11.4 → 0.11.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA6B5B,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,KACf,IAAI,CAAC;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CA0c/B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA2C5B,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,KACf,IAAI,CAAC;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CA8c/B,CAAC"}
package/dist/index.js CHANGED
@@ -399,7 +399,7 @@ var require_sqlite_error = __commonJS((exports, module) => {
399
399
 
400
400
  // node_modules/libsql/index.js
401
401
  var require_libsql = __commonJS((exports, module) => {
402
- var __dirname = "/Users/eduardosasso/moonshot/surrge/node_modules/libsql";
402
+ var __dirname = "/home/blakbelt78/Work/surrge/node_modules/libsql";
403
403
  var { load, currentTarget } = require_dist();
404
404
  var { familySync, GLIBC } = require_detect_libc();
405
405
  function requireNative() {
@@ -14857,7 +14857,7 @@ var require_cjs5 = __commonJS((exports) => {
14857
14857
  // package.json
14858
14858
  var package_default = {
14859
14859
  name: "surrge",
14860
- version: "0.11.4",
14860
+ version: "0.11.6",
14861
14861
  description: "One-line observability + analytics for Node.js/Bun",
14862
14862
  type: "module",
14863
14863
  exports: {
@@ -26134,9 +26134,18 @@ Please change the parent <Route path="\${E}"> to <Route path="\${E==="/"?"*":\`\
26134
26134
 
26135
26135
  // src/dashboard/index.ts
26136
26136
  var SESSION_MAX_AGE = 30 * 24 * 60 * 60;
26137
+ var decodeBase64URL = (str) => {
26138
+ const padding = "=".repeat((4 - str.length % 4) % 4);
26139
+ const base642 = str.replace(/-/g, "+").replace(/_/g, "/") + padding;
26140
+ return Buffer.from(base642, "base64").toString("utf-8");
26141
+ };
26137
26142
  var origin = (c) => {
26143
+ const originHeader = c.req.header("Origin");
26144
+ if (originHeader)
26145
+ return originHeader;
26138
26146
  const url = new URL(c.req.url);
26139
- return url.origin;
26147
+ const proto = c.req.header("X-Forwarded-Proto") || url.protocol.replace(":", "");
26148
+ return `${proto}://${url.host}`;
26140
26149
  };
26141
26150
  var hostname = (c) => {
26142
26151
  const url = new URL(c.req.url);
@@ -26310,20 +26319,23 @@ var createDashboard = (basePath) => {
26310
26319
  if (!user) {
26311
26320
  return c.json({ error: "Unknown credential" }, 401);
26312
26321
  }
26313
- const challenge2 = challenges.get(cred.id) || challenges.get(cred.response?.authenticatorData);
26314
- let foundChallenge;
26315
- for (const [key, value] of challenges.entries()) {
26316
- if (key === value) {
26317
- foundChallenge = value;
26318
- challenges.delete(key);
26319
- break;
26320
- }
26322
+ let expectedChallenge;
26323
+ if (cred.response?.clientDataJSON) {
26324
+ try {
26325
+ const clientDataStr = decodeBase64URL(cred.response.clientDataJSON);
26326
+ const clientData = JSON.parse(clientDataStr);
26327
+ expectedChallenge = clientData.challenge;
26328
+ } catch {}
26321
26329
  }
26322
- if (!challenge2 && !foundChallenge) {
26330
+ const challenge2 = expectedChallenge && challenges.get(expectedChallenge);
26331
+ if (!challenge2) {
26323
26332
  return c.json({ error: "Challenge expired" }, 400);
26324
26333
  }
26334
+ if (expectedChallenge) {
26335
+ challenges.delete(expectedChallenge);
26336
+ }
26325
26337
  try {
26326
- const auth2 = await authenticate(user, credential, challenge2 || foundChallenge, origin(c), hostname(c));
26338
+ const auth2 = await authenticate(user, credential, challenge2, origin(c), hostname(c));
26327
26339
  await touch(user.username, auth2.counter);
26328
26340
  const token = create(user.username);
26329
26341
  setCookie(c, "session", token, {
package/dist/loader.js CHANGED
@@ -399,7 +399,7 @@ var require_sqlite_error = __commonJS((exports, module) => {
399
399
 
400
400
  // node_modules/libsql/index.js
401
401
  var require_libsql = __commonJS((exports, module) => {
402
- var __dirname = "/Users/eduardosasso/moonshot/surrge/node_modules/libsql";
402
+ var __dirname = "/home/blakbelt78/Work/surrge/node_modules/libsql";
403
403
  var { load, currentTarget } = require_dist();
404
404
  var { familySync, GLIBC } = require_detect_libc();
405
405
  function requireNative() {
@@ -14857,7 +14857,7 @@ var require_cjs5 = __commonJS((exports) => {
14857
14857
  // package.json
14858
14858
  var package_default = {
14859
14859
  name: "surrge",
14860
- version: "0.11.4",
14860
+ version: "0.11.6",
14861
14861
  description: "One-line observability + analytics for Node.js/Bun",
14862
14862
  type: "module",
14863
14863
  exports: {
@@ -26134,9 +26134,18 @@ Please change the parent <Route path="\${E}"> to <Route path="\${E==="/"?"*":\`\
26134
26134
 
26135
26135
  // src/dashboard/index.ts
26136
26136
  var SESSION_MAX_AGE = 30 * 24 * 60 * 60;
26137
+ var decodeBase64URL = (str) => {
26138
+ const padding = "=".repeat((4 - str.length % 4) % 4);
26139
+ const base642 = str.replace(/-/g, "+").replace(/_/g, "/") + padding;
26140
+ return Buffer.from(base642, "base64").toString("utf-8");
26141
+ };
26137
26142
  var origin = (c) => {
26143
+ const originHeader = c.req.header("Origin");
26144
+ if (originHeader)
26145
+ return originHeader;
26138
26146
  const url = new URL(c.req.url);
26139
- return url.origin;
26147
+ const proto = c.req.header("X-Forwarded-Proto") || url.protocol.replace(":", "");
26148
+ return `${proto}://${url.host}`;
26140
26149
  };
26141
26150
  var hostname = (c) => {
26142
26151
  const url = new URL(c.req.url);
@@ -26310,20 +26319,23 @@ var createDashboard = (basePath) => {
26310
26319
  if (!user) {
26311
26320
  return c.json({ error: "Unknown credential" }, 401);
26312
26321
  }
26313
- const challenge2 = challenges.get(cred.id) || challenges.get(cred.response?.authenticatorData);
26314
- let foundChallenge;
26315
- for (const [key, value] of challenges.entries()) {
26316
- if (key === value) {
26317
- foundChallenge = value;
26318
- challenges.delete(key);
26319
- break;
26320
- }
26322
+ let expectedChallenge;
26323
+ if (cred.response?.clientDataJSON) {
26324
+ try {
26325
+ const clientDataStr = decodeBase64URL(cred.response.clientDataJSON);
26326
+ const clientData = JSON.parse(clientDataStr);
26327
+ expectedChallenge = clientData.challenge;
26328
+ } catch {}
26321
26329
  }
26322
- if (!challenge2 && !foundChallenge) {
26330
+ const challenge2 = expectedChallenge && challenges.get(expectedChallenge);
26331
+ if (!challenge2) {
26323
26332
  return c.json({ error: "Challenge expired" }, 400);
26324
26333
  }
26334
+ if (expectedChallenge) {
26335
+ challenges.delete(expectedChallenge);
26336
+ }
26325
26337
  try {
26326
- const auth2 = await authenticate(user, credential, challenge2 || foundChallenge, origin(c), hostname(c));
26338
+ const auth2 = await authenticate(user, credential, challenge2, origin(c), hostname(c));
26327
26339
  await touch(user.username, auth2.counter);
26328
26340
  const token = create(user.username);
26329
26341
  setCookie(c, "session", token, {
package/dist/register.js CHANGED
@@ -399,7 +399,7 @@ var require_sqlite_error = __commonJS((exports, module) => {
399
399
 
400
400
  // node_modules/libsql/index.js
401
401
  var require_libsql = __commonJS((exports, module) => {
402
- var __dirname = "/Users/eduardosasso/moonshot/surrge/node_modules/libsql";
402
+ var __dirname = "/home/blakbelt78/Work/surrge/node_modules/libsql";
403
403
  var { load, currentTarget } = require_dist();
404
404
  var { familySync, GLIBC } = require_detect_libc();
405
405
  function requireNative() {
@@ -14857,7 +14857,7 @@ var require_cjs5 = __commonJS((exports) => {
14857
14857
  // package.json
14858
14858
  var package_default = {
14859
14859
  name: "surrge",
14860
- version: "0.11.4",
14860
+ version: "0.11.6",
14861
14861
  description: "One-line observability + analytics for Node.js/Bun",
14862
14862
  type: "module",
14863
14863
  exports: {
@@ -26134,9 +26134,18 @@ Please change the parent <Route path="\${E}"> to <Route path="\${E==="/"?"*":\`\
26134
26134
 
26135
26135
  // src/dashboard/index.ts
26136
26136
  var SESSION_MAX_AGE = 30 * 24 * 60 * 60;
26137
+ var decodeBase64URL = (str) => {
26138
+ const padding = "=".repeat((4 - str.length % 4) % 4);
26139
+ const base642 = str.replace(/-/g, "+").replace(/_/g, "/") + padding;
26140
+ return Buffer.from(base642, "base64").toString("utf-8");
26141
+ };
26137
26142
  var origin = (c) => {
26143
+ const originHeader = c.req.header("Origin");
26144
+ if (originHeader)
26145
+ return originHeader;
26138
26146
  const url = new URL(c.req.url);
26139
- return url.origin;
26147
+ const proto = c.req.header("X-Forwarded-Proto") || url.protocol.replace(":", "");
26148
+ return `${proto}://${url.host}`;
26140
26149
  };
26141
26150
  var hostname = (c) => {
26142
26151
  const url = new URL(c.req.url);
@@ -26310,20 +26319,23 @@ var createDashboard = (basePath) => {
26310
26319
  if (!user) {
26311
26320
  return c.json({ error: "Unknown credential" }, 401);
26312
26321
  }
26313
- const challenge2 = challenges.get(cred.id) || challenges.get(cred.response?.authenticatorData);
26314
- let foundChallenge;
26315
- for (const [key, value] of challenges.entries()) {
26316
- if (key === value) {
26317
- foundChallenge = value;
26318
- challenges.delete(key);
26319
- break;
26320
- }
26322
+ let expectedChallenge;
26323
+ if (cred.response?.clientDataJSON) {
26324
+ try {
26325
+ const clientDataStr = decodeBase64URL(cred.response.clientDataJSON);
26326
+ const clientData = JSON.parse(clientDataStr);
26327
+ expectedChallenge = clientData.challenge;
26328
+ } catch {}
26321
26329
  }
26322
- if (!challenge2 && !foundChallenge) {
26330
+ const challenge2 = expectedChallenge && challenges.get(expectedChallenge);
26331
+ if (!challenge2) {
26323
26332
  return c.json({ error: "Challenge expired" }, 400);
26324
26333
  }
26334
+ if (expectedChallenge) {
26335
+ challenges.delete(expectedChallenge);
26336
+ }
26325
26337
  try {
26326
- const auth2 = await authenticate(user, credential, challenge2 || foundChallenge, origin(c), hostname(c));
26338
+ const auth2 = await authenticate(user, credential, challenge2, origin(c), hostname(c));
26327
26339
  await touch(user.username, auth2.counter);
26328
26340
  const token = create(user.username);
26329
26341
  setCookie(c, "session", token, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "surrge",
3
- "version": "0.11.4",
3
+ "version": "0.11.6",
4
4
  "description": "One-line observability + analytics for Node.js/Bun",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,38 +0,0 @@
1
- // scripts/postinstall.ts
2
- import { scryptSync, randomBytes } from "node:crypto";
3
- import { readFileSync, writeFileSync, existsSync } from "node:fs";
4
- import { join } from "node:path";
5
- var projectRoot = process.env.INIT_CWD;
6
- if (!projectRoot) {
7
- process.exit(0);
8
- }
9
- var pkgPath = join(projectRoot, "package.json");
10
- if (!existsSync(pkgPath)) {
11
- process.exit(0);
12
- }
13
- var pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
14
- if (pkg.surrge?.setup) {
15
- console.log("[surrge] Setup code already exists in package.json");
16
- process.exit(0);
17
- }
18
- var code = String(Math.floor(1e5 + Math.random() * 900000));
19
- var salt = randomBytes(16).toString("hex");
20
- var hash = scryptSync(code, salt, 64).toString("hex");
21
- var stored = `${salt}:${hash}`;
22
- pkg.surrge = { ...pkg.surrge, setup: stored };
23
- writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + `
24
- `);
25
- console.log(`
26
- ┌───────────────────────────────────────┐
27
- │ SURRGE SETUP CODE │
28
- ├───────────────────────────────────────┤
29
- │ │
30
- │ ${code} │
31
- │ │
32
- │ Save this 6-digit code! │
33
- │ You'll need it to create your │
34
- │ admin account on first login. │
35
- │ │
36
- │ This code will not be shown again. │
37
- └───────────────────────────────────────┘
38
- `);
package/dist/src/cli.js DELETED
@@ -1,53 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // src/cli.ts
4
- import { spawn, spawnSync } from "node:child_process";
5
- import { dirname, resolve } from "node:path";
6
- import { fileURLToPath } from "node:url";
7
- var args = process.argv.slice(2);
8
- if (args.length === 0) {
9
- console.log("Usage: surrge [options] <script> [args...]");
10
- console.log(" surrge node [options] <script> [args...]");
11
- console.log(" surrge bun [options] <script> [args...]");
12
- console.log("");
13
- console.log("Options are passed through to the runtime (e.g., --hot, --watch)");
14
- process.exit(1);
15
- }
16
- var loaderPath = resolve(dirname(fileURLToPath(import.meta.url)), "loader.js");
17
- var hasBun = () => {
18
- const result = spawnSync("bun", ["--version"], { stdio: "ignore" });
19
- return result.status === 0;
20
- };
21
- var runtime;
22
- var remaining;
23
- if (args[0] === "node" || args[0] === "bun") {
24
- runtime = args[0];
25
- remaining = args.slice(1);
26
- } else {
27
- runtime = hasBun() ? "bun" : "node";
28
- remaining = args;
29
- }
30
- var runtimeFlags = [];
31
- var scriptIndex = 0;
32
- for (let i = 0;i < remaining.length; i++) {
33
- if (remaining[i].startsWith("-")) {
34
- runtimeFlags.push(remaining[i]);
35
- } else {
36
- scriptIndex = i;
37
- break;
38
- }
39
- }
40
- var scriptArgs = remaining.slice(scriptIndex);
41
- if (scriptArgs.length === 0) {
42
- console.log("Error: No script specified");
43
- process.exit(1);
44
- }
45
- var flag = runtime === "bun" ? "--preload" : "--import";
46
- var child = spawn(runtime, [flag, loaderPath, ...runtimeFlags, ...scriptArgs], {
47
- stdio: "inherit",
48
- cwd: process.cwd(),
49
- env: process.env
50
- });
51
- child.on("close", (code) => {
52
- process.exit(code ?? 0);
53
- });
package/dist/src/hooks.js DELETED
@@ -1,148 +0,0 @@
1
- import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
- var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
19
- var __export = (target, all) => {
20
- for (var name in all)
21
- __defProp(target, name, {
22
- get: all[name],
23
- enumerable: true,
24
- configurable: true,
25
- set: (newValue) => all[name] = () => newValue
26
- });
27
- };
28
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
-
30
- // src/hooks.ts
31
- import fs from "node:fs";
32
- import { createRequire as createRequire2 } from "node:module";
33
- var STDOUT_FD = 1;
34
- var buffer = "";
35
- var originalWriteSync = fs.writeSync;
36
- var originalWrite = fs.write;
37
- var logQueue = [];
38
- globalThis.__surrge_log_queue = logQueue;
39
- var normalizeLevel = (level) => {
40
- if (typeof level === "number") {
41
- if (level >= 50)
42
- return "error";
43
- if (level >= 40)
44
- return "warn";
45
- if (level >= 30)
46
- return "info";
47
- return "debug";
48
- }
49
- if (typeof level === "string") {
50
- const lower = level.toLowerCase();
51
- if (["error", "err"].includes(lower))
52
- return "error";
53
- if (["warn", "warning"].includes(lower))
54
- return "warn";
55
- return lower;
56
- }
57
- return "info";
58
- };
59
- var captureOutput = (chunk) => {
60
- const text = typeof chunk === "string" ? chunk : Buffer.isBuffer(chunk) ? chunk.toString() : new TextDecoder().decode(chunk);
61
- buffer += text;
62
- const lines = buffer.split(`
63
- `);
64
- buffer = lines.pop() ?? "";
65
- for (const line of lines) {
66
- if (!line.trim() || !line.startsWith("{"))
67
- continue;
68
- try {
69
- const parsed = JSON.parse(line);
70
- const level = normalizeLevel(parsed.level ?? parsed.severity ?? "info");
71
- const message = String(parsed.msg ?? parsed.message ?? line);
72
- const { level: _, msg: __, message: ___, ...metadata } = parsed;
73
- logQueue.push({
74
- level,
75
- message,
76
- metadata: Object.keys(metadata).length > 0 ? metadata : undefined
77
- });
78
- } catch {}
79
- }
80
- };
81
- var require2 = createRequire2(import.meta.url);
82
- var cjsFs = require2("node:fs");
83
- fs.writeSync = (fd, data, ...args) => {
84
- if (fd === STDOUT_FD && (typeof data === "string" || Buffer.isBuffer(data))) {
85
- captureOutput(data);
86
- }
87
- return originalWriteSync(fd, data, ...args);
88
- };
89
- fs.write = (fd, data, ...args) => {
90
- if (fd === STDOUT_FD && (typeof data === "string" || Buffer.isBuffer(data))) {
91
- captureOutput(data);
92
- }
93
- return originalWrite(fd, data, ...args);
94
- };
95
- var cjsOriginalWriteSync = cjsFs.writeSync;
96
- var cjsOriginalWrite = cjsFs.write;
97
- cjsFs.writeSync = (fd, data, ...args) => {
98
- if (fd === STDOUT_FD && (typeof data === "string" || Buffer.isBuffer(data))) {
99
- captureOutput(data);
100
- }
101
- return cjsOriginalWriteSync(fd, data, ...args);
102
- };
103
- cjsFs.write = (fd, data, ...args) => {
104
- if (fd === STDOUT_FD && (typeof data === "string" || Buffer.isBuffer(data))) {
105
- captureOutput(data);
106
- }
107
- return cjsOriginalWrite(fd, data, ...args);
108
- };
109
- var originalStdoutWrite = process.stdout.write.bind(process.stdout);
110
- process.stdout.write = (chunk, encodingOrCallback, callback) => {
111
- if (typeof chunk === "string" || chunk instanceof Uint8Array) {
112
- captureOutput(chunk);
113
- }
114
- if (typeof encodingOrCallback === "function") {
115
- return originalStdoutWrite(chunk, encodingOrCallback);
116
- }
117
- return originalStdoutWrite(chunk, encodingOrCallback, callback);
118
- };
119
- var Bun = globalThis.Bun;
120
- var BunStdout = Bun?.stdout;
121
- if (Bun?.write) {
122
- const originalBunWrite = Bun.write;
123
- Bun.write = (dest, data, ...args) => {
124
- const isStdout = dest === STDOUT_FD || dest === process.stdout || dest === BunStdout;
125
- if (isStdout && (typeof data === "string" || data instanceof Uint8Array)) {
126
- captureOutput(data);
127
- }
128
- return originalBunWrite(dest, data, ...args);
129
- };
130
- }
131
- var bunStdout = BunStdout;
132
- if (bunStdout?.write) {
133
- const originalBunStdoutWrite = bunStdout.write.bind(bunStdout);
134
- bunStdout.write = (data) => {
135
- captureOutput(data);
136
- return originalBunStdoutWrite(data);
137
- };
138
- }
139
- var resolve = async (specifier, context, nextResolve) => {
140
- return nextResolve(specifier, context);
141
- };
142
- var load = async (url, context, nextLoad) => {
143
- return nextLoad(url, context);
144
- };
145
- export {
146
- resolve,
147
- load
148
- };