diff --git a/components/woocommerce/package.json b/components/woocommerce/package.json index 9d3c851315342..d95c203db863a 100644 --- a/components/woocommerce/package.json +++ b/components/woocommerce/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/woocommerce", - "version": "0.0.1", + "version": "0.0.2", "description": "Pipedream WooCommerce Components", "main": "woocommerce.app.mjs", "keywords": [ @@ -16,7 +16,7 @@ "crypto": "^1.0.1", "lodash.pick": "^4.4.0", "lodash.pickby": "^4.6.0", - "querystring": "^0.2.1" + "query-string": "^7.1.1" }, "gitHead": "e12480b94cc03bed4808ebc6b13e7fdb3a1ba535", "publishConfig": { diff --git a/components/woocommerce/sources/common/base.mjs b/components/woocommerce/sources/common/base.mjs index a203cbfde2a17..4077fd63ad6f0 100644 --- a/components/woocommerce/sources/common/base.mjs +++ b/components/woocommerce/sources/common/base.mjs @@ -14,6 +14,15 @@ export default { }, }, hooks: { + async deploy() { + const events = await this.getSampleEvents({ + perPage: 25, + }); + for (const event of events) { + const meta = this.generateMeta("", event); + this.$emit(event, meta); + } + }, async activate() { const hookIds = []; for (const topicType of this.topics) { @@ -47,6 +56,9 @@ export default { .digest("base64"); return signatureComputed === signature; }, + getSampleEvents() { + throw new Error("getSampleEvents is not implemented"); + }, }, async run(event) { const { diff --git a/components/woocommerce/sources/new-coupon-event/new-coupon-event.mjs b/components/woocommerce/sources/new-coupon-event/new-coupon-event.mjs index dbf196f94b03d..94c1d1a8041d9 100644 --- a/components/woocommerce/sources/new-coupon-event/new-coupon-event.mjs +++ b/components/woocommerce/sources/new-coupon-event/new-coupon-event.mjs @@ -3,13 +3,19 @@ import common from "../common/base.mjs"; export default { ...common, key: "woocommerce-new-coupon-event", - name: "New CouponEvent", + name: "New Coupon Event (Instant)", description: "Emit new event each time the specified coupon event(s) occur", - version: "0.0.2", + version: "0.0.3", type: "source", dedupe: "unique", methods: { ...common.methods, + async getSampleEvents({ perPage }) { + return this.woocommerce.listCoupons({ + per_page: perPage, + orderby: "date", + }); + }, getTopic(topicType) { return `coupon.${topicType}`; }, diff --git a/components/woocommerce/sources/new-customer-event/new-customer-event.mjs b/components/woocommerce/sources/new-customer-event/new-customer-event.mjs index 10b536411685c..64a976f549a60 100644 --- a/components/woocommerce/sources/new-customer-event/new-customer-event.mjs +++ b/components/woocommerce/sources/new-customer-event/new-customer-event.mjs @@ -3,13 +3,19 @@ import common from "../common/base.mjs"; export default { ...common, key: "woocommerce-new-customer-event", - name: "New Customer Event", + name: "New Customer Event (Instant)", description: "Emit new event each time the specified customer event(s) occur", - version: "0.0.2", + version: "0.0.3", type: "source", dedupe: "unique", methods: { ...common.methods, + async getSampleEvents({ perPage }) { + return this.woocommerce.listCustomers({ + per_page: perPage, + orderby: "registered_date", + }); + }, getTopic(topicType) { return `customer.${topicType}`; }, diff --git a/components/woocommerce/sources/new-order-event/new-order-event.mjs b/components/woocommerce/sources/new-order-event/new-order-event.mjs index 8d8a2c832d13e..2a423d4bbdb3b 100644 --- a/components/woocommerce/sources/new-order-event/new-order-event.mjs +++ b/components/woocommerce/sources/new-order-event/new-order-event.mjs @@ -3,13 +3,19 @@ import common from "../common/base.mjs"; export default { ...common, key: "woocommerce-new-order-event", - name: "New Order Event", + name: "New Order Event (Instant)", description: "Emit new event each time the specified order event(s) occur", - version: "0.0.2", + version: "0.0.3", type: "source", dedupe: "unique", methods: { ...common.methods, + async getSampleEvents({ perPage }) { + return this.woocommerce.listOrders({ + per_page: perPage, + orderby: "date", + }); + }, getTopic(topicType) { return `order.${topicType}`; }, diff --git a/components/woocommerce/sources/new-product-event/new-product-event.mjs b/components/woocommerce/sources/new-product-event/new-product-event.mjs index 68aca0fbce19b..3d4133d649d8f 100644 --- a/components/woocommerce/sources/new-product-event/new-product-event.mjs +++ b/components/woocommerce/sources/new-product-event/new-product-event.mjs @@ -3,13 +3,19 @@ import common from "../common/base.mjs"; export default { ...common, key: "woocommerce-new-product-event", - name: "New Product Event", + name: "New Product Event (Instant)", description: "Emit new event each time the specified product event(s) occur", - version: "0.0.2", + version: "0.0.3", type: "source", dedupe: "unique", methods: { ...common.methods, + async getSampleEvents({ perPage }) { + return this.woocommerce.listProducts({ + per_page: perPage, + orderby: "date", + }); + }, getTopic(topicType) { return `product.${topicType}`; }, diff --git a/components/woocommerce/woocommerce.app.mjs b/components/woocommerce/woocommerce.app.mjs index fb7b2f2689919..57ca5e94fe880 100644 --- a/components/woocommerce/woocommerce.app.mjs +++ b/components/woocommerce/woocommerce.app.mjs @@ -1,5 +1,5 @@ import WooCommerceRestApi from "@woocommerce/woocommerce-rest-api"; -import querystring from "querystring"; +import querystring from "query-string"; import constants from "./constants.mjs"; export default { @@ -128,7 +128,9 @@ export default { label: "Products", description: "Products to add to the the new order", async options({ page }) { - const products = await this.listProducts(page + 1); + const products = await this.listProducts({ + page: page + 1, + }); return products.map((product) => ({ label: product.name, value: product.id, @@ -186,9 +188,9 @@ export default { return this.postResource("webhooks", data); }, async deleteWebhook(id) { - return this.deleteResource(`webhooks/${id}`); + return this.deleteResource(`webhooks/${id}?force=true`); }, - async listCustomers(params) { + async listCustomers(params = null) { const q = querystring.stringify(params); return this.listResources(`customers?${q}`); }, @@ -198,8 +200,13 @@ export default { async listPaymentGateways() { return this.listResources("payment_gateways"); }, - async listProducts(page) { - return this.listResources(`products?page=${page}`); + async listProducts(params = null) { + const q = querystring.stringify(params); + return this.listResources(`products?${q}`); + }, + async listCoupons(params = null) { + const q = querystring.stringify(params); + return this.listResources(`coupons?${q}`); }, async listCategories(page) { return this.listResources(`products/categories?page=${page}`); @@ -207,6 +214,10 @@ export default { async getOrder(id) { return this.listResources(`orders/${id}`); }, + async listOrders(params = null) { + const q = querystring.stringify(params); + return this.listResources(`orders?${q}`); + }, async createOrder(data) { return this.postResource("orders", data); }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73f690221fdad..cf311846eaf86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: pnpm: 7.0.1 putout: 26.0.1 renamer: 4.0.0 - ts-jest: 27.1.4_xejkg674zdqdsmikentsgzg3jy + ts-jest: 27.1.4_b2l2z5zb7yu4r6dlp35tmkx42a tsc-esm-fix: 2.18.0 tsc-watch: 5.0.3_typescript@4.7.2 typescript: 4.7.2 @@ -1593,14 +1593,14 @@ importers: crypto: ^1.0.1 lodash.pick: ^4.4.0 lodash.pickby: ^4.6.0 - querystring: ^0.2.1 + query-string: ^7.1.1 dependencies: '@pipedream/platform': 0.10.0 '@woocommerce/woocommerce-rest-api': 1.0.1 crypto: 1.0.1 lodash.pick: 4.4.0 lodash.pickby: 4.6.0 - querystring: 0.2.1 + query-string: 7.1.1 components/wordpress_org: specifiers: @@ -10948,7 +10948,7 @@ packages: to-regex-range: 5.0.1 /filter-obj/1.1.0: - resolution: {integrity: sha1-mzERErxsYSehbgFsbF1/GeCAXFs=} + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} dev: false @@ -17633,7 +17633,7 @@ packages: dev: false /strict-uri-encode/2.0.0: - resolution: {integrity: sha1-ucczDHBChi9rFC3CdLvMWGbONUY=} + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} dev: false @@ -18334,7 +18334,7 @@ packages: engines: {node: '>=6'} dev: true - /ts-jest/27.1.4_xejkg674zdqdsmikentsgzg3jy: + /ts-jest/27.1.4_b2l2z5zb7yu4r6dlp35tmkx42a: resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -18355,7 +18355,6 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.17.10 '@types/jest': 27.5.0 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 @@ -18592,6 +18591,7 @@ packages: resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} engines: {node: '>=4.2.0'} hasBin: true + dev: false /typescript/4.7.2: resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==}