@bagelink/sdk 1.4.188 → 1.5.3

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/dist/index.cjs CHANGED
@@ -385,6 +385,17 @@ function generateFunctionParameters(params, isFileUpload = false) {
385
385
  config: queryParams.length ? { params: queryParams.join(", ") } : void 0
386
386
  };
387
387
  }
388
+ function parseParameter(paramStr) {
389
+ const trimmed = paramStr.trim();
390
+ const isOptional = trimmed.includes("?:");
391
+ const nameMatch = trimmed.match(/^([a-z_$][\w$]*)/i);
392
+ const name = nameMatch ? nameMatch[1] : "";
393
+ const typeMatch = trimmed.match(/:\s*([^=]+)/);
394
+ const type = typeMatch ? typeMatch[1].trim() : "any";
395
+ const defaultMatch = trimmed.match(/=(.+)$/);
396
+ const defaultValue = defaultMatch ? defaultMatch[1].trim() : void 0;
397
+ return { name, type, defaultValue, isOptional };
398
+ }
388
399
  function combineAllParams(parameters, requestBodyParam) {
389
400
  let allParamsArray = [];
390
401
  if (parameters.params) {
@@ -393,7 +404,15 @@ function combineAllParams(parameters, requestBodyParam) {
393
404
  if (requestBodyParam) {
394
405
  allParamsArray.push(requestBodyParam.trim());
395
406
  }
396
- return allParamsArray.filter(Boolean).sort((a, b) => (a.includes("?") ? 1 : -1) - (b.includes("?") ? 1 : -1)).join(", ");
407
+ if (allParamsArray.length === 0) {
408
+ return "";
409
+ }
410
+ const parsedParams = allParamsArray.filter(Boolean).map(parseParameter);
411
+ const destructuredNames = parsedParams.map((p) => p.defaultValue ? `${p.name} = ${p.defaultValue}` : p.name).join(", ");
412
+ const typeDefinition = parsedParams.map((p) => {
413
+ return `${p.name}?: ${p.type}`;
414
+ }).join(", ");
415
+ return `{ ${destructuredNames} }: { ${typeDefinition} } = {}`;
397
416
  }
398
417
  function generateAxiosFunction(method, formattedPath, allParams, responseTypeStr, parameters, requestBodyPayload) {
399
418
  if (allParams === "undefined") allParams = "";
package/dist/index.mjs CHANGED
@@ -379,6 +379,17 @@ function generateFunctionParameters(params, isFileUpload = false) {
379
379
  config: queryParams.length ? { params: queryParams.join(", ") } : void 0
380
380
  };
381
381
  }
382
+ function parseParameter(paramStr) {
383
+ const trimmed = paramStr.trim();
384
+ const isOptional = trimmed.includes("?:");
385
+ const nameMatch = trimmed.match(/^([a-z_$][\w$]*)/i);
386
+ const name = nameMatch ? nameMatch[1] : "";
387
+ const typeMatch = trimmed.match(/:\s*([^=]+)/);
388
+ const type = typeMatch ? typeMatch[1].trim() : "any";
389
+ const defaultMatch = trimmed.match(/=(.+)$/);
390
+ const defaultValue = defaultMatch ? defaultMatch[1].trim() : void 0;
391
+ return { name, type, defaultValue, isOptional };
392
+ }
382
393
  function combineAllParams(parameters, requestBodyParam) {
383
394
  let allParamsArray = [];
384
395
  if (parameters.params) {
@@ -387,7 +398,15 @@ function combineAllParams(parameters, requestBodyParam) {
387
398
  if (requestBodyParam) {
388
399
  allParamsArray.push(requestBodyParam.trim());
389
400
  }
390
- return allParamsArray.filter(Boolean).sort((a, b) => (a.includes("?") ? 1 : -1) - (b.includes("?") ? 1 : -1)).join(", ");
401
+ if (allParamsArray.length === 0) {
402
+ return "";
403
+ }
404
+ const parsedParams = allParamsArray.filter(Boolean).map(parseParameter);
405
+ const destructuredNames = parsedParams.map((p) => p.defaultValue ? `${p.name} = ${p.defaultValue}` : p.name).join(", ");
406
+ const typeDefinition = parsedParams.map((p) => {
407
+ return `${p.name}?: ${p.type}`;
408
+ }).join(", ");
409
+ return `{ ${destructuredNames} }: { ${typeDefinition} } = {}`;
391
410
  }
392
411
  function generateAxiosFunction(method, formattedPath, allParams, responseTypeStr, parameters, requestBodyPayload) {
393
412
  if (allParams === "undefined") allParams = "";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/sdk",
3
3
  "type": "module",
4
- "version": "1.4.188",
4
+ "version": "1.5.3",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -266,10 +266,41 @@ function generateFunctionParameters(
266
266
  }
267
267
 
268
268
  /**
269
- * Combines and formats all parameters into a single parameter string
269
+ * Parses a parameter string into name, type, and default value
270
+ * @param paramStr - The parameter string to parse
271
+ * @returns Object containing parsed parameter information
272
+ */
273
+ function parseParameter(paramStr: string): {
274
+ name: string
275
+ type: string
276
+ defaultValue?: string
277
+ isOptional: boolean
278
+ } {
279
+ const trimmed = paramStr.trim()
280
+
281
+ // Check if parameter is optional (has ?)
282
+ const isOptional = trimmed.includes('?:')
283
+
284
+ // Extract parameter name
285
+ const nameMatch = trimmed.match(/^([a-z_$][\w$]*)/i)
286
+ const name = nameMatch ? nameMatch[1] : ''
287
+
288
+ // Extract type (between : and = or end of string)
289
+ const typeMatch = trimmed.match(/:\s*([^=]+)/)
290
+ const type = typeMatch ? typeMatch[1].trim() : 'any'
291
+
292
+ // Extract default value if exists
293
+ const defaultMatch = trimmed.match(/=(.+)$/)
294
+ const defaultValue = defaultMatch ? defaultMatch[1].trim() : undefined
295
+
296
+ return { name, type, defaultValue, isOptional }
297
+ }
298
+
299
+ /**
300
+ * Combines and formats all parameters into a single object destructuring parameter
270
301
  * @param parameters - The parameters object
271
302
  * @param requestBodyParam - The request body parameter
272
- * @returns A formatted parameter string
303
+ * @returns A formatted parameter string with object destructuring
273
304
  */
274
305
  function combineAllParams(
275
306
  parameters: { params?: string },
@@ -285,11 +316,27 @@ function combineAllParams(
285
316
  allParamsArray.push(requestBodyParam.trim())
286
317
  }
287
318
 
288
- // Sort required parameters before optional ones
289
- return allParamsArray
290
- .filter(Boolean)
291
- .sort((a, b) => (a.includes('?') ? 1 : -1) - (b.includes('?') ? 1 : -1))
319
+ if (allParamsArray.length === 0) {
320
+ return ''
321
+ }
322
+
323
+ // Parse all parameters
324
+ const parsedParams = allParamsArray.filter(Boolean).map(parseParameter)
325
+
326
+ // Build destructuring pattern with default values
327
+ const destructuredNames = parsedParams
328
+ .map(p => p.defaultValue ? `${p.name} = ${p.defaultValue}` : p.name)
292
329
  .join(', ')
330
+
331
+ // Build type definition - all parameters should be optional in the type
332
+ const typeDefinition = parsedParams
333
+ .map((p) => {
334
+ // Remove default value from type, make all optional
335
+ return `${p.name}?: ${p.type}`
336
+ })
337
+ .join(', ')
338
+
339
+ return `{ ${destructuredNames} }: { ${typeDefinition} } = {}`
293
340
  }
294
341
 
295
342
  /**