tthr 0.3.22 → 0.3.24
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.
|
@@ -87,23 +87,31 @@ async function resolveEnvironmentFromApiKey(cwd = process.cwd()) {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
var DEFAULT_API_URL = "https://api.tetherdb.co.uk";
|
|
90
|
+
function normaliseApiBase(raw) {
|
|
91
|
+
const trimmed = raw.trim().replace(/\/+$/, "");
|
|
92
|
+
try {
|
|
93
|
+
return new URL(trimmed).origin;
|
|
94
|
+
} catch {
|
|
95
|
+
return trimmed;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
90
98
|
function getApiUrl(config) {
|
|
91
99
|
if (process.env.TETHER_API_URL) {
|
|
92
|
-
return process.env.TETHER_API_URL
|
|
100
|
+
return normaliseApiBase(process.env.TETHER_API_URL);
|
|
93
101
|
}
|
|
94
102
|
if (config?.url) {
|
|
95
|
-
return config.url
|
|
103
|
+
return normaliseApiBase(config.url);
|
|
96
104
|
}
|
|
97
105
|
const isDev = process.env.NODE_ENV === "development" || process.env.TETHER_DEV === "true";
|
|
98
106
|
return isDev ? "http://localhost:3001" : DEFAULT_API_URL;
|
|
99
107
|
}
|
|
100
108
|
async function resolveApiUrl(config) {
|
|
101
109
|
if (process.env.TETHER_API_URL) {
|
|
102
|
-
return process.env.TETHER_API_URL
|
|
110
|
+
return normaliseApiBase(process.env.TETHER_API_URL);
|
|
103
111
|
}
|
|
104
112
|
const resolved = config ?? await loadConfig();
|
|
105
113
|
if (resolved?.url) {
|
|
106
|
-
return resolved.url
|
|
114
|
+
return normaliseApiBase(resolved.url);
|
|
107
115
|
}
|
|
108
116
|
const isDev = process.env.NODE_ENV === "development" || process.env.TETHER_DEV === "true";
|
|
109
117
|
return isDev ? "http://localhost:3001" : DEFAULT_API_URL;
|
|
@@ -233,6 +241,19 @@ async function clearCredentials() {
|
|
|
233
241
|
}
|
|
234
242
|
|
|
235
243
|
// src/commands/generate.ts
|
|
244
|
+
function stripTimestamp(source) {
|
|
245
|
+
return source.replace(/^\/\/ Generated at: .*$\n?/m, "");
|
|
246
|
+
}
|
|
247
|
+
async function writeIfChanged(filePath, content) {
|
|
248
|
+
if (await fs3.pathExists(filePath)) {
|
|
249
|
+
const existing = await fs3.readFile(filePath, "utf-8");
|
|
250
|
+
if (stripTimestamp(existing) === stripTimestamp(content)) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
await fs3.writeFile(filePath, content);
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
236
257
|
function parseSchemaFile(source) {
|
|
237
258
|
const tables = [];
|
|
238
259
|
const schemaMatch = source.match(/defineSchema\s*\(\s*\{([\s\S]*)\}\s*\)/);
|
|
@@ -651,19 +672,19 @@ async function generateTypes(options = {}) {
|
|
|
651
672
|
const apiUrl = `${await resolveApiUrl(config)}/api/v1`;
|
|
652
673
|
const envVarKeys = projectId ? await fetchEnvVarKeys(projectId, environment, apiUrl) : [];
|
|
653
674
|
await fs3.ensureDir(outputDir);
|
|
654
|
-
await
|
|
675
|
+
await writeIfChanged(
|
|
655
676
|
path3.join(outputDir, "db.ts"),
|
|
656
677
|
generateDbFile(tables, schemaSource)
|
|
657
678
|
);
|
|
658
|
-
await
|
|
679
|
+
await writeIfChanged(
|
|
659
680
|
path3.join(outputDir, "api.ts"),
|
|
660
681
|
await generateApiFile(functionsDir)
|
|
661
682
|
);
|
|
662
|
-
await
|
|
683
|
+
await writeIfChanged(
|
|
663
684
|
path3.join(outputDir, "env.ts"),
|
|
664
685
|
generateEnvFile(envVarKeys)
|
|
665
686
|
);
|
|
666
|
-
await
|
|
687
|
+
await writeIfChanged(
|
|
667
688
|
path3.join(outputDir, "index.ts"),
|
|
668
689
|
`// Auto-generated by Tether CLI - do not edit manually
|
|
669
690
|
export * from './db';
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
resolveEnvironmentFromApiKey,
|
|
14
14
|
resolvePath,
|
|
15
15
|
saveCredentials
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-4X6M7K3X.js";
|
|
17
17
|
|
|
18
18
|
// src/index.ts
|
|
19
19
|
import { Command } from "commander";
|
|
@@ -1754,7 +1754,7 @@ async function runGenerate(spinner) {
|
|
|
1754
1754
|
}
|
|
1755
1755
|
isGenerating = true;
|
|
1756
1756
|
try {
|
|
1757
|
-
const { generateTypes: generateTypes2 } = await import("./generate-
|
|
1757
|
+
const { generateTypes: generateTypes2 } = await import("./generate-VX2WJHYQ.js");
|
|
1758
1758
|
spinner.text = "Regenerating types...";
|
|
1759
1759
|
await generateTypes2({ silent: true });
|
|
1760
1760
|
spinner.succeed("Types regenerated");
|
|
@@ -2026,7 +2026,7 @@ async function devCommand(options) {
|
|
|
2026
2026
|
}
|
|
2027
2027
|
}
|
|
2028
2028
|
spinner.text = "Generating types...";
|
|
2029
|
-
const { generateTypes: generateTypes2 } = await import("./generate-
|
|
2029
|
+
const { generateTypes: generateTypes2 } = await import("./generate-VX2WJHYQ.js");
|
|
2030
2030
|
await generateTypes2({ silent: true });
|
|
2031
2031
|
spinner.succeed("Types generated");
|
|
2032
2032
|
if (config.projectId) {
|