n8n-nodes-speechall 0.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.
Files changed (59) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +165 -0
  3. package/dist/credentials/SpeechallApi.credentials.d.ts +13 -0
  4. package/dist/credentials/SpeechallApi.credentials.js +43 -0
  5. package/dist/credentials/SpeechallApi.credentials.js.map +1 -0
  6. package/dist/nodes/Speechall/Speechall.node.d.ts +11 -0
  7. package/dist/nodes/Speechall/Speechall.node.js +79 -0
  8. package/dist/nodes/Speechall/Speechall.node.js.map +1 -0
  9. package/dist/nodes/Speechall/Speechall.node.json +18 -0
  10. package/dist/nodes/Speechall/descriptions/SpeechToText.description.d.ts +2 -0
  11. package/dist/nodes/Speechall/descriptions/SpeechToText.description.js +154 -0
  12. package/dist/nodes/Speechall/descriptions/SpeechToText.description.js.map +1 -0
  13. package/dist/nodes/Speechall/generated/speechall-openapi.d.ts +528 -0
  14. package/dist/nodes/Speechall/generated/speechall-openapi.js +3 -0
  15. package/dist/nodes/Speechall/generated/speechall-openapi.js.map +1 -0
  16. package/dist/nodes/Speechall/helpers/binary.d.ts +8 -0
  17. package/dist/nodes/Speechall/helpers/binary.js +29 -0
  18. package/dist/nodes/Speechall/helpers/binary.js.map +1 -0
  19. package/dist/nodes/Speechall/helpers/fields.d.ts +11 -0
  20. package/dist/nodes/Speechall/helpers/fields.js +344 -0
  21. package/dist/nodes/Speechall/helpers/fields.js.map +1 -0
  22. package/dist/nodes/Speechall/helpers/models.d.ts +13 -0
  23. package/dist/nodes/Speechall/helpers/models.js +148 -0
  24. package/dist/nodes/Speechall/helpers/models.js.map +1 -0
  25. package/dist/nodes/Speechall/helpers/normalize.d.ts +14 -0
  26. package/dist/nodes/Speechall/helpers/normalize.js +109 -0
  27. package/dist/nodes/Speechall/helpers/normalize.js.map +1 -0
  28. package/dist/nodes/Speechall/helpers/replacementRules.d.ts +4 -0
  29. package/dist/nodes/Speechall/helpers/replacementRules.js +130 -0
  30. package/dist/nodes/Speechall/helpers/replacementRules.js.map +1 -0
  31. package/dist/nodes/Speechall/helpers/types.d.ts +74 -0
  32. package/dist/nodes/Speechall/helpers/types.js +5 -0
  33. package/dist/nodes/Speechall/helpers/types.js.map +1 -0
  34. package/dist/nodes/Speechall/loadOptions/getSpeechToTextModels.d.ts +2 -0
  35. package/dist/nodes/Speechall/loadOptions/getSpeechToTextModels.js +13 -0
  36. package/dist/nodes/Speechall/loadOptions/getSpeechToTextModels.js.map +1 -0
  37. package/dist/nodes/Speechall/operations/listModels.operation.d.ts +2 -0
  38. package/dist/nodes/Speechall/operations/listModels.operation.js +30 -0
  39. package/dist/nodes/Speechall/operations/listModels.operation.js.map +1 -0
  40. package/dist/nodes/Speechall/operations/transcribeFile.operation.d.ts +2 -0
  41. package/dist/nodes/Speechall/operations/transcribeFile.operation.js +149 -0
  42. package/dist/nodes/Speechall/operations/transcribeFile.operation.js.map +1 -0
  43. package/dist/nodes/Speechall/operations/transcribeRemoteUrl.operation.d.ts +2 -0
  44. package/dist/nodes/Speechall/operations/transcribeRemoteUrl.operation.js +132 -0
  45. package/dist/nodes/Speechall/operations/transcribeRemoteUrl.operation.js.map +1 -0
  46. package/dist/nodes/Speechall/speechall.dark.svg +7 -0
  47. package/dist/nodes/Speechall/speechall.svg +7 -0
  48. package/dist/nodes/Speechall/transport/errors.d.ts +12 -0
  49. package/dist/nodes/Speechall/transport/errors.js +151 -0
  50. package/dist/nodes/Speechall/transport/errors.js.map +1 -0
  51. package/dist/nodes/Speechall/transport/speechallApiRequest.d.ts +15 -0
  52. package/dist/nodes/Speechall/transport/speechallApiRequest.js +81 -0
  53. package/dist/nodes/Speechall/transport/speechallApiRequest.js.map +1 -0
  54. package/dist/package.json +68 -0
  55. package/examples/google-drive-audio-to-transcript.json +71 -0
  56. package/examples/meeting-recording-to-diarized-transcript.json +59 -0
  57. package/examples/remote-podcast-url-to-srt.json +66 -0
  58. package/examples/webhook-audio-upload-to-json-transcript.json +64 -0
  59. package/package.json +68 -0
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRANSCRIPT_OUTPUT_FORMAT_OPTIONS = void 0;
4
+ exports.modelSelectionFields = modelSelectionFields;
5
+ exports.languageField = languageField;
6
+ exports.transcriptOutputFormatField = transcriptOutputFormatField;
7
+ exports.advancedTranscriptionFields = advancedTranscriptionFields;
8
+ exports.binaryOutputFields = binaryOutputFields;
9
+ exports.replacementRulesField = replacementRulesField;
10
+ exports.TRANSCRIPT_OUTPUT_FORMAT_OPTIONS = [
11
+ { name: 'Plain Text', value: 'text' },
12
+ { name: 'JSON Text', value: 'json_text' },
13
+ { name: 'Detailed JSON', value: 'json' },
14
+ { name: 'SRT Subtitles', value: 'srt' },
15
+ { name: 'WebVTT Subtitles', value: 'vtt' },
16
+ ];
17
+ function modelSelectionFields(displayOptions) {
18
+ return [
19
+ {
20
+ displayName: 'Model Selection',
21
+ name: 'modelSelectionMode',
22
+ type: 'options',
23
+ options: [
24
+ { name: 'Choose From List', value: 'list' },
25
+ { name: 'Enter Model ID Manually', value: 'manual' },
26
+ ],
27
+ default: 'list',
28
+ displayOptions,
29
+ },
30
+ {
31
+ displayName: 'Model Name or ID',
32
+ name: 'model',
33
+ type: 'options',
34
+ typeOptions: {
35
+ loadOptionsMethod: 'getSpeechToTextModels',
36
+ },
37
+ default: '',
38
+ required: true,
39
+ description: 'Speechall speech-to-text model to use. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
40
+ displayOptions: mergeDisplayOptions(displayOptions, {
41
+ show: {
42
+ modelSelectionMode: ['list'],
43
+ },
44
+ }),
45
+ },
46
+ {
47
+ displayName: 'Model ID',
48
+ name: 'modelId',
49
+ type: 'string',
50
+ default: '',
51
+ required: true,
52
+ placeholder: 'openai.whisper-1',
53
+ description: 'Speechall model ID, for example openai.whisper-1',
54
+ displayOptions: mergeDisplayOptions(displayOptions, {
55
+ show: {
56
+ modelSelectionMode: ['manual'],
57
+ },
58
+ }),
59
+ },
60
+ ];
61
+ }
62
+ function languageField(displayOptions) {
63
+ return {
64
+ displayName: 'Language',
65
+ name: 'language',
66
+ type: 'options',
67
+ default: 'en',
68
+ description: 'Language code of the audio. Use auto for automatic detection when supported.',
69
+ options: [
70
+ { name: 'Arabic', value: 'ar' },
71
+ { name: 'Auto Detect', value: 'auto' },
72
+ { name: 'Chinese', value: 'zh' },
73
+ { name: 'Dutch', value: 'nl' },
74
+ { name: 'English', value: 'en' },
75
+ { name: 'English (Australia)', value: 'en_au' },
76
+ { name: 'English (United Kingdom)', value: 'en_uk' },
77
+ { name: 'English (United States)', value: 'en_us' },
78
+ { name: 'French', value: 'fr' },
79
+ { name: 'German', value: 'de' },
80
+ { name: 'Italian', value: 'it' },
81
+ { name: 'Japanese', value: 'ja' },
82
+ { name: 'Korean', value: 'ko' },
83
+ { name: 'Portuguese', value: 'pt' },
84
+ { name: 'Spanish', value: 'es' },
85
+ { name: 'Turkish', value: 'tr' },
86
+ ],
87
+ displayOptions,
88
+ };
89
+ }
90
+ function transcriptOutputFormatField(displayOptions) {
91
+ return {
92
+ displayName: 'Output Format',
93
+ name: 'outputFormat',
94
+ type: 'options',
95
+ default: 'text',
96
+ description: 'Transcript output format. Use Detailed JSON for timestamps and speaker metadata.',
97
+ options: exports.TRANSCRIPT_OUTPUT_FORMAT_OPTIONS,
98
+ displayOptions,
99
+ };
100
+ }
101
+ function advancedTranscriptionFields(displayOptions) {
102
+ return [
103
+ {
104
+ displayName: 'Punctuation',
105
+ name: 'punctuation',
106
+ type: 'boolean',
107
+ default: true,
108
+ description: 'Whether to enable automatic punctuation where supported',
109
+ displayOptions,
110
+ },
111
+ {
112
+ displayName: 'Diarization',
113
+ name: 'diarization',
114
+ type: 'boolean',
115
+ default: false,
116
+ description: 'Whether to identify and label different speakers where supported',
117
+ displayOptions,
118
+ },
119
+ {
120
+ displayName: 'Initial Prompt',
121
+ name: 'initialPrompt',
122
+ type: 'string',
123
+ default: '',
124
+ description: 'Context prompt for models that support prompting',
125
+ displayOptions,
126
+ },
127
+ {
128
+ displayName: 'Temperature',
129
+ name: 'temperature',
130
+ type: 'number',
131
+ default: '',
132
+ typeOptions: {
133
+ minValue: 0,
134
+ maxValue: 1,
135
+ numberPrecision: 2,
136
+ },
137
+ description: 'Sampling temperature from 0 to 1',
138
+ displayOptions,
139
+ },
140
+ {
141
+ displayName: 'Speakers Expected',
142
+ name: 'speakersExpected',
143
+ type: 'number',
144
+ default: '',
145
+ typeOptions: {
146
+ minValue: 1,
147
+ maxValue: 10,
148
+ },
149
+ description: 'Optional speaker count hint for diarization',
150
+ displayOptions: mergeDisplayOptions(displayOptions, {
151
+ show: {
152
+ diarization: [true],
153
+ },
154
+ }),
155
+ },
156
+ {
157
+ displayName: 'Custom Vocabulary',
158
+ name: 'customVocabulary',
159
+ type: 'fixedCollection',
160
+ default: {},
161
+ placeholder: 'Add Term',
162
+ typeOptions: {
163
+ multipleValues: true,
164
+ },
165
+ options: [
166
+ {
167
+ name: 'values',
168
+ displayName: 'Term',
169
+ values: [
170
+ {
171
+ displayName: 'Term',
172
+ name: 'term',
173
+ type: 'string',
174
+ default: '',
175
+ description: 'Word or phrase to improve recognition',
176
+ },
177
+ ],
178
+ },
179
+ ],
180
+ displayOptions,
181
+ },
182
+ {
183
+ displayName: 'Ruleset ID',
184
+ name: 'rulesetId',
185
+ type: 'string',
186
+ default: '',
187
+ description: 'UUID of a pre-defined Speechall replacement ruleset',
188
+ displayOptions,
189
+ },
190
+ {
191
+ displayName: 'Request Timeout (Seconds)',
192
+ name: 'timeoutSeconds',
193
+ type: 'number',
194
+ default: 300,
195
+ typeOptions: {
196
+ minValue: 1,
197
+ maxValue: 900,
198
+ },
199
+ description: 'HTTP request timeout. n8n execution timeouts may still end long workflows.',
200
+ displayOptions,
201
+ },
202
+ ];
203
+ }
204
+ function binaryOutputFields(displayOptions) {
205
+ return [
206
+ {
207
+ displayName: 'Also Return as Binary File',
208
+ name: 'alsoReturnBinary',
209
+ type: 'boolean',
210
+ default: false,
211
+ description: 'Whether to attach text, SRT, or VTT output as binary data',
212
+ displayOptions,
213
+ },
214
+ {
215
+ displayName: 'Binary Output Property',
216
+ name: 'binaryOutputProperty',
217
+ type: 'string',
218
+ default: 'transcript',
219
+ required: true,
220
+ displayOptions: mergeDisplayOptions(displayOptions, {
221
+ show: {
222
+ alsoReturnBinary: [true],
223
+ },
224
+ }),
225
+ },
226
+ ];
227
+ }
228
+ function replacementRulesField(displayOptions) {
229
+ return {
230
+ displayName: 'Inline Replacement Rules',
231
+ name: 'replacementRules',
232
+ type: 'fixedCollection',
233
+ default: {},
234
+ placeholder: 'Add Rule',
235
+ description: 'Inline replacement rules to apply during remote URL transcription',
236
+ typeOptions: {
237
+ multipleValues: true,
238
+ },
239
+ options: [
240
+ {
241
+ name: 'exactMatch',
242
+ displayName: 'Exact Match',
243
+ values: [
244
+ { displayName: 'Search', name: 'search', type: 'string', default: '', required: true },
245
+ {
246
+ displayName: 'Replacement',
247
+ name: 'replacement',
248
+ type: 'string',
249
+ default: '',
250
+ required: true,
251
+ },
252
+ {
253
+ displayName: 'Case Sensitive',
254
+ name: 'caseSensitive',
255
+ type: 'boolean',
256
+ default: false,
257
+ },
258
+ ],
259
+ },
260
+ {
261
+ name: 'regex',
262
+ displayName: 'Regex',
263
+ values: [
264
+ { displayName: 'Pattern', name: 'pattern', type: 'string', default: '', required: true },
265
+ {
266
+ displayName: 'Replacement',
267
+ name: 'replacement',
268
+ type: 'string',
269
+ default: '',
270
+ required: true,
271
+ },
272
+ regexFlagsField(),
273
+ ],
274
+ },
275
+ {
276
+ name: 'regexGroup',
277
+ displayName: 'Regex Group',
278
+ values: [
279
+ { displayName: 'Pattern', name: 'pattern', type: 'string', default: '', required: true },
280
+ regexFlagsField(),
281
+ {
282
+ displayName: 'Group Replacements',
283
+ name: 'groupReplacements',
284
+ type: 'fixedCollection',
285
+ default: {},
286
+ typeOptions: {
287
+ multipleValues: true,
288
+ },
289
+ options: [
290
+ {
291
+ name: 'values',
292
+ displayName: 'Group',
293
+ values: [
294
+ {
295
+ displayName: 'Group Number',
296
+ name: 'groupNumber',
297
+ type: 'number',
298
+ default: 1,
299
+ },
300
+ {
301
+ displayName: 'Replacement',
302
+ name: 'replacement',
303
+ type: 'string',
304
+ default: '',
305
+ },
306
+ ],
307
+ },
308
+ ],
309
+ },
310
+ ],
311
+ },
312
+ ],
313
+ displayOptions,
314
+ };
315
+ }
316
+ function regexFlagsField() {
317
+ return {
318
+ displayName: 'Flags',
319
+ name: 'flags',
320
+ type: 'multiOptions',
321
+ default: [],
322
+ options: [
323
+ { name: 'Case Insensitive', value: 'i' },
324
+ { name: 'Dot Matches Newline', value: 's' },
325
+ { name: 'Extended', value: 'x' },
326
+ { name: 'Multiline', value: 'm' },
327
+ { name: 'Unicode', value: 'u' },
328
+ ],
329
+ };
330
+ }
331
+ function mergeDisplayOptions(base, additional) {
332
+ var _a, _b, _c, _d;
333
+ return {
334
+ show: {
335
+ ...((_a = base.show) !== null && _a !== void 0 ? _a : {}),
336
+ ...((_b = additional.show) !== null && _b !== void 0 ? _b : {}),
337
+ },
338
+ hide: {
339
+ ...((_c = base.hide) !== null && _c !== void 0 ? _c : {}),
340
+ ...((_d = additional.hide) !== null && _d !== void 0 ? _d : {}),
341
+ },
342
+ };
343
+ }
344
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../nodes/Speechall/helpers/fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { IDataObject, INodePropertyOptions } from 'n8n-workflow';
2
+ import type { NormalizedModel, SpeechallModel } from './types';
3
+ export declare function getSelectedModel(parameters: {
4
+ modelSelectionMode: string;
5
+ model?: string;
6
+ modelId?: string;
7
+ }): string;
8
+ export declare function getModelIdentifier(model: SpeechallModel): string;
9
+ export declare function normalizeModel(model: SpeechallModel): NormalizedModel | undefined;
10
+ export declare function normalizeModelsResponse(response: unknown): NormalizedModel[];
11
+ export declare function malformedModelsFromResponse(response: unknown): IDataObject[];
12
+ export declare function modelToOption(model: NormalizedModel): INodePropertyOptions;
13
+ export declare function filterModels(models: NormalizedModel[], filters: IDataObject): NormalizedModel[];
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSelectedModel = getSelectedModel;
4
+ exports.getModelIdentifier = getModelIdentifier;
5
+ exports.normalizeModel = normalizeModel;
6
+ exports.normalizeModelsResponse = normalizeModelsResponse;
7
+ exports.malformedModelsFromResponse = malformedModelsFromResponse;
8
+ exports.modelToOption = modelToOption;
9
+ exports.filterModels = filterModels;
10
+ const DEFAULT_FORMATS = ['text', 'json_text', 'json'];
11
+ function getSelectedModel(parameters) {
12
+ const selectionMode = parameters.modelSelectionMode;
13
+ const value = selectionMode === 'manual' ? parameters.modelId : parameters.model;
14
+ return typeof value === 'string' ? value.trim() : '';
15
+ }
16
+ function getModelIdentifier(model) {
17
+ var _a, _b;
18
+ const value = (_b = (_a = model.id) !== null && _a !== void 0 ? _a : model.model) !== null && _b !== void 0 ? _b : model.identifier;
19
+ return typeof value === 'string' ? value.trim() : '';
20
+ }
21
+ function normalizeModel(model) {
22
+ var _a, _b, _c, _d;
23
+ const id = getModelIdentifier(model);
24
+ if (!id) {
25
+ return undefined;
26
+ }
27
+ const supportedFormats = new Set(DEFAULT_FORMATS);
28
+ const explicitFormats = Array.isArray(model.supported_formats) ? model.supported_formats : [];
29
+ for (const format of explicitFormats) {
30
+ if (isTranscriptOutputFormat(format)) {
31
+ supportedFormats.add(format);
32
+ }
33
+ }
34
+ if (model.supports_srt === true) {
35
+ supportedFormats.add('srt');
36
+ }
37
+ if (model.supports_vtt === true) {
38
+ supportedFormats.add('vtt');
39
+ }
40
+ const displayName = (_c = (_b = (_a = stringOrUndefined(model.display_name)) !== null && _a !== void 0 ? _a : stringOrUndefined(model.displayName)) !== null && _b !== void 0 ? _b : stringOrUndefined(model.description)) !== null && _c !== void 0 ? _c : id;
41
+ return {
42
+ id,
43
+ displayName,
44
+ provider: (_d = stringOrUndefined(model.provider)) !== null && _d !== void 0 ? _d : inferProviderFromModelId(id),
45
+ isAvailable: typeof model.is_available === 'boolean' ? model.is_available : undefined,
46
+ supportedLanguages: Array.isArray(model.supported_languages)
47
+ ? model.supported_languages
48
+ : undefined,
49
+ supportedFormats: [...supportedFormats],
50
+ supportsSrt: supportedFormats.has('srt'),
51
+ supportsVtt: supportedFormats.has('vtt'),
52
+ diarization: booleanOrNull(model.diarization),
53
+ punctuation: booleanOrNull(model.punctuation),
54
+ wordTimestamps: booleanOrNull(model.word_timestamps),
55
+ costPerSecondUsd: numberOrNull(model.cost_per_second_usd),
56
+ maxFileSizeBytes: numberOrNull(model.max_file_size_bytes),
57
+ maxDurationSeconds: numberOrNull(model.max_duration_seconds),
58
+ raw: model,
59
+ };
60
+ }
61
+ function normalizeModelsResponse(response) {
62
+ const models = extractModelArray(response);
63
+ return models
64
+ .map((model) => normalizeModel(model))
65
+ .filter((model) => model !== undefined);
66
+ }
67
+ function malformedModelsFromResponse(response) {
68
+ return extractModelArray(response)
69
+ .filter((model) => !getModelIdentifier(model))
70
+ .map((model) => ({ raw: model, malformed: true }));
71
+ }
72
+ function modelToOption(model) {
73
+ return {
74
+ name: `${model.displayName} - ${model.id}`,
75
+ value: model.id,
76
+ description: model.provider,
77
+ };
78
+ }
79
+ function filterModels(models, filters) {
80
+ var _a;
81
+ const provider = (_a = stringOrUndefined(filters.provider)) === null || _a === void 0 ? void 0 : _a.toLowerCase();
82
+ const availableOnly = filters.availableOnly === true;
83
+ const supportsDiarization = filters.supportsDiarization === true;
84
+ const supportsSrt = filters.supportsSrt === true;
85
+ const supportsVtt = filters.supportsVtt === true;
86
+ const supportsStreaming = filters.supportsStreaming === true;
87
+ return models.filter((model) => {
88
+ var _a;
89
+ if (provider && ((_a = model.provider) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== provider) {
90
+ return false;
91
+ }
92
+ if (availableOnly && model.isAvailable !== true) {
93
+ return false;
94
+ }
95
+ if (supportsDiarization && model.diarization !== true) {
96
+ return false;
97
+ }
98
+ if (supportsSrt && model.supportsSrt !== true) {
99
+ return false;
100
+ }
101
+ if (supportsVtt && model.supportsVtt !== true) {
102
+ return false;
103
+ }
104
+ if (supportsStreaming && model.raw.streamable !== true) {
105
+ return false;
106
+ }
107
+ return true;
108
+ });
109
+ }
110
+ function extractModelArray(response) {
111
+ if (Array.isArray(response)) {
112
+ return response.filter(isObject);
113
+ }
114
+ if (!isObject(response)) {
115
+ return [];
116
+ }
117
+ for (const key of ['models', 'data', 'items', 'results']) {
118
+ const value = response[key];
119
+ if (Array.isArray(value)) {
120
+ return value.filter(isObject);
121
+ }
122
+ }
123
+ return [];
124
+ }
125
+ function isTranscriptOutputFormat(value) {
126
+ return (value === 'text' ||
127
+ value === 'json_text' ||
128
+ value === 'json' ||
129
+ value === 'srt' ||
130
+ value === 'vtt');
131
+ }
132
+ function inferProviderFromModelId(id) {
133
+ const [provider] = id.split('.');
134
+ return provider || undefined;
135
+ }
136
+ function stringOrUndefined(value) {
137
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
138
+ }
139
+ function numberOrNull(value) {
140
+ return typeof value === 'number' ? value : value === null ? null : undefined;
141
+ }
142
+ function booleanOrNull(value) {
143
+ return typeof value === 'boolean' ? value : value === null ? null : undefined;
144
+ }
145
+ function isObject(value) {
146
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
147
+ }
148
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../nodes/Speechall/helpers/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { NormalizedTranscriptionItem, SpeechallSource, TranscriptOutputFormat } from './types';
2
+ export interface NormalizeTranscriptionInput {
3
+ response: unknown;
4
+ rawText?: string;
5
+ outputFormat: TranscriptOutputFormat;
6
+ model: string;
7
+ language?: string;
8
+ source: SpeechallSource;
9
+ sourceUrlSanitized?: string;
10
+ fileUrl?: string;
11
+ }
12
+ export declare function normalizeSpeechallTranscriptionResponse(input: NormalizeTranscriptionInput): NormalizedTranscriptionItem;
13
+ export declare function sanitizeSourceUrl(fileUrl: string): string;
14
+ export declare function parseSpeechallBody(body: unknown, contentType: string | undefined): unknown;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeSpeechallTranscriptionResponse = normalizeSpeechallTranscriptionResponse;
4
+ exports.sanitizeSourceUrl = sanitizeSourceUrl;
5
+ exports.parseSpeechallBody = parseSpeechallBody;
6
+ function normalizeSpeechallTranscriptionResponse(input) {
7
+ const parsedResponse = parseResponse(input.response, input.rawText, input.outputFormat);
8
+ const metadata = buildMetadata(input);
9
+ if (input.outputFormat === 'text' ||
10
+ input.outputFormat === 'srt' ||
11
+ input.outputFormat === 'vtt') {
12
+ return {
13
+ text: stringifyTextResponse(parsedResponse, input.rawText),
14
+ ...metadata,
15
+ };
16
+ }
17
+ if (isObject(parsedResponse)) {
18
+ return mergeMetadata(parsedResponse, metadata);
19
+ }
20
+ return {
21
+ text: stringifyTextResponse(parsedResponse, input.rawText),
22
+ ...metadata,
23
+ };
24
+ }
25
+ function sanitizeSourceUrl(fileUrl) {
26
+ const url = new URL(fileUrl);
27
+ url.search = '';
28
+ url.hash = '';
29
+ return url.toString();
30
+ }
31
+ function parseSpeechallBody(body, contentType) {
32
+ if (typeof body !== 'string') {
33
+ return body;
34
+ }
35
+ const trimmed = body.trim();
36
+ if (!trimmed) {
37
+ return '';
38
+ }
39
+ if (contentType === null || contentType === void 0 ? void 0 : contentType.toLowerCase().includes('application/json')) {
40
+ return JSON.parse(trimmed);
41
+ }
42
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
43
+ try {
44
+ return JSON.parse(trimmed);
45
+ }
46
+ catch {
47
+ return body;
48
+ }
49
+ }
50
+ return body;
51
+ }
52
+ function buildMetadata(input) {
53
+ const metadata = {
54
+ outputFormat: input.outputFormat,
55
+ model: input.model,
56
+ source: input.source,
57
+ };
58
+ if (input.language) {
59
+ metadata.language = input.language;
60
+ }
61
+ if (input.sourceUrlSanitized) {
62
+ metadata.sourceUrlSanitized = input.sourceUrlSanitized;
63
+ }
64
+ if (input.fileUrl) {
65
+ metadata.fileUrl = input.fileUrl;
66
+ }
67
+ return metadata;
68
+ }
69
+ function parseResponse(response, rawText, outputFormat) {
70
+ if (outputFormat === 'text' || outputFormat === 'srt' || outputFormat === 'vtt') {
71
+ return rawText !== null && rawText !== void 0 ? rawText : response;
72
+ }
73
+ return response;
74
+ }
75
+ function stringifyTextResponse(response, rawText) {
76
+ if (rawText !== undefined) {
77
+ return rawText;
78
+ }
79
+ if (typeof response === 'string') {
80
+ return response;
81
+ }
82
+ if (Buffer.isBuffer(response)) {
83
+ return response.toString('utf8');
84
+ }
85
+ if (response === null || response === undefined) {
86
+ return '';
87
+ }
88
+ if (isObject(response) && typeof response.text === 'string') {
89
+ return response.text;
90
+ }
91
+ return JSON.stringify(response);
92
+ }
93
+ function mergeMetadata(response, metadata) {
94
+ const collisions = Object.keys(metadata).filter((key) => response[key] !== undefined);
95
+ if (collisions.length === 0) {
96
+ return {
97
+ ...response,
98
+ ...metadata,
99
+ };
100
+ }
101
+ return {
102
+ ...response,
103
+ _speechall: metadata,
104
+ };
105
+ }
106
+ function isObject(value) {
107
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
108
+ }
109
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../nodes/Speechall/helpers/normalize.ts"],"names":[],"mappings":";;AAeA,0FAyBC;AAED,8CAKC;AAED,gDAuBC;AAzDD,SAAgB,uCAAuC,CACtD,KAAkC;IAElC,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEtC,IACC,KAAK,CAAC,YAAY,KAAK,MAAM;QAC7B,KAAK,CAAC,YAAY,KAAK,KAAK;QAC5B,KAAK,CAAC,YAAY,KAAK,KAAK,EAC3B,CAAC;QACF,OAAO;YACN,IAAI,EAAE,qBAAqB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1D,GAAG,QAAQ;SACX,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACN,IAAI,EAAE,qBAAqB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;QAC1D,GAAG,QAAQ;KACX,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAe;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvB,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAa,EAAE,WAA+B;IAChF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAkC;IACxD,MAAM,QAAQ,GAAgC;QAC7C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;KACpB,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CACrB,QAAiB,EACjB,OAA2B,EAC3B,YAAoC;IAEpC,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QACjF,OAAO,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,QAAQ,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAiB,EAAE,OAA2B;IAC5E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CACrB,QAAqB,EACrB,QAAqC;IAErC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IAEtF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACN,GAAG,QAAQ;YACX,GAAG,QAAQ;SACoB,CAAC;IAClC,CAAC;IAED,OAAO;QACN,GAAG,QAAQ;QACX,UAAU,EAAE,QAAQ;KACsB,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { INode, INodeParameters } from 'n8n-workflow';
2
+ import type { ReplacementRule } from './types';
3
+ export declare function serializeCustomVocabulary(parameters: INodeParameters): string[];
4
+ export declare function serializeReplacementRules(node: INode, parameters: INodeParameters): ReplacementRule[] | undefined;