@sinch/cli 0.1.28-beta.0 → 0.1.29-beta.0

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 (133) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +198 -198
  3. package/bin/sinch +2 -2
  4. package/dist/index.d.ts +0 -2
  5. package/dist/index.js +325 -780
  6. package/package.json +71 -71
  7. package/dist/commands/conversations/apps.d.ts +0 -2
  8. package/dist/commands/conversations/apps.d.ts.map +0 -1
  9. package/dist/commands/conversations/apps.js +0 -162
  10. package/dist/commands/conversations/apps.js.map +0 -1
  11. package/dist/commands/conversations/contacts.d.ts +0 -2
  12. package/dist/commands/conversations/contacts.d.ts.map +0 -1
  13. package/dist/commands/conversations/contacts.js +0 -245
  14. package/dist/commands/conversations/contacts.js.map +0 -1
  15. package/dist/commands/conversations/conversation.d.ts +0 -2
  16. package/dist/commands/conversations/conversation.d.ts.map +0 -1
  17. package/dist/commands/conversations/conversation.js +0 -19
  18. package/dist/commands/conversations/conversation.js.map +0 -1
  19. package/dist/commands/conversations/conversations.d.ts +0 -2
  20. package/dist/commands/conversations/conversations.d.ts.map +0 -1
  21. package/dist/commands/conversations/conversations.js +0 -104
  22. package/dist/commands/conversations/conversations.js.map +0 -1
  23. package/dist/commands/conversations/messages.d.ts +0 -2
  24. package/dist/commands/conversations/messages.d.ts.map +0 -1
  25. package/dist/commands/conversations/messages.js +0 -107
  26. package/dist/commands/conversations/messages.js.map +0 -1
  27. package/dist/commands/conversations/send.d.ts +0 -2
  28. package/dist/commands/conversations/send.d.ts.map +0 -1
  29. package/dist/commands/conversations/send.js +0 -185
  30. package/dist/commands/conversations/send.js.map +0 -1
  31. package/dist/commands/conversations/utils.d.ts +0 -4
  32. package/dist/commands/conversations/utils.d.ts.map +0 -1
  33. package/dist/commands/conversations/utils.js +0 -30
  34. package/dist/commands/conversations/utils.js.map +0 -1
  35. package/dist/commands/conversations/webhooks.d.ts +0 -2
  36. package/dist/commands/conversations/webhooks.d.ts.map +0 -1
  37. package/dist/commands/conversations/webhooks.js +0 -238
  38. package/dist/commands/conversations/webhooks.js.map +0 -1
  39. package/dist/commands/delete.d.ts +0 -2
  40. package/dist/commands/delete.d.ts.map +0 -1
  41. package/dist/commands/delete.js +0 -93
  42. package/dist/commands/delete.js.map +0 -1
  43. package/dist/commands/deploy.d.ts +0 -2
  44. package/dist/commands/deploy.d.ts.map +0 -1
  45. package/dist/commands/deploy.js +0 -687
  46. package/dist/commands/deploy.js.map +0 -1
  47. package/dist/commands/dev.d.ts +0 -2
  48. package/dist/commands/dev.d.ts.map +0 -1
  49. package/dist/commands/dev.js +0 -460
  50. package/dist/commands/dev.js.map +0 -1
  51. package/dist/commands/docs.d.ts +0 -2
  52. package/dist/commands/docs.d.ts.map +0 -1
  53. package/dist/commands/docs.js +0 -105
  54. package/dist/commands/docs.js.map +0 -1
  55. package/dist/commands/download.d.ts +0 -2
  56. package/dist/commands/download.d.ts.map +0 -1
  57. package/dist/commands/download.js +0 -207
  58. package/dist/commands/download.js.map +0 -1
  59. package/dist/commands/functions.d.ts +0 -2
  60. package/dist/commands/functions.d.ts.map +0 -1
  61. package/dist/commands/functions.js +0 -25
  62. package/dist/commands/functions.js.map +0 -1
  63. package/dist/commands/init.d.ts +0 -2
  64. package/dist/commands/init.d.ts.map +0 -1
  65. package/dist/commands/init.js +0 -552
  66. package/dist/commands/init.js.map +0 -1
  67. package/dist/commands/list.d.ts +0 -2
  68. package/dist/commands/list.d.ts.map +0 -1
  69. package/dist/commands/list.js +0 -180
  70. package/dist/commands/list.js.map +0 -1
  71. package/dist/commands/logs.d.ts +0 -2
  72. package/dist/commands/logs.d.ts.map +0 -1
  73. package/dist/commands/logs.js +0 -1001
  74. package/dist/commands/logs.js.map +0 -1
  75. package/dist/commands/secrets.d.ts +0 -2
  76. package/dist/commands/secrets.d.ts.map +0 -1
  77. package/dist/commands/secrets.js +0 -197
  78. package/dist/commands/secrets.js.map +0 -1
  79. package/dist/commands/skills.d.ts +0 -4
  80. package/dist/commands/skills.d.ts.map +0 -1
  81. package/dist/commands/skills.js +0 -309
  82. package/dist/commands/skills.js.map +0 -1
  83. package/dist/commands/status.d.ts +0 -2
  84. package/dist/commands/status.d.ts.map +0 -1
  85. package/dist/commands/status.js +0 -145
  86. package/dist/commands/status.js.map +0 -1
  87. package/dist/commands/templates.d.ts +0 -2
  88. package/dist/commands/templates.d.ts.map +0 -1
  89. package/dist/commands/templates.js +0 -168
  90. package/dist/commands/templates.js.map +0 -1
  91. package/dist/commands/voice.d.ts +0 -2
  92. package/dist/commands/voice.d.ts.map +0 -1
  93. package/dist/commands/voice.js +0 -259
  94. package/dist/commands/voice.js.map +0 -1
  95. package/dist/index.d.ts.map +0 -1
  96. package/dist/index.js.map +0 -1
  97. package/dist/lib/api.d.ts +0 -73
  98. package/dist/lib/api.d.ts.map +0 -1
  99. package/dist/lib/api.js +0 -455
  100. package/dist/lib/api.js.map +0 -1
  101. package/dist/lib/config.d.ts +0 -68
  102. package/dist/lib/config.d.ts.map +0 -1
  103. package/dist/lib/config.js +0 -276
  104. package/dist/lib/config.js.map +0 -1
  105. package/dist/lib/conversation.d.ts +0 -8
  106. package/dist/lib/conversation.d.ts.map +0 -1
  107. package/dist/lib/conversation.js +0 -179
  108. package/dist/lib/conversation.js.map +0 -1
  109. package/dist/lib/credentials.d.ts +0 -43
  110. package/dist/lib/credentials.d.ts.map +0 -1
  111. package/dist/lib/credentials.js +0 -365
  112. package/dist/lib/credentials.js.map +0 -1
  113. package/dist/lib/docs-utils.d.ts +0 -13
  114. package/dist/lib/docs-utils.d.ts.map +0 -1
  115. package/dist/lib/docs-utils.js +0 -115
  116. package/dist/lib/docs-utils.js.map +0 -1
  117. package/dist/lib/update-check.d.ts +0 -5
  118. package/dist/lib/update-check.d.ts.map +0 -1
  119. package/dist/lib/update-check.js +0 -114
  120. package/dist/lib/update-check.js.map +0 -1
  121. package/dist/lib/voice.d.ts +0 -3
  122. package/dist/lib/voice.d.ts.map +0 -1
  123. package/dist/lib/voice.js +0 -49
  124. package/dist/lib/voice.js.map +0 -1
  125. package/dist/package.json +0 -71
  126. package/dist/utils/logger.d.ts +0 -28
  127. package/dist/utils/logger.d.ts.map +0 -1
  128. package/dist/utils/logger.js +0 -138
  129. package/dist/utils/logger.js.map +0 -1
  130. package/dist/utils/spinner.d.ts +0 -17
  131. package/dist/utils/spinner.d.ts.map +0 -1
  132. package/dist/utils/spinner.js +0 -75
  133. package/dist/utils/spinner.js.map +0 -1
