@supatype/cli 0.1.0-alpha.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.
- package/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-test.log +7 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/bin/dev-entry.ts +2 -0
- package/bin/supatype.js +5 -0
- package/dist/app/framework.d.ts +44 -0
- package/dist/app/framework.d.ts.map +1 -0
- package/dist/app/framework.js +200 -0
- package/dist/app/framework.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +55 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/admin.d.ts +4 -0
- package/dist/commands/admin.d.ts.map +1 -0
- package/dist/commands/admin.js +270 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/app.d.ts +3 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +235 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/cloud.d.ts +3 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +256 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/db.d.ts +8 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +123 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/deploy-types.d.ts +14 -0
- package/dist/commands/deploy-types.d.ts.map +1 -0
- package/dist/commands/deploy-types.js +38 -0
- package/dist/commands/deploy-types.js.map +1 -0
- package/dist/commands/deploy.d.ts +14 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +295 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +428 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +39 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/engine.d.ts +9 -0
- package/dist/commands/engine.d.ts.map +1 -0
- package/dist/commands/engine.js +99 -0
- package/dist/commands/engine.js.map +1 -0
- package/dist/commands/functions.d.ts +3 -0
- package/dist/commands/functions.d.ts.map +1 -0
- package/dist/commands/functions.js +762 -0
- package/dist/commands/functions.js.map +1 -0
- package/dist/commands/generate.d.ts +3 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +28 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +515 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/keys.d.ts +4 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +57 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/logs.d.ts +6 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +52 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +71 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +431 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/pull.d.ts +3 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +73 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +87 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/seed.d.ts +3 -0
- package/dist/commands/seed.d.ts.map +1 -0
- package/dist/commands/seed.js +22 -0
- package/dist/commands/seed.js.map +1 -0
- package/dist/commands/self-host.d.ts +3 -0
- package/dist/commands/self-host.d.ts.map +1 -0
- package/dist/commands/self-host.js +796 -0
- package/dist/commands/self-host.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +69 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config.d.ts +106 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -0
- package/dist/engine/cache.d.ts +37 -0
- package/dist/engine/cache.d.ts.map +1 -0
- package/dist/engine/cache.js +121 -0
- package/dist/engine/cache.js.map +1 -0
- package/dist/engine/download.d.ts +19 -0
- package/dist/engine/download.d.ts.map +1 -0
- package/dist/engine/download.js +108 -0
- package/dist/engine/download.js.map +1 -0
- package/dist/engine/platform.d.ts +24 -0
- package/dist/engine/platform.d.ts.map +1 -0
- package/dist/engine/platform.js +50 -0
- package/dist/engine/platform.js.map +1 -0
- package/dist/engine/resolve.d.ts +37 -0
- package/dist/engine/resolve.d.ts.map +1 -0
- package/dist/engine/resolve.js +133 -0
- package/dist/engine/resolve.js.map +1 -0
- package/dist/engine/update-notify.d.ts +11 -0
- package/dist/engine/update-notify.d.ts.map +1 -0
- package/dist/engine/update-notify.js +43 -0
- package/dist/engine/update-notify.js.map +1 -0
- package/dist/engine/verify.d.ts +50 -0
- package/dist/engine/verify.d.ts.map +1 -0
- package/dist/engine/verify.js +161 -0
- package/dist/engine/verify.js.map +1 -0
- package/dist/engine-version.d.ts +35 -0
- package/dist/engine-version.d.ts.map +1 -0
- package/dist/engine-version.js +35 -0
- package/dist/engine-version.js.map +1 -0
- package/dist/engine.d.ts +34 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +76 -0
- package/dist/engine.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/jwt.d.ts +3 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +13 -0
- package/dist/jwt.js.map +1 -0
- package/dist/pull-utils.d.ts +16 -0
- package/dist/pull-utils.d.ts.map +1 -0
- package/dist/pull-utils.js +65 -0
- package/dist/pull-utils.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +12 -0
- package/dist/scripts/postinstall.d.ts.map +1 -0
- package/dist/scripts/postinstall.js +31 -0
- package/dist/scripts/postinstall.js.map +1 -0
- package/dist/tsx-runner.d.ts +18 -0
- package/dist/tsx-runner.d.ts.map +1 -0
- package/dist/tsx-runner.js +62 -0
- package/dist/tsx-runner.js.map +1 -0
- package/package.json +36 -0
- package/src/app/framework.ts +249 -0
- package/src/cli.ts +58 -0
- package/src/commands/admin.ts +371 -0
- package/src/commands/app.ts +261 -0
- package/src/commands/cloud.ts +326 -0
- package/src/commands/db.ts +145 -0
- package/src/commands/deploy-types.ts +49 -0
- package/src/commands/deploy.ts +366 -0
- package/src/commands/dev.ts +477 -0
- package/src/commands/diff.ts +61 -0
- package/src/commands/engine.ts +133 -0
- package/src/commands/functions.ts +919 -0
- package/src/commands/generate.ts +31 -0
- package/src/commands/init.ts +532 -0
- package/src/commands/keys.ts +66 -0
- package/src/commands/logs.ts +58 -0
- package/src/commands/migrate.ts +83 -0
- package/src/commands/plugins.ts +508 -0
- package/src/commands/pull.ts +96 -0
- package/src/commands/push.ts +119 -0
- package/src/commands/seed.ts +26 -0
- package/src/commands/self-host.ts +932 -0
- package/src/commands/status.ts +83 -0
- package/src/config.ts +190 -0
- package/src/engine/cache.ts +135 -0
- package/src/engine/download.ts +143 -0
- package/src/engine/platform.ts +66 -0
- package/src/engine/resolve.ts +197 -0
- package/src/engine/update-notify.ts +50 -0
- package/src/engine/verify.ts +206 -0
- package/src/engine-version.ts +39 -0
- package/src/engine.ts +99 -0
- package/src/index.ts +19 -0
- package/src/jwt.ts +14 -0
- package/src/pull-utils.ts +57 -0
- package/src/scripts/postinstall.ts +40 -0
- package/src/tsx-runner.ts +79 -0
- package/tests/cli-help.test.ts +107 -0
- package/tests/config.test.ts +117 -0
- package/tests/engine-distribution.test.ts +418 -0
- package/tests/init.test.ts +184 -0
- package/tests/keys.test.ts +160 -0
- package/tests/pull-utils.test.ts +115 -0
- package/tests/tsx-runner.test.ts +66 -0
- package/tsconfig.json +10 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-host.js","sourceRoot":"","sources":["../../src/commands/self-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuCrD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
export function registerStatus(program) {
|
|
3
|
+
program
|
|
4
|
+
.command("status")
|
|
5
|
+
.description("Show current state of local dev services")
|
|
6
|
+
.action(() => {
|
|
7
|
+
const services = [
|
|
8
|
+
{ name: "Postgres", container: "supatype-postgres", port: 5432 },
|
|
9
|
+
{ name: "PostgREST", container: "supatype-postgrest", port: 3000 },
|
|
10
|
+
{ name: "GoTrue", container: "supatype-gotrue", port: 9999 },
|
|
11
|
+
{ name: "Kong", container: "supatype-kong", port: 8000 },
|
|
12
|
+
{ name: "MinIO", container: "supatype-minio", port: 9000 },
|
|
13
|
+
{ name: "Realtime", container: "supatype-realtime", port: 4000 },
|
|
14
|
+
{ name: "Studio", container: "supatype-studio", port: 3100 },
|
|
15
|
+
].map((svc) => {
|
|
16
|
+
const status = getContainerStatus(svc.container);
|
|
17
|
+
const uptime = getContainerUptime(svc.container);
|
|
18
|
+
return { ...svc, status, ...(uptime !== undefined && { uptime }) };
|
|
19
|
+
});
|
|
20
|
+
console.log("Supatype Local Development Stack\n");
|
|
21
|
+
const maxName = Math.max(...services.map((s) => s.name.length));
|
|
22
|
+
for (const svc of services) {
|
|
23
|
+
const icon = svc.status === "running" ? "●" : svc.status === "stopped" ? "○" : "✕";
|
|
24
|
+
const status = svc.status.padEnd(8);
|
|
25
|
+
const port = svc.port ? `:${svc.port}` : "";
|
|
26
|
+
const uptime = svc.uptime ? ` (${svc.uptime})` : "";
|
|
27
|
+
console.log(` ${icon} ${svc.name.padEnd(maxName)} ${status} ${port}${uptime}`);
|
|
28
|
+
}
|
|
29
|
+
const running = services.filter((s) => s.status === "running");
|
|
30
|
+
console.log(`\n${running.length}/${services.length} services running`);
|
|
31
|
+
if (running.length > 0) {
|
|
32
|
+
console.log(`\nAPI URL: http://localhost:8000`);
|
|
33
|
+
console.log(`Studio: http://localhost:3100`);
|
|
34
|
+
console.log(`Database: postgresql://postgres:postgres@localhost:5432/postgres`);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function getContainerStatus(name) {
|
|
39
|
+
const result = spawnSync("docker", ["inspect", "--format", "{{.State.Status}}", name], {
|
|
40
|
+
timeout: 5000,
|
|
41
|
+
});
|
|
42
|
+
const status = result.stdout?.toString().trim();
|
|
43
|
+
if (status === "running")
|
|
44
|
+
return "running";
|
|
45
|
+
if (result.status !== 0)
|
|
46
|
+
return "stopped";
|
|
47
|
+
return "error";
|
|
48
|
+
}
|
|
49
|
+
function getContainerUptime(name) {
|
|
50
|
+
const result = spawnSync("docker", ["inspect", "--format", "{{.State.StartedAt}}", name], {
|
|
51
|
+
timeout: 5000,
|
|
52
|
+
});
|
|
53
|
+
if (result.status !== 0)
|
|
54
|
+
return undefined;
|
|
55
|
+
const startedAt = result.stdout?.toString().trim();
|
|
56
|
+
if (!startedAt)
|
|
57
|
+
return undefined;
|
|
58
|
+
const started = new Date(startedAt);
|
|
59
|
+
const now = new Date();
|
|
60
|
+
const diffMs = now.getTime() - started.getTime();
|
|
61
|
+
if (diffMs < 0)
|
|
62
|
+
return undefined;
|
|
63
|
+
const hours = Math.floor(diffMs / (1000 * 60 * 60));
|
|
64
|
+
const minutes = Math.floor((diffMs % (1000 * 60 * 60)) / (1000 * 60));
|
|
65
|
+
if (hours > 0)
|
|
66
|
+
return `${hours}h ${minutes}m`;
|
|
67
|
+
return `${minutes}m`;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export interface ServiceVersionPin {
|
|
2
|
+
/** Docker image tag to pin this service to (e.g. "v1.2.3"). When set, `self-host upgrade` skips this service. */
|
|
3
|
+
version: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SelfHostConfig {
|
|
6
|
+
/** Production domain (e.g. "api.example.com"). Used by Caddy for HTTPS. */
|
|
7
|
+
domain: string;
|
|
8
|
+
/** App service to include in the production stack. */
|
|
9
|
+
app?: {
|
|
10
|
+
/** Path to the app's Dockerfile, relative to the project root. */
|
|
11
|
+
dockerfile: string;
|
|
12
|
+
/** Port the app listens on. */
|
|
13
|
+
port: number;
|
|
14
|
+
};
|
|
15
|
+
ssl?: {
|
|
16
|
+
/** SSL provider. "caddy" = automatic Let's Encrypt. "none" = bring your own. */
|
|
17
|
+
provider: "caddy" | "none";
|
|
18
|
+
/** Email for Let's Encrypt registration (required when provider = "caddy"). */
|
|
19
|
+
email?: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Pin specific services to fixed Docker image versions.
|
|
23
|
+
* When a service is pinned, `self-host upgrade` will skip it.
|
|
24
|
+
* Omit a service or set to `undefined` to allow automatic upgrades.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* services: {
|
|
28
|
+
* db: { version: "17-latest" },
|
|
29
|
+
* postgrest: { version: "v12.2.8" },
|
|
30
|
+
* }
|
|
31
|
+
*/
|
|
32
|
+
services?: {
|
|
33
|
+
db?: ServiceVersionPin;
|
|
34
|
+
gotrue?: ServiceVersionPin;
|
|
35
|
+
postgrest?: ServiceVersionPin;
|
|
36
|
+
kong?: ServiceVersionPin;
|
|
37
|
+
caddy?: ServiceVersionPin;
|
|
38
|
+
pgbouncer?: ServiceVersionPin;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export type AppFramework = "nextjs" | "astro" | "vite" | "remix-spa" | "sveltekit" | "nuxt" | "static";
|
|
42
|
+
export interface AppConfig {
|
|
43
|
+
/** Framework name. Auto-detected from package.json if not specified. */
|
|
44
|
+
framework?: AppFramework;
|
|
45
|
+
/** Path to the app directory (default: "./" or "./apps/web" for monorepos). */
|
|
46
|
+
directory?: string;
|
|
47
|
+
/** Build command (inferred from framework if not specified). */
|
|
48
|
+
buildCommand?: string;
|
|
49
|
+
/** Output directory (inferred from framework if not specified). */
|
|
50
|
+
outputDirectory?: string;
|
|
51
|
+
/** Enable SPA fallback routing (default: true for Vite/CRA, false for SSG frameworks). */
|
|
52
|
+
spa?: boolean;
|
|
53
|
+
/** Environment variables to inject during build. */
|
|
54
|
+
env?: Record<string, string>;
|
|
55
|
+
/** Custom response headers for the static site. */
|
|
56
|
+
headers?: Record<string, string>;
|
|
57
|
+
}
|
|
58
|
+
export interface SupatypeConfig {
|
|
59
|
+
/** Database connection string. */
|
|
60
|
+
connection: string;
|
|
61
|
+
/**
|
|
62
|
+
* Path (or glob) to the schema entry point.
|
|
63
|
+
* Must export model definitions as named exports.
|
|
64
|
+
* @example "./schema/index.ts"
|
|
65
|
+
*/
|
|
66
|
+
schema: string;
|
|
67
|
+
output?: {
|
|
68
|
+
/** Path for generated TypeScript types. */
|
|
69
|
+
types?: string;
|
|
70
|
+
/** Path for generated client helpers. */
|
|
71
|
+
client?: string;
|
|
72
|
+
};
|
|
73
|
+
/** Self-hosted production deployment configuration. */
|
|
74
|
+
selfHost?: SelfHostConfig;
|
|
75
|
+
/** Cloud project reference (set by `supatype link --project <ref>`). */
|
|
76
|
+
projectRef?: string;
|
|
77
|
+
/** Cloud API URL override. */
|
|
78
|
+
apiUrl?: string;
|
|
79
|
+
/** Cloud access token (prefer SUPATYPE_ACCESS_TOKEN env var). */
|
|
80
|
+
accessToken?: string;
|
|
81
|
+
/** CORS configuration. */
|
|
82
|
+
cors?: {
|
|
83
|
+
/** Allowed origins. Defaults to ['*'] in development. */
|
|
84
|
+
allowedOrigins?: string[];
|
|
85
|
+
};
|
|
86
|
+
/** Static site hosting configuration. */
|
|
87
|
+
app?: AppConfig;
|
|
88
|
+
/** Registered plugins (provider, field, composite, widget). */
|
|
89
|
+
plugins?: Array<unknown> | undefined;
|
|
90
|
+
/** Admin panel configuration (see Gap Appendices tasks 47–50). */
|
|
91
|
+
admin?: {
|
|
92
|
+
/**
|
|
93
|
+
* Roles from {ref}_auth.users that grant admin panel access.
|
|
94
|
+
* Checked against `app_metadata.role` in the project JWT.
|
|
95
|
+
* @default ["admin"]
|
|
96
|
+
*/
|
|
97
|
+
roles?: string[];
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Identity helper — provides type inference for config files. */
|
|
101
|
+
export declare function defineConfig(config: SupatypeConfig): SupatypeConfig;
|
|
102
|
+
/** Load and evaluate supatype.config.ts from the given directory. */
|
|
103
|
+
export declare function loadConfig(cwd?: string): SupatypeConfig;
|
|
104
|
+
/** Load schema AST by evaluating the user's schema entry point via tsx. */
|
|
105
|
+
export declare function loadSchemaAst(schemaPath: string, cwd?: string): unknown;
|
|
106
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { evalTsSnippet } from "./tsx-runner.js";
|
|
4
|
+
/** Identity helper — provides type inference for config files. */
|
|
5
|
+
export function defineConfig(config) {
|
|
6
|
+
return config;
|
|
7
|
+
}
|
|
8
|
+
const CONFIG_CANDIDATES = [
|
|
9
|
+
"supatype.config.ts",
|
|
10
|
+
"supatype.config.js",
|
|
11
|
+
"supatype.config.mjs",
|
|
12
|
+
];
|
|
13
|
+
/** Load and evaluate supatype.config.ts from the given directory. */
|
|
14
|
+
export function loadConfig(cwd = process.cwd()) {
|
|
15
|
+
for (const candidate of CONFIG_CANDIDATES) {
|
|
16
|
+
const configPath = resolve(cwd, candidate);
|
|
17
|
+
if (!existsSync(configPath))
|
|
18
|
+
continue;
|
|
19
|
+
const urlPath = "file:///" + configPath.replace(/\\/g, "/");
|
|
20
|
+
// Use dynamic import so we can always access .default —
|
|
21
|
+
// files without a parent package.json are treated as CJS by tsx,
|
|
22
|
+
// meaning export default becomes module.exports.default rather than
|
|
23
|
+
// the namespace default. Dynamic import + fallback handles both.
|
|
24
|
+
const snippet = `
|
|
25
|
+
const mod = await import(${JSON.stringify(urlPath)})
|
|
26
|
+
const config = mod.default ?? mod
|
|
27
|
+
process.stdout.write(JSON.stringify(config))
|
|
28
|
+
`;
|
|
29
|
+
const result = evalTsSnippet(snippet, { cwd });
|
|
30
|
+
if (result.exitCode !== 0) {
|
|
31
|
+
throw new Error(`Failed to load ${candidate}:\n${result.stderr || result.stdout}`);
|
|
32
|
+
}
|
|
33
|
+
const parsed = JSON.parse(result.stdout);
|
|
34
|
+
if (!parsed.connection || !parsed.schema) {
|
|
35
|
+
throw new Error(`${candidate} must export { connection, schema } via defineConfig()`);
|
|
36
|
+
}
|
|
37
|
+
return parsed;
|
|
38
|
+
}
|
|
39
|
+
throw new Error("No supatype.config.ts found in the current directory.\n" +
|
|
40
|
+
"Run: supatype init");
|
|
41
|
+
}
|
|
42
|
+
/** Load schema AST by evaluating the user's schema entry point via tsx. */
|
|
43
|
+
export function loadSchemaAst(schemaPath, cwd = process.cwd()) {
|
|
44
|
+
const absPath = resolve(cwd, schemaPath);
|
|
45
|
+
if (!existsSync(absPath)) {
|
|
46
|
+
throw new Error(`Schema file not found: ${absPath}`);
|
|
47
|
+
}
|
|
48
|
+
const urlPath = "file:///" + absPath.replace(/\\/g, "/");
|
|
49
|
+
const snippet = `
|
|
50
|
+
import { serialiseSchema } from "@supatype/schema"
|
|
51
|
+
const mod = await import(${JSON.stringify(urlPath)})
|
|
52
|
+
const { default: _default, ...named } = mod
|
|
53
|
+
const models = Object.fromEntries(
|
|
54
|
+
Object.entries(named).filter(([, v]) =>
|
|
55
|
+
v != null && typeof v === "object" && "__modelMeta" in (v as object)
|
|
56
|
+
)
|
|
57
|
+
)
|
|
58
|
+
process.stdout.write(JSON.stringify(serialiseSchema(models)))
|
|
59
|
+
`;
|
|
60
|
+
const result = evalTsSnippet(snippet, { cwd });
|
|
61
|
+
if (result.exitCode !== 0) {
|
|
62
|
+
throw new Error(`Failed to load schema from ${absPath}:\n${result.stderr || result.stdout}`);
|
|
63
|
+
}
|
|
64
|
+
return JSON.parse(result.stdout);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA0G/C,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,iBAAiB,GAAG;IACxB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;CACtB,CAAA;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACpD,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAQ;QAErC,MAAM,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAE3D,wDAAwD;QACxD,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,MAAM,OAAO,GAAG;2BACO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;CAGjD,CAAA;QACG,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,kBAAkB,SAAS,MAAM,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAClE,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAmB,CAAA;QAC1D,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,wDAAwD,CACrE,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yDAAyD;QACvD,oBAAoB,CACvB,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAExD,MAAM,OAAO,GAAG;;2BAES,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;;;;;;CAQjD,CAAA;IACC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,8BAA8B,OAAO,MAAM,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAC5E,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local cache management for engine binaries.
|
|
3
|
+
* Binaries are stored at ~/.supatype/engine/{version}/supatype-engine[.exe]
|
|
4
|
+
*/
|
|
5
|
+
import type { PlatformInfo } from "./platform.js";
|
|
6
|
+
/**
|
|
7
|
+
* Root cache directory: ~/.supatype/engine/
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCacheDir(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Full path to a cached engine binary for a specific version.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getCachedBinaryPath(version: string, platform: PlatformInfo): string;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a valid cached binary exists for the given version.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasCachedBinary(version: string, platform: PlatformInfo): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Ensure the cache directory for a version exists.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ensureCacheDir(version: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* List all cached engine versions.
|
|
24
|
+
*/
|
|
25
|
+
export declare function listCachedVersions(): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Remove all cached versions except the specified one.
|
|
28
|
+
* Returns the total bytes freed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function pruneCacheExcept(keepVersion: string): {
|
|
31
|
+
removed: string[];
|
|
32
|
+
bytesFreed: number;
|
|
33
|
+
};
|
|
34
|
+
export declare function shouldCheckForUpdates(): Promise<boolean>;
|
|
35
|
+
export declare function saveUpdateCheck(latestVersion: string): Promise<void>;
|
|
36
|
+
export declare function getLastKnownLatestVersion(): Promise<string | undefined>;
|
|
37
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/engine/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAEnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAGhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAQ7C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAc/F;AA6BD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAW9D;AAED,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7E"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local cache management for engine binaries.
|
|
3
|
+
* Binaries are stored at ~/.supatype/engine/{version}/supatype-engine[.exe]
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, mkdirSync, readdirSync, rmSync, statSync } from "node:fs";
|
|
6
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
import { homedir } from "node:os";
|
|
9
|
+
/**
|
|
10
|
+
* Root cache directory: ~/.supatype/engine/
|
|
11
|
+
*/
|
|
12
|
+
export function getCacheDir() {
|
|
13
|
+
return join(homedir(), ".supatype", "engine");
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Full path to a cached engine binary for a specific version.
|
|
17
|
+
*/
|
|
18
|
+
export function getCachedBinaryPath(version, platform) {
|
|
19
|
+
return join(getCacheDir(), version, platform.binaryName);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if a valid cached binary exists for the given version.
|
|
23
|
+
*/
|
|
24
|
+
export function hasCachedBinary(version, platform) {
|
|
25
|
+
const path = getCachedBinaryPath(version, platform);
|
|
26
|
+
return existsSync(path);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Ensure the cache directory for a version exists.
|
|
30
|
+
*/
|
|
31
|
+
export function ensureCacheDir(version) {
|
|
32
|
+
const dir = join(getCacheDir(), version);
|
|
33
|
+
mkdirSync(dir, { recursive: true });
|
|
34
|
+
return dir;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List all cached engine versions.
|
|
38
|
+
*/
|
|
39
|
+
export function listCachedVersions() {
|
|
40
|
+
const cacheDir = getCacheDir();
|
|
41
|
+
if (!existsSync(cacheDir))
|
|
42
|
+
return [];
|
|
43
|
+
return readdirSync(cacheDir, { withFileTypes: true })
|
|
44
|
+
.filter((d) => d.isDirectory())
|
|
45
|
+
.map((d) => d.name)
|
|
46
|
+
.sort();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Remove all cached versions except the specified one.
|
|
50
|
+
* Returns the total bytes freed.
|
|
51
|
+
*/
|
|
52
|
+
export function pruneCacheExcept(keepVersion) {
|
|
53
|
+
const versions = listCachedVersions();
|
|
54
|
+
const removed = [];
|
|
55
|
+
let bytesFreed = 0;
|
|
56
|
+
for (const version of versions) {
|
|
57
|
+
if (version === keepVersion)
|
|
58
|
+
continue;
|
|
59
|
+
const versionDir = join(getCacheDir(), version);
|
|
60
|
+
bytesFreed += getDirSize(versionDir);
|
|
61
|
+
rmSync(versionDir, { recursive: true, force: true });
|
|
62
|
+
removed.push(version);
|
|
63
|
+
}
|
|
64
|
+
return { removed, bytesFreed };
|
|
65
|
+
}
|
|
66
|
+
function getDirSize(dir) {
|
|
67
|
+
let size = 0;
|
|
68
|
+
if (!existsSync(dir))
|
|
69
|
+
return size;
|
|
70
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
71
|
+
const path = join(dir, entry.name);
|
|
72
|
+
if (entry.isFile()) {
|
|
73
|
+
size += statSync(path).size;
|
|
74
|
+
}
|
|
75
|
+
else if (entry.isDirectory()) {
|
|
76
|
+
size += getDirSize(path);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return size;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Update check throttling.
|
|
83
|
+
* Stores last check timestamp in ~/.supatype/update-check.json
|
|
84
|
+
*/
|
|
85
|
+
const UPDATE_CHECK_FILE = join(homedir(), ".supatype", "update-check.json");
|
|
86
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
87
|
+
export async function shouldCheckForUpdates() {
|
|
88
|
+
// Skip in CI environments
|
|
89
|
+
if (process.env.CI === "true" || process.env.CI === "1")
|
|
90
|
+
return false;
|
|
91
|
+
try {
|
|
92
|
+
if (!existsSync(UPDATE_CHECK_FILE))
|
|
93
|
+
return true;
|
|
94
|
+
const data = JSON.parse(await readFile(UPDATE_CHECK_FILE, "utf8"));
|
|
95
|
+
return Date.now() - data.lastCheck > CHECK_INTERVAL_MS;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export async function saveUpdateCheck(latestVersion) {
|
|
102
|
+
const dir = join(homedir(), ".supatype");
|
|
103
|
+
mkdirSync(dir, { recursive: true });
|
|
104
|
+
const data = {
|
|
105
|
+
lastCheck: Date.now(),
|
|
106
|
+
latestVersion,
|
|
107
|
+
};
|
|
108
|
+
await writeFile(UPDATE_CHECK_FILE, JSON.stringify(data, null, 2));
|
|
109
|
+
}
|
|
110
|
+
export async function getLastKnownLatestVersion() {
|
|
111
|
+
try {
|
|
112
|
+
if (!existsSync(UPDATE_CHECK_FILE))
|
|
113
|
+
return undefined;
|
|
114
|
+
const data = JSON.parse(await readFile(UPDATE_CHECK_FILE, "utf8"));
|
|
115
|
+
return data.latestVersion;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/engine/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine binary download with progress bar, retry, and proxy support.
|
|
3
|
+
*/
|
|
4
|
+
export interface DownloadOptions {
|
|
5
|
+
url: string;
|
|
6
|
+
dest: string;
|
|
7
|
+
showProgress?: boolean;
|
|
8
|
+
label?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Download a file with retry and optional progress bar.
|
|
12
|
+
* Respects HTTP_PROXY / HTTPS_PROXY environment variables.
|
|
13
|
+
*/
|
|
14
|
+
export declare function downloadFile(options: DownloadOptions): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Fetch a JSON file from a URL. Returns undefined on failure.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fetchJson<T>(url: string): Promise<T | undefined>;
|
|
19
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/engine/download.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAKD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB1E;AAsFD;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAQtE"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine binary download with progress bar, retry, and proxy support.
|
|
3
|
+
*/
|
|
4
|
+
import { createWriteStream } from "node:fs";
|
|
5
|
+
import { Readable } from "node:stream";
|
|
6
|
+
import { pipeline } from "node:stream/promises";
|
|
7
|
+
const MAX_RETRIES = 3;
|
|
8
|
+
const RETRY_DELAYS = [1000, 3000, 10000];
|
|
9
|
+
/**
|
|
10
|
+
* Download a file with retry and optional progress bar.
|
|
11
|
+
* Respects HTTP_PROXY / HTTPS_PROXY environment variables.
|
|
12
|
+
*/
|
|
13
|
+
export async function downloadFile(options) {
|
|
14
|
+
const { url, dest, showProgress = false, label } = options;
|
|
15
|
+
let lastError;
|
|
16
|
+
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
17
|
+
try {
|
|
18
|
+
await doDownload(url, dest, showProgress, label);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
23
|
+
if (attempt < MAX_RETRIES - 1) {
|
|
24
|
+
const delay = RETRY_DELAYS[attempt];
|
|
25
|
+
process.stderr.write(`Download failed. Retrying (${attempt + 2}/${MAX_RETRIES})...\n`);
|
|
26
|
+
await sleep(delay);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
throw new Error(`Failed to download after ${MAX_RETRIES} attempts: ${lastError?.message}`);
|
|
31
|
+
}
|
|
32
|
+
async function doDownload(url, dest, showProgress, label) {
|
|
33
|
+
const fetchOptions = buildFetchOptions(url);
|
|
34
|
+
const res = await fetch(url, fetchOptions);
|
|
35
|
+
if (!res.ok) {
|
|
36
|
+
throw new Error(`HTTP ${res.status} ${res.statusText}: ${url}`);
|
|
37
|
+
}
|
|
38
|
+
if (!res.body) {
|
|
39
|
+
throw new Error(`No response body: ${url}`);
|
|
40
|
+
}
|
|
41
|
+
const contentLength = Number(res.headers.get("content-length") || 0);
|
|
42
|
+
const out = createWriteStream(dest);
|
|
43
|
+
if (showProgress && contentLength > 0 && process.stderr.isTTY) {
|
|
44
|
+
const progressStream = createProgressStream(contentLength, label);
|
|
45
|
+
await pipeline(Readable.fromWeb(res.body), progressStream, out);
|
|
46
|
+
// Clear the progress line
|
|
47
|
+
process.stderr.write("\n");
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (showProgress && label) {
|
|
51
|
+
process.stderr.write(`${label}...\n`);
|
|
52
|
+
}
|
|
53
|
+
await pipeline(Readable.fromWeb(res.body), out);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Build fetch options respecting proxy env vars.
|
|
58
|
+
*/
|
|
59
|
+
function buildFetchOptions(url) {
|
|
60
|
+
const opts = {};
|
|
61
|
+
// Node.js 18+ fetch supports the proxy via undici dispatcher.
|
|
62
|
+
// For simplicity, we rely on the global-agent or undici proxy support.
|
|
63
|
+
// The user should set HTTPS_PROXY or HTTP_PROXY env vars.
|
|
64
|
+
// Node.js 22+ automatically respects these in fetch().
|
|
65
|
+
//
|
|
66
|
+
// For older Node.js, users can install global-agent or similar.
|
|
67
|
+
return opts;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Creates a Transform stream that logs download progress to stderr.
|
|
71
|
+
*/
|
|
72
|
+
function createProgressStream(totalBytes, label) {
|
|
73
|
+
const { Transform } = require("node:stream");
|
|
74
|
+
let downloaded = 0;
|
|
75
|
+
return new Transform({
|
|
76
|
+
transform(chunk, _encoding, callback) {
|
|
77
|
+
downloaded += chunk.length;
|
|
78
|
+
const percent = Math.round((downloaded / totalBytes) * 100);
|
|
79
|
+
const mb = (downloaded / (1024 * 1024)).toFixed(1);
|
|
80
|
+
const totalMb = (totalBytes / (1024 * 1024)).toFixed(1);
|
|
81
|
+
const barWidth = 30;
|
|
82
|
+
const filled = Math.round((percent / 100) * barWidth);
|
|
83
|
+
const bar = "=".repeat(filled) + " ".repeat(barWidth - filled);
|
|
84
|
+
const prefix = label || "Downloading";
|
|
85
|
+
process.stderr.write(`\r${prefix} ${mb}MB/${totalMb}MB [${bar}] ${percent}%`);
|
|
86
|
+
this.push(chunk);
|
|
87
|
+
callback();
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function sleep(ms) {
|
|
92
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Fetch a JSON file from a URL. Returns undefined on failure.
|
|
96
|
+
*/
|
|
97
|
+
export async function fetchJson(url) {
|
|
98
|
+
try {
|
|
99
|
+
const res = await fetch(url);
|
|
100
|
+
if (!res.ok)
|
|
101
|
+
return undefined;
|
|
102
|
+
return (await res.json());
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/engine/download.ts"],"names":[],"mappings":"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"}
|