transloadit 4.0.7 → 4.1.2
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/CHANGELOG.md +37 -0
- package/README.md +200 -21
- package/dist/ApiError.d.ts +1 -1
- package/dist/ApiError.d.ts.map +1 -1
- package/dist/ApiError.js.map +1 -1
- package/dist/Transloadit.d.ts +23 -4
- package/dist/Transloadit.d.ts.map +1 -1
- package/dist/Transloadit.js +62 -28
- package/dist/Transloadit.js.map +1 -1
- package/dist/apiTypes.d.ts +1 -1
- package/dist/apiTypes.d.ts.map +1 -1
- package/dist/cli/OutputCtl.d.ts +46 -0
- package/dist/cli/OutputCtl.d.ts.map +1 -0
- package/dist/cli/OutputCtl.js +85 -0
- package/dist/cli/OutputCtl.js.map +1 -0
- package/dist/cli/commands/BaseCommand.d.ts +23 -0
- package/dist/cli/commands/BaseCommand.d.ts.map +1 -0
- package/dist/cli/commands/BaseCommand.js +52 -0
- package/dist/cli/commands/BaseCommand.js.map +1 -0
- package/dist/cli/commands/assemblies.d.ts +93 -0
- package/dist/cli/commands/assemblies.d.ts.map +1 -0
- package/dist/cli/commands/assemblies.js +1021 -0
- package/dist/cli/commands/assemblies.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +28 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +280 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/bills.d.ts +14 -0
- package/dist/cli/commands/bills.d.ts.map +1 -0
- package/dist/cli/commands/bills.js +69 -0
- package/dist/cli/commands/bills.js.map +1 -0
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +39 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/notifications.d.ts +16 -0
- package/dist/cli/commands/notifications.d.ts.map +1 -0
- package/dist/cli/commands/notifications.js +44 -0
- package/dist/cli/commands/notifications.js.map +1 -0
- package/dist/cli/commands/templates.d.ts +81 -0
- package/dist/cli/commands/templates.d.ts.map +1 -0
- package/dist/cli/commands/templates.js +428 -0
- package/dist/cli/commands/templates.js.map +1 -0
- package/dist/cli/helpers.d.ts +13 -0
- package/dist/cli/helpers.d.ts.map +1 -0
- package/dist/cli/helpers.js +39 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/template-last-modified.d.ts +10 -0
- package/dist/cli/template-last-modified.d.ts.map +1 -0
- package/dist/cli/template-last-modified.js +134 -0
- package/dist/cli/template-last-modified.js.map +1 -0
- package/dist/cli/types.d.ts +152 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +64 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli.d.ts +2 -12
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -256
- package/dist/cli.js.map +1 -1
- package/dist/tus.d.ts +2 -1
- package/dist/tus.d.ts.map +1 -1
- package/dist/tus.js +33 -5
- package/dist/tus.js.map +1 -1
- package/package.json +12 -7
- package/src/ApiError.ts +2 -1
- package/src/Transloadit.ts +98 -39
- package/src/apiTypes.ts +1 -1
- package/src/cli/OutputCtl.ts +115 -0
- package/src/cli/commands/BaseCommand.ts +71 -0
- package/src/cli/commands/assemblies.ts +1373 -0
- package/src/cli/commands/auth.ts +354 -0
- package/src/cli/commands/bills.ts +91 -0
- package/src/cli/commands/index.ts +65 -0
- package/src/cli/commands/notifications.ts +63 -0
- package/src/cli/commands/templates.ts +556 -0
- package/src/cli/helpers.ts +50 -0
- package/src/cli/template-last-modified.ts +156 -0
- package/src/cli/types.ts +183 -0
- package/src/cli.ts +12 -305
- package/src/tus.ts +37 -5
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { ensureError } from "./types.js";
|
|
2
|
+
class MemoizedPagination {
|
|
3
|
+
pagesize;
|
|
4
|
+
fetch;
|
|
5
|
+
cache;
|
|
6
|
+
constructor(pagesize, fetch) {
|
|
7
|
+
this.pagesize = pagesize;
|
|
8
|
+
this.fetch = fetch;
|
|
9
|
+
this.cache = [];
|
|
10
|
+
}
|
|
11
|
+
get(i, cb) {
|
|
12
|
+
const cached = this.cache[i];
|
|
13
|
+
if (cached !== undefined) {
|
|
14
|
+
process.nextTick(() => cb(null, cached));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const page = Math.floor(i / this.pagesize) + 1;
|
|
18
|
+
const start = (page - 1) * this.pagesize;
|
|
19
|
+
this.fetch(page, this.pagesize, (err, result) => {
|
|
20
|
+
if (err) {
|
|
21
|
+
cb(err);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (!result) {
|
|
25
|
+
cb(new Error('No result returned from fetch'));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
for (let j = 0; j < this.pagesize; j++) {
|
|
29
|
+
this.cache[start + j] = result[j];
|
|
30
|
+
}
|
|
31
|
+
cb(null, this.cache[i]);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default class ModifiedLookup {
|
|
36
|
+
byOrdinal;
|
|
37
|
+
constructor(client, pagesize = 50) {
|
|
38
|
+
this.byOrdinal = new MemoizedPagination(pagesize, (page, pagesize, cb) => {
|
|
39
|
+
const params = {
|
|
40
|
+
sort: 'id',
|
|
41
|
+
order: 'asc',
|
|
42
|
+
fields: ['id', 'modified'],
|
|
43
|
+
page,
|
|
44
|
+
pagesize,
|
|
45
|
+
};
|
|
46
|
+
client
|
|
47
|
+
.listTemplates(params)
|
|
48
|
+
.then((result) => {
|
|
49
|
+
const items = new Array(pagesize);
|
|
50
|
+
// Fill with sentinel value larger than any hex ID
|
|
51
|
+
items.fill({ id: 'gggggggggggggggggggggggggggggggg', modified: '' });
|
|
52
|
+
for (let i = 0; i < result.items.length; i++) {
|
|
53
|
+
const item = result.items[i];
|
|
54
|
+
if (item) {
|
|
55
|
+
items[i] = { id: item.id, modified: item.modified };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
cb(null, items);
|
|
59
|
+
})
|
|
60
|
+
.catch((err) => {
|
|
61
|
+
cb(ensureError(err));
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
idByOrd(ord, cb) {
|
|
66
|
+
this.byOrdinal.get(ord, (err, result) => {
|
|
67
|
+
if (err) {
|
|
68
|
+
cb(err);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!result) {
|
|
72
|
+
cb(new Error('No result found'));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
cb(null, result.id);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
byId(id, cb) {
|
|
79
|
+
const findUpperBound = (bound) => {
|
|
80
|
+
this.idByOrd(bound, (err, idAtBound) => {
|
|
81
|
+
if (err) {
|
|
82
|
+
cb(err);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (idAtBound === id) {
|
|
86
|
+
complete(bound);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (idAtBound && idAtBound > id) {
|
|
90
|
+
refine(Math.floor(bound / 2), bound);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
findUpperBound(bound * 2);
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
const refine = (lower, upper) => {
|
|
97
|
+
if (lower >= upper - 1) {
|
|
98
|
+
cb(new Error(`Template ID ${id} not found in ModifiedLookup`));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const middle = Math.floor((lower + upper) / 2);
|
|
102
|
+
this.idByOrd(middle, (err, idAtMiddle) => {
|
|
103
|
+
if (err) {
|
|
104
|
+
cb(err);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (idAtMiddle === id) {
|
|
108
|
+
complete(middle);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (idAtMiddle && idAtMiddle < id) {
|
|
112
|
+
refine(middle, upper);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
refine(lower, middle);
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
const complete = (ord) => {
|
|
119
|
+
this.byOrdinal.get(ord, (err, result) => {
|
|
120
|
+
if (err) {
|
|
121
|
+
cb(err);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (!result) {
|
|
125
|
+
cb(new Error('No result found'));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
cb(null, new Date(result.modified));
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
findUpperBound(1);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=template-last-modified.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-last-modified.js","sourceRoot":"","sources":["../../src/cli/template-last-modified.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Steps } from '../alphalib/types/template.ts';
|
|
3
|
+
import type { BillResponse, ListedTemplate, TemplateResponse } from '../apiTypes.ts';
|
|
4
|
+
import type { AssemblyStatus, Transloadit } from '../Transloadit.ts';
|
|
5
|
+
import type { IOutputCtl } from './OutputCtl.ts';
|
|
6
|
+
export type { AssemblyStatus, BillResponse, ListedTemplate, TemplateResponse };
|
|
7
|
+
export type { Transloadit };
|
|
8
|
+
export type { CreateAssemblyOptions } from '../Transloadit.ts';
|
|
9
|
+
export declare const APIErrorSchema: z.ZodObject<{
|
|
10
|
+
error: z.ZodString;
|
|
11
|
+
message: z.ZodString;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
error: string;
|
|
14
|
+
message: string;
|
|
15
|
+
}, {
|
|
16
|
+
error: string;
|
|
17
|
+
message: string;
|
|
18
|
+
}>;
|
|
19
|
+
export type APIError = z.infer<typeof APIErrorSchema>;
|
|
20
|
+
export declare const TransloaditAPIErrorSchema: z.ZodObject<{
|
|
21
|
+
error: z.ZodOptional<z.ZodString>;
|
|
22
|
+
message: z.ZodString;
|
|
23
|
+
code: z.ZodOptional<z.ZodString>;
|
|
24
|
+
transloaditErrorCode: z.ZodOptional<z.ZodString>;
|
|
25
|
+
response: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
body: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
error: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
error?: string | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
error?: string | undefined;
|
|
32
|
+
}>>;
|
|
33
|
+
statusCode: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
statusCode?: number | undefined;
|
|
36
|
+
body?: {
|
|
37
|
+
error?: string | undefined;
|
|
38
|
+
} | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
statusCode?: number | undefined;
|
|
41
|
+
body?: {
|
|
42
|
+
error?: string | undefined;
|
|
43
|
+
} | undefined;
|
|
44
|
+
}>>;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
message: string;
|
|
47
|
+
error?: string | undefined;
|
|
48
|
+
code?: string | undefined;
|
|
49
|
+
response?: {
|
|
50
|
+
statusCode?: number | undefined;
|
|
51
|
+
body?: {
|
|
52
|
+
error?: string | undefined;
|
|
53
|
+
} | undefined;
|
|
54
|
+
} | undefined;
|
|
55
|
+
transloaditErrorCode?: string | undefined;
|
|
56
|
+
}, {
|
|
57
|
+
message: string;
|
|
58
|
+
error?: string | undefined;
|
|
59
|
+
code?: string | undefined;
|
|
60
|
+
response?: {
|
|
61
|
+
statusCode?: number | undefined;
|
|
62
|
+
body?: {
|
|
63
|
+
error?: string | undefined;
|
|
64
|
+
} | undefined;
|
|
65
|
+
} | undefined;
|
|
66
|
+
transloaditErrorCode?: string | undefined;
|
|
67
|
+
}>;
|
|
68
|
+
export type TransloaditAPIError = z.infer<typeof TransloaditAPIErrorSchema>;
|
|
69
|
+
export interface TemplateFileData {
|
|
70
|
+
transloadit_template_id?: string;
|
|
71
|
+
steps?: Steps;
|
|
72
|
+
[key: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
export declare const TemplateFileDataSchema: z.ZodType<TemplateFileData>;
|
|
75
|
+
export interface TemplateFile {
|
|
76
|
+
file: string;
|
|
77
|
+
data: TemplateFileData;
|
|
78
|
+
}
|
|
79
|
+
export interface TemplateListItem {
|
|
80
|
+
id: string;
|
|
81
|
+
modified: string;
|
|
82
|
+
name?: string;
|
|
83
|
+
}
|
|
84
|
+
export interface BaseInvocation {
|
|
85
|
+
error?: boolean;
|
|
86
|
+
message?: string;
|
|
87
|
+
mode: string;
|
|
88
|
+
action?: string;
|
|
89
|
+
logLevel?: number;
|
|
90
|
+
jsonMode?: boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface AssemblyInvocation extends BaseInvocation {
|
|
93
|
+
mode: 'assemblies';
|
|
94
|
+
action?: 'create' | 'get' | 'list' | 'delete' | 'replay';
|
|
95
|
+
inputs: string[];
|
|
96
|
+
output?: string;
|
|
97
|
+
recursive?: boolean;
|
|
98
|
+
watch?: boolean;
|
|
99
|
+
del?: boolean;
|
|
100
|
+
reprocessStale?: boolean;
|
|
101
|
+
steps?: string;
|
|
102
|
+
template?: string;
|
|
103
|
+
fields?: Record<string, string>;
|
|
104
|
+
assemblies?: string[];
|
|
105
|
+
before?: string;
|
|
106
|
+
after?: string;
|
|
107
|
+
keywords?: string[];
|
|
108
|
+
notify_url?: string;
|
|
109
|
+
reparse?: boolean;
|
|
110
|
+
}
|
|
111
|
+
export interface TemplateInvocation extends BaseInvocation {
|
|
112
|
+
mode: 'templates';
|
|
113
|
+
action?: 'create' | 'get' | 'list' | 'delete' | 'modify' | 'sync';
|
|
114
|
+
templates?: string[];
|
|
115
|
+
template?: string;
|
|
116
|
+
name?: string;
|
|
117
|
+
file?: string;
|
|
118
|
+
files?: string[];
|
|
119
|
+
before?: string;
|
|
120
|
+
after?: string;
|
|
121
|
+
order?: 'asc' | 'desc';
|
|
122
|
+
sort?: string;
|
|
123
|
+
fields?: string[];
|
|
124
|
+
recursive?: boolean;
|
|
125
|
+
}
|
|
126
|
+
export interface BillInvocation extends BaseInvocation {
|
|
127
|
+
mode: 'bills';
|
|
128
|
+
action?: 'get';
|
|
129
|
+
months: string[];
|
|
130
|
+
}
|
|
131
|
+
export interface NotificationInvocation extends BaseInvocation {
|
|
132
|
+
mode: 'assembly-notifications';
|
|
133
|
+
action?: 'list' | 'replay';
|
|
134
|
+
assemblies?: string[];
|
|
135
|
+
notify_url?: string;
|
|
136
|
+
type?: string;
|
|
137
|
+
assembly_id?: string;
|
|
138
|
+
pagesize?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface HelpInvocation extends BaseInvocation {
|
|
141
|
+
mode: 'help' | 'version' | 'register';
|
|
142
|
+
}
|
|
143
|
+
export type Invocation = AssemblyInvocation | TemplateInvocation | BillInvocation | NotificationInvocation | HelpInvocation;
|
|
144
|
+
export type CommandHandler<T extends BaseInvocation = BaseInvocation> = (output: IOutputCtl, client: Transloadit | undefined, invocation: T) => void | Promise<void>;
|
|
145
|
+
export declare function isError(value: unknown): value is Error;
|
|
146
|
+
export declare function ensureError(value: unknown): Error;
|
|
147
|
+
export declare function isAPIError(value: unknown): value is APIError;
|
|
148
|
+
export declare function isTransloaditAPIError(value: unknown): value is TransloaditAPIError;
|
|
149
|
+
export declare function isErrnoException(value: unknown): value is NodeJS.ErrnoException;
|
|
150
|
+
export declare function safeGet<T>(arr: T[], index: number): T | undefined;
|
|
151
|
+
export declare function assertDefined<T>(value: T | undefined | null, message: string): T;
|
|
152
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { optionalStepsSchema } from "../alphalib/types/template.js";
|
|
3
|
+
// Zod schemas for runtime validation
|
|
4
|
+
export const APIErrorSchema = z.object({
|
|
5
|
+
error: z.string(),
|
|
6
|
+
message: z.string(),
|
|
7
|
+
});
|
|
8
|
+
export const TransloaditAPIErrorSchema = z.object({
|
|
9
|
+
error: z.string().optional(),
|
|
10
|
+
message: z.string(),
|
|
11
|
+
code: z.string().optional(),
|
|
12
|
+
transloaditErrorCode: z.string().optional(),
|
|
13
|
+
response: z
|
|
14
|
+
.object({
|
|
15
|
+
body: z
|
|
16
|
+
.object({
|
|
17
|
+
error: z.string().optional(),
|
|
18
|
+
})
|
|
19
|
+
.optional(),
|
|
20
|
+
statusCode: z.number().optional(),
|
|
21
|
+
})
|
|
22
|
+
.optional(),
|
|
23
|
+
});
|
|
24
|
+
export const TemplateFileDataSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
transloadit_template_id: z.string().optional(),
|
|
27
|
+
steps: optionalStepsSchema,
|
|
28
|
+
})
|
|
29
|
+
.passthrough();
|
|
30
|
+
// Type guard for Error
|
|
31
|
+
export function isError(value) {
|
|
32
|
+
return value instanceof Error;
|
|
33
|
+
}
|
|
34
|
+
// Helper to ensure error is Error type
|
|
35
|
+
export function ensureError(value) {
|
|
36
|
+
if (value instanceof Error) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
return new Error(`Non-error was thrown: ${String(value)}`);
|
|
40
|
+
}
|
|
41
|
+
// Type guard for APIError
|
|
42
|
+
export function isAPIError(value) {
|
|
43
|
+
return APIErrorSchema.safeParse(value).success;
|
|
44
|
+
}
|
|
45
|
+
// Type guard for TransloaditAPIError
|
|
46
|
+
export function isTransloaditAPIError(value) {
|
|
47
|
+
return TransloaditAPIErrorSchema.safeParse(value).success;
|
|
48
|
+
}
|
|
49
|
+
// Type guard for NodeJS.ErrnoException
|
|
50
|
+
export function isErrnoException(value) {
|
|
51
|
+
return value instanceof Error && 'code' in value;
|
|
52
|
+
}
|
|
53
|
+
// Safe array access helper
|
|
54
|
+
export function safeGet(arr, index) {
|
|
55
|
+
return arr[index];
|
|
56
|
+
}
|
|
57
|
+
// Assert defined helper
|
|
58
|
+
export function assertDefined(value, message) {
|
|
59
|
+
if (value === undefined || value === null) {
|
|
60
|
+
throw new Error(message);
|
|
61
|
+
}
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAUnE,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,IAAI,EAAE,CAAC;aACJ,MAAM,CAAC;YACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;aACD,QAAQ,EAAE;QACb,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA;AAUF,MAAM,CAAC,MAAM,sBAAsB,GAAgC,CAAC;KACjE,MAAM,CAAC;IACN,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,mBAAmB;CAC3B,CAAC;KACD,WAAW,EAAiC,CAAA;AA8F/C,uBAAuB;AACvB,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAA;AAC/B,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAChD,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAA;AAC3D,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAA;AAClD,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,OAAO,CAAI,GAAQ,EAAE,KAAa;IAChD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAA;AACnB,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,aAAa,CAAI,KAA2B,EAAE,OAAe;IAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
providedInput?: string;
|
|
4
|
-
algorithm?: string;
|
|
5
|
-
}
|
|
6
|
-
interface RunSmartSigOptions {
|
|
7
|
-
providedInput?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function readStdin(): Promise<string>;
|
|
10
|
-
export declare function runSig(options?: RunSigOptions): Promise<void>;
|
|
11
|
-
export declare function runSmartSig(options?: RunSmartSigOptions): Promise<void>;
|
|
12
|
-
export declare function main(args?: string[]): Promise<void>;
|
|
2
|
+
import 'dotenv/config';
|
|
13
3
|
export declare function shouldRunCli(invoked?: string): boolean;
|
|
4
|
+
export declare function main(args?: string[]): Promise<void>;
|
|
14
5
|
export declare function runCliWhenExecuted(): void;
|
|
15
|
-
export {};
|
|
16
6
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,eAAe,CAAA;AActB,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAOzC"}
|
package/dist/cli.js
CHANGED
|
@@ -3,261 +3,8 @@ 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
|
|
7
|
-
import {
|
|
8
|
-
import { Transloadit } from "./Transloadit.js";
|
|
9
|
-
const smartCdnParamsSchema = z
|
|
10
|
-
.object({
|
|
11
|
-
workspace: z.string().min(1, 'workspace is required'),
|
|
12
|
-
template: z.string().min(1, 'template is required'),
|
|
13
|
-
input: z.union([z.string(), z.number(), z.boolean()]),
|
|
14
|
-
url_params: z.record(z.unknown()).optional(),
|
|
15
|
-
expire_at_ms: z.union([z.number(), z.string()]).optional(),
|
|
16
|
-
})
|
|
17
|
-
.passthrough();
|
|
18
|
-
const cliSignatureParamsSchema = assemblyInstructionsSchema
|
|
19
|
-
.extend({ auth: assemblyAuthInstructionsSchema.partial().optional() })
|
|
20
|
-
.partial()
|
|
21
|
-
.passthrough();
|
|
22
|
-
export async function readStdin() {
|
|
23
|
-
if (process.stdin.isTTY)
|
|
24
|
-
return '';
|
|
25
|
-
process.stdin.setEncoding('utf8');
|
|
26
|
-
let data = '';
|
|
27
|
-
for await (const chunk of process.stdin) {
|
|
28
|
-
data += chunk;
|
|
29
|
-
}
|
|
30
|
-
return data;
|
|
31
|
-
}
|
|
32
|
-
function fail(message) {
|
|
33
|
-
console.error(message);
|
|
34
|
-
process.exitCode = 1;
|
|
35
|
-
}
|
|
36
|
-
function formatIssues(issues) {
|
|
37
|
-
return issues
|
|
38
|
-
.map((issue) => {
|
|
39
|
-
const path = issue.path.join('.') || '(root)';
|
|
40
|
-
return `${path}: ${issue.message}`;
|
|
41
|
-
})
|
|
42
|
-
.join('; ');
|
|
43
|
-
}
|
|
44
|
-
function normalizeUrlParam(value) {
|
|
45
|
-
if (value == null)
|
|
46
|
-
return undefined;
|
|
47
|
-
if (Array.isArray(value)) {
|
|
48
|
-
const normalized = value.filter((item) => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean');
|
|
49
|
-
return normalized.length > 0 ? normalized : undefined;
|
|
50
|
-
}
|
|
51
|
-
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
52
|
-
return value;
|
|
53
|
-
}
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
function normalizeUrlParams(params) {
|
|
57
|
-
if (params == null)
|
|
58
|
-
return undefined;
|
|
59
|
-
let normalized;
|
|
60
|
-
for (const [key, value] of Object.entries(params)) {
|
|
61
|
-
const normalizedValue = normalizeUrlParam(value);
|
|
62
|
-
if (normalizedValue === undefined)
|
|
63
|
-
continue;
|
|
64
|
-
if (normalized == null)
|
|
65
|
-
normalized = {};
|
|
66
|
-
normalized[key] = normalizedValue;
|
|
67
|
-
}
|
|
68
|
-
return normalized;
|
|
69
|
-
}
|
|
70
|
-
function ensureCredentials() {
|
|
71
|
-
const authKey = process.env.TRANSLOADIT_KEY || process.env.TRANSLOADIT_AUTH_KEY;
|
|
72
|
-
const authSecret = process.env.TRANSLOADIT_SECRET || process.env.TRANSLOADIT_AUTH_SECRET;
|
|
73
|
-
if (!authKey || !authSecret) {
|
|
74
|
-
fail('Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.');
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
return { authKey, authSecret };
|
|
78
|
-
}
|
|
79
|
-
export async function runSig(options = {}) {
|
|
80
|
-
const credentials = ensureCredentials();
|
|
81
|
-
if (credentials == null)
|
|
82
|
-
return;
|
|
83
|
-
const { authKey, authSecret } = credentials;
|
|
84
|
-
const { providedInput, algorithm } = options;
|
|
85
|
-
const rawInput = providedInput ?? (await readStdin());
|
|
86
|
-
const input = rawInput.trim();
|
|
87
|
-
let params;
|
|
88
|
-
if (input === '') {
|
|
89
|
-
params = { auth: { key: authKey } };
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
let parsed;
|
|
93
|
-
try {
|
|
94
|
-
parsed = JSON.parse(input);
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
fail(`Failed to parse JSON from stdin: ${error.message}`);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
101
|
-
fail('Invalid params provided via stdin. Expected a JSON object.');
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
const parsedResult = cliSignatureParamsSchema.safeParse(parsed);
|
|
105
|
-
if (!parsedResult.success) {
|
|
106
|
-
fail(`Invalid params: ${formatIssues(parsedResult.error.issues)}`);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const parsedParams = parsedResult.data;
|
|
110
|
-
const existingAuth = typeof parsedParams.auth === 'object' &&
|
|
111
|
-
parsedParams.auth != null &&
|
|
112
|
-
!Array.isArray(parsedParams.auth)
|
|
113
|
-
? parsedParams.auth
|
|
114
|
-
: {};
|
|
115
|
-
params = {
|
|
116
|
-
...parsedParams,
|
|
117
|
-
auth: {
|
|
118
|
-
...existingAuth,
|
|
119
|
-
key: authKey,
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
const client = new Transloadit({ authKey, authSecret });
|
|
124
|
-
try {
|
|
125
|
-
const signature = client.calcSignature(params, algorithm);
|
|
126
|
-
process.stdout.write(`${JSON.stringify(signature)}\n`);
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
fail(`Failed to generate signature: ${error.message}`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
export async function runSmartSig(options = {}) {
|
|
133
|
-
const credentials = ensureCredentials();
|
|
134
|
-
if (credentials == null)
|
|
135
|
-
return;
|
|
136
|
-
const { authKey, authSecret } = credentials;
|
|
137
|
-
const rawInput = options.providedInput ?? (await readStdin());
|
|
138
|
-
const input = rawInput.trim();
|
|
139
|
-
if (input === '') {
|
|
140
|
-
fail('Missing params provided via stdin. Expected a JSON object with workspace, template, input, and optional Smart CDN parameters.');
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
let parsed;
|
|
144
|
-
try {
|
|
145
|
-
parsed = JSON.parse(input);
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
fail(`Failed to parse JSON from stdin: ${error.message}`);
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
152
|
-
fail('Invalid params provided via stdin. Expected a JSON object.');
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
const parsedResult = smartCdnParamsSchema.safeParse(parsed);
|
|
156
|
-
if (!parsedResult.success) {
|
|
157
|
-
fail(`Invalid params: ${formatIssues(parsedResult.error.issues)}`);
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
const { workspace, template, input: inputFieldRaw, url_params, expire_at_ms } = parsedResult.data;
|
|
161
|
-
const urlParams = normalizeUrlParams(url_params);
|
|
162
|
-
let expiresAt;
|
|
163
|
-
if (typeof expire_at_ms === 'string') {
|
|
164
|
-
const parsedNumber = Number.parseInt(expire_at_ms, 10);
|
|
165
|
-
if (Number.isNaN(parsedNumber)) {
|
|
166
|
-
fail('Invalid params: expire_at_ms must be a number.');
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
expiresAt = parsedNumber;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
expiresAt = expire_at_ms;
|
|
173
|
-
}
|
|
174
|
-
const inputField = typeof inputFieldRaw === 'string' ? inputFieldRaw : String(inputFieldRaw);
|
|
175
|
-
const client = new Transloadit({ authKey, authSecret });
|
|
176
|
-
try {
|
|
177
|
-
const signedUrl = client.getSignedSmartCDNUrl({
|
|
178
|
-
workspace,
|
|
179
|
-
template,
|
|
180
|
-
input: inputField,
|
|
181
|
-
urlParams,
|
|
182
|
-
expiresAt,
|
|
183
|
-
});
|
|
184
|
-
process.stdout.write(`${signedUrl}\n`);
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
fail(`Failed to generate Smart CDN URL: ${error.message}`);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
function parseSigArguments(args) {
|
|
191
|
-
let algorithm;
|
|
192
|
-
let index = 0;
|
|
193
|
-
while (index < args.length) {
|
|
194
|
-
const arg = args[index];
|
|
195
|
-
if (arg === '--algorithm' || arg === '-a') {
|
|
196
|
-
const next = args[index + 1];
|
|
197
|
-
if (next == null || next.startsWith('-')) {
|
|
198
|
-
throw new Error('Missing value for --algorithm option');
|
|
199
|
-
}
|
|
200
|
-
algorithm = next;
|
|
201
|
-
index += 2;
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
if (arg.startsWith('--algorithm=')) {
|
|
205
|
-
const [, value] = arg.split('=', 2);
|
|
206
|
-
if (value === undefined || value === '') {
|
|
207
|
-
throw new Error('Missing value for --algorithm option');
|
|
208
|
-
}
|
|
209
|
-
algorithm = value;
|
|
210
|
-
index += 1;
|
|
211
|
-
continue;
|
|
212
|
-
}
|
|
213
|
-
throw new Error(`Unknown option: ${arg}`);
|
|
214
|
-
}
|
|
215
|
-
return { algorithm };
|
|
216
|
-
}
|
|
217
|
-
export async function main(args = process.argv.slice(2)) {
|
|
218
|
-
const [command, ...commandArgs] = args;
|
|
219
|
-
switch (command) {
|
|
220
|
-
case 'smart_sig': {
|
|
221
|
-
await runSmartSig();
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
case 'sig': {
|
|
225
|
-
try {
|
|
226
|
-
const { algorithm } = parseSigArguments(commandArgs);
|
|
227
|
-
await runSig({ algorithm });
|
|
228
|
-
}
|
|
229
|
-
catch (error) {
|
|
230
|
-
fail(error.message);
|
|
231
|
-
}
|
|
232
|
-
break;
|
|
233
|
-
}
|
|
234
|
-
case '-h':
|
|
235
|
-
case '--help':
|
|
236
|
-
case undefined: {
|
|
237
|
-
process.stdout.write([
|
|
238
|
-
'Usage:',
|
|
239
|
-
' npx transloadit smart_sig Read Smart CDN params JSON from stdin and output a signed URL.',
|
|
240
|
-
' npx transloadit sig [--algorithm <name>] Read params JSON from stdin and output signed payload JSON.',
|
|
241
|
-
'',
|
|
242
|
-
'Required JSON fields:',
|
|
243
|
-
' smart_sig: workspace, template, input',
|
|
244
|
-
' sig: none (object is optional)',
|
|
245
|
-
'Optional JSON fields:',
|
|
246
|
-
' smart_sig: expire_at_ms, url_params',
|
|
247
|
-
' sig: auth.expires and any supported assembly params',
|
|
248
|
-
'',
|
|
249
|
-
'Environment variables:',
|
|
250
|
-
' TRANSLOADIT_KEY, TRANSLOADIT_SECRET',
|
|
251
|
-
].join('\n'));
|
|
252
|
-
if (command === undefined)
|
|
253
|
-
process.exitCode = 1;
|
|
254
|
-
break;
|
|
255
|
-
}
|
|
256
|
-
default: {
|
|
257
|
-
fail(`Unknown command: ${command}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
6
|
+
import 'dotenv/config';
|
|
7
|
+
import { createCli } from "./cli/commands/index.js";
|
|
261
8
|
const currentFile = realpathSync(fileURLToPath(import.meta.url));
|
|
262
9
|
function resolveInvokedPath(invoked) {
|
|
263
10
|
if (invoked == null)
|
|
@@ -275,11 +22,19 @@ export function shouldRunCli(invoked) {
|
|
|
275
22
|
return false;
|
|
276
23
|
return resolved === currentFile;
|
|
277
24
|
}
|
|
25
|
+
export async function main(args = process.argv.slice(2)) {
|
|
26
|
+
const cli = createCli();
|
|
27
|
+
const exitCode = await cli.run(args);
|
|
28
|
+
if (exitCode !== 0) {
|
|
29
|
+
process.exitCode = exitCode;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
278
32
|
export function runCliWhenExecuted() {
|
|
279
33
|
if (!shouldRunCli(process.argv[1]))
|
|
280
34
|
return;
|
|
281
35
|
void main().catch((error) => {
|
|
282
|
-
|
|
36
|
+
console.error(error.message);
|
|
37
|
+
process.exitCode = 1;
|
|
283
38
|
});
|
|
284
39
|
}
|
|
285
40
|
runCliWhenExecuted();
|