tinbase 0.1.0 → 0.2.0
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 +27 -8
- package/dist/admin/api.d.ts +12 -0
- package/dist/admin/api.js +118 -0
- package/dist/admin/api.js.map +1 -0
- package/dist/admin/ui.d.ts +9 -0
- package/dist/admin/ui.js +74 -0
- package/dist/admin/ui.js.map +1 -0
- package/dist/auth/handler.d.ts +8 -1
- package/dist/auth/handler.js +86 -4
- package/dist/auth/handler.js.map +1 -1
- package/dist/cli.js +8 -2
- package/dist/cli.js.map +1 -1
- package/dist/db/bootstrap.d.ts +1 -1
- package/dist/db/bootstrap.js +10 -0
- package/dist/db/bootstrap.js.map +1 -1
- package/dist/functions/handler.d.ts +28 -0
- package/dist/functions/handler.js +42 -0
- package/dist/functions/handler.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.js +1 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/load-functions.d.ts +2 -0
- package/dist/node/load-functions.js +52 -0
- package/dist/node/load-functions.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** Loads edge functions from supabase/functions/<name>/index.{ts,js,mjs} (Node only). */
|
|
2
|
+
import { readdir, stat } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
export async function loadFunctions(projectDir) {
|
|
6
|
+
const functions = new Map();
|
|
7
|
+
const root = join(projectDir, 'supabase', 'functions');
|
|
8
|
+
let entries = [];
|
|
9
|
+
try {
|
|
10
|
+
entries = await readdir(root);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return functions;
|
|
14
|
+
}
|
|
15
|
+
for (const name of entries) {
|
|
16
|
+
if (name.startsWith('_') || name.startsWith('.'))
|
|
17
|
+
continue;
|
|
18
|
+
const dir = join(root, name);
|
|
19
|
+
if (!(await stat(dir)).isDirectory())
|
|
20
|
+
continue;
|
|
21
|
+
for (const file of ['index.ts', 'index.js', 'index.mjs']) {
|
|
22
|
+
const path = join(dir, file);
|
|
23
|
+
try {
|
|
24
|
+
await stat(path);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const mod = (await import(pathToFileURL(path).href));
|
|
31
|
+
if (typeof mod.default === 'function') {
|
|
32
|
+
functions.set(name, mod.default);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.warn(` warning: function "${name}" has no default export, skipped`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
40
|
+
if (file === 'index.ts' && /Unknown file extension|Cannot find module/.test(msg)) {
|
|
41
|
+
console.warn(` warning: function "${name}" is TypeScript — run tinbase with tsx or bun, or compile it to .js`);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.warn(` warning: failed to load function "${name}": ${msg}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return functions;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=load-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-functions.js","sourceRoot":"","sources":["../../src/node/load-functions.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAA;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAEtD,IAAI,OAAO,GAAa,EAAE,CAAA;IAC1B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;YAAE,SAAQ;QAC9C,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAQ;YACV,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAA+B,CAAA;gBAClF,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACtC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,kCAAkC,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBACtD,IAAI,IAAI,KAAK,UAAU,IAAI,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjF,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,qEAAqE,CAAC,CAAA;gBACjH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,uCAAuC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;YACD,MAAK;QACP,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -27,9 +27,22 @@ export interface BackendConfig {
|
|
|
27
27
|
seedSql?: string;
|
|
28
28
|
/** Where object storage bytes live. Default: in-memory. Node CLI passes a fs driver. */
|
|
29
29
|
storageDriver?: StorageDriver;
|
|
30
|
+
/** Edge functions: name → fetch handler, served at /functions/v1/<name>. */
|
|
31
|
+
functions?: Map<string, import('./functions/handler.js').EdgeFunction> | Record<string, import('./functions/handler.js').EdgeFunction>;
|
|
32
|
+
/** Mail transport for OTP/magic-link/recovery emails. Default: console logger. */
|
|
33
|
+
mailer?: Mailer;
|
|
30
34
|
/** Print startup/debug logs. */
|
|
31
35
|
log?: (msg: string) => void;
|
|
32
36
|
}
|
|
37
|
+
export interface MailMessage {
|
|
38
|
+
to: string;
|
|
39
|
+
subject: string;
|
|
40
|
+
text: string;
|
|
41
|
+
}
|
|
42
|
+
/** Pluggable mail transport. Default implementation logs to the console. */
|
|
43
|
+
export interface Mailer {
|
|
44
|
+
send(msg: MailMessage): Promise<void>;
|
|
45
|
+
}
|
|
33
46
|
export declare const DEFAULT_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
34
47
|
/** Per-request execution context derived from apikey/Authorization headers. */
|
|
35
48
|
export interface RequestContext {
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAkDA,MAAM,CAAC,MAAM,kBAAkB,GAAG,yDAAyD,CAAA;AAiB3F,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IACA;IAFT,YACS,MAAc,EACd,IAA6B;QAEpC,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QAHtE,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAyB;IAGtC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinbase",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "A pure-JS, Docker-free Supabase backend replacement built on PGlite. Wire-compatible with supabase-js.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Sanket Sahu",
|
|
@@ -20,12 +20,13 @@
|
|
|
20
20
|
"assets/logo.svg"
|
|
21
21
|
],
|
|
22
22
|
"scripts": {
|
|
23
|
-
"build": "tsc -p tsconfig.json",
|
|
23
|
+
"build": "npm run build:admin && tsc -p tsconfig.json",
|
|
24
24
|
"dev": "tsx src/cli.ts start",
|
|
25
25
|
"test": "vitest run",
|
|
26
26
|
"test:watch": "vitest",
|
|
27
27
|
"build:binary": "npm run build && bun build --compile src/cli.ts --outfile dist-bin/tinbase --external @electric-sql/pglite --define 'process.env.TINBASE_SINGLE_BINARY=\"1\"'",
|
|
28
|
-
"prepublishOnly": "npm run build && npm test"
|
|
28
|
+
"prepublishOnly": "npm run build && npm test",
|
|
29
|
+
"build:admin": "cd admin-ui && npm run build"
|
|
29
30
|
},
|
|
30
31
|
"engines": {
|
|
31
32
|
"node": ">=22"
|
|
@@ -56,4 +57,4 @@
|
|
|
56
57
|
"bugs": {
|
|
57
58
|
"url": "https://github.com/sanketsahu/tinbase/issues"
|
|
58
59
|
}
|
|
59
|
-
}
|
|
60
|
+
}
|