@foxtware/mineral 0.1.14 → 0.1.16

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 (358) hide show
  1. package/.creds.yml.sample +34 -0
  2. package/AGENTS.md +5 -0
  3. package/_build_scripts/createNewFunction.js +19 -19
  4. package/api/_example.js +6 -3
  5. package/api/_tools/log.js +22 -0
  6. package/api/algolia/docs.md +7 -0
  7. package/api/asana/asana.constants.js +7 -0
  8. package/api/asana/asana.utils.js +37 -0
  9. package/api/asana/asanaGet.js +150 -0
  10. package/api/asana/docs.md +5 -0
  11. package/api/athos/docs.md +9 -0
  12. package/api/bleckmann/bleckmannAsnsGet.js +3 -1
  13. package/api/clickup/clickup.constants.js +7 -0
  14. package/api/clickup/clickup.utils.js +36 -0
  15. package/api/clickup/clickupGet.js +150 -0
  16. package/api/clickup/docs.md +6 -0
  17. package/api/discord/discord.constants.js +7 -0
  18. package/api/discord/discord.utils.js +36 -0
  19. package/api/discord/discordGet.js +144 -0
  20. package/api/discord/docs.md +6 -0
  21. package/api/etsy/_example.get.js +68 -0
  22. package/api/etsy/etsy.constants.js +33 -0
  23. package/api/etsy/etsy.utils.js +208 -0
  24. package/api/etsy/etsyAccessTokenRefresh.js +106 -0
  25. package/api/etsy/etsyAccessTokenRequest.js +118 -0
  26. package/api/etsy/etsyAllListingFilesGet.js +69 -0
  27. package/api/etsy/etsyAllListingsGetActive.js +88 -0
  28. package/api/etsy/etsyAuthorizationCodeRequest.js +124 -0
  29. package/api/etsy/etsyBuyerTaxonomyNodePropertiesGet.js +62 -0
  30. package/api/etsy/etsyBuyerTaxonomyNodesGet.js +58 -0
  31. package/api/etsy/etsyDraftListingCreate.js +71 -0
  32. package/api/etsy/etsyFeaturedListingsByShopGet.js +78 -0
  33. package/api/etsy/etsyGet.js +150 -0
  34. package/api/etsy/etsyHolidayPreferencesGet.js +65 -0
  35. package/api/etsy/etsyHolidayPreferencesUpdate.js +75 -0
  36. package/api/etsy/etsyListingDelete.js +61 -0
  37. package/api/etsy/etsyListingFileDelete.js +72 -0
  38. package/api/etsy/etsyListingFileGet.js +73 -0
  39. package/api/etsy/etsyListingGet.js +62 -0
  40. package/api/etsy/etsyListingImageDelete.js +72 -0
  41. package/api/etsy/etsyListingImageGet.js +66 -0
  42. package/api/etsy/etsyListingImagesGet.js +62 -0
  43. package/api/etsy/etsyListingInventoryGet.js +62 -0
  44. package/api/etsy/etsyListingInventoryUpdate.js +99 -0
  45. package/api/etsy/etsyListingOfferingGet.js +70 -0
  46. package/api/etsy/etsyListingPersonalizationDelete.js +68 -0
  47. package/api/etsy/etsyListingPersonalizationGet.js +62 -0
  48. package/api/etsy/etsyListingPersonalizationUpdate.js +75 -0
  49. package/api/etsy/etsyListingProductGet.js +64 -0
  50. package/api/etsy/etsyListingPropertiesGet.js +69 -0
  51. package/api/etsy/etsyListingPropertyDelete.js +72 -0
  52. package/api/etsy/etsyListingPropertyGet.js +66 -0
  53. package/api/etsy/etsyListingPropertyUpdate.js +79 -0
  54. package/api/etsy/etsyListingTranslationCreate.js +79 -0
  55. package/api/etsy/etsyListingTranslationGet.js +73 -0
  56. package/api/etsy/etsyListingTranslationUpdate.js +79 -0
  57. package/api/etsy/etsyListingUpdate.js +75 -0
  58. package/api/etsy/etsyListingVariationImagesGet.js +69 -0
  59. package/api/etsy/etsyListingVideoDelete.js +72 -0
  60. package/api/etsy/etsyListingVideoGet.js +66 -0
  61. package/api/etsy/etsyListingVideosGet.js +62 -0
  62. package/api/etsy/etsyListingsByListingIdsGet.js +63 -0
  63. package/api/etsy/etsyListingsByShopReceiptGet.js +82 -0
  64. package/api/etsy/etsyListingsByShopReturnPolicyGet.js +69 -0
  65. package/api/etsy/etsyListingsInventoryByListingIdsGet.js +63 -0
  66. package/api/etsy/etsyListingsShippingByListingIdsGet.js +63 -0
  67. package/api/etsy/etsyMeGet.js +56 -0
  68. package/api/etsy/etsyOauthRedirectParse.js +201 -0
  69. package/api/etsy/etsyPaymentAccountLedgerEntryPaymentsGet.js +65 -0
  70. package/api/etsy/etsyPaymentsGet.js +65 -0
  71. package/api/etsy/etsyPing.js +51 -0
  72. package/api/etsy/etsyReceiptShipmentCreate.js +75 -0
  73. package/api/etsy/etsyReviewsByListingGet.js +76 -0
  74. package/api/etsy/etsyReviewsByShopGet.js +80 -0
  75. package/api/etsy/etsySellerTaxonomyNodePropertiesGet.js +62 -0
  76. package/api/etsy/etsySellerTaxonomyNodesGet.js +58 -0
  77. package/api/etsy/etsyShippingCarriersGet.js +63 -0
  78. package/api/etsy/etsyShopGet.js +65 -0
  79. package/api/etsy/etsyShopListingsActiveGet.js +82 -0
  80. package/api/etsy/etsyShopListingsGet.js +87 -0
  81. package/api/etsy/etsyShopPaymentAccountLedgerEntriesGet.js +80 -0
  82. package/api/etsy/etsyShopPaymentAccountLedgerEntryGet.js +69 -0
  83. package/api/etsy/etsyShopPaymentByReceiptIdGet.js +69 -0
  84. package/api/etsy/etsyShopProductionPartnersGet.js +65 -0
  85. package/api/etsy/etsyShopReadinessStateDefinitionCreate.js +71 -0
  86. package/api/etsy/etsyShopReadinessStateDefinitionDelete.js +68 -0
  87. package/api/etsy/etsyShopReadinessStateDefinitionGet.js +69 -0
  88. package/api/etsy/etsyShopReadinessStateDefinitionUpdate.js +75 -0
  89. package/api/etsy/etsyShopReadinessStateDefinitionsGet.js +78 -0
  90. package/api/etsy/etsyShopReceiptGet.js +67 -0
  91. package/api/etsy/etsyShopReceiptTransactionGet.js +69 -0
  92. package/api/etsy/etsyShopReceiptTransactionsByListingGet.js +82 -0
  93. package/api/etsy/etsyShopReceiptTransactionsByReceiptGet.js +69 -0
  94. package/api/etsy/etsyShopReceiptTransactionsByShopGet.js +78 -0
  95. package/api/etsy/etsyShopReceiptUpdate.js +75 -0
  96. package/api/etsy/etsyShopReceiptsGet.js +70 -0
  97. package/api/etsy/etsyShopReturnPoliciesConsolidate.js +75 -0
  98. package/api/etsy/etsyShopReturnPolicyCreate.js +71 -0
  99. package/api/etsy/etsyShopReturnPolicyDelete.js +68 -0
  100. package/api/etsy/etsyShopReturnPolicyGet.js +69 -0
  101. package/api/etsy/etsyShopReturnPolicyUpdate.js +75 -0
  102. package/api/etsy/etsyShopReturnsPoliciesGet.js +70 -0
  103. package/api/etsy/etsyShopSectionCreate.js +71 -0
  104. package/api/etsy/etsyShopSectionDelete.js +68 -0
  105. package/api/etsy/etsyShopSectionGet.js +69 -0
  106. package/api/etsy/etsyShopSectionListingsGet.js +86 -0
  107. package/api/etsy/etsyShopSectionUpdate.js +75 -0
  108. package/api/etsy/etsyShopSectionsGet.js +65 -0
  109. package/api/etsy/etsyShopShippingProfileCreate.js +71 -0
  110. package/api/etsy/etsyShopShippingProfileDelete.js +68 -0
  111. package/api/etsy/etsyShopShippingProfileDestinationCreate.js +75 -0
  112. package/api/etsy/etsyShopShippingProfileDestinationDelete.js +72 -0
  113. package/api/etsy/etsyShopShippingProfileDestinationUpdate.js +79 -0
  114. package/api/etsy/etsyShopShippingProfileDestinationsByShippingProfileGet.js +82 -0
  115. package/api/etsy/etsyShopShippingProfileGet.js +69 -0
  116. package/api/etsy/etsyShopShippingProfileUpdate.js +75 -0
  117. package/api/etsy/etsyShopShippingProfileUpgradeCreate.js +75 -0
  118. package/api/etsy/etsyShopShippingProfileUpgradeDelete.js +72 -0
  119. package/api/etsy/etsyShopShippingProfileUpgradeUpdate.js +79 -0
  120. package/api/etsy/etsyShopShippingProfileUpgradesGet.js +69 -0
  121. package/api/etsy/etsyShopShippingProfilesGet.js +65 -0
  122. package/api/etsy/etsyShopUpdate.js +69 -0
  123. package/api/etsy/etsyShopsGet.js +70 -0
  124. package/api/etsy/etsyTokenScopes.js +63 -0
  125. package/api/etsy/etsyUserAddressDelete.js +61 -0
  126. package/api/etsy/etsyUserAddressGet.js +62 -0
  127. package/api/etsy/etsyUserAddressesGet.js +70 -0
  128. package/api/etsy/etsyUserGet.js +62 -0
  129. package/api/etsy/etsyUserShopsGet.js +62 -0
  130. package/api/etsy/etsyVariationImagesUpdate.js +75 -0
  131. package/api/figma/docs.md +6 -0
  132. package/api/figma/figma.constants.js +7 -0
  133. package/api/figma/figma.utils.js +36 -0
  134. package/api/figma/figmaGet.js +107 -0
  135. package/api/github/githubReposGet.js +3 -1
  136. package/api/github/githubUserGet.js +3 -1
  137. package/api/google/docs.md +7 -0
  138. package/api/google/google.constants.js +9 -0
  139. package/api/google/google.utils.js +137 -0
  140. package/api/google/googlecalendarCalendarsGet.js +54 -0
  141. package/api/google/googlecalendarEventCreate.js +63 -0
  142. package/api/google/googlecalendarEventDelete.js +55 -0
  143. package/api/google/googlecalendarEventGet.js +55 -0
  144. package/api/google/googlecalendarEventsGet.js +65 -0
  145. package/api/google/googledriveFileDelete.js +53 -0
  146. package/api/google/googledriveFileGet.js +57 -0
  147. package/api/google/googledriveFileUpload.js +127 -0
  148. package/api/google/googledriveFilesGet.js +72 -0
  149. package/api/google/googlesheetsSpreadsheetGet.js +57 -0
  150. package/api/google/googlesheetsSpreadsheetSheetAdd.js +150 -0
  151. package/api/google/googlesheetsSpreadsheetSheetGetData.js +159 -0
  152. package/api/google/googlesheetsSpreadsheetTrim.js +239 -0
  153. package/api/gorgias/docs.md +7 -0
  154. package/api/logiwa/logiwaAuthGet.js +3 -1
  155. package/api/logiwa/logiwaInventoriesGet.js +3 -1
  156. package/api/logiwa/logiwaOrdersGet.js +3 -1
  157. package/api/logiwa/logiwaProductsGet.js +3 -1
  158. package/api/logiwa/logiwaReportGetInventorySnapshot.js +3 -1
  159. package/api/logiwa/logiwaReportGetTotalInventory.js +3 -1
  160. package/api/logiwa/logiwaWebhooksGet.js +3 -1
  161. package/api/loop/loopAllowlistItemsGet.js +3 -1
  162. package/api/loop/loopBlocklistItemsGet.js +3 -1
  163. package/api/loop/loopDestinationsGet.js +3 -1
  164. package/api/loop/loopReturnsGet.js +3 -1
  165. package/api/notion/docs.md +6 -0
  166. package/api/notion/notion.constants.js +9 -0
  167. package/api/notion/notion.utils.js +44 -0
  168. package/api/notion/notionGet.js +146 -0
  169. package/api/peoplevox/_example.js +4 -1
  170. package/api/peoplevox/peoplevox.sessions.js +29 -0
  171. package/api/peoplevox/peoplevox.utils.js +4 -38
  172. package/api/peoplevox/peoplevoxAuthGet.js +3 -1
  173. package/api/peoplevox/peoplevoxGetSingle.js +4 -2
  174. package/api/peoplevox/peoplevoxOrderEdit.js +8 -2
  175. package/api/peoplevox/peoplevoxOrderGet.js +6 -1
  176. package/api/peoplevox/peoplevoxReportGet.js +6 -2
  177. package/api/pipe17/docs.md +8 -0
  178. package/api/pipe17/pipe17.constants.js +47 -0
  179. package/api/pipe17/pipe17.utils.js +123 -0
  180. package/api/pipe17/pipe17ArrivalGet.js +78 -0
  181. package/api/pipe17/pipe17ArrivalUpdate.js +111 -0
  182. package/api/pipe17/pipe17ArrivalsGet.js +54 -0
  183. package/api/pipe17/pipe17FulfillmentGet.js +69 -0
  184. package/api/pipe17/pipe17FulfillmentsGet.js +54 -0
  185. package/api/pipe17/pipe17Get.js +151 -0
  186. package/api/pipe17/pipe17InventoryItemGet.js +57 -0
  187. package/api/pipe17/pipe17InventoryItemsGet.js +54 -0
  188. package/api/pipe17/pipe17JobCreate.js +95 -0
  189. package/api/pipe17/pipe17JobGet.js +70 -0
  190. package/api/pipe17/pipe17JobResultsGet.js +55 -0
  191. package/api/pipe17/pipe17LocationGet.js +57 -0
  192. package/api/pipe17/pipe17LocationsGet.js +54 -0
  193. package/api/pipe17/pipe17OrderGet.js +71 -0
  194. package/api/pipe17/pipe17OrdersGet.js +54 -0
  195. package/api/pipe17/pipe17ProductGet.js +57 -0
  196. package/api/pipe17/pipe17ProductsGet.js +54 -0
  197. package/api/pipe17/pipe17PurchaseGet.js +57 -0
  198. package/api/pipe17/pipe17PurchasesGet.js +54 -0
  199. package/api/pipe17/pipe17ReceiptGet.js +57 -0
  200. package/api/pipe17/pipe17ReceiptsGet.js +54 -0
  201. package/api/pipe17/pipe17ReturnGet.js +57 -0
  202. package/api/pipe17/pipe17ReturnsGet.js +54 -0
  203. package/api/printify/_example.get.js +67 -0
  204. package/api/printify/_example.js +59 -0
  205. package/api/printify/printify.constants.js +8 -0
  206. package/api/printify/printify.utils.js +41 -0
  207. package/api/printify/printifyBlueprintGet.js +60 -0
  208. package/api/printify/printifyBlueprintPrintProviderVariantsGet.js +77 -0
  209. package/api/printify/printifyBlueprintPrintProvidersGet.js +60 -0
  210. package/api/printify/printifyBlueprintsGet.js +38 -0
  211. package/api/printify/printifyGet.js +154 -0
  212. package/api/printify/printifyImageUpload.js +74 -0
  213. package/api/printify/printifyOrderCancel.js +70 -0
  214. package/api/printify/printifyOrderCreate.js +98 -0
  215. package/api/printify/printifyOrderGet.js +70 -0
  216. package/api/printify/printifyOrderSubmit.js +70 -0
  217. package/api/printify/printifyOrdersGet.js +72 -0
  218. package/api/printify/printifyProductCreate.js +96 -0
  219. package/api/printify/printifyProductDelete.js +70 -0
  220. package/api/printify/printifyProductGet.js +79 -0
  221. package/api/printify/printifyProductUpdate.js +81 -0
  222. package/api/printify/printifyProductsGet.js +67 -0
  223. package/api/printify/printifyShippingGet.js +70 -0
  224. package/api/printify/printifyShopsGet.js +56 -0
  225. package/api/printify/printifyWebhookCreate.js +84 -0
  226. package/api/printify/printifyWebhookDelete.js +70 -0
  227. package/api/printify/printifyWebhookUpdate.js +81 -0
  228. package/api/printify/printifyWebhooksGet.js +56 -0
  229. package/api/salesforce/docs.md +6 -0
  230. package/api/shopify/_example.create.js +2 -2
  231. package/api/shopify/_example.get.js +17 -4
  232. package/api/shopify/_example.getsingle.js +4 -1
  233. package/api/shopify/_example.js +4 -1
  234. package/api/shopify/_example.mutation.js +4 -1
  235. package/api/shopify/shopifyAbandonedCheckoutsGet.js +1 -1
  236. package/api/shopify/shopifyArticlesGet.js +1 -1
  237. package/api/shopify/shopifyBlogsGet.js +1 -1
  238. package/api/shopify/shopifyBulkMutationDo.js +5 -6
  239. package/api/shopify/shopifyBulkOperationsGet.js +1 -1
  240. package/api/shopify/shopifyCatalogsGet.js +17 -4
  241. package/api/shopify/shopifyChannelsGet.js +17 -4
  242. package/api/shopify/shopifyCheckoutAndAccountsConfigurationsGet.js +17 -4
  243. package/api/shopify/shopifyCollectionGet.js +4 -1
  244. package/api/shopify/shopifyCollectionsGet.js +17 -4
  245. package/api/shopify/shopifyCustomerCreate.js +2 -2
  246. package/api/shopify/shopifyCustomerGet.js +4 -1
  247. package/api/shopify/shopifyCustomerMarketingConsentUpdateSms.js +84 -0
  248. package/api/shopify/shopifyCustomersGet.js +18 -5
  249. package/api/shopify/shopifyDecodeSessionToken.js +2 -2
  250. package/api/shopify/shopifyDeliveryCustomizationsGet.js +1 -1
  251. package/api/shopify/shopifyDeliveryProfilesGet.js +17 -4
  252. package/api/shopify/shopifyDiscountNodesGet.js +1 -1
  253. package/api/shopify/shopifyDisputesGet.js +1 -1
  254. package/api/shopify/shopifyDraftOrdersGet.js +1 -1
  255. package/api/shopify/shopifyEventsGet.js +1 -1
  256. package/api/shopify/shopifyFilesGet.js +1 -1
  257. package/api/shopify/shopifyFulfillmentOrdersGet.js +17 -4
  258. package/api/shopify/shopifyGet.js +1 -1
  259. package/api/shopify/shopifyGiftCardCreate.js +4 -1
  260. package/api/shopify/shopifyGiftCardDeactivate.js +4 -1
  261. package/api/shopify/shopifyGiftCardsGet.js +17 -4
  262. package/api/shopify/shopifyInventoryItemsGet.js +17 -4
  263. package/api/shopify/shopifyLocationsGet.js +1 -1
  264. package/api/shopify/shopifyMarketingEventsGet.js +1 -1
  265. package/api/shopify/shopifyMarketsGet.js +1 -1
  266. package/api/shopify/shopifyMenusGet.js +1 -1
  267. package/api/shopify/shopifyMetafieldDefinitionCreate.js +111 -0
  268. package/api/shopify/shopifyMetafieldDefinitionsGet.js +18 -4
  269. package/api/shopify/shopifyMetafieldsDelete.js +78 -0
  270. package/api/shopify/shopifyMetaobjectDefinitionsGet.js +1 -1
  271. package/api/shopify/shopifyMetaobjectsGet.js +1 -1
  272. package/api/shopify/shopifyMutationDo.js +4 -1
  273. package/api/shopify/shopifyOrderGet.js +4 -1
  274. package/api/shopify/shopifyOrdersGet.js +3 -1
  275. package/api/shopify/shopifyPageDelete.js +4 -1
  276. package/api/shopify/shopifyPageGet.js +4 -1
  277. package/api/shopify/shopifyPageUpdate.js +5 -1
  278. package/api/shopify/shopifyPagesGet.js +1 -1
  279. package/api/shopify/shopifyPaymentCustomizationsGet.js +1 -1
  280. package/api/shopify/shopifyProductFeedsGet.js +1 -1
  281. package/api/shopify/shopifyProductGet.js +110 -0
  282. package/api/shopify/shopifyProductVariantsGet.js +1 -1
  283. package/api/shopify/shopifyProductsGet.js +17 -4
  284. package/api/shopify/shopifyPublicationsGet.js +17 -4
  285. package/api/shopify/shopifySegmentsGet.js +1 -1
  286. package/api/shopify/shopifyStoreCreditAccountCredit.js +144 -0
  287. package/api/shopify/shopifyStoreCreditAccountDebit.js +132 -0
  288. package/api/shopify/shopifyTagsRemoveBulk.js +77 -0
  289. package/api/shopify/shopifyThemeDelete.js +4 -1
  290. package/api/shopify/shopifyThemeDuplicate.js +4 -1
  291. package/api/shopify/shopifyThemeGet.js +2 -2
  292. package/api/shopify/shopifyThemesGet.js +3 -1
  293. package/api/shopify/shopifyUrlRedirectsGet.js +1 -1
  294. package/api/shopify/shopifyWebhookSubscriptionsGet.js +17 -4
  295. package/api/snowflake/docs.md +8 -0
  296. package/api/starshipit/starshipitAddressesGet.js +3 -1
  297. package/api/starshipit/starshipitOrdersListShipped.js +3 -1
  298. package/api/starshipit/starshipitProductsGet.js +3 -1
  299. package/api/stripe/_example.js +4 -1
  300. package/api/stripe/stripeChargesGet.js +3 -1
  301. package/api/stripe/stripeRefundsGet.js +3 -1
  302. package/api/stylearcade/stylearcadeDataGet.js +14 -6
  303. package/api/stylearcade/stylearcadeMetadataGet.js +3 -1
  304. package/api/tagalys/docs.md +7 -0
  305. package/api/telnyx/docs.md +6 -0
  306. package/api/telnyx/telnyx.constants.js +7 -0
  307. package/api/telnyx/telnyx.utils.js +37 -0
  308. package/api/telnyx/telnyxAvailablePhoneNumbersGet.js +59 -0
  309. package/api/telnyx/telnyxBalanceGet.js +51 -0
  310. package/api/telnyx/telnyxGet.js +151 -0
  311. package/api/telnyx/telnyxMessageGet.js +59 -0
  312. package/api/telnyx/telnyxMessageSend.js +65 -0
  313. package/api/telnyx/telnyxMessagesGet.js +53 -0
  314. package/api/telnyx/telnyxMessagingProfileCreate.js +62 -0
  315. package/api/telnyx/telnyxMessagingProfileGet.js +59 -0
  316. package/api/telnyx/telnyxMessagingProfileUpdate.js +68 -0
  317. package/api/telnyx/telnyxMessagingProfilesGet.js +53 -0
  318. package/api/telnyx/telnyxNumberLookupGet.js +61 -0
  319. package/api/telnyx/telnyxNumberOrderCreate.js +64 -0
  320. package/api/telnyx/telnyxPhoneNumberGet.js +59 -0
  321. package/api/telnyx/telnyxPhoneNumberUpdate.js +68 -0
  322. package/api/telnyx/telnyxPhoneNumbersGet.js +53 -0
  323. package/api/telnyx/telnyxWebhookDeliveriesGet.js +58 -0
  324. package/api/threeclicks/threeclicksCollectionsGet.js +3 -1
  325. package/api/threeclicks/threeclicksPurchaseOrderCreate.js +4 -1
  326. package/api/threeclicks/threeclicksPurchaseOrderCreateBulk.js +4 -1
  327. package/api/threeclicks/threeclicksPurchaseOrderGet.js +4 -1
  328. package/api/threeclicks/threeclicksPurchaseOrderQuantitiesGet.js +4 -1
  329. package/api/threeclicks/threeclicksPurchaseOrderQuantityCreate.js +4 -1
  330. package/api/threeclicks/threeclicksPurchaseOrderQuantityCreateBulk.js +4 -1
  331. package/api/threeclicks/threeclicksPurchaseOrderUpdate.js +5 -1
  332. package/api/threeclicks/threeclicksPurchaseOrdersGet.js +3 -1
  333. package/api/threeclicks/threeclicksShipmentCreate.js +4 -1
  334. package/api/threeclicks/threeclicksShipmentGet.js +4 -1
  335. package/api/threeclicks/threeclicksShipmentOrderAdd.js +5 -1
  336. package/api/threeclicks/threeclicksShipmentOrderQuantityCreate.js +5 -1
  337. package/api/threeclicks/threeclicksShipmentQuantityUpdate.js +5 -1
  338. package/api/threeclicks/threeclicksShipmentStatusUpdate.js +5 -1
  339. package/api/threeclicks/threeclicksShipmentsGet.js +3 -1
  340. package/api/threeclicks/threeclicksSignatureCalculate.js +4 -4
  341. package/api/threeclicks/threeclicksStyleCodesGet.js +4 -1
  342. package/api/threeclicks/threeclicksStyleColourDelete.js +5 -1
  343. package/api/threeclicks/threeclicksStyleDelete.js +4 -1
  344. package/api/threeclicks/threeclicksStylesGet.js +3 -1
  345. package/api/upstash/upstashDel.js +4 -1
  346. package/api/upstash/upstashExists.js +4 -1
  347. package/api/upstash/upstashGet.js +4 -1
  348. package/api/utils.js +86 -6
  349. package/api/workable/workableJobsGet.js +3 -1
  350. package/api/yotpo/yotpoCampaignsGet.js +3 -1
  351. package/api/yotpo/yotpoCustomersRecentGet.js +3 -1
  352. package/api/yotpo/yotpoRedemptionOptionsGet.js +3 -1
  353. package/api/yotpo/yotpoVipTiersGet.js +3 -1
  354. package/hosting/copyCredsToEnv.js +3 -3
  355. package/hosting/handlerPaths.js +3 -3
  356. package/package.json +2 -1
  357. package/server.js +8 -6
  358. package/server.utils.js +1 -1
