@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.
- package/.creds.yml.sample +34 -0
- package/AGENTS.md +5 -0
- package/_build_scripts/createNewFunction.js +19 -19
- package/api/_example.js +6 -3
- package/api/_tools/log.js +22 -0
- package/api/algolia/docs.md +7 -0
- package/api/asana/asana.constants.js +7 -0
- package/api/asana/asana.utils.js +37 -0
- package/api/asana/asanaGet.js +150 -0
- package/api/asana/docs.md +5 -0
- package/api/athos/docs.md +9 -0
- package/api/bleckmann/bleckmannAsnsGet.js +3 -1
- package/api/clickup/clickup.constants.js +7 -0
- package/api/clickup/clickup.utils.js +36 -0
- package/api/clickup/clickupGet.js +150 -0
- package/api/clickup/docs.md +6 -0
- package/api/discord/discord.constants.js +7 -0
- package/api/discord/discord.utils.js +36 -0
- package/api/discord/discordGet.js +144 -0
- package/api/discord/docs.md +6 -0
- package/api/etsy/_example.get.js +68 -0
- package/api/etsy/etsy.constants.js +33 -0
- package/api/etsy/etsy.utils.js +208 -0
- package/api/etsy/etsyAccessTokenRefresh.js +106 -0
- package/api/etsy/etsyAccessTokenRequest.js +118 -0
- package/api/etsy/etsyAllListingFilesGet.js +69 -0
- package/api/etsy/etsyAllListingsGetActive.js +88 -0
- package/api/etsy/etsyAuthorizationCodeRequest.js +124 -0
- package/api/etsy/etsyBuyerTaxonomyNodePropertiesGet.js +62 -0
- package/api/etsy/etsyBuyerTaxonomyNodesGet.js +58 -0
- package/api/etsy/etsyDraftListingCreate.js +71 -0
- package/api/etsy/etsyFeaturedListingsByShopGet.js +78 -0
- package/api/etsy/etsyGet.js +150 -0
- package/api/etsy/etsyHolidayPreferencesGet.js +65 -0
- package/api/etsy/etsyHolidayPreferencesUpdate.js +75 -0
- package/api/etsy/etsyListingDelete.js +61 -0
- package/api/etsy/etsyListingFileDelete.js +72 -0
- package/api/etsy/etsyListingFileGet.js +73 -0
- package/api/etsy/etsyListingGet.js +62 -0
- package/api/etsy/etsyListingImageDelete.js +72 -0
- package/api/etsy/etsyListingImageGet.js +66 -0
- package/api/etsy/etsyListingImagesGet.js +62 -0
- package/api/etsy/etsyListingInventoryGet.js +62 -0
- package/api/etsy/etsyListingInventoryUpdate.js +99 -0
- package/api/etsy/etsyListingOfferingGet.js +70 -0
- package/api/etsy/etsyListingPersonalizationDelete.js +68 -0
- package/api/etsy/etsyListingPersonalizationGet.js +62 -0
- package/api/etsy/etsyListingPersonalizationUpdate.js +75 -0
- package/api/etsy/etsyListingProductGet.js +64 -0
- package/api/etsy/etsyListingPropertiesGet.js +69 -0
- package/api/etsy/etsyListingPropertyDelete.js +72 -0
- package/api/etsy/etsyListingPropertyGet.js +66 -0
- package/api/etsy/etsyListingPropertyUpdate.js +79 -0
- package/api/etsy/etsyListingTranslationCreate.js +79 -0
- package/api/etsy/etsyListingTranslationGet.js +73 -0
- package/api/etsy/etsyListingTranslationUpdate.js +79 -0
- package/api/etsy/etsyListingUpdate.js +75 -0
- package/api/etsy/etsyListingVariationImagesGet.js +69 -0
- package/api/etsy/etsyListingVideoDelete.js +72 -0
- package/api/etsy/etsyListingVideoGet.js +66 -0
- package/api/etsy/etsyListingVideosGet.js +62 -0
- package/api/etsy/etsyListingsByListingIdsGet.js +63 -0
- package/api/etsy/etsyListingsByShopReceiptGet.js +82 -0
- package/api/etsy/etsyListingsByShopReturnPolicyGet.js +69 -0
- package/api/etsy/etsyListingsInventoryByListingIdsGet.js +63 -0
- package/api/etsy/etsyListingsShippingByListingIdsGet.js +63 -0
- package/api/etsy/etsyMeGet.js +56 -0
- package/api/etsy/etsyOauthRedirectParse.js +201 -0
- package/api/etsy/etsyPaymentAccountLedgerEntryPaymentsGet.js +65 -0
- package/api/etsy/etsyPaymentsGet.js +65 -0
- package/api/etsy/etsyPing.js +51 -0
- package/api/etsy/etsyReceiptShipmentCreate.js +75 -0
- package/api/etsy/etsyReviewsByListingGet.js +76 -0
- package/api/etsy/etsyReviewsByShopGet.js +80 -0
- package/api/etsy/etsySellerTaxonomyNodePropertiesGet.js +62 -0
- package/api/etsy/etsySellerTaxonomyNodesGet.js +58 -0
- package/api/etsy/etsyShippingCarriersGet.js +63 -0
- package/api/etsy/etsyShopGet.js +65 -0
- package/api/etsy/etsyShopListingsActiveGet.js +82 -0
- package/api/etsy/etsyShopListingsGet.js +87 -0
- package/api/etsy/etsyShopPaymentAccountLedgerEntriesGet.js +80 -0
- package/api/etsy/etsyShopPaymentAccountLedgerEntryGet.js +69 -0
- package/api/etsy/etsyShopPaymentByReceiptIdGet.js +69 -0
- package/api/etsy/etsyShopProductionPartnersGet.js +65 -0
- package/api/etsy/etsyShopReadinessStateDefinitionCreate.js +71 -0
- package/api/etsy/etsyShopReadinessStateDefinitionDelete.js +68 -0
- package/api/etsy/etsyShopReadinessStateDefinitionGet.js +69 -0
- package/api/etsy/etsyShopReadinessStateDefinitionUpdate.js +75 -0
- package/api/etsy/etsyShopReadinessStateDefinitionsGet.js +78 -0
- package/api/etsy/etsyShopReceiptGet.js +67 -0
- package/api/etsy/etsyShopReceiptTransactionGet.js +69 -0
- package/api/etsy/etsyShopReceiptTransactionsByListingGet.js +82 -0
- package/api/etsy/etsyShopReceiptTransactionsByReceiptGet.js +69 -0
- package/api/etsy/etsyShopReceiptTransactionsByShopGet.js +78 -0
- package/api/etsy/etsyShopReceiptUpdate.js +75 -0
- package/api/etsy/etsyShopReceiptsGet.js +70 -0
- package/api/etsy/etsyShopReturnPoliciesConsolidate.js +75 -0
- package/api/etsy/etsyShopReturnPolicyCreate.js +71 -0
- package/api/etsy/etsyShopReturnPolicyDelete.js +68 -0
- package/api/etsy/etsyShopReturnPolicyGet.js +69 -0
- package/api/etsy/etsyShopReturnPolicyUpdate.js +75 -0
- package/api/etsy/etsyShopReturnsPoliciesGet.js +70 -0
- package/api/etsy/etsyShopSectionCreate.js +71 -0
- package/api/etsy/etsyShopSectionDelete.js +68 -0
- package/api/etsy/etsyShopSectionGet.js +69 -0
- package/api/etsy/etsyShopSectionListingsGet.js +86 -0
- package/api/etsy/etsyShopSectionUpdate.js +75 -0
- package/api/etsy/etsyShopSectionsGet.js +65 -0
- package/api/etsy/etsyShopShippingProfileCreate.js +71 -0
- package/api/etsy/etsyShopShippingProfileDelete.js +68 -0
- package/api/etsy/etsyShopShippingProfileDestinationCreate.js +75 -0
- package/api/etsy/etsyShopShippingProfileDestinationDelete.js +72 -0
- package/api/etsy/etsyShopShippingProfileDestinationUpdate.js +79 -0
- package/api/etsy/etsyShopShippingProfileDestinationsByShippingProfileGet.js +82 -0
- package/api/etsy/etsyShopShippingProfileGet.js +69 -0
- package/api/etsy/etsyShopShippingProfileUpdate.js +75 -0
- package/api/etsy/etsyShopShippingProfileUpgradeCreate.js +75 -0
- package/api/etsy/etsyShopShippingProfileUpgradeDelete.js +72 -0
- package/api/etsy/etsyShopShippingProfileUpgradeUpdate.js +79 -0
- package/api/etsy/etsyShopShippingProfileUpgradesGet.js +69 -0
- package/api/etsy/etsyShopShippingProfilesGet.js +65 -0
- package/api/etsy/etsyShopUpdate.js +69 -0
- package/api/etsy/etsyShopsGet.js +70 -0
- package/api/etsy/etsyTokenScopes.js +63 -0
- package/api/etsy/etsyUserAddressDelete.js +61 -0
- package/api/etsy/etsyUserAddressGet.js +62 -0
- package/api/etsy/etsyUserAddressesGet.js +70 -0
- package/api/etsy/etsyUserGet.js +62 -0
- package/api/etsy/etsyUserShopsGet.js +62 -0
- package/api/etsy/etsyVariationImagesUpdate.js +75 -0
- package/api/figma/docs.md +6 -0
- package/api/figma/figma.constants.js +7 -0
- package/api/figma/figma.utils.js +36 -0
- package/api/figma/figmaGet.js +107 -0
- package/api/github/githubReposGet.js +3 -1
- package/api/github/githubUserGet.js +3 -1
- package/api/google/docs.md +7 -0
- package/api/google/google.constants.js +9 -0
- package/api/google/google.utils.js +137 -0
- package/api/google/googlecalendarCalendarsGet.js +54 -0
- package/api/google/googlecalendarEventCreate.js +63 -0
- package/api/google/googlecalendarEventDelete.js +55 -0
- package/api/google/googlecalendarEventGet.js +55 -0
- package/api/google/googlecalendarEventsGet.js +65 -0
- package/api/google/googledriveFileDelete.js +53 -0
- package/api/google/googledriveFileGet.js +57 -0
- package/api/google/googledriveFileUpload.js +127 -0
- package/api/google/googledriveFilesGet.js +72 -0
- package/api/google/googlesheetsSpreadsheetGet.js +57 -0
- package/api/google/googlesheetsSpreadsheetSheetAdd.js +150 -0
- package/api/google/googlesheetsSpreadsheetSheetGetData.js +159 -0
- package/api/google/googlesheetsSpreadsheetTrim.js +239 -0
- package/api/gorgias/docs.md +7 -0
- package/api/logiwa/logiwaAuthGet.js +3 -1
- package/api/logiwa/logiwaInventoriesGet.js +3 -1
- package/api/logiwa/logiwaOrdersGet.js +3 -1
- package/api/logiwa/logiwaProductsGet.js +3 -1
- package/api/logiwa/logiwaReportGetInventorySnapshot.js +3 -1
- package/api/logiwa/logiwaReportGetTotalInventory.js +3 -1
- package/api/logiwa/logiwaWebhooksGet.js +3 -1
- package/api/loop/loopAllowlistItemsGet.js +3 -1
- package/api/loop/loopBlocklistItemsGet.js +3 -1
- package/api/loop/loopDestinationsGet.js +3 -1
- package/api/loop/loopReturnsGet.js +3 -1
- package/api/notion/docs.md +6 -0
- package/api/notion/notion.constants.js +9 -0
- package/api/notion/notion.utils.js +44 -0
- package/api/notion/notionGet.js +146 -0
- package/api/peoplevox/_example.js +4 -1
- package/api/peoplevox/peoplevox.sessions.js +29 -0
- package/api/peoplevox/peoplevox.utils.js +4 -38
- package/api/peoplevox/peoplevoxAuthGet.js +3 -1
- package/api/peoplevox/peoplevoxGetSingle.js +4 -2
- package/api/peoplevox/peoplevoxOrderEdit.js +8 -2
- package/api/peoplevox/peoplevoxOrderGet.js +6 -1
- package/api/peoplevox/peoplevoxReportGet.js +6 -2
- package/api/pipe17/docs.md +8 -0
- package/api/pipe17/pipe17.constants.js +47 -0
- package/api/pipe17/pipe17.utils.js +123 -0
- package/api/pipe17/pipe17ArrivalGet.js +78 -0
- package/api/pipe17/pipe17ArrivalUpdate.js +111 -0
- package/api/pipe17/pipe17ArrivalsGet.js +54 -0
- package/api/pipe17/pipe17FulfillmentGet.js +69 -0
- package/api/pipe17/pipe17FulfillmentsGet.js +54 -0
- package/api/pipe17/pipe17Get.js +151 -0
- package/api/pipe17/pipe17InventoryItemGet.js +57 -0
- package/api/pipe17/pipe17InventoryItemsGet.js +54 -0
- package/api/pipe17/pipe17JobCreate.js +95 -0
- package/api/pipe17/pipe17JobGet.js +70 -0
- package/api/pipe17/pipe17JobResultsGet.js +55 -0
- package/api/pipe17/pipe17LocationGet.js +57 -0
- package/api/pipe17/pipe17LocationsGet.js +54 -0
- package/api/pipe17/pipe17OrderGet.js +71 -0
- package/api/pipe17/pipe17OrdersGet.js +54 -0
- package/api/pipe17/pipe17ProductGet.js +57 -0
- package/api/pipe17/pipe17ProductsGet.js +54 -0
- package/api/pipe17/pipe17PurchaseGet.js +57 -0
- package/api/pipe17/pipe17PurchasesGet.js +54 -0
- package/api/pipe17/pipe17ReceiptGet.js +57 -0
- package/api/pipe17/pipe17ReceiptsGet.js +54 -0
- package/api/pipe17/pipe17ReturnGet.js +57 -0
- package/api/pipe17/pipe17ReturnsGet.js +54 -0
- package/api/printify/_example.get.js +67 -0
- package/api/printify/_example.js +59 -0
- package/api/printify/printify.constants.js +8 -0
- package/api/printify/printify.utils.js +41 -0
- package/api/printify/printifyBlueprintGet.js +60 -0
- package/api/printify/printifyBlueprintPrintProviderVariantsGet.js +77 -0
- package/api/printify/printifyBlueprintPrintProvidersGet.js +60 -0
- package/api/printify/printifyBlueprintsGet.js +38 -0
- package/api/printify/printifyGet.js +154 -0
- package/api/printify/printifyImageUpload.js +74 -0
- package/api/printify/printifyOrderCancel.js +70 -0
- package/api/printify/printifyOrderCreate.js +98 -0
- package/api/printify/printifyOrderGet.js +70 -0
- package/api/printify/printifyOrderSubmit.js +70 -0
- package/api/printify/printifyOrdersGet.js +72 -0
- package/api/printify/printifyProductCreate.js +96 -0
- package/api/printify/printifyProductDelete.js +70 -0
- package/api/printify/printifyProductGet.js +79 -0
- package/api/printify/printifyProductUpdate.js +81 -0
- package/api/printify/printifyProductsGet.js +67 -0
- package/api/printify/printifyShippingGet.js +70 -0
- package/api/printify/printifyShopsGet.js +56 -0
- package/api/printify/printifyWebhookCreate.js +84 -0
- package/api/printify/printifyWebhookDelete.js +70 -0
- package/api/printify/printifyWebhookUpdate.js +81 -0
- package/api/printify/printifyWebhooksGet.js +56 -0
- package/api/salesforce/docs.md +6 -0
- package/api/shopify/_example.create.js +2 -2
- package/api/shopify/_example.get.js +17 -4
- package/api/shopify/_example.getsingle.js +4 -1
- package/api/shopify/_example.js +4 -1
- package/api/shopify/_example.mutation.js +4 -1
- package/api/shopify/shopifyAbandonedCheckoutsGet.js +1 -1
- package/api/shopify/shopifyArticlesGet.js +1 -1
- package/api/shopify/shopifyBlogsGet.js +1 -1
- package/api/shopify/shopifyBulkMutationDo.js +5 -6
- package/api/shopify/shopifyBulkOperationsGet.js +1 -1
- package/api/shopify/shopifyCatalogsGet.js +17 -4
- package/api/shopify/shopifyChannelsGet.js +17 -4
- package/api/shopify/shopifyCheckoutAndAccountsConfigurationsGet.js +17 -4
- package/api/shopify/shopifyCollectionGet.js +4 -1
- package/api/shopify/shopifyCollectionsGet.js +17 -4
- package/api/shopify/shopifyCustomerCreate.js +2 -2
- package/api/shopify/shopifyCustomerGet.js +4 -1
- package/api/shopify/shopifyCustomerMarketingConsentUpdateSms.js +84 -0
- package/api/shopify/shopifyCustomersGet.js +18 -5
- package/api/shopify/shopifyDecodeSessionToken.js +2 -2
- package/api/shopify/shopifyDeliveryCustomizationsGet.js +1 -1
- package/api/shopify/shopifyDeliveryProfilesGet.js +17 -4
- package/api/shopify/shopifyDiscountNodesGet.js +1 -1
- package/api/shopify/shopifyDisputesGet.js +1 -1
- package/api/shopify/shopifyDraftOrdersGet.js +1 -1
- package/api/shopify/shopifyEventsGet.js +1 -1
- package/api/shopify/shopifyFilesGet.js +1 -1
- package/api/shopify/shopifyFulfillmentOrdersGet.js +17 -4
- package/api/shopify/shopifyGet.js +1 -1
- package/api/shopify/shopifyGiftCardCreate.js +4 -1
- package/api/shopify/shopifyGiftCardDeactivate.js +4 -1
- package/api/shopify/shopifyGiftCardsGet.js +17 -4
- package/api/shopify/shopifyInventoryItemsGet.js +17 -4
- package/api/shopify/shopifyLocationsGet.js +1 -1
- package/api/shopify/shopifyMarketingEventsGet.js +1 -1
- package/api/shopify/shopifyMarketsGet.js +1 -1
- package/api/shopify/shopifyMenusGet.js +1 -1
- package/api/shopify/shopifyMetafieldDefinitionCreate.js +111 -0
- package/api/shopify/shopifyMetafieldDefinitionsGet.js +18 -4
- package/api/shopify/shopifyMetafieldsDelete.js +78 -0
- package/api/shopify/shopifyMetaobjectDefinitionsGet.js +1 -1
- package/api/shopify/shopifyMetaobjectsGet.js +1 -1
- package/api/shopify/shopifyMutationDo.js +4 -1
- package/api/shopify/shopifyOrderGet.js +4 -1
- package/api/shopify/shopifyOrdersGet.js +3 -1
- package/api/shopify/shopifyPageDelete.js +4 -1
- package/api/shopify/shopifyPageGet.js +4 -1
- package/api/shopify/shopifyPageUpdate.js +5 -1
- package/api/shopify/shopifyPagesGet.js +1 -1
- package/api/shopify/shopifyPaymentCustomizationsGet.js +1 -1
- package/api/shopify/shopifyProductFeedsGet.js +1 -1
- package/api/shopify/shopifyProductGet.js +110 -0
- package/api/shopify/shopifyProductVariantsGet.js +1 -1
- package/api/shopify/shopifyProductsGet.js +17 -4
- package/api/shopify/shopifyPublicationsGet.js +17 -4
- package/api/shopify/shopifySegmentsGet.js +1 -1
- package/api/shopify/shopifyStoreCreditAccountCredit.js +144 -0
- package/api/shopify/shopifyStoreCreditAccountDebit.js +132 -0
- package/api/shopify/shopifyTagsRemoveBulk.js +77 -0
- package/api/shopify/shopifyThemeDelete.js +4 -1
- package/api/shopify/shopifyThemeDuplicate.js +4 -1
- package/api/shopify/shopifyThemeGet.js +2 -2
- package/api/shopify/shopifyThemesGet.js +3 -1
- package/api/shopify/shopifyUrlRedirectsGet.js +1 -1
- package/api/shopify/shopifyWebhookSubscriptionsGet.js +17 -4
- package/api/snowflake/docs.md +8 -0
- package/api/starshipit/starshipitAddressesGet.js +3 -1
- package/api/starshipit/starshipitOrdersListShipped.js +3 -1
- package/api/starshipit/starshipitProductsGet.js +3 -1
- package/api/stripe/_example.js +4 -1
- package/api/stripe/stripeChargesGet.js +3 -1
- package/api/stripe/stripeRefundsGet.js +3 -1
- package/api/stylearcade/stylearcadeDataGet.js +14 -6
- package/api/stylearcade/stylearcadeMetadataGet.js +3 -1
- package/api/tagalys/docs.md +7 -0
- package/api/telnyx/docs.md +6 -0
- package/api/telnyx/telnyx.constants.js +7 -0
- package/api/telnyx/telnyx.utils.js +37 -0
- package/api/telnyx/telnyxAvailablePhoneNumbersGet.js +59 -0
- package/api/telnyx/telnyxBalanceGet.js +51 -0
- package/api/telnyx/telnyxGet.js +151 -0
- package/api/telnyx/telnyxMessageGet.js +59 -0
- package/api/telnyx/telnyxMessageSend.js +65 -0
- package/api/telnyx/telnyxMessagesGet.js +53 -0
- package/api/telnyx/telnyxMessagingProfileCreate.js +62 -0
- package/api/telnyx/telnyxMessagingProfileGet.js +59 -0
- package/api/telnyx/telnyxMessagingProfileUpdate.js +68 -0
- package/api/telnyx/telnyxMessagingProfilesGet.js +53 -0
- package/api/telnyx/telnyxNumberLookupGet.js +61 -0
- package/api/telnyx/telnyxNumberOrderCreate.js +64 -0
- package/api/telnyx/telnyxPhoneNumberGet.js +59 -0
- package/api/telnyx/telnyxPhoneNumberUpdate.js +68 -0
- package/api/telnyx/telnyxPhoneNumbersGet.js +53 -0
- package/api/telnyx/telnyxWebhookDeliveriesGet.js +58 -0
- package/api/threeclicks/threeclicksCollectionsGet.js +3 -1
- package/api/threeclicks/threeclicksPurchaseOrderCreate.js +4 -1
- package/api/threeclicks/threeclicksPurchaseOrderCreateBulk.js +4 -1
- package/api/threeclicks/threeclicksPurchaseOrderGet.js +4 -1
- package/api/threeclicks/threeclicksPurchaseOrderQuantitiesGet.js +4 -1
- package/api/threeclicks/threeclicksPurchaseOrderQuantityCreate.js +4 -1
- package/api/threeclicks/threeclicksPurchaseOrderQuantityCreateBulk.js +4 -1
- package/api/threeclicks/threeclicksPurchaseOrderUpdate.js +5 -1
- package/api/threeclicks/threeclicksPurchaseOrdersGet.js +3 -1
- package/api/threeclicks/threeclicksShipmentCreate.js +4 -1
- package/api/threeclicks/threeclicksShipmentGet.js +4 -1
- package/api/threeclicks/threeclicksShipmentOrderAdd.js +5 -1
- package/api/threeclicks/threeclicksShipmentOrderQuantityCreate.js +5 -1
- package/api/threeclicks/threeclicksShipmentQuantityUpdate.js +5 -1
- package/api/threeclicks/threeclicksShipmentStatusUpdate.js +5 -1
- package/api/threeclicks/threeclicksShipmentsGet.js +3 -1
- package/api/threeclicks/threeclicksSignatureCalculate.js +4 -4
- package/api/threeclicks/threeclicksStyleCodesGet.js +4 -1
- package/api/threeclicks/threeclicksStyleColourDelete.js +5 -1
- package/api/threeclicks/threeclicksStyleDelete.js +4 -1
- package/api/threeclicks/threeclicksStylesGet.js +3 -1
- package/api/upstash/upstashDel.js +4 -1
- package/api/upstash/upstashExists.js +4 -1
- package/api/upstash/upstashGet.js +4 -1
- package/api/utils.js +86 -6
- package/api/workable/workableJobsGet.js +3 -1
- package/api/yotpo/yotpoCampaignsGet.js +3 -1
- package/api/yotpo/yotpoCustomersRecentGet.js +3 -1
- package/api/yotpo/yotpoRedemptionOptionsGet.js +3 -1
- package/api/yotpo/yotpoVipTiersGet.js +3 -1
- package/hosting/copyCredsToEnv.js +3 -3
- package/hosting/handlerPaths.js +3 -3
- package/package.json +2 -1
- package/server.js +8 -6
- 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({
|
|
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({
|
|
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
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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({
|
|
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
|
|
58
|
-
const credsPath = `${
|
|
59
|
-
const envPath = `${
|
|
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 }`);
|
package/hosting/handlerPaths.js
CHANGED
|
@@ -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
|
|
5
|
+
const normalisedWorkspace = workspace.replace(/\/$/, '');
|
|
6
6
|
const { filePath } = handler;
|
|
7
7
|
|
|
8
|
-
if (filePath.startsWith(`${
|
|
9
|
-
return `./${ filePath.slice(
|
|
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.
|
|
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
|
-
|
|
100
|
-
|
|
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
|
|
116
|
-
for (const filePath of listJsFiles(
|
|
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',
|