@keystrokehq/shopify 0.0.1

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 (46) hide show
  1. package/README.md +178 -0
  2. package/dist/_official/index.d.mts +3 -0
  3. package/dist/_official/index.mjs +3 -0
  4. package/dist/_runtime/index.d.mts +56 -0
  5. package/dist/_runtime/index.mjs +3 -0
  6. package/dist/articles.d.mts +174 -0
  7. package/dist/articles.mjs +252 -0
  8. package/dist/blogs.d.mts +113 -0
  9. package/dist/blogs.mjs +174 -0
  10. package/dist/client.d.mts +22 -0
  11. package/dist/client.mjs +90 -0
  12. package/dist/collections.d.mts +140 -0
  13. package/dist/collections.mjs +209 -0
  14. package/dist/connection.d.mts +2 -0
  15. package/dist/connection.mjs +3 -0
  16. package/dist/customers.d.mts +161 -0
  17. package/dist/customers.mjs +225 -0
  18. package/dist/events.d.mts +181 -0
  19. package/dist/events.mjs +67 -0
  20. package/dist/factory-DC-gY8L0.mjs +8 -0
  21. package/dist/fulfillments.d.mts +99 -0
  22. package/dist/fulfillments.mjs +167 -0
  23. package/dist/index.d.mts +1 -0
  24. package/dist/index.mjs +1 -0
  25. package/dist/integration-BN3pjCz4.mjs +204 -0
  26. package/dist/integration-BwDBsGX-.d.mts +71 -0
  27. package/dist/inventory.d.mts +103 -0
  28. package/dist/inventory.mjs +182 -0
  29. package/dist/locations.d.mts +47 -0
  30. package/dist/locations.mjs +81 -0
  31. package/dist/messaging.d.mts +1 -0
  32. package/dist/messaging.mjs +1 -0
  33. package/dist/operation-helpers-CKEDIx0o.mjs +21 -0
  34. package/dist/orders.d.mts +229 -0
  35. package/dist/orders.mjs +271 -0
  36. package/dist/products.d.mts +155 -0
  37. package/dist/products.mjs +171 -0
  38. package/dist/provider-app-DHxVZI6q.d.mts +37 -0
  39. package/dist/schemas.d.mts +233 -0
  40. package/dist/schemas.mjs +164 -0
  41. package/dist/shop.d.mts +20 -0
  42. package/dist/shop.mjs +31 -0
  43. package/dist/triggers.d.mts +23 -0
  44. package/dist/triggers.mjs +138 -0
  45. package/dist/webhook-management-BmIxO0vr.mjs +150 -0
  46. package/package.json +130 -0
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,21 @@
1
+ import { shopifyGlobalIdSchema } from "./schemas.mjs";
2
+ import { z } from "zod";
3
+
4
+ //#region src/operation-helpers.ts
5
+ const shopifyPageInputSchema = z.object({
6
+ first: z.number().int().min(1).max(100).optional().default(25),
7
+ after: z.string().optional(),
8
+ query: z.string().optional()
9
+ });
10
+ const shopifyProductIdsInputSchema = z.array(shopifyGlobalIdSchema).min(1).max(250);
11
+ function assertNoUserErrors(userErrors) {
12
+ if (userErrors.length === 0) return;
13
+ const message = userErrors.map((error) => error.field && error.field.length > 0 ? `${error.field.join(".")}: ${error.message}` : error.message).join("; ");
14
+ throw new Error(`Shopify mutation returned user errors: ${message}`);
15
+ }
16
+ function omitUndefined(input) {
17
+ return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== void 0));
18
+ }
19
+
20
+ //#endregion
21
+ export { shopifyProductIdsInputSchema as i, omitUndefined as n, shopifyPageInputSchema as r, assertNoUserErrors as t };
@@ -0,0 +1,229 @@
1
+ import { z } from "zod";
2
+ import * as _keystrokehq_core0 from "@keystrokehq/core";
3
+ import * as _keystrokehq_core_credential_set0 from "@keystrokehq/core/credential-set";
4
+
5
+ //#region src/orders.d.ts
6
+ declare const listOrders: _keystrokehq_core0.Operation<z.ZodObject<{
7
+ first: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
+ after: z.ZodOptional<z.ZodString>;
9
+ query: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ nodes: z.ZodArray<z.ZodObject<{
12
+ id: z.ZodString;
13
+ name: z.ZodString;
14
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
15
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
16
+ cancelledAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
17
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
18
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
20
+ displayFinancialStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ displayFulfillmentStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
22
+ currentTotalPriceSet: z.ZodOptional<z.ZodObject<{
23
+ shopMoney: z.ZodObject<{
24
+ amount: z.ZodString;
25
+ currencyCode: z.ZodString;
26
+ }, z.core.$strip>;
27
+ presentmentMoney: z.ZodOptional<z.ZodObject<{
28
+ amount: z.ZodString;
29
+ currencyCode: z.ZodString;
30
+ }, z.core.$strip>>;
31
+ }, z.core.$strip>>;
32
+ customer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
33
+ id: z.ZodString;
34
+ displayName: z.ZodString;
35
+ firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
37
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
38
+ phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
40
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
41
+ }, z.core.$strip>>>;
42
+ }, z.core.$strip>>;
43
+ pageInfo: z.ZodObject<{
44
+ hasNextPage: z.ZodBoolean;
45
+ hasPreviousPage: z.ZodOptional<z.ZodBoolean>;
46
+ startCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
+ endCursor: z.ZodNullable<z.ZodString>;
48
+ }, z.core.$strip>;
49
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
50
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
51
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
52
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
53
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
54
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
55
+ }, z.core.$strip>>[] | undefined>], undefined>;
56
+ declare const getOrder: _keystrokehq_core0.Operation<z.ZodObject<{
57
+ id: z.ZodString;
58
+ }, z.core.$strip>, z.ZodObject<{
59
+ id: z.ZodString;
60
+ name: z.ZodString;
61
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
62
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
63
+ cancelledAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
64
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
65
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
66
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ displayFinancialStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
68
+ displayFulfillmentStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
69
+ currentTotalPriceSet: z.ZodOptional<z.ZodObject<{
70
+ shopMoney: z.ZodObject<{
71
+ amount: z.ZodString;
72
+ currencyCode: z.ZodString;
73
+ }, z.core.$strip>;
74
+ presentmentMoney: z.ZodOptional<z.ZodObject<{
75
+ amount: z.ZodString;
76
+ currencyCode: z.ZodString;
77
+ }, z.core.$strip>>;
78
+ }, z.core.$strip>>;
79
+ customer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
80
+ id: z.ZodString;
81
+ displayName: z.ZodString;
82
+ firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
84
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
85
+ phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
86
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
87
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
88
+ }, z.core.$strip>>>;
89
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
90
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
91
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
92
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
93
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
94
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
95
+ }, z.core.$strip>>[] | undefined>], undefined>;
96
+ declare const createOrder: _keystrokehq_core0.Operation<z.ZodObject<{
97
+ currency: z.ZodString;
98
+ email: z.ZodOptional<z.ZodEmail>;
99
+ note: z.ZodOptional<z.ZodString>;
100
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ customerId: z.ZodOptional<z.ZodString>;
102
+ lineItems: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
103
+ variantId: z.ZodString;
104
+ quantity: z.ZodNumber;
105
+ }, z.core.$strip>, z.ZodObject<{
106
+ title: z.ZodString;
107
+ quantity: z.ZodNumber;
108
+ price: z.ZodNumber;
109
+ }, z.core.$strip>]>>;
110
+ }, z.core.$strip>, z.ZodObject<{
111
+ id: z.ZodString;
112
+ name: z.ZodString;
113
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
114
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
115
+ cancelledAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
116
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
117
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
118
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
119
+ displayFinancialStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
120
+ displayFulfillmentStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
121
+ currentTotalPriceSet: z.ZodOptional<z.ZodObject<{
122
+ shopMoney: z.ZodObject<{
123
+ amount: z.ZodString;
124
+ currencyCode: z.ZodString;
125
+ }, z.core.$strip>;
126
+ presentmentMoney: z.ZodOptional<z.ZodObject<{
127
+ amount: z.ZodString;
128
+ currencyCode: z.ZodString;
129
+ }, z.core.$strip>>;
130
+ }, z.core.$strip>>;
131
+ customer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
132
+ id: z.ZodString;
133
+ displayName: z.ZodString;
134
+ firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
135
+ lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
136
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
137
+ phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
138
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
139
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
140
+ }, z.core.$strip>>>;
141
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
142
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
143
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
144
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
145
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
146
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
147
+ }, z.core.$strip>>[] | undefined>], undefined>;
148
+ declare const updateOrder: _keystrokehq_core0.Operation<z.ZodObject<{
149
+ id: z.ZodString;
150
+ email: z.ZodOptional<z.ZodEmail>;
151
+ note: z.ZodOptional<z.ZodString>;
152
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
+ shippingAddress: z.ZodOptional<z.ZodObject<{
154
+ address1: z.ZodString;
155
+ address2: z.ZodOptional<z.ZodString>;
156
+ city: z.ZodString;
157
+ province: z.ZodOptional<z.ZodString>;
158
+ country: z.ZodString;
159
+ zip: z.ZodOptional<z.ZodString>;
160
+ firstName: z.ZodOptional<z.ZodString>;
161
+ lastName: z.ZodOptional<z.ZodString>;
162
+ phone: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strip>>;
164
+ }, z.core.$strip>, z.ZodObject<{
165
+ id: z.ZodString;
166
+ name: z.ZodString;
167
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
168
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
169
+ cancelledAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
170
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
171
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
172
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
173
+ displayFinancialStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
174
+ displayFulfillmentStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
175
+ currentTotalPriceSet: z.ZodOptional<z.ZodObject<{
176
+ shopMoney: z.ZodObject<{
177
+ amount: z.ZodString;
178
+ currencyCode: z.ZodString;
179
+ }, z.core.$strip>;
180
+ presentmentMoney: z.ZodOptional<z.ZodObject<{
181
+ amount: z.ZodString;
182
+ currencyCode: z.ZodString;
183
+ }, z.core.$strip>>;
184
+ }, z.core.$strip>>;
185
+ customer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
186
+ id: z.ZodString;
187
+ displayName: z.ZodString;
188
+ firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
189
+ lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
190
+ email: z.ZodOptional<z.ZodNullable<z.ZodEmail>>;
191
+ phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
192
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
193
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
194
+ }, z.core.$strip>>>;
195
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
196
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
197
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
198
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
199
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
200
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
201
+ }, z.core.$strip>>[] | undefined>], undefined>;
202
+ declare const cancelOrder: _keystrokehq_core0.Operation<z.ZodObject<{
203
+ orderId: z.ZodString;
204
+ reason: z.ZodEnum<{
205
+ CUSTOMER: "CUSTOMER";
206
+ DECLINED: "DECLINED";
207
+ FRAUD: "FRAUD";
208
+ INVENTORY: "INVENTORY";
209
+ OTHER: "OTHER";
210
+ STAFF: "STAFF";
211
+ }>;
212
+ restock: z.ZodBoolean;
213
+ notifyCustomer: z.ZodOptional<z.ZodBoolean>;
214
+ staffNote: z.ZodOptional<z.ZodString>;
215
+ refundMethod: z.ZodOptional<z.ZodObject<{
216
+ originalPaymentMethodsRefund: z.ZodOptional<z.ZodBoolean>;
217
+ }, z.core.$strip>>;
218
+ }, z.core.$strip>, z.ZodObject<{
219
+ id: z.ZodString;
220
+ done: z.ZodOptional<z.ZodBoolean>;
221
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
222
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
223
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
224
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
225
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
226
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
227
+ }, z.core.$strip>>[] | undefined>], undefined>;
228
+ //#endregion
229
+ export { cancelOrder, createOrder, getOrder, listOrders, updateOrder };
@@ -0,0 +1,271 @@
1
+ import { shopifyConnectionNodesSchema, shopifyGlobalIdSchema, shopifyJobSchema, shopifyOrderSchema, shopifyUserErrorSchema } from "./schemas.mjs";
2
+ import { createShopifyClient } from "./client.mjs";
3
+ import { t as shopifyOperation } from "./factory-DC-gY8L0.mjs";
4
+ import { n as omitUndefined, r as shopifyPageInputSchema, t as assertNoUserErrors } from "./operation-helpers-CKEDIx0o.mjs";
5
+ import { z } from "zod";
6
+
7
+ //#region src/orders.ts
8
+ const orderSelection = `
9
+ id
10
+ name
11
+ createdAt
12
+ updatedAt
13
+ cancelledAt
14
+ email
15
+ note
16
+ tags
17
+ displayFinancialStatus
18
+ displayFulfillmentStatus
19
+ currentTotalPriceSet {
20
+ shopMoney {
21
+ amount
22
+ currencyCode
23
+ }
24
+ }
25
+ customer {
26
+ id
27
+ displayName
28
+ firstName
29
+ lastName
30
+ email
31
+ phone
32
+ createdAt
33
+ updatedAt
34
+ }
35
+ `;
36
+ const orderLineItemVariantSchema = z.object({
37
+ variantId: shopifyGlobalIdSchema,
38
+ quantity: z.number().int().min(1)
39
+ });
40
+ const orderLineItemCustomSchema = z.object({
41
+ title: z.string().min(1),
42
+ quantity: z.number().int().min(1),
43
+ price: z.number().positive()
44
+ });
45
+ const orderCreateLineItemSchema = z.union([orderLineItemVariantSchema, orderLineItemCustomSchema]);
46
+ const orderAddressSchema = z.object({
47
+ address1: z.string().min(1),
48
+ address2: z.string().optional(),
49
+ city: z.string().min(1),
50
+ province: z.string().optional(),
51
+ country: z.string().min(1),
52
+ zip: z.string().optional(),
53
+ firstName: z.string().optional(),
54
+ lastName: z.string().optional(),
55
+ phone: z.string().optional()
56
+ });
57
+ const orderMutationResponseSchema = z.object({
58
+ order: shopifyOrderSchema.nullable(),
59
+ userErrors: z.array(shopifyUserErrorSchema)
60
+ });
61
+ const orderCreateUserErrorSchema = shopifyUserErrorSchema.extend({ code: z.string().optional() });
62
+ const orderCancelUserErrorSchema = shopifyUserErrorSchema.extend({ code: z.string().optional() });
63
+ const listOrdersResponseSchema = z.object({ orders: shopifyConnectionNodesSchema(shopifyOrderSchema) });
64
+ const getOrderResponseSchema = z.object({ order: shopifyOrderSchema.nullable() });
65
+ const createOrderResponseSchema = z.object({
66
+ order: shopifyOrderSchema.nullable(),
67
+ userErrors: z.array(orderCreateUserErrorSchema)
68
+ });
69
+ const cancelOrderResponseSchema = z.object({
70
+ job: shopifyJobSchema.nullable(),
71
+ orderCancelUserErrors: z.array(orderCancelUserErrorSchema)
72
+ });
73
+ const orderCreateInputSchema = z.object({
74
+ currency: z.string().length(3),
75
+ email: z.email().optional(),
76
+ note: z.string().optional(),
77
+ tags: z.array(z.string()).optional(),
78
+ customerId: shopifyGlobalIdSchema.optional(),
79
+ lineItems: z.array(orderCreateLineItemSchema).min(1)
80
+ });
81
+ const orderUpdateInputSchema = z.object({
82
+ id: shopifyGlobalIdSchema,
83
+ email: z.email().optional(),
84
+ note: z.string().optional(),
85
+ tags: z.array(z.string()).optional(),
86
+ shippingAddress: orderAddressSchema.optional()
87
+ });
88
+ const orderCancelReasonSchema = z.enum([
89
+ "CUSTOMER",
90
+ "DECLINED",
91
+ "FRAUD",
92
+ "INVENTORY",
93
+ "OTHER",
94
+ "STAFF"
95
+ ]);
96
+ function buildOrderCreateLineItems(lineItems, currency) {
97
+ return lineItems.map((lineItem) => {
98
+ if ("variantId" in lineItem) return {
99
+ variantId: lineItem.variantId,
100
+ quantity: lineItem.quantity
101
+ };
102
+ return {
103
+ title: lineItem.title,
104
+ quantity: lineItem.quantity,
105
+ priceSet: { shopMoney: {
106
+ amount: lineItem.price,
107
+ currencyCode: currency
108
+ } }
109
+ };
110
+ });
111
+ }
112
+ const listOrders = shopifyOperation({
113
+ id: "list_shopify_orders",
114
+ name: "List Shopify Orders",
115
+ description: "List orders from the connected Shopify store.",
116
+ input: shopifyPageInputSchema,
117
+ output: shopifyConnectionNodesSchema(shopifyOrderSchema),
118
+ run: async (input, credentials) => {
119
+ return (await createShopifyClient(credentials).graphql(`
120
+ query ListOrders($first: Int!, $after: String, $query: String) {
121
+ orders(first: $first, after: $after, query: $query) {
122
+ nodes {
123
+ ${orderSelection}
124
+ }
125
+ pageInfo {
126
+ hasNextPage
127
+ hasPreviousPage
128
+ startCursor
129
+ endCursor
130
+ }
131
+ }
132
+ }
133
+ `, listOrdersResponseSchema, { variables: {
134
+ first: input.first,
135
+ ...input.after ? { after: input.after } : {},
136
+ ...input.query ? { query: input.query } : {}
137
+ } })).orders;
138
+ }
139
+ });
140
+ const getOrder = shopifyOperation({
141
+ id: "get_shopify_order",
142
+ name: "Get Shopify Order",
143
+ description: "Retrieve a single Shopify order by its global ID.",
144
+ input: z.object({ id: shopifyGlobalIdSchema }),
145
+ output: shopifyOrderSchema,
146
+ run: async (input, credentials) => {
147
+ const response = await createShopifyClient(credentials).graphql(`
148
+ query GetOrder($id: ID!) {
149
+ order(id: $id) {
150
+ ${orderSelection}
151
+ }
152
+ }
153
+ `, getOrderResponseSchema, { variables: { id: input.id } });
154
+ if (!response.order) throw new Error(`Shopify order not found: ${input.id}`);
155
+ return response.order;
156
+ }
157
+ });
158
+ const createOrder = shopifyOperation({
159
+ id: "create_shopify_order",
160
+ name: "Create Shopify Order",
161
+ description: "Create an order in the connected Shopify store.",
162
+ needsApproval: true,
163
+ input: orderCreateInputSchema,
164
+ output: shopifyOrderSchema,
165
+ run: async (input, credentials) => {
166
+ const response = await createShopifyClient(credentials).graphql(`
167
+ mutation CreateOrder($order: OrderCreateOrderInput!) {
168
+ orderCreate(order: $order) {
169
+ order {
170
+ ${orderSelection}
171
+ }
172
+ userErrors {
173
+ field
174
+ message
175
+ code
176
+ }
177
+ }
178
+ }
179
+ `, z.object({ orderCreate: createOrderResponseSchema }), { variables: { order: {
180
+ ...omitUndefined({
181
+ currency: input.currency,
182
+ email: input.email,
183
+ note: input.note,
184
+ tags: input.tags,
185
+ customerId: input.customerId
186
+ }),
187
+ lineItems: buildOrderCreateLineItems(input.lineItems, input.currency)
188
+ } } });
189
+ assertNoUserErrors(response.orderCreate.userErrors);
190
+ if (!response.orderCreate.order) throw new Error("Shopify did not return the created order.");
191
+ return response.orderCreate.order;
192
+ }
193
+ });
194
+ const updateOrder = shopifyOperation({
195
+ id: "update_shopify_order",
196
+ name: "Update Shopify Order",
197
+ description: "Update simple order attributes such as note, tags, email, or shipping address.",
198
+ needsApproval: true,
199
+ input: orderUpdateInputSchema,
200
+ output: shopifyOrderSchema,
201
+ run: async (input, credentials) => {
202
+ const response = await createShopifyClient(credentials).graphql(`
203
+ mutation UpdateOrder($input: OrderInput!) {
204
+ orderUpdate(input: $input) {
205
+ order {
206
+ ${orderSelection}
207
+ }
208
+ userErrors {
209
+ field
210
+ message
211
+ }
212
+ }
213
+ }
214
+ `, z.object({ orderUpdate: orderMutationResponseSchema }), { variables: { input: omitUndefined(input) } });
215
+ assertNoUserErrors(response.orderUpdate.userErrors);
216
+ if (!response.orderUpdate.order) throw new Error(`Shopify did not return the updated order: ${input.id}`);
217
+ return response.orderUpdate.order;
218
+ }
219
+ });
220
+ const cancelOrder = shopifyOperation({
221
+ id: "cancel_shopify_order",
222
+ name: "Cancel Shopify Order",
223
+ description: "Cancel a Shopify order and return the asynchronous cancellation job.",
224
+ needsApproval: true,
225
+ input: z.object({
226
+ orderId: shopifyGlobalIdSchema,
227
+ reason: orderCancelReasonSchema,
228
+ restock: z.boolean(),
229
+ notifyCustomer: z.boolean().optional(),
230
+ staffNote: z.string().max(255).optional(),
231
+ refundMethod: z.object({ originalPaymentMethodsRefund: z.boolean().optional() }).optional()
232
+ }),
233
+ output: shopifyJobSchema,
234
+ run: async (input, credentials) => {
235
+ const response = await createShopifyClient(credentials).graphql(`
236
+ mutation CancelOrder(
237
+ $orderId: ID!
238
+ $reason: OrderCancelReason!
239
+ $restock: Boolean!
240
+ $notifyCustomer: Boolean
241
+ $staffNote: String
242
+ $refundMethod: OrderCancelRefundMethodInput
243
+ ) {
244
+ orderCancel(
245
+ orderId: $orderId
246
+ reason: $reason
247
+ restock: $restock
248
+ notifyCustomer: $notifyCustomer
249
+ staffNote: $staffNote
250
+ refundMethod: $refundMethod
251
+ ) {
252
+ job {
253
+ id
254
+ done
255
+ }
256
+ orderCancelUserErrors {
257
+ field
258
+ message
259
+ code
260
+ }
261
+ }
262
+ }
263
+ `, z.object({ orderCancel: cancelOrderResponseSchema }), { variables: omitUndefined(input) });
264
+ assertNoUserErrors(response.orderCancel.orderCancelUserErrors);
265
+ if (!response.orderCancel.job) throw new Error(`Shopify did not return a cancellation job for order: ${input.orderId}`);
266
+ return response.orderCancel.job;
267
+ }
268
+ });
269
+
270
+ //#endregion
271
+ export { cancelOrder, createOrder, getOrder, listOrders, updateOrder };
@@ -0,0 +1,155 @@
1
+ import { z } from "zod";
2
+ import * as _keystrokehq_core0 from "@keystrokehq/core";
3
+ import * as _keystrokehq_core_credential_set0 from "@keystrokehq/core/credential-set";
4
+
5
+ //#region src/products.d.ts
6
+ declare const listProducts: _keystrokehq_core0.Operation<z.ZodObject<{
7
+ first: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
+ after: z.ZodOptional<z.ZodString>;
9
+ query: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ nodes: z.ZodArray<z.ZodObject<{
12
+ id: z.ZodString;
13
+ title: z.ZodString;
14
+ handle: z.ZodString;
15
+ status: z.ZodOptional<z.ZodString>;
16
+ productType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
17
+ vendor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
18
+ descriptionHtml: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ onlineStoreUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
20
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
21
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
22
+ featuredImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
23
+ url: z.ZodURL;
24
+ altText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
25
+ }, z.core.$strip>>>;
26
+ seo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
27
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ }, z.core.$strip>>>;
30
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ }, z.core.$strip>>;
32
+ pageInfo: z.ZodObject<{
33
+ hasNextPage: z.ZodBoolean;
34
+ hasPreviousPage: z.ZodOptional<z.ZodBoolean>;
35
+ startCursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ endCursor: z.ZodNullable<z.ZodString>;
37
+ }, z.core.$strip>;
38
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
39
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
40
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
41
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
42
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
43
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
44
+ }, z.core.$strip>>[] | undefined>], undefined>;
45
+ declare const getProduct: _keystrokehq_core0.Operation<z.ZodObject<{
46
+ id: z.ZodString;
47
+ }, z.core.$strip>, z.ZodObject<{
48
+ id: z.ZodString;
49
+ title: z.ZodString;
50
+ handle: z.ZodString;
51
+ status: z.ZodOptional<z.ZodString>;
52
+ productType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
+ vendor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
54
+ descriptionHtml: z.ZodOptional<z.ZodNullable<z.ZodString>>;
55
+ onlineStoreUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
56
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
57
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
58
+ featuredImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
59
+ url: z.ZodURL;
60
+ altText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
+ }, z.core.$strip>>>;
62
+ seo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
63
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
65
+ }, z.core.$strip>>>;
66
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
68
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
69
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
70
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
71
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
72
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
73
+ }, z.core.$strip>>[] | undefined>], undefined>;
74
+ declare const createProduct: _keystrokehq_core0.Operation<z.ZodObject<{
75
+ handle: z.ZodOptional<z.ZodString>;
76
+ descriptionHtml: z.ZodOptional<z.ZodString>;
77
+ vendor: z.ZodOptional<z.ZodString>;
78
+ productType: z.ZodOptional<z.ZodString>;
79
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
80
+ title: z.ZodString;
81
+ }, z.core.$strip>, z.ZodObject<{
82
+ id: z.ZodString;
83
+ title: z.ZodString;
84
+ handle: z.ZodString;
85
+ status: z.ZodOptional<z.ZodString>;
86
+ productType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
87
+ vendor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
88
+ descriptionHtml: z.ZodOptional<z.ZodNullable<z.ZodString>>;
89
+ onlineStoreUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
90
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
91
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
92
+ featuredImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
93
+ url: z.ZodURL;
94
+ altText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
95
+ }, z.core.$strip>>>;
96
+ seo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
97
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
98
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
99
+ }, z.core.$strip>>>;
100
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
102
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
103
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
104
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
105
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
106
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
107
+ }, z.core.$strip>>[] | undefined>], undefined>;
108
+ declare const updateProduct: _keystrokehq_core0.Operation<z.ZodObject<{
109
+ title: z.ZodOptional<z.ZodString>;
110
+ handle: z.ZodOptional<z.ZodString>;
111
+ descriptionHtml: z.ZodOptional<z.ZodString>;
112
+ vendor: z.ZodOptional<z.ZodString>;
113
+ productType: z.ZodOptional<z.ZodString>;
114
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
115
+ id: z.ZodString;
116
+ }, z.core.$strip>, z.ZodObject<{
117
+ id: z.ZodString;
118
+ title: z.ZodString;
119
+ handle: z.ZodString;
120
+ status: z.ZodOptional<z.ZodString>;
121
+ productType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
122
+ vendor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
123
+ descriptionHtml: z.ZodOptional<z.ZodNullable<z.ZodString>>;
124
+ onlineStoreUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
125
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
126
+ updatedAt: z.ZodOptional<z.ZodISODateTime>;
127
+ featuredImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
128
+ url: z.ZodURL;
129
+ altText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
130
+ }, z.core.$strip>>>;
131
+ seo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
132
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
133
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
134
+ }, z.core.$strip>>>;
135
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
136
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
137
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
138
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
139
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
140
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
141
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
142
+ }, z.core.$strip>>[] | undefined>], undefined>;
143
+ declare const deleteProduct: _keystrokehq_core0.Operation<z.ZodObject<{
144
+ id: z.ZodString;
145
+ }, z.core.$strip>, z.ZodObject<{
146
+ deletedProductId: z.ZodString;
147
+ }, z.core.$strip>, readonly [_keystrokehq_core0.CredentialSet<"shopify", z.ZodObject<{
148
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
149
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
150
+ }, z.core.$strip>, readonly _keystrokehq_core_credential_set0.CredentialConnection<z.ZodObject<{
151
+ SHOPIFY_STORE_DOMAIN: z.ZodString;
152
+ SHOPIFY_ACCESS_TOKEN: z.ZodString;
153
+ }, z.core.$strip>>[] | undefined>], undefined>;
154
+ //#endregion
155
+ export { createProduct, deleteProduct, getProduct, listProducts, updateProduct };