@@ -12,7 +12,10 @@ const upstashExists = async (
12
12
  key,
13
13
  ) => {
14
14
 
15
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload, key });
15
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
16
+ credsPayload,
17
+ key,
18
+ });
16
19
  if (rejectResponse) {
17
20
  return rejectResponse;
18
21
  }
@@ -12,7 +12,10 @@ const upstashGet = async (
12
12
  key,
13
13
  ) => {
14
14
 
15
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload, key });
15
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
16
+ credsPayload,
17
+ key,
18
+ });
16
19
  if (rejectResponse) {
17
20
  return rejectResponse;
18
21
  }
package/api/utils.js CHANGED
@@ -20,6 +20,8 @@ const objHasAny = (obj, keys) => {
20
20
  const capitaliseString = (string) => `${ string[0].toUpperCase() }${ string.slice(1) }`;
21
21
  const sentenceCaseString = (string) => `${ string[0].toLowerCase() }${ string.slice(1) }`;
22
22
 
23
+ const normalise = (value) => (value || '').toString().trim().toLowerCase();
24
+
23
25
  const credsByPath = (credsPath, credsObject) => {
24
26
  const pathNodes = pathAsArray(credsPath);
25
27
 
@@ -86,6 +88,36 @@ const credsFromPayload = async (credsPayload) => {
86
88
  return false;
87
89
  };
88
90
 
91
+ const resolveFromCreds = (credsKey) => {
92
+ const keys = [].concat(credsKey);
93
+
94
+ return async ({
95
+ credsPayload,
96
+ creds,
97
+ }) => {
98
+ if (!creds) {
99
+ creds = await credsFromPayload(credsPayload);
100
+ }
101
+ const values = keys.map((key) => creds?.[key]);
102
+ const missing = keys.filter((key, index) => !valueProvided(values[index]));
103
+
104
+ if (missing.length) {
105
+ return {
106
+ ok: false,
107
+ error: {
108
+ code: 'INVALID_ARGS',
109
+ message: `${ missing.join(', ') } not in creds, so needs to be otherwise supplied`,
110
+ },
111
+ };
112
+ }
113
+
114
+ return {
115
+ ok: true,
116
+ data: Array.isArray(credsKey) ? values : values[0],
117
+ };
118
+ };
119
+ };
120
+
89
121
  const xmlResponseParser = (parserOptions = {}) => {
90
122
  const parser = new xml2js.Parser({
91
123
  explicitArray: false,
@@ -130,6 +162,10 @@ const bodyPassesThrough = (body) => {
130
162
  return true;
131
163
  }
132
164
 
165
+ if (body instanceof URLSearchParams) {
166
+ return true;
167
+ }
168
+
133
169
  return typeof body.getHeaders === 'function';
134
170
  };
135
171
 
@@ -179,14 +215,14 @@ const customFetch = async (url, {
179
215
  });
180
216
 
181
217
  const responseContentType = response.headers.get('content-type');
182
- !HOSTED && console.log('responseContentType', responseContentType);
218
+ // !HOSTED && console.log('responseContentType', responseContentType);
183
219
 
184
220
  if (!responseParser) {
185
221
  responseParser = getResponseParser(responseContentType);
186
222
  }
187
223
 
188
224
  const parsedResponse = await responseParser(response);
189
- !HOSTED && logDeep({ parsedResponse });
225
+ // !HOSTED && logDeep({ parsedResponse });
190
226
 
191
227
  if (response.ok) {
192
228
  return {
@@ -448,11 +484,13 @@ class Chain {
448
484
  class FetchClient {
449
485
  constructor({
450
486
  pipeline = ['fetch'], // an array of functions that transform the request and response, including a string 'fetch' step.
487
+ layers = [], // (payload, next) => …; first layer is innermost around the pipeline
451
488
  } = {}) {
452
489
  if (!this.pipelineHasFetchStep(pipeline)) {
453
490
  throw new Error('Pipeline must have a fetch step');
454
491
  }
455
492
  this.pipeline = pipeline;
493
+ this.layers = layers;
456
494
  }
457
495
 
458
496
  pipelineHasFetchStep = (pipeline) => {
@@ -470,7 +508,7 @@ class FetchClient {
470
508
  };
471
509
  }
472
510
 
473
- async fetch({
511
+ async #fetchCore({
474
512
  // url, body, etc.
475
513
  requestPayload,
476
514
 
@@ -484,8 +522,8 @@ class FetchClient {
484
522
  const { pipeline } = this;
485
523
 
486
524
  const pipelineChain = new Chain(pipeline.map(step => {
487
- return step === 'fetch'
488
- ? this.#fetch
525
+ return step === 'fetch'
526
+ ? this.#fetch
489
527
  : step;
490
528
  }));
491
529
 
@@ -497,9 +535,49 @@ class FetchClient {
497
535
 
498
536
  return state.response;
499
537
  }
538
+
539
+ async fetch(fetchPayload = {}) {
540
+ let layeredFetch = (payload) => this.#fetchCore(payload);
541
+
542
+ for (const layer of this.layers) {
543
+ const currentNext = layeredFetch;
544
+ layeredFetch = (payload) => layer(payload, currentNext);
545
+ }
546
+
547
+ return layeredFetch(fetchPayload);
548
+ }
549
+
550
+ /* Example layer
551
+
552
+ const withDressColours = async (payload, next) => {
553
+
554
+ let response = await next({
555
+ ...payload,
556
+ headers: { ...payload.headers, dress: 'blue/white' },
557
+ });
558
+
559
+ if (!response.ok) {
560
+ console.warn('blue/white failed, retrying with black/gold');
561
+ response = await next({
562
+ ...payload,
563
+ headers: { ...payload.headers, dress: 'black/gold' },
564
+ });
565
+ }
566
+
567
+ return response;
568
+
569
+ };
570
+
571
+ new FetchClient({ pipeline, layers: [withDressColours] });
572
+
573
+ */
500
574
  }
501
575
 
502
576
  const fetchClientCommonSteps = {
577
+ unwrapData: async (state) => {
578
+ const { response } = state;
579
+ return { response: response?.data || response };
580
+ },
503
581
  stripEdgesAndNodes: async (state) => {
504
582
  const { response } = state;
505
583
 
@@ -1043,7 +1121,7 @@ class Getter extends EventEmitter {
1043
1121
  paginatedParams.options,
1044
1122
  );
1045
1123
 
1046
- logDeep(response);
1124
+ // logDeep(response);
1047
1125
 
1048
1126
  let items;
1049
1127
  if (digester) {
@@ -1155,7 +1233,9 @@ module.exports = {
1155
1233
  timeMs,
1156
1234
  objHasAny,
1157
1235
  capitaliseString,
1236
+ normalise,
1158
1237
  credsFromPayload,
1238
+ resolveFromCreds,
1159
1239
  customFetch,
1160
1240
  logDeep,
1161
1241
  askQuestion,
@@ -23,7 +23,9 @@ const workableJobsGet = async (
23
23
  } = {},
24
24
  ) => {
25
25
 
26
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload });
26
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
27
+ credsPayload,
28
+ });
27
29
  if (rejectResponse) {
28
30
  return rejectResponse;
29
31
  }
@@ -17,7 +17,9 @@ const yotpoCampaignsGet = async (
17
17
  } = {},
18
18
  ) => {
19
19
 
20
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload });
20
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
21
+ credsPayload,
22
+ });
21
23
  if (rejectResponse) {
22
24
  return rejectResponse;
23
25
  }
@@ -17,7 +17,9 @@ const yotpoCustomersRecentGet = async (
17
17
  } = {},
18
18
  ) => {
19
19
 
20
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload });
20
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
21
+ credsPayload,
22
+ });
21
23
  if (rejectResponse) {
22
24
  return rejectResponse;
23
25
  }
@@ -18,7 +18,9 @@ const yotpoRedemptionOptionsGet = async (
18
18
  } = {},
19
19
  ) => {
20
20
 
21
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload });
21
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
22
+ credsPayload,
23
+ });
22
24
  if (rejectResponse) {
23
25
  return rejectResponse;
24
26
  }