@@ -1,365 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.SecureCredentials = void 0;
40
- let keytar = null;
41
- function getKeytar() {
42
- if (!keytar) {
43
- try {
44
- keytar = require('keytar');
45
- }
46
- catch (error) {
47
- return null;
48
- }
49
- }
50
- return keytar;
51
- }
52
- const os = __importStar(require("os"));
53
- const chalk_1 = __importDefault(require("chalk"));
54
- const SERVICE_NAME = 'sinch-functions-cli';
55
- const ACCOUNT_NAME = os.userInfo().username;
56
- class SecureCredentials {
57
- config;
58
- keychainAvailable = null;
59
- constructor(config) {
60
- this.config = config;
61
- }
62
- async isKeychainAvailable() {
63
- if (this.keychainAvailable !== null) {
64
- return this.keychainAvailable;
65
- }
66
- if (this.config.get('keySecretPlaintext')) {
67
- this.keychainAvailable = false;
68
- return false;
69
- }
70
- try {
71
- const kt = getKeytar();
72
- if (!kt) {
73
- this.keychainAvailable = false;
74
- return false;
75
- }
76
- const testKey = `${ACCOUNT_NAME}-test-${Date.now()}`;
77
- await kt.setPassword(SERVICE_NAME, testKey, 'test');
78
- await kt.deletePassword(SERVICE_NAME, testKey);
79
- this.keychainAvailable = true;
80
- return true;
81
- }
82
- catch (error) {
83
- this.keychainAvailable = false;
84
- return false;
85
- }
86
- }
87
- async setPassword(account, password) {
88
- const hasKeychain = await this.isKeychainAvailable();
89
- if (!hasKeychain) {
90
- return false;
91
- }
92
- const kt = getKeytar();
93
- if (!kt) {
94
- return false;
95
- }
96
- await kt.setPassword(SERVICE_NAME, account, password);
97
- return true;
98
- }
99
- async getPassword(account) {
100
- const hasKeychain = await this.isKeychainAvailable();
101
- if (!hasKeychain) {
102
- return null;
103
- }
104
- const kt = getKeytar();
105
- if (!kt) {
106
- return null;
107
- }
108
- return await kt.getPassword(SERVICE_NAME, account);
109
- }
110
- async deletePassword(account) {
111
- const hasKeychain = await this.isKeychainAvailable();
112
- if (!hasKeychain) {
113
- return false;
114
- }
115
- try {
116
- const kt = getKeytar();
117
- if (!kt) {
118
- return false;
119
- }
120
- await kt.deletePassword(SERVICE_NAME, account);
121
- return true;
122
- }
123
- catch (error) {
124
- return true;
125
- }
126
- }
127
- async store(credentials) {
128
- const { projectId, keyId, keySecret, applicationKey, applicationSecret } = credentials;
129
- const storedKeySecret = await this.setPassword(`${ACCOUNT_NAME}-keySecret`, keySecret);
130
- const storedAppSecret = await this.setPassword(applicationKey, applicationSecret);
131
- if (storedKeySecret && storedAppSecret) {
132
- this.config.set('keySecretPlaintext', null);
133
- this.config.set('applicationSecretPlaintext', null);
134
- }
135
- else {
136
- console.log(chalk_1.default.yellow('\nāš ļø OS keychain not available (Docker/CI environment detected)'));
137
- console.log(chalk_1.default.yellow('āš ļø Storing secrets in plaintext config file'));
138
- console.log(chalk_1.default.gray('Location: ~/.sinch/config.json'));
139
- console.log(chalk_1.default.gray('\nFor better security, export as environment variables instead:'));
140
- console.log(chalk_1.default.cyan(' export SINCH_KEY_SECRET="' + keySecret + '"'));
141
- console.log(chalk_1.default.cyan(' export SINCH_APPLICATION_SECRET="' + applicationSecret + '"'));
142
- this.config.set('keySecretPlaintext', keySecret);
143
- this.config.set('applicationSecretPlaintext', applicationSecret);
144
- }
145
- this.config.set('projectId', projectId);
146
- this.config.set('keyId', keyId);
147
- this.config.set('defaultApplicationKey', applicationKey);
148
- this.config.set('credentialsStored', true);
149
- await this.config.save();
150
- }
151
- async storeOAuthToken(tokenData) {
152
- const { access_token, refresh_token, expires_in, token_type } = tokenData;
153
- const expiresAt = new Date(Date.now() + (expires_in * 1000)).toISOString();
154
- const storedAccess = await this.setPassword(`${ACCOUNT_NAME}-oauth-access`, access_token);
155
- let storedRefresh = true;
156
- if (refresh_token) {
157
- storedRefresh = await this.setPassword(`${ACCOUNT_NAME}-oauth-refresh`, refresh_token);
158
- }
159
- this.config.set('oauthTokenType', token_type);
160
- this.config.set('oauthExpiresAt', expiresAt);
161
- this.config.set('oauthStored', storedAccess && storedRefresh);
162
- await this.config.save();
163
- }
164
- async reAuthenticateOAuth() {
165
- try {
166
- const creds = await this.retrieve();
167
- if (!creds) {
168
- return null;
169
- }
170
- const { SinchAPI } = require('./api');
171
- const api = new SinchAPI({
172
- apiUrl: this.config.get('apiUrl') || 'https://api.functions.dev.sinchvoice.org',
173
- projectId: creds.projectId,
174
- credentials: null
175
- });
176
- const newTokenData = await api.authenticateOAuth(creds.keyId, creds.keySecret);
177
- await this.storeOAuthToken(newTokenData);
178
- return newTokenData.access_token;
179
- }
180
- catch (error) {
181
- return null;
182
- }
183
- }
184
- async getOAuthToken() {
185
- const stored = this.config.get('oauthStored');
186
- if (!stored) {
187
- return await this.reAuthenticateOAuth();
188
- }
189
- const expiresAt = this.config.get('oauthExpiresAt');
190
- if (expiresAt && new Date(expiresAt) < new Date()) {
191
- console.log(chalk_1.default.gray('Token expired, re-authenticating...'));
192
- const token = await this.reAuthenticateOAuth();
193
- if (token) {
194
- console.log(chalk_1.default.green('āœ“ Token renewed successfully'));
195
- }
196
- else {
197
- console.warn(chalk_1.default.yellow('Failed to renew OAuth token. Please login again.'));
198
- }
199
- return token;
200
- }
201
- return await this.getPassword(`${ACCOUNT_NAME}-oauth-access`);
202
- }
203
- async storeApplicationSecret(applicationKey, applicationSecret) {
204
- await this.setPassword(applicationKey, applicationSecret);
205
- const defaultApp = this.config.get('defaultApplicationKey');
206
- if (!defaultApp) {
207
- this.config.set('defaultApplicationKey', applicationKey);
208
- await this.config.save();
209
- }
210
- }
211
- async retrieve() {
212
- const envKeyId = process.env.SINCH_KEY_ID;
213
- const envKeySecret = process.env.SINCH_KEY_SECRET;
214
- const envApplicationKey = process.env.SINCH_APPLICATION_KEY;
215
- const envApplicationSecret = process.env.SINCH_APPLICATION_SECRET;
216
- if (envKeyId && envKeySecret && envApplicationKey && envApplicationSecret) {
217
- return {
218
- projectId: process.env.SINCH_PROJECT_ID || this.config.get('projectId') || '',
219
- keyId: envKeyId,
220
- keySecret: envKeySecret,
221
- applicationKey: envApplicationKey,
222
- applicationSecret: envApplicationSecret
223
- };
224
- }
225
- const stored = this.config.get('credentialsStored');
226
- if (!stored) {
227
- return null;
228
- }
229
- const projectId = this.config.get('projectId');
230
- const keyId = this.config.get('keyId');
231
- const applicationKey = this.config.get('defaultApplicationKey');
232
- let keySecret = await this.getPassword(`${ACCOUNT_NAME}-keySecret`);
233
- let applicationSecret = applicationKey ? await this.getPassword(applicationKey) : null;
234
- if (!keySecret || !applicationSecret) {
235
- keySecret = keySecret || envKeySecret || null;
236
- applicationSecret = applicationSecret || envApplicationSecret || null;
237
- }
238
- if (!keySecret || !applicationSecret) {
239
- keySecret = keySecret || this.config.get('keySecretPlaintext');
240
- applicationSecret = applicationSecret || this.config.get('applicationSecretPlaintext');
241
- }
242
- if (!keySecret || !applicationSecret) {
243
- return null;
244
- }
245
- return {
246
- projectId,
247
- keyId,
248
- keySecret,
249
- applicationKey,
250
- applicationSecret
251
- };
252
- }
253
- async getApplicationCredentials(applicationKey = null) {
254
- if (!applicationKey) {
255
- applicationKey = this.config.get('defaultApplicationKey');
256
- }
257
- if (!applicationKey) {
258
- return null;
259
- }
260
- let applicationSecret = await this.getPassword(applicationKey);
261
- if (!applicationSecret) {
262
- applicationSecret = process.env.SINCH_APPLICATION_SECRET || null;
263
- }
264
- if (!applicationSecret) {
265
- applicationSecret = this.config.get('applicationSecretPlaintext');
266
- }
267
- if (!applicationSecret) {
268
- return null;
269
- }
270
- return {
271
- applicationKey,
272
- applicationSecret
273
- };
274
- }
275
- async clear() {
276
- const defaultApp = this.config.get('defaultApplicationKey');
277
- await this.deletePassword(`${ACCOUNT_NAME}-keySecret`);
278
- await this.deletePassword(`${ACCOUNT_NAME}-oauth-access`);
279
- await this.deletePassword(`${ACCOUNT_NAME}-oauth-refresh`);
280
- if (defaultApp) {
281
- await this.deletePassword(defaultApp);
282
- }
283
- this.config.set('projectId', null);
284
- this.config.set('keyId', null);
285
- this.config.set('defaultApplicationKey', null);
286
- this.config.set('credentialsStored', false);
287
- this.config.set('oauthStored', false);
288
- this.config.set('oauthTokenType', null);
289
- this.config.set('oauthExpiresAt', null);
290
- this.config.set('keySecretPlaintext', null);
291
- this.config.set('applicationSecretPlaintext', null);
292
- await this.config.save();
293
- }
294
- async hasCredentials() {
295
- const hasEnvCreds = !!(process.env.SINCH_KEY_ID &&
296
- process.env.SINCH_KEY_SECRET &&
297
- process.env.SINCH_APPLICATION_KEY &&
298
- process.env.SINCH_APPLICATION_SECRET);
299
- if (hasEnvCreds) {
300
- return true;
301
- }
302
- const stored = this.config.get('credentialsStored');
303
- if (!stored) {
304
- return false;
305
- }
306
- if (this.config.get('keySecretPlaintext')) {
307
- return true;
308
- }
309
- const keySecret = await this.getPassword(`${ACCOUNT_NAME}-keySecret`);
310
- const applicationKey = this.config.get('defaultApplicationKey');
311
- const applicationSecret = applicationKey ? await this.getPassword(applicationKey) : null;
312
- return !!(keySecret && applicationSecret);
313
- }
314
- async hasOAuthToken() {
315
- const stored = this.config.get('oauthStored');
316
- if (!stored) {
317
- return false;
318
- }
319
- const token = await this.getPassword(`${ACCOUNT_NAME}-oauth-access`);
320
- return !!token;
321
- }
322
- getPublicInfo() {
323
- return {
324
- projectId: this.config.get('projectId'),
325
- keyId: this.config.get('keyId'),
326
- applicationKey: this.config.get('defaultApplicationKey'),
327
- hasCredentials: this.config.get('credentialsStored', false),
328
- hasOAuth: this.config.get('oauthStored', false),
329
- oauthExpiresAt: this.config.get('oauthExpiresAt')
330
- };
331
- }
332
- async createSinchClient(applicationKey = null) {
333
- const creds = await this.getApplicationCredentials(applicationKey);
334
- if (!creds) {
335
- throw new Error('No credentials found. Please run "sinch auth login" first.');
336
- }
337
- const { SinchClient } = require('@sinch/sdk-core');
338
- return new SinchClient({
339
- applicationKey: creds.applicationKey,
340
- applicationSecret: creds.applicationSecret,
341
- projectId: this.config.get('projectId')
342
- });
343
- }
344
- async storeBasicAuthToken(token) {
345
- const stored = await this.setPassword(`${ACCOUNT_NAME}-basic-auth`, token);
346
- if (stored) {
347
- this.config.set('basicAuthStored', true);
348
- await this.config.save();
349
- }
350
- }
351
- async getBasicAuthToken() {
352
- const stored = this.config.get('basicAuthStored');
353
- if (!stored) {
354
- return null;
355
- }
356
- return await this.getPassword(`${ACCOUNT_NAME}-basic-auth`);
357
- }
358
- async clearBasicAuthToken() {
359
- await this.deletePassword(`${ACCOUNT_NAME}-basic-auth`);
360
- this.config.set('basicAuthStored', false);
361
- await this.config.save();
362
- }
363
- }
364
- exports.SecureCredentials = SecureCredentials;
365
- //# sourceMappingURL=credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- interface DocumentationResult {
2
- documentation?: string;
3
- callFlowDiagram?: string;
4
- diagram?: string;
5
- generatedAt?: string;
6
- }
7
- declare function generateDocsFromLocal(): Promise<string>;
8
- declare function findFunctionFile(dir: string): Promise<string | null>;
9
- declare function combineDocumentation(result: DocumentationResult): string;
10
- declare function saveDocumentationToFile(documentation: string, filename: string): Promise<void>;
11
- declare function detectRuntimeFromFile(filePath: string): string;
12
- export { generateDocsFromLocal, saveDocumentationToFile, combineDocumentation, findFunctionFile, detectRuntimeFromFile, type DocumentationResult };
13
- //# sourceMappingURL=docs-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-utils.d.ts","sourceRoot":"","sources":["../../src/lib/docs-utils.ts"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,iBAAe,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoBtD;AAKD,iBAAe,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBnE;AAKD,iBAAS,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAyBjE;AAKD,iBAAe,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7F;AAKD,iBAAS,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcvD;AAED,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,mBAAmB,EACzB,CAAC"}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.generateDocsFromLocal = generateDocsFromLocal;
37
- exports.saveDocumentationToFile = saveDocumentationToFile;
38
- exports.combineDocumentation = combineDocumentation;
39
- exports.findFunctionFile = findFunctionFile;
40
- exports.detectRuntimeFromFile = detectRuntimeFromFile;
41
- const fs = __importStar(require("fs-extra"));
42
- const path = __importStar(require("path"));
43
- const api_1 = require("./api");
44
- const config_1 = require("./config");
45
- async function generateDocsFromLocal() {
46
- const currentDir = process.cwd();
47
- const functionFile = await findFunctionFile(currentDir);
48
- if (!functionFile) {
49
- throw new Error('No function file found. Make sure you\'re in a function directory with function.js, function.ts, index.js, index.ts, handler.js, or handler.ts');
50
- }
51
- const code = await fs.readFile(functionFile, 'utf8');
52
- const runtime = detectRuntimeFromFile(functionFile);
53
- const functionName = path.basename(currentDir);
54
- const api = new api_1.SinchAPI(config_1.config.getApiConfig());
55
- const result = await api.generateDocumentationFromCode(code, runtime, functionName);
56
- return combineDocumentation(result);
57
- }
58
- async function findFunctionFile(dir) {
59
- const possibleFiles = [
60
- 'function.js',
61
- 'function.ts',
62
- 'index.js',
63
- 'index.ts',
64
- 'handler.js',
65
- 'handler.ts',
66
- 'function.py',
67
- 'handler.py',
68
- 'Function.cs',
69
- 'Handler.cs'
70
- ];
71
- for (const file of possibleFiles) {
72
- const filePath = path.join(dir, file);
73
- if (await fs.pathExists(filePath)) {
74
- return filePath;
75
- }
76
- }
77
- return null;
78
- }
79
- function combineDocumentation(result) {
80
- let combined = result.documentation || '';
81
- const diagram = result.diagram || result.callFlowDiagram;
82
- if (diagram) {
83
- if (combined && !combined.endsWith('\n\n')) {
84
- combined += '\n\n';
85
- }
86
- combined += '## Call Flow Diagram\n\n';
87
- combined += '```mermaid\n';
88
- combined += diagram.replace(/^```mermaid\n?|```$/g, '');
89
- combined += '\n```\n';
90
- }
91
- if (result.generatedAt) {
92
- combined += '\n---\n\n';
93
- combined += `*Documentation generated on ${new Date(result.generatedAt).toLocaleString()} using Sinch AI*\n`;
94
- }
95
- return combined;
96
- }
97
- async function saveDocumentationToFile(documentation, filename) {
98
- const outputPath = path.resolve(filename);
99
- await fs.writeFile(outputPath, documentation, 'utf8');
100
- }
101
- function detectRuntimeFromFile(filePath) {
102
- const ext = path.extname(filePath).toLowerCase();
103
- switch (ext) {
104
- case '.js':
105
- case '.ts':
106
- return 'node';
107
- case '.py':
108
- return 'python';
109
- case '.cs':
110
- return 'csharp';
111
- default:
112
- return 'node';
113
- }
114
- }
115
- //# sourceMappingURL=docs-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-utils.js","sourceRoot":"","sources":["../../src/lib/docs-utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare function isRunningInDocker(): boolean;
2
- export declare function isRunningInCI(): boolean;
3
- export declare function isNonInteractive(): boolean;
4
- export declare function checkForUpdatesAsync(): void;
5
- //# sourceMappingURL=update-check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"AAWA,wBAAgB,iBAAiB,IAAI,OAAO,CAc3C;AAMD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAKD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAqGD,wBAAgB,oBAAoB,IAAI,IAAI,CAgB3C"}
@@ -1,114 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isRunningInDocker = isRunningInDocker;
7
- exports.isRunningInCI = isRunningInCI;
8
- exports.isNonInteractive = isNonInteractive;
9
- exports.checkForUpdatesAsync = checkForUpdatesAsync;
10
- const fs_1 = __importDefault(require("fs"));
11
- const path_1 = __importDefault(require("path"));
12
- const chalk_1 = __importDefault(require("chalk"));
13
- const UPDATE_CHECK_INTERVAL = 1800000;
14
- const NPM_REGISTRY_URL = 'https://registry.npmjs.org/@sinch/cli';
15
- function isRunningInDocker() {
16
- if (process.platform !== 'win32') {
17
- try {
18
- if (fs_1.default.existsSync('/.dockerenv'))
19
- return true;
20
- const cgroup = fs_1.default.readFileSync('/proc/1/cgroup', 'utf8');
21
- return cgroup.includes('docker') || cgroup.includes('containerd');
22
- }
23
- catch {
24
- return false;
25
- }
26
- }
27
- return Boolean(process.env.DOCKER_CONTAINER);
28
- }
29
- function isRunningInCI() {
30
- return Boolean(process.env.CI);
31
- }
32
- function isNonInteractive() {
33
- return isRunningInDocker() || isRunningInCI();
34
- }
35
- function getChannel(version) {
36
- if (version.includes('-dev.'))
37
- return 'dev';
38
- const major = parseInt(version.split('.')[0] || '0');
39
- return major >= 1 ? 'latest' : 'beta';
40
- }
41
- function shouldCheckForUpdate(lastCheckFile) {
42
- try {
43
- if (!fs_1.default.existsSync(lastCheckFile))
44
- return true;
45
- const lastCheck = parseInt(fs_1.default.readFileSync(lastCheckFile, 'utf8'));
46
- return Date.now() - lastCheck > UPDATE_CHECK_INTERVAL;
47
- }
48
- catch {
49
- return true;
50
- }
51
- }
52
- function isNewerVersion(currentVersion, newVersion) {
53
- const cleanCurrent = currentVersion.replace(/^v/, '').split('-')[0] || '0.0.0';
54
- const cleanNew = newVersion.replace(/^v/, '').split('-')[0] || '0.0.0';
55
- const currentParts = cleanCurrent.split('.').map(x => parseInt(x) || 0);
56
- const newParts = cleanNew.split('.').map(x => parseInt(x) || 0);
57
- for (let i = 0; i < 3; i++) {
58
- const currentPart = currentParts[i] || 0;
59
- const newPart = newParts[i] || 0;
60
- if (newPart > currentPart)
61
- return true;
62
- if (newPart < currentPart)
63
- return false;
64
- }
65
- if (currentVersion.includes('-dev.') && newVersion.includes('-dev.')) {
66
- const currentBuild = parseInt(currentVersion.split('-dev.')[1] || '0');
67
- const newBuild = parseInt(newVersion.split('-dev.')[1] || '0');
68
- return newBuild > currentBuild;
69
- }
70
- return false;
71
- }
72
- async function fetchLatestVersion(channel) {
73
- try {
74
- const response = await fetch(NPM_REGISTRY_URL, {
75
- signal: AbortSignal.timeout(3000)
76
- });
77
- if (!response.ok)
78
- return null;
79
- const data = await response.json();
80
- return data['dist-tags']?.[channel] || null;
81
- }
82
- catch {
83
- return null;
84
- }
85
- }
86
- async function checkForUpdates(configDir, lastCheckFile) {
87
- const currentVersion = require('../../package.json').version;
88
- const channel = getChannel(currentVersion);
89
- try {
90
- const latestVersion = await fetchLatestVersion(channel);
91
- if (!latestVersion)
92
- return;
93
- if (isNewerVersion(currentVersion, latestVersion)) {
94
- console.log(chalk_1.default.yellow(`\nšŸ“¦ Update available: ${currentVersion} → ${latestVersion}`));
95
- console.log(chalk_1.default.cyan(`Run: npm install -g @sinch/cli@${channel}\n`));
96
- }
97
- fs_1.default.mkdirSync(configDir, { recursive: true });
98
- fs_1.default.writeFileSync(lastCheckFile, Date.now().toString());
99
- }
100
- catch {
101
- }
102
- }
103
- function checkForUpdatesAsync() {
104
- if (isNonInteractive())
105
- return;
106
- const configDir = path_1.default.join(require('os').homedir(), '.sinch');
107
- const lastCheckFile = path_1.default.join(configDir, '.last-update-check');
108
- if (!shouldCheckForUpdate(lastCheckFile)) {
109
- return;
110
- }
111
- checkForUpdates(configDir, lastCheckFile).catch(() => {
112
- });
113
- }
114
- //# sourceMappingURL=update-check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- declare function updateVoiceCallbackUrl(callbackUrl: string): Promise<void>;
2
- export { updateVoiceCallbackUrl };
3
- //# sourceMappingURL=voice.d.ts.map