transloadit 4.8.0 → 4.8.1

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,19 +1,241 @@
1
1
  import fs from 'node:fs';
2
2
  import fsp from 'node:fs/promises';
3
+ import { homedir } from 'node:os';
4
+ import path from 'node:path';
5
+ import { parse as parseDotenv } from 'dotenv';
3
6
  import { isAPIError } from "./types.js";
4
- const MISSING_CREDENTIALS_MESSAGE = 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.';
5
- function getEnvCredentials() {
6
- const authKey = process.env.TRANSLOADIT_KEY ?? process.env.TRANSLOADIT_AUTH_KEY;
7
- const authSecret = process.env.TRANSLOADIT_SECRET ?? process.env.TRANSLOADIT_AUTH_SECRET;
8
- if (!authKey || !authSecret)
7
+ let loadedProjectDotenvPath;
8
+ let projectDotenvInjectedValues;
9
+ let projectDotenvPreviousValues;
10
+ let shellEnvBeforeProjectDotenv;
11
+ function normalizeEnvValue(value) {
12
+ const trimmed = value?.trim();
13
+ return trimmed ? trimmed : undefined;
14
+ }
15
+ function getConfiguredCredentialsFilePath() {
16
+ const configuredPath = normalizeEnvValue(process.env.TRANSLOADIT_CREDENTIALS_FILE);
17
+ if (configuredPath != null) {
18
+ return path.resolve(configuredPath);
19
+ }
20
+ return path.join(homedir(), '.transloadit', 'credentials');
21
+ }
22
+ function getProjectDotenvPath() {
23
+ return path.resolve(process.cwd(), '.env');
24
+ }
25
+ function getDisplayPath(filePath) {
26
+ const normalizedHome = path.resolve(homedir());
27
+ const normalizedFilePath = path.resolve(filePath);
28
+ if (normalizedFilePath === normalizedHome)
29
+ return '~';
30
+ if (normalizedFilePath.startsWith(`${normalizedHome}${path.sep}`)) {
31
+ return `~${normalizedFilePath.slice(normalizedHome.length)}`;
32
+ }
33
+ return normalizedFilePath;
34
+ }
35
+ export function buildMissingCredentialsMessage() {
36
+ return [
37
+ 'Missing credentials.',
38
+ '',
39
+ 'Looked for TRANSLOADIT_KEY + TRANSLOADIT_SECRET in this order:',
40
+ '1. Shell env: TRANSLOADIT_KEY / TRANSLOADIT_SECRET',
41
+ `2. Current directory .env: ${getProjectDotenvPath()}`,
42
+ `3. Credentials file: ${getDisplayPath(getConfiguredCredentialsFilePath())}`,
43
+ ].join('\n');
44
+ }
45
+ export function buildMissingAuthMessage() {
46
+ return [
47
+ 'Missing authentication.',
48
+ '',
49
+ 'Looked for TRANSLOADIT_AUTH_TOKEN or TRANSLOADIT_KEY + TRANSLOADIT_SECRET in this order:',
50
+ '1. Shell env: TRANSLOADIT_AUTH_TOKEN, or TRANSLOADIT_KEY / TRANSLOADIT_SECRET',
51
+ `2. Current directory .env: ${getProjectDotenvPath()}`,
52
+ `3. Credentials file: ${getDisplayPath(getConfiguredCredentialsFilePath())}`,
53
+ ].join('\n');
54
+ }
55
+ function readEnvFile(filePath) {
56
+ if (!fs.existsSync(filePath))
9
57
  return null;
58
+ try {
59
+ return {
60
+ ok: true,
61
+ source: {
62
+ name: 'credentialsFile',
63
+ values: parseDotenv(fs.readFileSync(filePath)),
64
+ },
65
+ };
66
+ }
67
+ catch (err) {
68
+ if (!(err instanceof Error)) {
69
+ throw new Error(`Was thrown a non-error: ${err}`);
70
+ }
71
+ return { ok: false, error: `Failed to read ${filePath}: ${err.message}` };
72
+ }
73
+ }
74
+ export function loadProjectDotenvIntoProcessEnv() {
75
+ const projectDotenvPath = getProjectDotenvPath();
76
+ if (loadedProjectDotenvPath !== projectDotenvPath) {
77
+ restoreProjectDotenvFromProcessEnv();
78
+ shellEnvBeforeProjectDotenv = { ...process.env };
79
+ loadedProjectDotenvPath = projectDotenvPath;
80
+ }
81
+ const projectDotenvResult = readEnvFile(projectDotenvPath);
82
+ if (projectDotenvResult == null) {
83
+ restoreProjectDotenvFromProcessEnv();
84
+ projectDotenvInjectedValues = undefined;
85
+ projectDotenvPreviousValues = undefined;
86
+ return undefined;
87
+ }
88
+ if (!projectDotenvResult.ok)
89
+ return projectDotenvResult.error;
90
+ if (projectDotenvInjectedValues != null)
91
+ return undefined;
92
+ const previousValues = {};
93
+ const injectedValues = {};
94
+ for (const [key, value] of Object.entries(projectDotenvResult.source.values)) {
95
+ if (value == null)
96
+ continue;
97
+ if (normalizeEnvValue(process.env[key]) != null)
98
+ continue;
99
+ previousValues[key] = process.env[key];
100
+ process.env[key] = value;
101
+ injectedValues[key] = value;
102
+ }
103
+ projectDotenvPreviousValues = previousValues;
104
+ projectDotenvInjectedValues = injectedValues;
105
+ return undefined;
106
+ }
107
+ function getShellEnvValues() {
108
+ if (loadedProjectDotenvPath === getProjectDotenvPath() && shellEnvBeforeProjectDotenv != null) {
109
+ return shellEnvBeforeProjectDotenv;
110
+ }
111
+ return { ...process.env };
112
+ }
113
+ function restoreProjectDotenvFromProcessEnv() {
114
+ if (projectDotenvInjectedValues == null || projectDotenvPreviousValues == null)
115
+ return;
116
+ for (const [key, injectedValue] of Object.entries(projectDotenvInjectedValues)) {
117
+ if (process.env[key] !== injectedValue)
118
+ continue;
119
+ const previousValue = projectDotenvPreviousValues[key];
120
+ if (previousValue == null) {
121
+ delete process.env[key];
122
+ continue;
123
+ }
124
+ process.env[key] = previousValue;
125
+ }
126
+ projectDotenvInjectedValues = undefined;
127
+ projectDotenvPreviousValues = undefined;
128
+ }
129
+ function loadCliEnvSources() {
130
+ const shellEnvSource = {
131
+ name: 'env',
132
+ values: getShellEnvValues(),
133
+ };
134
+ const loadErrors = [];
135
+ const projectDotenvLoadError = loadProjectDotenvIntoProcessEnv();
136
+ if (projectDotenvLoadError != null) {
137
+ loadErrors.push(projectDotenvLoadError);
138
+ }
139
+ const sources = [
140
+ {
141
+ name: 'env',
142
+ values: { ...process.env },
143
+ },
144
+ ];
145
+ const credentialsFilePath = getConfiguredCredentialsFilePath();
146
+ const credentialsFileResult = readEnvFile(credentialsFilePath);
147
+ if (credentialsFileResult?.ok === true) {
148
+ sources.push(credentialsFileResult.source);
149
+ }
150
+ else if (credentialsFileResult?.ok === false) {
151
+ loadErrors.push(credentialsFileResult.error);
152
+ }
153
+ else if (normalizeEnvValue(process.env.TRANSLOADIT_CREDENTIALS_FILE) != null) {
154
+ loadErrors.push(`Configured credentials file does not exist: ${credentialsFilePath}`);
155
+ }
156
+ return {
157
+ shellEnvSource,
158
+ sources,
159
+ ...(loadErrors[0] ? { loadError: loadErrors[0] } : {}),
160
+ };
161
+ }
162
+ function getSourceValue(source, keys) {
163
+ for (const key of keys) {
164
+ const value = normalizeEnvValue(source.values[key]);
165
+ if (value != null)
166
+ return value;
167
+ }
168
+ return undefined;
169
+ }
170
+ function getSourceCredentials(source) {
171
+ const authKey = getSourceValue(source, ['TRANSLOADIT_KEY', 'TRANSLOADIT_AUTH_KEY']);
172
+ const authSecret = getSourceValue(source, ['TRANSLOADIT_SECRET', 'TRANSLOADIT_AUTH_SECRET']);
173
+ if (authKey == null || authSecret == null)
174
+ return undefined;
10
175
  return { authKey, authSecret };
11
176
  }
12
- export function requireEnvCredentials() {
13
- const credentials = getEnvCredentials();
14
- if (credentials == null)
15
- return { ok: false, error: MISSING_CREDENTIALS_MESSAGE };
16
- return { ok: true, credentials };
177
+ function getSourceAuthToken(source) {
178
+ const authToken = getSourceValue(source, ['TRANSLOADIT_AUTH_TOKEN']);
179
+ if (authToken == null)
180
+ return undefined;
181
+ return { authToken };
182
+ }
183
+ function resolveEndpointForSource(source, shellEnvSource) {
184
+ const shellEndpoint = getSourceValue(shellEnvSource, ['TRANSLOADIT_ENDPOINT']);
185
+ if (shellEndpoint != null)
186
+ return shellEndpoint;
187
+ if (source == null)
188
+ return undefined;
189
+ return getSourceValue(source, ['TRANSLOADIT_ENDPOINT']);
190
+ }
191
+ export function resolveCliConfig() {
192
+ const { loadError, shellEnvSource, sources } = loadCliEnvSources();
193
+ let auth;
194
+ let authSource;
195
+ let credentials;
196
+ let credentialsSource;
197
+ for (const source of sources) {
198
+ if (auth == null) {
199
+ const authToken = getSourceAuthToken(source);
200
+ if (authToken != null) {
201
+ auth = authToken;
202
+ authSource = source;
203
+ }
204
+ else {
205
+ const sourceCredentials = getSourceCredentials(source);
206
+ if (sourceCredentials != null) {
207
+ auth = sourceCredentials;
208
+ authSource = source;
209
+ }
210
+ }
211
+ }
212
+ if (credentials != null)
213
+ continue;
214
+ const sourceCredentials = getSourceCredentials(source);
215
+ if (sourceCredentials != null) {
216
+ credentials = sourceCredentials;
217
+ credentialsSource = source;
218
+ }
219
+ }
220
+ return {
221
+ ...(auth != null ? { auth } : {}),
222
+ ...(credentials != null ? { credentials } : {}),
223
+ ...(authSource != null
224
+ ? { endpoint: resolveEndpointForSource(authSource, shellEnvSource) }
225
+ : {}),
226
+ ...(credentialsSource != null
227
+ ? { credentialsEndpoint: resolveEndpointForSource(credentialsSource, shellEnvSource) }
228
+ : {}),
229
+ ...(loadError != null ? { loadError } : {}),
230
+ };
231
+ }
232
+ export function requireCliCredentials() {
233
+ const { credentials, loadError } = resolveCliConfig();
234
+ if (credentials != null)
235
+ return { ok: true, credentials };
236
+ if (loadError != null)
237
+ return { ok: false, error: loadError };
238
+ return { ok: false, error: buildMissingCredentialsMessage() };
17
239
  }
18
240
  export function createReadStream(file) {
19
241
  if (file === '-')
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,GAAG,MAAM,kBAAkB,CAAA;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,2BAA2B,GAC/B,+FAA+F,CAAA;AAIjG,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAA;IAExF,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAExC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AAChC,CAAC;AAMD,MAAM,UAAU,qBAAqB;IACnC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA;IACvC,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAA;IACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC,KAAK,CAAA;IACtC,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAgB;IACnD,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAElC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,GAAG,EAAE,CAAA;IAEb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,IAAI,KAAK,CAAA;IACf,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC1E,MAAM,cAAc,GAAG,aAAa,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,GAAG,CAAC,CAAA;IAExF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,KAAK,GAAG,IAAI,SAAS,IAAI,IAAI,EAAE,CAAA;IACpF,CAAC;IAED,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACtD,CAAC;IAED,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IACrD,CAAC;IAED,IAAI,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACtD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAA;IACvC,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAA;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC;AAQD,MAAM,UAAU,GAAG,CAAI,GAAG,KAAY;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAM,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import 'dotenv/config';
3
2
  export declare function shouldRunCli(invoked?: string): boolean;
4
3
  export declare function main(args?: string[]): Promise<void>;
5
4
  export declare function runCliWhenExecuted(): Promise<void>;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,eAAe,CAAA;AAetB,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOxD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAoBA,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOxD"}
package/dist/cli.js CHANGED
@@ -3,8 +3,7 @@ import { realpathSync } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import process from 'node:process';
5
5
  import { fileURLToPath } from 'node:url';
6
- import 'dotenv/config';
7
- import { createCli } from "./cli/commands/index.js";
6
+ import { loadProjectDotenvIntoProcessEnv } from "./cli/helpers.js";
8
7
  import { ensureError } from "./cli/types.js";
9
8
  const currentFile = realpathSync(fileURLToPath(import.meta.url));
10
9
  function resolveInvokedPath(invoked) {
@@ -24,6 +23,8 @@ export function shouldRunCli(invoked) {
24
23
  return resolved === currentFile;
25
24
  }
26
25
  export async function main(args = process.argv.slice(2)) {
26
+ loadProjectDotenvIntoProcessEnv();
27
+ const { createCli } = await import("./cli/commands/index.js");
27
28
  const cli = createCli();
28
29
  const exitCode = await cli.run(args);
29
30
  if (exitCode !== 0) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAEhE,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,QAAQ,KAAK,WAAW,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAA;IACvB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAM;IAE1C,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;QACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAEhE,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,QAAQ,KAAK,WAAW,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,+BAA+B,EAAE,CAAA;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAG,SAAS,EAAE,CAAA;IACvB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAM;IAE1C,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAA;QACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,kBAAkB,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transloadit",
3
- "version": "4.8.0",
3
+ "version": "4.8.1",
4
4
  "description": "Node.js SDK for Transloadit",
5
5
  "homepage": "https://github.com/transloadit/node-sdk/tree/main/packages/node",
6
6
  "bugs": {
@@ -10,6 +10,7 @@ export type BearerTokenResponse = {
10
10
  }
11
11
 
12
12
  export type MintBearerTokenOptions = {
13
+ allowProcessEnvEndpointFallback?: boolean
13
14
  endpoint?: string
14
15
  aud?: BearerTokenAudience | string
15
16
  /**
@@ -49,8 +50,15 @@ const isLoopbackHost = (hostname: string): boolean =>
49
50
 
50
51
  type TokenBaseResult = { ok: true; baseUrl: URL } | { ok: false; error: string }
51
52
 
52
- const normalizeTokenBaseEndpoint = (raw?: string): TokenBaseResult => {
53
- const baseRaw = (raw || process.env.TRANSLOADIT_ENDPOINT || 'https://api2.transloadit.com').trim()
53
+ const normalizeTokenBaseEndpoint = (
54
+ raw?: string,
55
+ allowProcessEnvEndpointFallback = true,
56
+ ): TokenBaseResult => {
57
+ const baseRaw = (
58
+ raw ||
59
+ (allowProcessEnvEndpointFallback ? process.env.TRANSLOADIT_ENDPOINT : undefined) ||
60
+ 'https://api2.transloadit.com'
61
+ ).trim()
54
62
 
55
63
  let url: URL
56
64
  try {
@@ -118,7 +126,10 @@ export async function mintBearerTokenWithCredentials(
118
126
  credentials: { authKey: string; authSecret: string },
119
127
  options: MintBearerTokenOptions = {},
120
128
  ): Promise<MintBearerTokenResult> {
121
- const endpointResult = normalizeTokenBaseEndpoint(options.endpoint)
129
+ const endpointResult = normalizeTokenBaseEndpoint(
130
+ options.endpoint,
131
+ options.allowProcessEnvEndpointFallback,
132
+ )
122
133
  if (!endpointResult.ok) {
123
134
  return { ok: false, error: endpointResult.error }
124
135
  }
@@ -1,8 +1,6 @@
1
- import 'dotenv/config'
2
- import process from 'node:process'
3
1
  import { Command, Option } from 'clipanion'
4
2
  import { Transloadit as TransloaditClient } from '../../Transloadit.ts'
5
- import { requireEnvCredentials } from '../helpers.ts'
3
+ import { buildMissingAuthMessage, resolveCliConfig } from '../helpers.ts'
6
4
  import type { IOutputCtl } from '../OutputCtl.ts'
7
5
  import OutputCtl, { LOG_LEVEL_DEFAULT, LOG_LEVEL_NAMES, parseLogLevel } from '../OutputCtl.ts'
8
6
 
@@ -17,7 +15,7 @@ abstract class BaseCommand extends Command {
17
15
 
18
16
  endpoint = Option.String('--endpoint', {
19
17
  description:
20
- 'API endpoint URL (default: https://api2.transloadit.com, or TRANSLOADIT_ENDPOINT env var)',
18
+ 'API endpoint URL (default: https://api2.transloadit.com, or TRANSLOADIT_ENDPOINT from the environment, .env, or ~/.transloadit/credentials)',
21
19
  })
22
20
 
23
21
  protected output!: IOutputCtl
@@ -32,16 +30,16 @@ abstract class BaseCommand extends Command {
32
30
  }
33
31
 
34
32
  protected setupClient(): boolean {
35
- const credsResult = requireEnvCredentials()
36
- if (!credsResult.ok) {
37
- this.output.error(credsResult.error)
33
+ const config = resolveCliConfig()
34
+ if (config.auth == null) {
35
+ this.output.error(config.loadError ?? buildMissingAuthMessage())
38
36
  return false
39
37
  }
40
38
 
41
- const endpoint = this.endpoint || process.env.TRANSLOADIT_ENDPOINT
39
+ const endpoint = this.endpoint || config.endpoint
42
40
 
43
41
  this.client = new TransloaditClient({
44
- ...credsResult.credentials,
42
+ ...config.auth,
45
43
  ...(endpoint && { endpoint }),
46
44
  })
47
45
  return true
@@ -9,7 +9,14 @@ import {
9
9
  import type { OptionalAuthParams } from '../../apiTypes.ts'
10
10
  import { mintBearerTokenWithCredentials } from '../../bearerToken.ts'
11
11
  import { Transloadit } from '../../Transloadit.ts'
12
- import { readCliInput, requireEnvCredentials } from '../helpers.ts'
12
+ import type { CliKeySecretCredentials, ResolvedCliConfig } from '../helpers.ts'
13
+ import {
14
+ buildMissingCredentialsMessage,
15
+ readCliInput,
16
+ requireCliCredentials,
17
+ resolveCliConfig,
18
+ } from '../helpers.ts'
19
+ import type { IOutputCtl } from '../OutputCtl.ts'
13
20
  import { UnauthenticatedCommand } from './BaseCommand.ts'
14
21
 
15
22
  type UrlParamPrimitive = string | number | boolean
@@ -195,14 +202,49 @@ export interface RunSmartSigOptions {
195
202
  providedInput?: string
196
203
  }
197
204
 
198
- export async function runSig(options: RunSigOptions = {}): Promise<void> {
199
- const credentialsResult = requireEnvCredentials()
205
+ function reportStandaloneCredentialsError(error: string): null {
206
+ console.error(error)
207
+ process.exitCode = 1
208
+ return null
209
+ }
210
+
211
+ function getStandaloneCredentials(): CliKeySecretCredentials | null {
212
+ const credentialsResult = requireCliCredentials()
200
213
  if (!credentialsResult.ok) {
201
- console.error(credentialsResult.error)
202
- process.exitCode = 1
214
+ return reportStandaloneCredentialsError(credentialsResult.error)
215
+ }
216
+
217
+ return credentialsResult.credentials
218
+ }
219
+
220
+ function getCommandCredentials(output: IOutputCtl): CliKeySecretCredentials | null {
221
+ const credentialsResult = requireCliCredentials()
222
+ if (!credentialsResult.ok) {
223
+ output.error(credentialsResult.error)
224
+ return null
225
+ }
226
+
227
+ return credentialsResult.credentials
228
+ }
229
+
230
+ function getCommandConfigWithCredentials(output: IOutputCtl): {
231
+ config: ResolvedCliConfig
232
+ credentials: CliKeySecretCredentials
233
+ } | null {
234
+ const config = resolveCliConfig()
235
+ if (config.credentials == null) {
236
+ output.error(config.loadError ?? buildMissingCredentialsMessage())
237
+ return null
238
+ }
239
+
240
+ return { config, credentials: config.credentials }
241
+ }
242
+
243
+ export async function runSig(options: RunSigOptions = {}): Promise<void> {
244
+ const credentials = getStandaloneCredentials()
245
+ if (credentials == null) {
203
246
  return
204
247
  }
205
- const credentials = credentialsResult.credentials
206
248
 
207
249
  const { content } = await readCliInput({
208
250
  providedInput: options.providedInput,
@@ -220,13 +262,10 @@ export async function runSig(options: RunSigOptions = {}): Promise<void> {
220
262
  }
221
263
 
222
264
  export async function runSmartSig(options: RunSmartSigOptions = {}): Promise<void> {
223
- const credentialsResult = requireEnvCredentials()
224
- if (!credentialsResult.ok) {
225
- console.error(credentialsResult.error)
226
- process.exitCode = 1
265
+ const credentials = getStandaloneCredentials()
266
+ if (credentials == null) {
227
267
  return
228
268
  }
229
- const credentials = credentialsResult.credentials
230
269
 
231
270
  const { content } = await readCliInput({
232
271
  providedInput: options.providedInput,
@@ -260,6 +299,8 @@ export class SignatureCommand extends UnauthenticatedCommand {
260
299
  details: `
261
300
  Read params JSON from stdin and output signed payload JSON.
262
301
  If no input is provided, generates a signature with default params.
302
+ Credentials are resolved from the shell environment, the current working directory .env, or
303
+ ~/.transloadit/credentials.
263
304
  `,
264
305
  examples: [
265
306
  ['Generate signature', 'echo \'{"steps":{}}\' | transloadit signature'],
@@ -273,12 +314,8 @@ export class SignatureCommand extends UnauthenticatedCommand {
273
314
  })
274
315
 
275
316
  protected async run(): Promise<number | undefined> {
276
- const credentialsResult = requireEnvCredentials()
277
- if (!credentialsResult.ok) {
278
- this.output.error(credentialsResult.error)
279
- return 1
280
- }
281
- const credentials = credentialsResult.credentials
317
+ const credentials = getCommandCredentials(this.output)
318
+ if (credentials == null) return 1
282
319
 
283
320
  const { content } = await readCliInput({ allowStdinWhenNoPath: true })
284
321
  const rawInput = (content ?? '').trim()
@@ -312,6 +349,8 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
312
349
  Read Smart CDN params JSON from stdin and output a signed URL.
313
350
  Required fields: workspace, template, input
314
351
  Optional fields: expire_at_ms, url_params
352
+ Credentials are resolved from the shell environment, the current working directory .env, or
353
+ ~/.transloadit/credentials.
315
354
  `,
316
355
  examples: [
317
356
  [
@@ -326,12 +365,8 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
326
365
  })
327
366
 
328
367
  protected async run(): Promise<number | undefined> {
329
- const credentialsResult = requireEnvCredentials()
330
- if (!credentialsResult.ok) {
331
- this.output.error(credentialsResult.error)
332
- return 1
333
- }
334
- const credentials = credentialsResult.credentials
368
+ const credentials = getCommandCredentials(this.output)
369
+ if (credentials == null) return 1
335
370
 
336
371
  const { content } = await readCliInput({ allowStdinWhenNoPath: true })
337
372
  const rawInput = (content ?? '').trim()
@@ -359,8 +394,9 @@ export class TokenCommand extends UnauthenticatedCommand {
359
394
  category: 'Auth',
360
395
  description: 'Mint a short-lived bearer token',
361
396
  details: `
362
- Calls POST /token using HTTP Basic Auth (TRANSLOADIT_KEY + TRANSLOADIT_SECRET) and prints the
363
- JSON response to stdout.
397
+ Calls POST /token using HTTP Basic Auth and prints the JSON response to stdout.
398
+ Credentials are resolved from the shell environment, the current working directory .env, or
399
+ ~/.transloadit/credentials.
364
400
  `,
365
401
  examples: [
366
402
  ['Mint an MCP token (default aud)', 'transloadit auth token'],
@@ -378,14 +414,12 @@ export class TokenCommand extends UnauthenticatedCommand {
378
414
  })
379
415
 
380
416
  protected override async run(): Promise<number | undefined> {
381
- const credentialsResult = requireEnvCredentials()
382
- if (!credentialsResult.ok) {
383
- this.output.error(credentialsResult.error)
384
- return 1
385
- }
417
+ const resolved = getCommandConfigWithCredentials(this.output)
418
+ if (resolved == null) return 1
386
419
 
387
- const result = await mintBearerTokenWithCredentials(credentialsResult.credentials, {
388
- endpoint: this.endpoint,
420
+ const result = await mintBearerTokenWithCredentials(resolved.credentials, {
421
+ allowProcessEnvEndpointFallback: false,
422
+ endpoint: this.endpoint ?? resolved.config.credentialsEndpoint,
389
423
  aud: this.aud,
390
424
  scope: this.scope,
391
425
  })
@@ -342,6 +342,8 @@ export function renderIntentDocsBody({
342
342
  `${heading} At a glance`,
343
343
  '',
344
344
  'Intent commands are the fastest path to common one-off tasks from the CLI.',
345
+ 'Authentication is resolved in this order: shell environment, the current working directory `.env`, then `~/.transloadit/credentials`.',
346
+ 'The home credentials file uses dotenv syntax and can include `TRANSLOADIT_KEY`, `TRANSLOADIT_SECRET`, `TRANSLOADIT_ENDPOINT`, and `TRANSLOADIT_AUTH_TOKEN`.',
345
347
  'Use `--print-urls` when you want temporary result URLs without downloading locally.',
346
348
  'All intent commands also support the global CLI flags `--json`, `--log-level`, `--endpoint`, and `--help`.',
347
349
  '',