@@ -15,7 +15,9 @@ const yotpoVipTiersGet = async (
15
15
  } = {},
16
16
  ) => {
17
17
 
18
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload });
18
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
19
+ credsPayload,
20
+ });
19
21
  if (rejectResponse) {
20
22
  return rejectResponse;
21
23
  }
@@ -54,9 +54,9 @@ const filterCredsByPaths = (creds, includeCredsPaths) => {
54
54
 
55
55
  const copyCredsToEnv = (workspace, options = {}) => {
56
56
  const { includeCredsPaths } = options;
57
- const normalizedWorkspace = workspace.replace(/\/$/, '');
58
- const credsPath = `${ normalizedWorkspace }/.creds.yml`;
59
- const envPath = `${ normalizedWorkspace }/.env`;
57
+ const normalisedWorkspace = workspace.replace(/\/$/, '');
58
+ const credsPath = `${ normalisedWorkspace }/.creds.yml`;
59
+ const envPath = `${ normalisedWorkspace }/.env`;
60
60
 
61
61
  if (!fs.existsSync(credsPath)) {
62
62
  throw new Error(`Missing .creds.yml in workspace: ${ workspace }`);
@@ -2,11 +2,11 @@ const MINERAL_ROOT = `${ __dirname }/..`;
2
2
  const MINERAL_API_DIR = `${ MINERAL_ROOT }/api`;
3
3
 
4
4
  const getRequirePathForHandler = (handler, workspace) => {
5
- const normalizedWorkspace = workspace.replace(/\/$/, '');
5
+ const normalisedWorkspace = workspace.replace(/\/$/, '');
6
6
  const { filePath } = handler;
7
7
 
8
- if (filePath.startsWith(`${ normalizedWorkspace }/`)) {
9
- return `./${ filePath.slice(normalizedWorkspace.length + 1) }`;
8
+ if (filePath.startsWith(`${ normalisedWorkspace }/`)) {
9
+ return `./${ filePath.slice(normalisedWorkspace.length + 1) }`;
10
10
  }
11
11
 
12
12
  if (filePath.startsWith(`${ MINERAL_API_DIR }/`)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxtware/mineral",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "bin": {
5
5
  "mineral": "bin/mineral.js"
6
6
  },
@@ -23,6 +23,7 @@
23
23
  "@upstash/redis": "^1.28.4",
24
24
  "csvtojson": "^2.0.14",
25
25
  "dotenv": "^17.2.0",
26
+ "googleapis": "^165.0.0",
26
27
  "json-2-csv": "^5.5.9",
27
28
  "xml2js": "^0.6.2",
28
29
  "yaml": "^2.9.0"
package/server.js CHANGED
@@ -78,7 +78,7 @@ const directoriesToScan = ({
78
78
  return [MINERAL_API_DIR, ...extraDirs];
79
79
  };
80
80
 
81
- const addHandlerFromFile = (filePath, handlers) => {
81
+ const addHandlerFromFile = (filePath, handlers, apiScanRoot) => {
82
82
  const moduleExports = require(filePath);
83
83
  if (!moduleExports || typeof moduleExports !== 'object') {
84
84
  return;
@@ -96,12 +96,14 @@ const addHandlerFromFile = (filePath, handlers) => {
96
96
  });
97
97
 
98
98
  const route = `/${ routeName }`;
99
- if (handlers.has(route)) {
100
- const existing = handlers.get(route);
99
+ const existing = handlers.get(route);
100
+
101
+ if (existing && existing.apiScanRoot === apiScanRoot) {
101
102
  throw new Error(`Duplicate route '${ route }' from ${ filePath } and ${ existing.filePath }`);
102
103
  }
103
104
 
104
105
  handlers.set(route, {
106
+ apiScanRoot,
105
107
  filePath,
106
108
  routeName,
107
109
  handler: funcApiConfig ? funcApi(handlerFn, funcApiConfig) : handlerFn,
@@ -112,9 +114,9 @@ const addHandlerFromFile = (filePath, handlers) => {
112
114
  const loadHandlers = (config) => {
113
115
  const handlers = new Map();
114
116
 
115
- for (const directory of directoriesToScan(config)) {
116
- for (const filePath of listJsFiles(directory)) {
117
- addHandlerFromFile(filePath, handlers);
117
+ for (const apiScanRoot of directoriesToScan(config)) {
118
+ for (const filePath of listJsFiles(apiScanRoot)) {
119
+ addHandlerFromFile(filePath, handlers, apiScanRoot);
118
120
  }
119
121
  }
120
122
 
package/server.utils.js CHANGED
@@ -3,7 +3,7 @@ const { HOSTED } = require('./api/constants');
3
3
  const { StringDecoder } = require('string_decoder');
4
4
 
5
5
  const respondJson = (res, statusCode, payload) => {
6
- !HOSTED && logDeep(payload);
6
+ // !HOSTED && logDeep(payload);
7
7
  const body = JSON.stringify(payload);
8
8
  res.writeHead(statusCode, {
9
9
  'Content-Type': 'application/json',