@pintahub/shopify-next 0.4.1 → 0.6.0

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 (34) hide show
  1. package/dist/client/ShopifyClient.d.ts +15 -2
  2. package/dist/client/ShopifyClient.js +39 -8
  3. package/dist/client/ShopifyClient.js.map +1 -1
  4. package/dist/commands/customers/CreateCustomerCommand.js.map +1 -1
  5. package/dist/commands/menus/GetMenuCommand.js.map +1 -1
  6. package/dist/commands/menus/SearchMenusCommand.js.map +1 -1
  7. package/dist/commands/orders/GetOrderCommand.d.ts +73 -0
  8. package/dist/commands/orders/GetOrderCommand.js +83 -0
  9. package/dist/commands/orders/GetOrderCommand.js.map +1 -0
  10. package/dist/commands/orders/GetOrderEventsCommand.d.ts +21 -0
  11. package/dist/commands/orders/GetOrderEventsCommand.js +44 -0
  12. package/dist/commands/orders/GetOrderEventsCommand.js.map +1 -0
  13. package/dist/commands/orders/GetOrderFulfillmentsCommand.d.ts +32 -0
  14. package/dist/commands/orders/GetOrderFulfillmentsCommand.js +46 -0
  15. package/dist/commands/orders/GetOrderFulfillmentsCommand.js.map +1 -0
  16. package/dist/commands/orders/GetOrderTransactionsCommand.d.ts +43 -0
  17. package/dist/commands/orders/GetOrderTransactionsCommand.js +70 -0
  18. package/dist/commands/orders/GetOrderTransactionsCommand.js.map +1 -0
  19. package/dist/commands/orders/SearchOrdersCommand.d.ts +26 -0
  20. package/dist/commands/orders/SearchOrdersCommand.js +55 -0
  21. package/dist/commands/orders/SearchOrdersCommand.js.map +1 -0
  22. package/dist/commands/orders/index.d.ts +5 -0
  23. package/dist/commands/orders/index.js +22 -0
  24. package/dist/commands/orders/index.js.map +1 -0
  25. package/dist/commands/payments/SearchPayoutsCommand.js.map +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/utils/globalId.js.map +1 -1
  30. package/dist/utils/handleErrors.js.map +1 -1
  31. package/dist/utils/money.d.ts +11 -0
  32. package/dist/utils/money.js +3 -0
  33. package/dist/utils/money.js.map +1 -0
  34. package/package.json +1 -1
@@ -18,6 +18,8 @@ export interface ShopifyClientOptions {
18
18
  gatewayBase?: string;
19
19
  /** Middleware wrapping each `send()`. Composed in order (outermost first). */
20
20
  middleware?: Middleware[];
21
+ /** Caller identity, sent as `x-app-name` header to shopify-gateway for logging/tracing. */
22
+ appName?: string;
21
23
  }
22
24
  /**
23
25
  * Middleware wrapping `send()`. Same pattern as `koa` / `express`:
@@ -31,11 +33,22 @@ export interface ShopifyClientOptions {
31
33
  export type Middleware = (next: <I, O>(command: Command<I, O>) => Promise<O>) => <I, O>(command: Command<I, O>) => Promise<O>;
32
34
  export declare class ShopifyClient {
33
35
  readonly storeId: string;
34
- readonly apiVersion: string;
35
36
  readonly gatewayBase: string;
36
- private readonly raw;
37
+ readonly appName?: string;
38
+ private _apiVersion;
39
+ private raw;
37
40
  private readonly dispatch;
38
41
  constructor(storeId: StoreId, options?: ShopifyClientOptions);
42
+ get apiVersion(): string;
43
+ /**
44
+ * Override the Shopify Admin API version for subsequent `send()` calls.
45
+ * Useful when a single client needs to target `unstable` for one feature
46
+ * and the default stable version for everything else.
47
+ *
48
+ * Returns `this` to allow chaining, e.g. `client.setApiVersion('unstable').send(cmd)`.
49
+ */
50
+ setApiVersion(version: string): this;
39
51
  /** Execute a Command through the gateway. */
40
52
  send<I, O>(command: Command<I, O>): Promise<O>;
53
+ private buildRawClient;
41
54
  }
@@ -6,31 +6,62 @@ const DEFAULT_API_VERSION = '2026-04';
6
6
  const DEFAULT_GATEWAY_BASE = 'http://localhost:6100';
7
7
  class ShopifyClient {
8
8
  storeId;
9
- apiVersion;
10
9
  gatewayBase;
10
+ appName;
11
+ _apiVersion;
11
12
  raw;
12
13
  dispatch;
13
14
  constructor(storeId, options = {}) {
14
15
  this.storeId = storeId ? String(storeId) : '';
15
- this.apiVersion = options.apiVersion ?? DEFAULT_API_VERSION;
16
+ this._apiVersion = options.apiVersion ?? DEFAULT_API_VERSION;
16
17
  this.gatewayBase =
17
18
  options.gatewayBase ?? process.env.SHOPIFY_GATEWAY_URL ?? DEFAULT_GATEWAY_BASE;
19
+ this.appName = options.appName;
18
20
  if (!this.storeId) {
19
21
  throw new Error('ShopifyClient: storeId is required');
20
22
  }
21
- this.raw = (0, admin_api_client_1.createAdminApiClient)({
22
- storeDomain: 'placeholder.myshopify.com',
23
- accessToken: 'placeholder',
24
- apiVersion: this.apiVersion,
25
- customFetchApi: (_url, init) => fetch(`${this.gatewayBase}/stores/${this.storeId}/${this.apiVersion}/graphql.json`, init),
26
- });
23
+ this.raw = this.buildRawClient();
27
24
  const base = (command) => command.execute(this.raw);
28
25
  this.dispatch = (options.middleware ?? []).reduceRight((next, mw) => mw(next), base);
29
26
  }
27
+ get apiVersion() {
28
+ return this._apiVersion;
29
+ }
30
+ /**
31
+ * Override the Shopify Admin API version for subsequent `send()` calls.
32
+ * Useful when a single client needs to target `unstable` for one feature
33
+ * and the default stable version for everything else.
34
+ *
35
+ * Returns `this` to allow chaining, e.g. `client.setApiVersion('unstable').send(cmd)`.
36
+ */
37
+ setApiVersion(version) {
38
+ if (!version) {
39
+ throw new Error('ShopifyClient: apiVersion is required');
40
+ }
41
+ if (version === this._apiVersion)
42
+ return this;
43
+ this._apiVersion = version;
44
+ this.raw = this.buildRawClient();
45
+ return this;
46
+ }
30
47
  /** Execute a Command through the gateway. */
31
48
  send(command) {
32
49
  return this.dispatch(command);
33
50
  }
51
+ buildRawClient() {
52
+ return (0, admin_api_client_1.createAdminApiClient)({
53
+ storeDomain: 'placeholder.myshopify.com',
54
+ accessToken: 'placeholder',
55
+ apiVersion: this._apiVersion,
56
+ customFetchApi: (_url, init) => {
57
+ const reqInit = (init ?? {});
58
+ const headers = new Headers(reqInit.headers);
59
+ if (this.appName)
60
+ headers.set('x-app-name', this.appName);
61
+ return fetch(`${this.gatewayBase}/stores/${this.storeId}/${this._apiVersion}/graphql.json`, { ...reqInit, headers });
62
+ },
63
+ });
64
+ }
34
65
  }
35
66
  exports.ShopifyClient = ShopifyClient;
36
67
  //# sourceMappingURL=ShopifyClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShopifyClient.js","sourceRoot":"","sources":["../../src/client/ShopifyClient.ts"],"names":[],"mappings":";;;AAAA,gEAAmF;AAGnF,MAAM,mBAAmB,GAAG,SAAS,CAAA;AACrC,MAAM,oBAAoB,GAAG,uBAAuB,CAAA;AAmCpD,MAAa,aAAa;IACR,OAAO,CAAQ;IACf,UAAU,CAAQ;IAClB,WAAW,CAAQ;IAClB,GAAG,CAAgB;IACnB,QAAQ,CAA8C;IAEvE,YAAY,OAAgB,EAAE,UAAgC,EAAE;QAC9D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAA;QAC3D,IAAI,CAAC,WAAW;YACd,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,oBAAoB,CAAA;QAEhF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAA,uCAAoB,EAAC;YAC9B,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,aAAa;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC7B,KAAK,CACH,GAAG,IAAI,CAAC,WAAW,WAAW,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,eAAe,EAC5E,IAAmB,CACpB;SACJ,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,CAAO,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxE,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,CAEpD,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAO,OAAsB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;CACF;AAtCD,sCAsCC","sourcesContent":["import {createAdminApiClient, type AdminApiClient} from '@shopify/admin-api-client'\nimport type {Command} from './Command'\n\nconst DEFAULT_API_VERSION = '2026-04'\nconst DEFAULT_GATEWAY_BASE = 'http://localhost:6100'\n\n/**\n * `storeId` accepts a string or any value with `toString()` (e.g. Mongo `ObjectId`) —\n * coerced internally. Services usually pass `store._id` directly.\n */\nexport type StoreId = string | {toString(): string}\n\nexport interface ShopifyClientOptions {\n /** Shopify Admin API version. Defaults to `2026-04`. Pass a different value (e.g. `unstable`) for new features. */\n apiVersion?: string\n /**\n * Base URL of shopify-gateway. Resolution order:\n * 1. `gatewayBase` option\n * 2. `process.env.SHOPIFY_GATEWAY_URL`\n * 3. `http://localhost:6100` (default)\n */\n gatewayBase?: string\n /** Middleware wrapping each `send()`. Composed in order (outermost first). */\n middleware?: Middleware[]\n}\n\n/**\n * Middleware wrapping `send()`. Same pattern as `koa` / `express`:\n * const mw: Middleware = (next) => async (command) => {\n * // before\n * const result = await next(command)\n * // after\n * return result\n * }\n */\nexport type Middleware = (\n next: <I, O>(command: Command<I, O>) => Promise<O>,\n) => <I, O>(command: Command<I, O>) => Promise<O>\n\nexport class ShopifyClient {\n public readonly storeId: string\n public readonly apiVersion: string\n public readonly gatewayBase: string\n private readonly raw: AdminApiClient\n private readonly dispatch: <I, O>(command: Command<I, O>) => Promise<O>\n\n constructor(storeId: StoreId, options: ShopifyClientOptions = {}) {\n this.storeId = storeId ? String(storeId) : ''\n this.apiVersion = options.apiVersion ?? DEFAULT_API_VERSION\n this.gatewayBase =\n options.gatewayBase ?? process.env.SHOPIFY_GATEWAY_URL ?? DEFAULT_GATEWAY_BASE\n\n if (!this.storeId) {\n throw new Error('ShopifyClient: storeId is required')\n }\n\n this.raw = createAdminApiClient({\n storeDomain: 'placeholder.myshopify.com',\n accessToken: 'placeholder',\n apiVersion: this.apiVersion,\n customFetchApi: (_url, init) =>\n fetch(\n `${this.gatewayBase}/stores/${this.storeId}/${this.apiVersion}/graphql.json`,\n init as RequestInit,\n ),\n })\n\n const base = <I, O>(command: Command<I, O>) => command.execute(this.raw)\n this.dispatch = (options.middleware ?? []).reduceRight<\n <I, O>(cmd: Command<I, O>) => Promise<O>\n >((next, mw) => mw(next), base)\n }\n\n /** Execute a Command through the gateway. */\n send<I, O>(command: Command<I, O>): Promise<O> {\n return this.dispatch(command)\n }\n}\n"]}
1
+ {"version":3,"file":"ShopifyClient.js","sourceRoot":"","sources":["../../src/client/ShopifyClient.ts"],"names":[],"mappings":";;;AAAA,gEAAmF;AAGnF,MAAM,mBAAmB,GAAG,SAAS,CAAA;AACrC,MAAM,oBAAoB,GAAG,uBAAuB,CAAA;AAqCpD,MAAa,aAAa;IACR,OAAO,CAAQ;IACf,WAAW,CAAQ;IACnB,OAAO,CAAS;IACxB,WAAW,CAAQ;IACnB,GAAG,CAAgB;IACV,QAAQ,CAA8C;IAEvE,YAAY,OAAgB,EAAE,UAAgC,EAAE;QAC9D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAA;QAC5D,IAAI,CAAC,WAAW;YACd,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,oBAAoB,CAAA;QAChF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAEhC,MAAM,IAAI,GAAG,CAAO,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxE,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,CAEpD,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAE7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAEhC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAO,OAAsB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAEO,cAAc;QACpB,OAAO,IAAA,uCAAoB,EAAC;YAC1B,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,aAAa;YAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBAC7B,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAgB,CAAA;gBAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC5C,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBAEzD,OAAO,KAAK,CACV,GAAG,IAAI,CAAC,WAAW,WAAW,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,eAAe,EAC7E,EAAC,GAAG,OAAO,EAAE,OAAO,EAAC,CACtB,CAAA;YACH,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;CACF;AAxED,sCAwEC","sourcesContent":["import {createAdminApiClient, type AdminApiClient} from '@shopify/admin-api-client'\nimport type {Command} from './Command'\n\nconst DEFAULT_API_VERSION = '2026-04'\nconst DEFAULT_GATEWAY_BASE = 'http://localhost:6100'\n\n/**\n * `storeId` accepts a string or any value with `toString()` (e.g. Mongo `ObjectId`) —\n * coerced internally. Services usually pass `store._id` directly.\n */\nexport type StoreId = string | {toString(): string}\n\nexport interface ShopifyClientOptions {\n /** Shopify Admin API version. Defaults to `2026-04`. Pass a different value (e.g. `unstable`) for new features. */\n apiVersion?: string\n /**\n * Base URL of shopify-gateway. Resolution order:\n * 1. `gatewayBase` option\n * 2. `process.env.SHOPIFY_GATEWAY_URL`\n * 3. `http://localhost:6100` (default)\n */\n gatewayBase?: string\n /** Middleware wrapping each `send()`. Composed in order (outermost first). */\n middleware?: Middleware[]\n /** Caller identity, sent as `x-app-name` header to shopify-gateway for logging/tracing. */\n appName?: string\n}\n\n/**\n * Middleware wrapping `send()`. Same pattern as `koa` / `express`:\n * const mw: Middleware = (next) => async (command) => {\n * // before\n * const result = await next(command)\n * // after\n * return result\n * }\n */\nexport type Middleware = (\n next: <I, O>(command: Command<I, O>) => Promise<O>,\n) => <I, O>(command: Command<I, O>) => Promise<O>\n\nexport class ShopifyClient {\n public readonly storeId: string\n public readonly gatewayBase: string\n public readonly appName?: string\n private _apiVersion: string\n private raw: AdminApiClient\n private readonly dispatch: <I, O>(command: Command<I, O>) => Promise<O>\n\n constructor(storeId: StoreId, options: ShopifyClientOptions = {}) {\n this.storeId = storeId ? String(storeId) : ''\n this._apiVersion = options.apiVersion ?? DEFAULT_API_VERSION\n this.gatewayBase =\n options.gatewayBase ?? process.env.SHOPIFY_GATEWAY_URL ?? DEFAULT_GATEWAY_BASE\n this.appName = options.appName\n\n if (!this.storeId) {\n throw new Error('ShopifyClient: storeId is required')\n }\n\n this.raw = this.buildRawClient()\n\n const base = <I, O>(command: Command<I, O>) => command.execute(this.raw)\n this.dispatch = (options.middleware ?? []).reduceRight<\n <I, O>(cmd: Command<I, O>) => Promise<O>\n >((next, mw) => mw(next), base)\n }\n\n get apiVersion(): string {\n return this._apiVersion\n }\n\n /**\n * Override the Shopify Admin API version for subsequent `send()` calls.\n * Useful when a single client needs to target `unstable` for one feature\n * and the default stable version for everything else.\n *\n * Returns `this` to allow chaining, e.g. `client.setApiVersion('unstable').send(cmd)`.\n */\n setApiVersion(version: string): this {\n if (!version) {\n throw new Error('ShopifyClient: apiVersion is required')\n }\n if (version === this._apiVersion) return this\n\n this._apiVersion = version\n this.raw = this.buildRawClient()\n\n return this\n }\n\n /** Execute a Command through the gateway. */\n send<I, O>(command: Command<I, O>): Promise<O> {\n return this.dispatch(command)\n }\n\n private buildRawClient(): AdminApiClient {\n return createAdminApiClient({\n storeDomain: 'placeholder.myshopify.com',\n accessToken: 'placeholder',\n apiVersion: this._apiVersion,\n customFetchApi: (_url, init) => {\n const reqInit = (init ?? {}) as RequestInit\n const headers = new Headers(reqInit.headers)\n if (this.appName) headers.set('x-app-name', this.appName)\n\n return fetch(\n `${this.gatewayBase}/stores/${this.storeId}/${this._apiVersion}/graphql.json`,\n {...reqInit, headers},\n )\n },\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CreateCustomerCommand.js","sourceRoot":"","sources":["../../../src/commands/customers/CreateCustomerCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAyF;AAEzF,MAAM,QAAQ,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;CAmB9B,CAAA;AA2CD,MAAa,qBAAsB,SAAQ,iBAAkD;IAC3F,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAC,CAAA;QACrC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAmB,QAAQ,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QACpF,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACrE,MAAM,EAAC,QAAQ,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,cAAc,CAAA;QAClD,IAAA,iCAAkB,EAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;QACvD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACzE,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAXD,sDAWC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors, assertNoUserErrors, type UserError} from '../../utils/handleErrors'\n\nconst MUTATION = /* GraphQL */ `\n mutation CreateCustomer($input: CustomerInput!) {\n customerCreate(input: $input) {\n customer {\n id\n email\n phone\n firstName\n lastName\n tags\n createdAt\n updatedAt\n }\n userErrors {\n field\n message\n }\n }\n }\n`\n\nexport interface CustomerEmailMarketingConsentInput {\n marketingState:\n | 'NOT_SUBSCRIBED'\n | 'PENDING'\n | 'SUBSCRIBED'\n | 'UNSUBSCRIBED'\n | 'REDACTED'\n | 'INVALID'\n marketingOptInLevel?: 'SINGLE_OPT_IN' | 'CONFIRMED_OPT_IN' | 'UNKNOWN'\n consentUpdatedAt?: string\n}\n\nexport interface CreateCustomerInput {\n email?: string\n phone?: string\n firstName?: string\n lastName?: string\n tags?: string[]\n emailMarketingConsent?: CustomerEmailMarketingConsentInput\n note?: string\n taxExempt?: boolean\n}\n\nexport interface CreateCustomerOutput {\n id: string\n email: string | null\n phone: string | null\n firstName: string | null\n lastName: string | null\n tags: string[]\n createdAt: string\n updatedAt: string\n}\n\ninterface MutationResponse {\n customerCreate: {\n customer: CreateCustomerOutput | null\n userErrors: UserError[]\n }\n}\n\nexport class CreateCustomerCommand extends Command<CreateCustomerInput, CreateCustomerOutput> {\n async execute(client: AdminApiClient): Promise<CreateCustomerOutput> {\n const variables = {input: this.input}\n const {data, errors} = await client.request<MutationResponse>(MUTATION, {variables})\n handleErrors(errors)\n if (!data) throw new Error('CreateCustomerCommand: no data returned')\n const {customer, userErrors} = data.customerCreate\n assertNoUserErrors(userErrors, 'CreateCustomerCommand')\n if (!customer) throw new Error('CreateCustomerCommand: customer is null')\n return customer\n }\n}\n"]}
1
+ {"version":3,"file":"CreateCustomerCommand.js","sourceRoot":"","sources":["../../../src/commands/customers/CreateCustomerCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAyF;AAEzF,MAAM,QAAQ,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;CAmB9B,CAAA;AA2CD,MAAa,qBAAsB,SAAQ,iBAAkD;IAC3F,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAC,CAAA;QACrC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAmB,QAAQ,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QACpF,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAErE,MAAM,EAAC,QAAQ,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,cAAc,CAAA;QAClD,IAAA,iCAAkB,EAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;QACvD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAEzE,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAbD,sDAaC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors, assertNoUserErrors, type UserError} from '../../utils/handleErrors'\n\nconst MUTATION = /* GraphQL */ `\n mutation CreateCustomer($input: CustomerInput!) {\n customerCreate(input: $input) {\n customer {\n id\n email\n phone\n firstName\n lastName\n tags\n createdAt\n updatedAt\n }\n userErrors {\n field\n message\n }\n }\n }\n`\n\nexport interface CustomerEmailMarketingConsentInput {\n marketingState:\n | 'NOT_SUBSCRIBED'\n | 'PENDING'\n | 'SUBSCRIBED'\n | 'UNSUBSCRIBED'\n | 'REDACTED'\n | 'INVALID'\n marketingOptInLevel?: 'SINGLE_OPT_IN' | 'CONFIRMED_OPT_IN' | 'UNKNOWN'\n consentUpdatedAt?: string\n}\n\nexport interface CreateCustomerInput {\n email?: string\n phone?: string\n firstName?: string\n lastName?: string\n tags?: string[]\n emailMarketingConsent?: CustomerEmailMarketingConsentInput\n note?: string\n taxExempt?: boolean\n}\n\nexport interface CreateCustomerOutput {\n id: string\n email: string | null\n phone: string | null\n firstName: string | null\n lastName: string | null\n tags: string[]\n createdAt: string\n updatedAt: string\n}\n\ninterface MutationResponse {\n customerCreate: {\n customer: CreateCustomerOutput | null\n userErrors: UserError[]\n }\n}\n\nexport class CreateCustomerCommand extends Command<CreateCustomerInput, CreateCustomerOutput> {\n async execute(client: AdminApiClient): Promise<CreateCustomerOutput> {\n const variables = {input: this.input}\n const {data, errors} = await client.request<MutationResponse>(MUTATION, {variables})\n handleErrors(errors)\n if (!data) throw new Error('CreateCustomerCommand: no data returned')\n\n const {customer, userErrors} = data.customerCreate\n assertNoUserErrors(userErrors, 'CreateCustomerCommand')\n if (!customer) throw new Error('CreateCustomerCommand: customer is null')\n\n return customer\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GetMenuCommand.js","sourceRoot":"","sources":["../../../src/commands/menus/GetMenuCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAEhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B3B,CAAA;AA0BD,MAAa,cAAe,SAAQ,iBAA2C;IAC7E,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAC,CAAA;QAC1D,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF;AARD,wCAQC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\n\nconst QUERY = /* GraphQL */ `\n query GetMenu($id: ID!) {\n menu(id: $id) {\n id\n handle\n title\n isDefault\n items {\n id\n title\n url\n type\n items {\n id\n title\n url\n type\n items {\n id\n title\n url\n type\n }\n }\n }\n }\n }\n`\n\nexport interface GetMenuInput {\n id: string\n}\n\nexport interface MenuItem {\n id: string\n title: string\n url: string | null\n type: string\n items?: MenuItem[]\n}\n\nexport interface GetMenuOutput {\n id: string\n handle: string\n title: string\n isDefault: boolean\n items: MenuItem[]\n}\n\ninterface QueryResponse {\n menu: GetMenuOutput | null\n}\n\nexport class GetMenuCommand extends Command<GetMenuInput, GetMenuOutput | null> {\n async execute(client: AdminApiClient): Promise<GetMenuOutput | null> {\n const variables = {id: getGlobalID(this.input.id, 'Menu')}\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetMenuCommand: no data returned')\n return data.menu\n }\n}\n"]}
1
+ {"version":3,"file":"GetMenuCommand.js","sourceRoot":"","sources":["../../../src/commands/menus/GetMenuCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAEhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B3B,CAAA;AA0BD,MAAa,cAAe,SAAQ,iBAA2C;IAC7E,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAC,CAAA;QAC1D,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAE9D,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF;AATD,wCASC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\n\nconst QUERY = /* GraphQL */ `\n query GetMenu($id: ID!) {\n menu(id: $id) {\n id\n handle\n title\n isDefault\n items {\n id\n title\n url\n type\n items {\n id\n title\n url\n type\n items {\n id\n title\n url\n type\n }\n }\n }\n }\n }\n`\n\nexport interface GetMenuInput {\n id: string\n}\n\nexport interface MenuItem {\n id: string\n title: string\n url: string | null\n type: string\n items?: MenuItem[]\n}\n\nexport interface GetMenuOutput {\n id: string\n handle: string\n title: string\n isDefault: boolean\n items: MenuItem[]\n}\n\ninterface QueryResponse {\n menu: GetMenuOutput | null\n}\n\nexport class GetMenuCommand extends Command<GetMenuInput, GetMenuOutput | null> {\n async execute(client: AdminApiClient): Promise<GetMenuOutput | null> {\n const variables = {id: getGlobalID(this.input.id, 'Menu')}\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetMenuCommand: no data returned')\n\n return data.menu\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchMenusCommand.js","sourceRoot":"","sources":["../../../src/commands/menus/SearchMenusCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;CAe3B,CAAA;AA6BD,MAAa,kBAAmB,SAAQ,iBAA4C;IAClF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;SACxB,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAClE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,CAAA;IACjE,CAAC;CACF;AAXD,gDAWC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\n\nconst QUERY = /* GraphQL */ `\n query SearchMenus($first: Int!, $after: String) {\n menus(first: $first, after: $after) {\n nodes {\n id\n handle\n title\n isDefault\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n\nexport interface SearchMenusInput {\n first?: number\n after?: string\n}\n\nexport interface MenuNode {\n id: string\n handle: string\n title: string\n isDefault: boolean\n}\n\nexport interface SearchMenusOutput {\n items: MenuNode[]\n pageInfo: {\n hasNextPage: boolean\n endCursor: string | null\n }\n}\n\ninterface QueryResponse {\n menus: {\n nodes: MenuNode[]\n pageInfo: SearchMenusOutput['pageInfo']\n }\n}\n\nexport class SearchMenusCommand extends Command<SearchMenusInput, SearchMenusOutput> {\n async execute(client: AdminApiClient): Promise<SearchMenusOutput> {\n const variables = {\n first: this.input.first ?? 50,\n after: this.input.after,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('SearchMenusCommand: no data returned')\n return {items: data.menus.nodes, pageInfo: data.menus.pageInfo}\n }\n}\n"]}
1
+ {"version":3,"file":"SearchMenusCommand.js","sourceRoot":"","sources":["../../../src/commands/menus/SearchMenusCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;CAe3B,CAAA;AA6BD,MAAa,kBAAmB,SAAQ,iBAA4C;IAClF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;SACxB,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAElE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,CAAA;IACjE,CAAC;CACF;AAZD,gDAYC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\n\nconst QUERY = /* GraphQL */ `\n query SearchMenus($first: Int!, $after: String) {\n menus(first: $first, after: $after) {\n nodes {\n id\n handle\n title\n isDefault\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n\nexport interface SearchMenusInput {\n first?: number\n after?: string\n}\n\nexport interface MenuNode {\n id: string\n handle: string\n title: string\n isDefault: boolean\n}\n\nexport interface SearchMenusOutput {\n items: MenuNode[]\n pageInfo: {\n hasNextPage: boolean\n endCursor: string | null\n }\n}\n\ninterface QueryResponse {\n menus: {\n nodes: MenuNode[]\n pageInfo: SearchMenusOutput['pageInfo']\n }\n}\n\nexport class SearchMenusCommand extends Command<SearchMenusInput, SearchMenusOutput> {\n async execute(client: AdminApiClient): Promise<SearchMenusOutput> {\n const variables = {\n first: this.input.first ?? 50,\n after: this.input.after,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('SearchMenusCommand: no data returned')\n\n return {items: data.menus.nodes, pageInfo: data.menus.pageInfo}\n }\n}\n"]}
@@ -0,0 +1,73 @@
1
+ import type { AdminApiClient } from '@shopify/admin-api-client';
2
+ import { Command } from '../../client/Command';
3
+ import type { MoneyV2 } from '../../utils/money';
4
+ export interface GetOrderInput {
5
+ id: string;
6
+ /** Max line items to pull in this call. Defaults to 250 (Shopify's per-page max). */
7
+ lineItemsFirst?: number;
8
+ }
9
+ export interface OrderShippingAddress {
10
+ name: string | null;
11
+ address1: string | null;
12
+ address2: string | null;
13
+ city: string | null;
14
+ zip: string | null;
15
+ phone: string | null;
16
+ provinceCode: string | null;
17
+ countryCodeV2: string | null;
18
+ }
19
+ export interface OrderLineItemNode {
20
+ id: string;
21
+ quantity: number;
22
+ vendor: string | null;
23
+ /** @deprecated in Admin API 2026-04 but still returned. Values match REST: "fulfilled" | "unfulfilled" | "partial". */
24
+ fulfillmentStatus: string;
25
+ title: string;
26
+ name: string;
27
+ originalUnitPriceSet: {
28
+ shopMoney: MoneyV2;
29
+ };
30
+ variant: {
31
+ id: string;
32
+ title: string | null;
33
+ } | null;
34
+ product: {
35
+ id: string;
36
+ } | null;
37
+ }
38
+ export interface GetOrderOutput {
39
+ id: string;
40
+ number: number;
41
+ name: string;
42
+ email: string | null;
43
+ phone: string | null;
44
+ createdAt: string;
45
+ updatedAt: string;
46
+ cancelledAt: string | null;
47
+ cancelReason: string | null;
48
+ clientIp: string | null;
49
+ statusPageUrl: string;
50
+ /** Enum value, UPPERCASE_SNAKE (e.g. "FULFILLED", "UNFULFILLED", "PARTIALLY_FULFILLED"). */
51
+ displayFulfillmentStatus: string;
52
+ /** Enum value, UPPERCASE_SNAKE (e.g. "PAID", "PENDING", "REFUNDED"). Null if order has no payment yet. */
53
+ displayFinancialStatus: string | null;
54
+ shippingAddress: OrderShippingAddress | null;
55
+ currentTotalPriceSet: {
56
+ shopMoney: MoneyV2;
57
+ };
58
+ /**
59
+ * Paginated. If `pageInfo.hasNextPage`, only the first N (default 250) items
60
+ * are returned here — caller must fetch remaining pages with a follow-up
61
+ * connection query using `pageInfo.endCursor`. This Command does NOT loop.
62
+ */
63
+ lineItems: {
64
+ nodes: OrderLineItemNode[];
65
+ pageInfo: {
66
+ hasNextPage: boolean;
67
+ endCursor: string | null;
68
+ };
69
+ };
70
+ }
71
+ export declare class GetOrderCommand extends Command<GetOrderInput, GetOrderOutput | null> {
72
+ execute(client: AdminApiClient): Promise<GetOrderOutput | null>;
73
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOrderCommand = void 0;
4
+ const Command_1 = require("../../client/Command");
5
+ const handleErrors_1 = require("../../utils/handleErrors");
6
+ const globalId_1 = require("../../utils/globalId");
7
+ const QUERY = /* GraphQL */ `
8
+ query GetOrder($id: ID!, $lineItemsFirst: Int!) {
9
+ order(id: $id) {
10
+ id
11
+ number
12
+ name
13
+ email
14
+ phone
15
+ createdAt
16
+ updatedAt
17
+ cancelledAt
18
+ cancelReason
19
+ clientIp
20
+ statusPageUrl
21
+ displayFulfillmentStatus
22
+ displayFinancialStatus
23
+ shippingAddress {
24
+ name
25
+ address1
26
+ address2
27
+ city
28
+ zip
29
+ phone
30
+ provinceCode
31
+ countryCodeV2
32
+ }
33
+ currentTotalPriceSet {
34
+ shopMoney {
35
+ amount
36
+ currencyCode
37
+ }
38
+ }
39
+ lineItems(first: $lineItemsFirst) {
40
+ nodes {
41
+ id
42
+ quantity
43
+ vendor
44
+ fulfillmentStatus
45
+ title
46
+ name
47
+ originalUnitPriceSet {
48
+ shopMoney {
49
+ amount
50
+ currencyCode
51
+ }
52
+ }
53
+ variant {
54
+ id
55
+ title
56
+ }
57
+ product {
58
+ id
59
+ }
60
+ }
61
+ pageInfo {
62
+ hasNextPage
63
+ endCursor
64
+ }
65
+ }
66
+ }
67
+ }
68
+ `;
69
+ class GetOrderCommand extends Command_1.Command {
70
+ async execute(client) {
71
+ const variables = {
72
+ id: (0, globalId_1.getGlobalID)(this.input.id, 'Order'),
73
+ lineItemsFirst: this.input.lineItemsFirst ?? 250,
74
+ };
75
+ const { data, errors } = await client.request(QUERY, { variables });
76
+ (0, handleErrors_1.handleErrors)(errors);
77
+ if (!data)
78
+ throw new Error('GetOrderCommand: no data returned');
79
+ return data.order;
80
+ }
81
+ }
82
+ exports.GetOrderCommand = GetOrderCommand;
83
+ //# sourceMappingURL=GetOrderCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOrderCommand.js","sourceRoot":"","sources":["../../../src/commands/orders/GetOrderCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAGhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6D3B,CAAA;AAiED,MAAa,eAAgB,SAAQ,iBAA6C;IAChF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC;YACvC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,GAAG;SACjD,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAE/D,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF;AAZD,0CAYC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\nimport type {MoneyV2} from '../../utils/money'\n\nconst QUERY = /* GraphQL */ `\n query GetOrder($id: ID!, $lineItemsFirst: Int!) {\n order(id: $id) {\n id\n number\n name\n email\n phone\n createdAt\n updatedAt\n cancelledAt\n cancelReason\n clientIp\n statusPageUrl\n displayFulfillmentStatus\n displayFinancialStatus\n shippingAddress {\n name\n address1\n address2\n city\n zip\n phone\n provinceCode\n countryCodeV2\n }\n currentTotalPriceSet {\n shopMoney {\n amount\n currencyCode\n }\n }\n lineItems(first: $lineItemsFirst) {\n nodes {\n id\n quantity\n vendor\n fulfillmentStatus\n title\n name\n originalUnitPriceSet {\n shopMoney {\n amount\n currencyCode\n }\n }\n variant {\n id\n title\n }\n product {\n id\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n }\n`\n\nexport interface GetOrderInput {\n id: string\n /** Max line items to pull in this call. Defaults to 250 (Shopify's per-page max). */\n lineItemsFirst?: number\n}\n\nexport interface OrderShippingAddress {\n name: string | null\n address1: string | null\n address2: string | null\n city: string | null\n zip: string | null\n phone: string | null\n provinceCode: string | null\n countryCodeV2: string | null\n}\n\nexport interface OrderLineItemNode {\n id: string\n quantity: number\n vendor: string | null\n /** @deprecated in Admin API 2026-04 but still returned. Values match REST: \"fulfilled\" | \"unfulfilled\" | \"partial\". */\n fulfillmentStatus: string\n title: string\n name: string\n originalUnitPriceSet: {shopMoney: MoneyV2}\n variant: {id: string; title: string | null} | null\n product: {id: string} | null\n}\n\nexport interface GetOrderOutput {\n id: string\n number: number\n name: string\n email: string | null\n phone: string | null\n createdAt: string\n updatedAt: string\n cancelledAt: string | null\n cancelReason: string | null\n clientIp: string | null\n statusPageUrl: string\n /** Enum value, UPPERCASE_SNAKE (e.g. \"FULFILLED\", \"UNFULFILLED\", \"PARTIALLY_FULFILLED\"). */\n displayFulfillmentStatus: string\n /** Enum value, UPPERCASE_SNAKE (e.g. \"PAID\", \"PENDING\", \"REFUNDED\"). Null if order has no payment yet. */\n displayFinancialStatus: string | null\n shippingAddress: OrderShippingAddress | null\n currentTotalPriceSet: {shopMoney: MoneyV2}\n /**\n * Paginated. If `pageInfo.hasNextPage`, only the first N (default 250) items\n * are returned here — caller must fetch remaining pages with a follow-up\n * connection query using `pageInfo.endCursor`. This Command does NOT loop.\n */\n lineItems: {\n nodes: OrderLineItemNode[]\n pageInfo: {hasNextPage: boolean; endCursor: string | null}\n }\n}\n\ninterface QueryResponse {\n order: GetOrderOutput | null\n}\n\nexport class GetOrderCommand extends Command<GetOrderInput, GetOrderOutput | null> {\n async execute(client: AdminApiClient): Promise<GetOrderOutput | null> {\n const variables = {\n id: getGlobalID(this.input.id, 'Order'),\n lineItemsFirst: this.input.lineItemsFirst ?? 250,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetOrderCommand: no data returned')\n\n return data.order\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import type { AdminApiClient } from '@shopify/admin-api-client';
2
+ import { Command } from '../../client/Command';
3
+ export interface GetOrderEventsInput {
4
+ id: string;
5
+ first?: number;
6
+ reverse?: boolean;
7
+ }
8
+ export interface OrderEventNode {
9
+ id: string;
10
+ message: string;
11
+ action?: string;
12
+ arguments?: unknown;
13
+ subjectType?: string;
14
+ }
15
+ export interface GetOrderEventsOutput {
16
+ currencyCode: string | null;
17
+ items: OrderEventNode[];
18
+ }
19
+ export declare class GetOrderEventsCommand extends Command<GetOrderEventsInput, GetOrderEventsOutput> {
20
+ execute(client: AdminApiClient): Promise<GetOrderEventsOutput>;
21
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOrderEventsCommand = void 0;
4
+ const Command_1 = require("../../client/Command");
5
+ const handleErrors_1 = require("../../utils/handleErrors");
6
+ const globalId_1 = require("../../utils/globalId");
7
+ const QUERY = /* GraphQL */ `
8
+ query GetOrderEvents($id: ID!, $first: Int!, $reverse: Boolean!) {
9
+ order(id: $id) {
10
+ id
11
+ currencyCode
12
+ events(first: $first, sortKey: CREATED_AT, reverse: $reverse) {
13
+ nodes {
14
+ id
15
+ message
16
+ ... on BasicEvent {
17
+ action
18
+ arguments
19
+ subjectType
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ `;
26
+ class GetOrderEventsCommand extends Command_1.Command {
27
+ async execute(client) {
28
+ const variables = {
29
+ id: (0, globalId_1.getGlobalID)(this.input.id, 'Order'),
30
+ first: this.input.first ?? 20,
31
+ reverse: this.input.reverse ?? false,
32
+ };
33
+ const { data, errors } = await client.request(QUERY, { variables });
34
+ (0, handleErrors_1.handleErrors)(errors);
35
+ if (!data)
36
+ throw new Error('GetOrderEventsCommand: no data returned');
37
+ const order = data.order;
38
+ if (!order)
39
+ return { currencyCode: null, items: [] };
40
+ return { currencyCode: order.currencyCode, items: order.events.nodes };
41
+ }
42
+ }
43
+ exports.GetOrderEventsCommand = GetOrderEventsCommand;
44
+ //# sourceMappingURL=GetOrderEventsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOrderEventsCommand.js","sourceRoot":"","sources":["../../../src/commands/orders/GetOrderEventsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAEhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;CAkB3B,CAAA;AA+BD,MAAa,qBAAsB,SAAQ,iBAAkD;IAC3F,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK;SACrC,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAErE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC,CAAA;QAElD,OAAO,EAAC,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAC,CAAA;IACtE,CAAC;CACF;AAhBD,sDAgBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\n\nconst QUERY = /* GraphQL */ `\n query GetOrderEvents($id: ID!, $first: Int!, $reverse: Boolean!) {\n order(id: $id) {\n id\n currencyCode\n events(first: $first, sortKey: CREATED_AT, reverse: $reverse) {\n nodes {\n id\n message\n ... on BasicEvent {\n action\n arguments\n subjectType\n }\n }\n }\n }\n }\n`\n\nexport interface GetOrderEventsInput {\n id: string\n first?: number\n reverse?: boolean\n}\n\nexport interface OrderEventNode {\n id: string\n message: string\n action?: string\n arguments?: unknown\n subjectType?: string\n}\n\nexport interface GetOrderEventsOutput {\n currencyCode: string | null\n items: OrderEventNode[]\n}\n\ninterface QueryResponse {\n order: {\n id: string\n currencyCode: string\n events: {\n nodes: OrderEventNode[]\n }\n } | null\n}\n\nexport class GetOrderEventsCommand extends Command<GetOrderEventsInput, GetOrderEventsOutput> {\n async execute(client: AdminApiClient): Promise<GetOrderEventsOutput> {\n const variables = {\n id: getGlobalID(this.input.id, 'Order'),\n first: this.input.first ?? 20,\n reverse: this.input.reverse ?? false,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetOrderEventsCommand: no data returned')\n\n const order = data.order\n if (!order) return {currencyCode: null, items: []}\n\n return {currencyCode: order.currencyCode, items: order.events.nodes}\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import type { AdminApiClient } from '@shopify/admin-api-client';
2
+ import { Command } from '../../client/Command';
3
+ export interface GetOrderFulfillmentsInput {
4
+ id: string;
5
+ /** Max fulfillments to return. Defaults to 50. Most orders have <5 fulfillments. */
6
+ first?: number;
7
+ /** Max tracking entries per fulfillment. Defaults to 10. */
8
+ trackingFirst?: number;
9
+ }
10
+ export interface FulfillmentTrackingInfo {
11
+ company: string | null;
12
+ number: string | null;
13
+ url: string | null;
14
+ }
15
+ export interface OrderFulfillmentNode {
16
+ id: string;
17
+ name: string;
18
+ /** Enum: PENDING | OPEN | SUCCESS | CANCELLED | ERROR | FAILURE */
19
+ status: string;
20
+ /** Enum: ATTEMPTED_DELIVERY | CANCELED | CONFIRMED | DELIVERED | FAILURE | FULFILLED | IN_TRANSIT | LABEL_PRINTED | LABEL_PURCHASED | LABEL_VOIDED | MARKED_AS_FULFILLED | NOT_DELIVERED | OUT_FOR_DELIVERY | PICKED_UP | READY_FOR_PICKUP | SUBMITTED */
21
+ displayStatus: string | null;
22
+ createdAt: string;
23
+ updatedAt: string;
24
+ deliveredAt: string | null;
25
+ trackingInfo: FulfillmentTrackingInfo[];
26
+ }
27
+ export interface GetOrderFulfillmentsOutput {
28
+ items: OrderFulfillmentNode[];
29
+ }
30
+ export declare class GetOrderFulfillmentsCommand extends Command<GetOrderFulfillmentsInput, GetOrderFulfillmentsOutput> {
31
+ execute(client: AdminApiClient): Promise<GetOrderFulfillmentsOutput>;
32
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOrderFulfillmentsCommand = void 0;
4
+ const Command_1 = require("../../client/Command");
5
+ const handleErrors_1 = require("../../utils/handleErrors");
6
+ const globalId_1 = require("../../utils/globalId");
7
+ const QUERY = /* GraphQL */ `
8
+ query GetOrderFulfillments($id: ID!, $first: Int!, $trackingFirst: Int!) {
9
+ order(id: $id) {
10
+ id
11
+ fulfillments(first: $first) {
12
+ id
13
+ name
14
+ status
15
+ displayStatus
16
+ createdAt
17
+ updatedAt
18
+ deliveredAt
19
+ trackingInfo(first: $trackingFirst) {
20
+ company
21
+ number
22
+ url
23
+ }
24
+ }
25
+ }
26
+ }
27
+ `;
28
+ class GetOrderFulfillmentsCommand extends Command_1.Command {
29
+ async execute(client) {
30
+ const variables = {
31
+ id: (0, globalId_1.getGlobalID)(this.input.id, 'Order'),
32
+ first: this.input.first ?? 50,
33
+ trackingFirst: this.input.trackingFirst ?? 10,
34
+ };
35
+ const { data, errors } = await client.request(QUERY, { variables });
36
+ (0, handleErrors_1.handleErrors)(errors);
37
+ if (!data)
38
+ throw new Error('GetOrderFulfillmentsCommand: no data returned');
39
+ const order = data.order;
40
+ if (!order)
41
+ return { items: [] };
42
+ return { items: order.fulfillments };
43
+ }
44
+ }
45
+ exports.GetOrderFulfillmentsCommand = GetOrderFulfillmentsCommand;
46
+ //# sourceMappingURL=GetOrderFulfillmentsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOrderFulfillmentsCommand.js","sourceRoot":"","sources":["../../../src/commands/orders/GetOrderFulfillmentsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAEhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;CAoB3B,CAAA;AAwCD,MAAa,2BAA4B,SAAQ,iBAGhD;IACC,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE;SAC9C,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAC,KAAK,EAAE,EAAE,EAAC,CAAA;QAE9B,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAC,CAAA;IACpC,CAAC;CACF;AAnBD,kEAmBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\n\nconst QUERY = /* GraphQL */ `\n query GetOrderFulfillments($id: ID!, $first: Int!, $trackingFirst: Int!) {\n order(id: $id) {\n id\n fulfillments(first: $first) {\n id\n name\n status\n displayStatus\n createdAt\n updatedAt\n deliveredAt\n trackingInfo(first: $trackingFirst) {\n company\n number\n url\n }\n }\n }\n }\n`\n\nexport interface GetOrderFulfillmentsInput {\n id: string\n /** Max fulfillments to return. Defaults to 50. Most orders have <5 fulfillments. */\n first?: number\n /** Max tracking entries per fulfillment. Defaults to 10. */\n trackingFirst?: number\n}\n\nexport interface FulfillmentTrackingInfo {\n company: string | null\n number: string | null\n url: string | null\n}\n\nexport interface OrderFulfillmentNode {\n id: string\n name: string\n /** Enum: PENDING | OPEN | SUCCESS | CANCELLED | ERROR | FAILURE */\n status: string\n /** Enum: ATTEMPTED_DELIVERY | CANCELED | CONFIRMED | DELIVERED | FAILURE | FULFILLED | IN_TRANSIT | LABEL_PRINTED | LABEL_PURCHASED | LABEL_VOIDED | MARKED_AS_FULFILLED | NOT_DELIVERED | OUT_FOR_DELIVERY | PICKED_UP | READY_FOR_PICKUP | SUBMITTED */\n displayStatus: string | null\n createdAt: string\n updatedAt: string\n deliveredAt: string | null\n trackingInfo: FulfillmentTrackingInfo[]\n}\n\nexport interface GetOrderFulfillmentsOutput {\n items: OrderFulfillmentNode[]\n}\n\ninterface QueryResponse {\n order: {\n id: string\n fulfillments: OrderFulfillmentNode[]\n } | null\n}\n\nexport class GetOrderFulfillmentsCommand extends Command<\n GetOrderFulfillmentsInput,\n GetOrderFulfillmentsOutput\n> {\n async execute(client: AdminApiClient): Promise<GetOrderFulfillmentsOutput> {\n const variables = {\n id: getGlobalID(this.input.id, 'Order'),\n first: this.input.first ?? 50,\n trackingFirst: this.input.trackingFirst ?? 10,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetOrderFulfillmentsCommand: no data returned')\n\n const order = data.order\n if (!order) return {items: []}\n\n return {items: order.fulfillments}\n }\n}\n"]}
@@ -0,0 +1,43 @@
1
+ import type { AdminApiClient } from '@shopify/admin-api-client';
2
+ import { Command } from '../../client/Command';
3
+ export interface GetOrderTransactionsInput {
4
+ id: string;
5
+ /** Max transactions to return. Defaults to 50. Orders rarely exceed a few transactions. */
6
+ first?: number;
7
+ }
8
+ import type { MoneyV2 } from '../../utils/money';
9
+ export interface OrderTransactionFee {
10
+ id: string;
11
+ type: string;
12
+ amount: MoneyV2;
13
+ flatFee: MoneyV2;
14
+ flatFeeName: string | null;
15
+ rate: string;
16
+ rateName: string | null;
17
+ taxAmount: MoneyV2;
18
+ }
19
+ export interface OrderTransactionNode {
20
+ id: string;
21
+ /** Enum: SALE | CAPTURE | AUTHORIZATION | REFUND | VOID | CHANGE | EMV_AUTHORIZATION | SUGGESTED_REFUND */
22
+ kind: string;
23
+ /** Enum: PENDING | SUCCESS | FAILURE | ERROR | AWAITING_RESPONSE | UNKNOWN */
24
+ status: string;
25
+ gateway: string | null;
26
+ processedAt: string | null;
27
+ createdAt: string;
28
+ amountSet: {
29
+ shopMoney: MoneyV2;
30
+ };
31
+ paymentDetails: {
32
+ paymentMethodName: string | null;
33
+ } | null;
34
+ /** The raw receipt JSON from the payment gateway. Same content as REST `transaction.receipt`. */
35
+ receiptJson: unknown;
36
+ fees: OrderTransactionFee[];
37
+ }
38
+ export interface GetOrderTransactionsOutput {
39
+ items: OrderTransactionNode[];
40
+ }
41
+ export declare class GetOrderTransactionsCommand extends Command<GetOrderTransactionsInput, GetOrderTransactionsOutput> {
42
+ execute(client: AdminApiClient): Promise<GetOrderTransactionsOutput>;
43
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetOrderTransactionsCommand = void 0;
4
+ const Command_1 = require("../../client/Command");
5
+ const handleErrors_1 = require("../../utils/handleErrors");
6
+ const globalId_1 = require("../../utils/globalId");
7
+ const QUERY = /* GraphQL */ `
8
+ query GetOrderTransactions($id: ID!, $first: Int!) {
9
+ order(id: $id) {
10
+ id
11
+ transactions(first: $first) {
12
+ id
13
+ kind
14
+ status
15
+ gateway
16
+ processedAt
17
+ createdAt
18
+ amountSet {
19
+ shopMoney {
20
+ amount
21
+ currencyCode
22
+ }
23
+ }
24
+ paymentDetails {
25
+ ... on BasePaymentDetails {
26
+ paymentMethodName
27
+ }
28
+ }
29
+ receiptJson
30
+ fees {
31
+ id
32
+ type
33
+ amount {
34
+ amount
35
+ currencyCode
36
+ }
37
+ flatFee {
38
+ amount
39
+ currencyCode
40
+ }
41
+ flatFeeName
42
+ rate
43
+ rateName
44
+ taxAmount {
45
+ amount
46
+ currencyCode
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ `;
53
+ class GetOrderTransactionsCommand extends Command_1.Command {
54
+ async execute(client) {
55
+ const variables = {
56
+ id: (0, globalId_1.getGlobalID)(this.input.id, 'Order'),
57
+ first: this.input.first ?? 50,
58
+ };
59
+ const { data, errors } = await client.request(QUERY, { variables });
60
+ (0, handleErrors_1.handleErrors)(errors);
61
+ if (!data)
62
+ throw new Error('GetOrderTransactionsCommand: no data returned');
63
+ const order = data.order;
64
+ if (!order)
65
+ return { items: [] };
66
+ return { items: order.transactions };
67
+ }
68
+ }
69
+ exports.GetOrderTransactionsCommand = GetOrderTransactionsCommand;
70
+ //# sourceMappingURL=GetOrderTransactionsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOrderTransactionsCommand.js","sourceRoot":"","sources":["../../../src/commands/orders/GetOrderTransactionsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAEhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C3B,CAAA;AAgDD,MAAa,2BAA4B,SAAQ,iBAGhD;IACC,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;SAC9B,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAC,KAAK,EAAE,EAAE,EAAC,CAAA;QAE9B,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAC,CAAA;IACpC,CAAC;CACF;AAlBD,kEAkBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\n\nconst QUERY = /* GraphQL */ `\n query GetOrderTransactions($id: ID!, $first: Int!) {\n order(id: $id) {\n id\n transactions(first: $first) {\n id\n kind\n status\n gateway\n processedAt\n createdAt\n amountSet {\n shopMoney {\n amount\n currencyCode\n }\n }\n paymentDetails {\n ... on BasePaymentDetails {\n paymentMethodName\n }\n }\n receiptJson\n fees {\n id\n type\n amount {\n amount\n currencyCode\n }\n flatFee {\n amount\n currencyCode\n }\n flatFeeName\n rate\n rateName\n taxAmount {\n amount\n currencyCode\n }\n }\n }\n }\n }\n`\n\nexport interface GetOrderTransactionsInput {\n id: string\n /** Max transactions to return. Defaults to 50. Orders rarely exceed a few transactions. */\n first?: number\n}\n\nimport type {MoneyV2} from '../../utils/money'\n\nexport interface OrderTransactionFee {\n id: string\n type: string\n amount: MoneyV2\n flatFee: MoneyV2\n flatFeeName: string | null\n rate: string\n rateName: string | null\n taxAmount: MoneyV2\n}\n\nexport interface OrderTransactionNode {\n id: string\n /** Enum: SALE | CAPTURE | AUTHORIZATION | REFUND | VOID | CHANGE | EMV_AUTHORIZATION | SUGGESTED_REFUND */\n kind: string\n /** Enum: PENDING | SUCCESS | FAILURE | ERROR | AWAITING_RESPONSE | UNKNOWN */\n status: string\n gateway: string | null\n processedAt: string | null\n createdAt: string\n amountSet: {shopMoney: MoneyV2}\n paymentDetails: {paymentMethodName: string | null} | null\n /** The raw receipt JSON from the payment gateway. Same content as REST `transaction.receipt`. */\n receiptJson: unknown\n fees: OrderTransactionFee[]\n}\n\nexport interface GetOrderTransactionsOutput {\n items: OrderTransactionNode[]\n}\n\ninterface QueryResponse {\n order: {\n id: string\n transactions: OrderTransactionNode[]\n } | null\n}\n\nexport class GetOrderTransactionsCommand extends Command<\n GetOrderTransactionsInput,\n GetOrderTransactionsOutput\n> {\n async execute(client: AdminApiClient): Promise<GetOrderTransactionsOutput> {\n const variables = {\n id: getGlobalID(this.input.id, 'Order'),\n first: this.input.first ?? 50,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetOrderTransactionsCommand: no data returned')\n\n const order = data.order\n if (!order) return {items: []}\n\n return {items: order.transactions}\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import type { AdminApiClient } from '@shopify/admin-api-client';
2
+ import { Command } from '../../client/Command';
3
+ export type OrderSortKey = 'CREATED_AT' | 'CURRENT_TOTAL_PRICE' | 'CUSTOMER_NAME' | 'DESTINATION' | 'FINANCIAL_STATUS' | 'FULFILLMENT_STATUS' | 'ID' | 'ORDER_NUMBER' | 'PO_NUMBER' | 'PROCESSED_AT' | 'RELEVANCE' | 'TOTAL_ITEMS_QUANTITY' | 'TOTAL_PRICE' | 'UPDATED_AT';
4
+ export interface SearchOrdersInput {
5
+ first?: number;
6
+ last?: number;
7
+ query?: string;
8
+ before?: string;
9
+ after?: string;
10
+ reverse?: boolean;
11
+ sortKey?: OrderSortKey;
12
+ }
13
+ export interface OrderNode {
14
+ id: string;
15
+ name: string;
16
+ }
17
+ export interface SearchOrdersOutput {
18
+ items: OrderNode[];
19
+ pageInfo: {
20
+ hasNextPage: boolean;
21
+ endCursor: string | null;
22
+ };
23
+ }
24
+ export declare class SearchOrdersCommand extends Command<SearchOrdersInput, SearchOrdersOutput> {
25
+ execute(client: AdminApiClient): Promise<SearchOrdersOutput>;
26
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SearchOrdersCommand = void 0;
4
+ const Command_1 = require("../../client/Command");
5
+ const handleErrors_1 = require("../../utils/handleErrors");
6
+ const QUERY = /* GraphQL */ `
7
+ query SearchOrders(
8
+ $first: Int
9
+ $last: Int
10
+ $query: String
11
+ $before: String
12
+ $after: String
13
+ $reverse: Boolean
14
+ $sortKey: OrderSortKeys
15
+ ) {
16
+ orders(
17
+ first: $first
18
+ last: $last
19
+ sortKey: $sortKey
20
+ reverse: $reverse
21
+ query: $query
22
+ before: $before
23
+ after: $after
24
+ ) {
25
+ nodes {
26
+ id
27
+ name
28
+ }
29
+ pageInfo {
30
+ hasNextPage
31
+ endCursor
32
+ }
33
+ }
34
+ }
35
+ `;
36
+ class SearchOrdersCommand extends Command_1.Command {
37
+ async execute(client) {
38
+ const variables = {
39
+ first: this.input.first ?? 100,
40
+ last: this.input.last,
41
+ query: this.input.query,
42
+ before: this.input.before,
43
+ after: this.input.after,
44
+ reverse: this.input.reverse ?? true,
45
+ sortKey: this.input.sortKey,
46
+ };
47
+ const { data, errors } = await client.request(QUERY, { variables });
48
+ (0, handleErrors_1.handleErrors)(errors);
49
+ if (!data)
50
+ throw new Error('SearchOrdersCommand: no data returned');
51
+ return { items: data.orders.nodes, pageInfo: data.orders.pageInfo };
52
+ }
53
+ }
54
+ exports.SearchOrdersCommand = SearchOrdersCommand;
55
+ //# sourceMappingURL=SearchOrdersCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchOrdersCommand.js","sourceRoot":"","sources":["../../../src/commands/orders/SearchOrdersCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAA;AAgDD,MAAa,mBAAoB,SAAQ,iBAA8C;IACrF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG;YAC9B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;YACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC5B,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAEnE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAC,CAAA;IACnE,CAAC;CACF;AAjBD,kDAiBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\n\nconst QUERY = /* GraphQL */ `\n query SearchOrders(\n $first: Int\n $last: Int\n $query: String\n $before: String\n $after: String\n $reverse: Boolean\n $sortKey: OrderSortKeys\n ) {\n orders(\n first: $first\n last: $last\n sortKey: $sortKey\n reverse: $reverse\n query: $query\n before: $before\n after: $after\n ) {\n nodes {\n id\n name\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`\n\nexport type OrderSortKey =\n | 'CREATED_AT'\n | 'CURRENT_TOTAL_PRICE'\n | 'CUSTOMER_NAME'\n | 'DESTINATION'\n | 'FINANCIAL_STATUS'\n | 'FULFILLMENT_STATUS'\n | 'ID'\n | 'ORDER_NUMBER'\n | 'PO_NUMBER'\n | 'PROCESSED_AT'\n | 'RELEVANCE'\n | 'TOTAL_ITEMS_QUANTITY'\n | 'TOTAL_PRICE'\n | 'UPDATED_AT'\n\nexport interface SearchOrdersInput {\n first?: number\n last?: number\n query?: string\n before?: string\n after?: string\n reverse?: boolean\n sortKey?: OrderSortKey\n}\n\nexport interface OrderNode {\n id: string\n name: string\n}\n\nexport interface SearchOrdersOutput {\n items: OrderNode[]\n pageInfo: {\n hasNextPage: boolean\n endCursor: string | null\n }\n}\n\ninterface QueryResponse {\n orders: {\n nodes: OrderNode[]\n pageInfo: SearchOrdersOutput['pageInfo']\n }\n}\n\nexport class SearchOrdersCommand extends Command<SearchOrdersInput, SearchOrdersOutput> {\n async execute(client: AdminApiClient): Promise<SearchOrdersOutput> {\n const variables = {\n first: this.input.first ?? 100,\n last: this.input.last,\n query: this.input.query,\n before: this.input.before,\n after: this.input.after,\n reverse: this.input.reverse ?? true,\n sortKey: this.input.sortKey,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('SearchOrdersCommand: no data returned')\n\n return {items: data.orders.nodes, pageInfo: data.orders.pageInfo}\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export * from './SearchOrdersCommand';
2
+ export * from './GetOrderCommand';
3
+ export * from './GetOrderEventsCommand';
4
+ export * from './GetOrderTransactionsCommand';
5
+ export * from './GetOrderFulfillmentsCommand';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SearchOrdersCommand"), exports);
18
+ __exportStar(require("./GetOrderCommand"), exports);
19
+ __exportStar(require("./GetOrderEventsCommand"), exports);
20
+ __exportStar(require("./GetOrderTransactionsCommand"), exports);
21
+ __exportStar(require("./GetOrderFulfillmentsCommand"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/orders/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC;AACrC,oDAAiC;AACjC,0DAAuC;AACvC,gEAA6C;AAC7C,gEAA6C","sourcesContent":["export * from './SearchOrdersCommand'\nexport * from './GetOrderCommand'\nexport * from './GetOrderEventsCommand'\nexport * from './GetOrderTransactionsCommand'\nexport * from './GetOrderFulfillmentsCommand'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchPayoutsCommand.js","sourceRoot":"","sources":["../../../src/commands/payments/SearchPayoutsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;CAqB3B,CAAA;AAmCD,MAAa,oBAAqB,SAAQ,iBAAgD;IACxF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;SACxB,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,mFAAmF;YACnF,OAAO,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,EAAC,CAAA;QACrE,CAAC;QACD,OAAO,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAC,CAAA;IAC3E,CAAC;CACF;AAhBD,oDAgBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\n\nconst QUERY = /* GraphQL */ `\n query SearchPayouts($first: Int!, $after: String) {\n shopifyPaymentsAccount {\n payouts(first: $first, after: $after, sortKey: ISSUED_AT, reverse: true) {\n nodes {\n id\n status\n issuedAt\n net {\n amount\n currencyCode\n }\n transactionType\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n }\n`\n\nexport interface SearchPayoutsInput {\n first?: number\n after?: string\n}\n\nexport interface PayoutNode {\n id: string\n status: string // 'SCHEDULED' | 'IN_TRANSIT' | 'PAID' | 'FAILED' | 'CANCELED'\n issuedAt: string\n net: {\n amount: string\n currencyCode: string\n }\n transactionType: string // 'DEPOSIT' | 'WITHDRAWAL'\n}\n\nexport interface SearchPayoutsOutput {\n items: PayoutNode[]\n pageInfo: {\n hasNextPage: boolean\n endCursor: string | null\n }\n}\n\ninterface QueryResponse {\n shopifyPaymentsAccount: {\n payouts: {\n nodes: PayoutNode[]\n pageInfo: SearchPayoutsOutput['pageInfo']\n }\n } | null\n}\n\nexport class SearchPayoutsCommand extends Command<SearchPayoutsInput, SearchPayoutsOutput> {\n async execute(client: AdminApiClient): Promise<SearchPayoutsOutput> {\n const variables = {\n first: this.input.first ?? 50,\n after: this.input.after,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('SearchPayoutsCommand: no data returned')\n const account = data.shopifyPaymentsAccount\n if (!account) {\n // Store does not have Shopify Payments enabled — return empty instead of throwing.\n return {items: [], pageInfo: {hasNextPage: false, endCursor: null}}\n }\n return {items: account.payouts.nodes, pageInfo: account.payouts.pageInfo}\n }\n}\n"]}
1
+ {"version":3,"file":"SearchPayoutsCommand.js","sourceRoot":"","sources":["../../../src/commands/payments/SearchPayoutsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;CAqB3B,CAAA;AAmCD,MAAa,oBAAqB,SAAQ,iBAAgD;IACxF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;SACxB,CAAA;QACD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,OAAO,CAAgB,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAA;QAC9E,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;QAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAA;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,mFAAmF;YACnF,OAAO,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,EAAC,CAAA;QACrE,CAAC;QAED,OAAO,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAC,CAAA;IAC3E,CAAC;CACF;AAlBD,oDAkBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\n\nconst QUERY = /* GraphQL */ `\n query SearchPayouts($first: Int!, $after: String) {\n shopifyPaymentsAccount {\n payouts(first: $first, after: $after, sortKey: ISSUED_AT, reverse: true) {\n nodes {\n id\n status\n issuedAt\n net {\n amount\n currencyCode\n }\n transactionType\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n }\n`\n\nexport interface SearchPayoutsInput {\n first?: number\n after?: string\n}\n\nexport interface PayoutNode {\n id: string\n status: string // 'SCHEDULED' | 'IN_TRANSIT' | 'PAID' | 'FAILED' | 'CANCELED'\n issuedAt: string\n net: {\n amount: string\n currencyCode: string\n }\n transactionType: string // 'DEPOSIT' | 'WITHDRAWAL'\n}\n\nexport interface SearchPayoutsOutput {\n items: PayoutNode[]\n pageInfo: {\n hasNextPage: boolean\n endCursor: string | null\n }\n}\n\ninterface QueryResponse {\n shopifyPaymentsAccount: {\n payouts: {\n nodes: PayoutNode[]\n pageInfo: SearchPayoutsOutput['pageInfo']\n }\n } | null\n}\n\nexport class SearchPayoutsCommand extends Command<SearchPayoutsInput, SearchPayoutsOutput> {\n async execute(client: AdminApiClient): Promise<SearchPayoutsOutput> {\n const variables = {\n first: this.input.first ?? 50,\n after: this.input.after,\n }\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('SearchPayoutsCommand: no data returned')\n\n const account = data.shopifyPaymentsAccount\n if (!account) {\n // Store does not have Shopify Payments enabled — return empty instead of throwing.\n return {items: [], pageInfo: {hasNextPage: false, endCursor: null}}\n }\n\n return {items: account.payouts.nodes, pageInfo: account.payouts.pageInfo}\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,8 @@ export { ShopifyClient, type ShopifyClientOptions, type StoreId, type Middleware
2
2
  export { Command } from './client/Command';
3
3
  export { handleErrors, assertNoUserErrors, type GraphQLError, type ResponseErrors, type UserError, } from './utils/handleErrors';
4
4
  export { getGlobalID, extractIdFromGlobalID } from './utils/globalId';
5
+ export type { MoneyV2 } from './utils/money';
5
6
  export * from './commands/customers';
6
7
  export * from './commands/payments';
7
8
  export * from './commands/menus';
9
+ export * from './commands/orders';
package/dist/index.js CHANGED
@@ -29,4 +29,5 @@ Object.defineProperty(exports, "extractIdFromGlobalID", { enumerable: true, get:
29
29
  __exportStar(require("./commands/customers"), exports);
30
30
  __exportStar(require("./commands/payments"), exports);
31
31
  __exportStar(require("./commands/menus"), exports);
32
+ __exportStar(require("./commands/orders"), exports);
32
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAK+B;AAJ7B,8GAAA,aAAa,OAAA;AAKf,4CAAwC;AAAhC,kGAAA,OAAO,OAAA;AACf,qDAM6B;AAL3B,4GAAA,YAAY,OAAA;AACZ,kHAAA,kBAAkB,OAAA;AAKpB,6CAAmE;AAA3D,uGAAA,WAAW,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAE1C,gCAAgC;AAChC,uDAAoC;AACpC,sDAAmC;AACnC,mDAAgC","sourcesContent":["export {\n ShopifyClient,\n type ShopifyClientOptions,\n type StoreId,\n type Middleware,\n} from './client/ShopifyClient'\nexport {Command} from './client/Command'\nexport {\n handleErrors,\n assertNoUserErrors,\n type GraphQLError,\n type ResponseErrors,\n type UserError,\n} from './utils/handleErrors'\nexport {getGlobalID, extractIdFromGlobalID} from './utils/globalId'\n\n// Commands grouped by namespace\nexport * from './commands/customers'\nexport * from './commands/payments'\nexport * from './commands/menus'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAK+B;AAJ7B,8GAAA,aAAa,OAAA;AAKf,4CAAwC;AAAhC,kGAAA,OAAO,OAAA;AACf,qDAM6B;AAL3B,4GAAA,YAAY,OAAA;AACZ,kHAAA,kBAAkB,OAAA;AAKpB,6CAAmE;AAA3D,uGAAA,WAAW,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAG1C,gCAAgC;AAChC,uDAAoC;AACpC,sDAAmC;AACnC,mDAAgC;AAChC,oDAAiC","sourcesContent":["export {\n ShopifyClient,\n type ShopifyClientOptions,\n type StoreId,\n type Middleware,\n} from './client/ShopifyClient'\nexport {Command} from './client/Command'\nexport {\n handleErrors,\n assertNoUserErrors,\n type GraphQLError,\n type ResponseErrors,\n type UserError,\n} from './utils/handleErrors'\nexport {getGlobalID, extractIdFromGlobalID} from './utils/globalId'\nexport type {MoneyV2} from './utils/money'\n\n// Commands grouped by namespace\nexport * from './commands/customers'\nexport * from './commands/payments'\nexport * from './commands/menus'\nexport * from './commands/orders'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"globalId.js","sourceRoot":"","sources":["../../src/utils/globalId.ts"],"names":[],"mappings":";;AAQA,kCAIC;AAQD,sDAIC;AAxBD;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,EAAmB,EAAE,IAAY;IAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IACpB,IAAI,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,iBAAiB,IAAI,IAAI,CAAC,EAAE,CAAA;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,MAAM,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IACzD,OAAO,CAAC,CAAC,CAAC,CAAE,CAAA;AACd,CAAC","sourcesContent":["/**\n * Convert a numeric ID or partial gid into a full Shopify global ID.\n * Idempotent: if the input is already a gid, returns it unchanged.\n *\n * @example\n * getGlobalID('123', 'Product') → 'gid://shopify/Product/123'\n * getGlobalID('gid://shopify/Product/123', 'Product') → 'gid://shopify/Product/123'\n */\nexport function getGlobalID(id: string | number, type: string): string {\n const s = String(id)\n if (s.startsWith('gid://shopify/')) return s\n return `gid://shopify/${type}/${s}`\n}\n\n/**\n * Extract the numeric ID portion from a global ID.\n *\n * @example\n * extractIdFromGlobalID('gid://shopify/Product/123') → '123'\n */\nexport function extractIdFromGlobalID(globalId: string): string {\n const m = /gid:\\/\\/shopify\\/[^/]+\\/(.+)$/.exec(globalId)\n if (!m) throw new Error(`Invalid global ID: ${globalId}`)\n return m[1]!\n}\n"]}
1
+ {"version":3,"file":"globalId.js","sourceRoot":"","sources":["../../src/utils/globalId.ts"],"names":[],"mappings":";;AAQA,kCAKC;AAQD,sDAKC;AA1BD;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,EAAmB,EAAE,IAAY;IAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IACpB,IAAI,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,CAAC,CAAA;IAE5C,OAAO,iBAAiB,IAAI,IAAI,CAAC,EAAE,CAAA;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,MAAM,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IAEzD,OAAO,CAAC,CAAC,CAAC,CAAE,CAAA;AACd,CAAC","sourcesContent":["/**\n * Convert a numeric ID or partial gid into a full Shopify global ID.\n * Idempotent: if the input is already a gid, returns it unchanged.\n *\n * @example\n * getGlobalID('123', 'Product') → 'gid://shopify/Product/123'\n * getGlobalID('gid://shopify/Product/123', 'Product') → 'gid://shopify/Product/123'\n */\nexport function getGlobalID(id: string | number, type: string): string {\n const s = String(id)\n if (s.startsWith('gid://shopify/')) return s\n\n return `gid://shopify/${type}/${s}`\n}\n\n/**\n * Extract the numeric ID portion from a global ID.\n *\n * @example\n * extractIdFromGlobalID('gid://shopify/Product/123') → '123'\n */\nexport function extractIdFromGlobalID(globalId: string): string {\n const m = /gid:\\/\\/shopify\\/[^/]+\\/(.+)$/.exec(globalId)\n if (!m) throw new Error(`Invalid global ID: ${globalId}`)\n\n return m[1]!\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handleErrors.js","sourceRoot":"","sources":["../../src/utils/handleErrors.ts"],"names":[],"mappings":";;AAkBA,oCAYC;AAYD,gDAMC;AAlCD;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAuB;IAClD,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAA;IAChD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,IAAI,GAAG,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CACpF,CAAA;IACH,CAAC;AACH,CAAC;AAQD;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,UAA0C,EAC1C,aAAqB;IAErB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAClD,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC","sourcesContent":["export interface GraphQLError {\n message: string\n locations?: Array<{line: number; column: number}>\n path?: Array<string | number>\n extensions?: Record<string, unknown>\n}\n\nexport interface ResponseErrors {\n networkStatusCode?: number\n message?: string\n graphQLErrors?: GraphQLError[]\n response?: Response\n}\n\n/**\n * Throws if the response contains GraphQL errors or a 4xx/5xx network error.\n * Call after every `client.request(...)` to propagate errors up the Promise chain.\n */\nexport function handleErrors(errors?: ResponseErrors): void {\n if (!errors) return\n const graphQLErrors = errors.graphQLErrors ?? []\n if (graphQLErrors.length) {\n const message = graphQLErrors.map((e) => e.message).join('; ')\n throw new Error(`Shopify GraphQL error: ${message}`)\n }\n if (errors.networkStatusCode && errors.networkStatusCode >= 400) {\n throw new Error(\n `Shopify network error ${errors.networkStatusCode}: ${errors.message ?? 'unknown'}`,\n )\n }\n}\n\nexport interface UserError {\n field?: string[] | null\n message: string\n code?: string\n}\n\n/**\n * Throws if a Shopify mutation returned any `userErrors`. Works with `userErrors`,\n * `mediaUserErrors`, or any custom userErrors-shaped field.\n */\nexport function assertNoUserErrors(\n userErrors: UserError[] | null | undefined,\n operationName: string,\n): void {\n if (!userErrors || userErrors.length === 0) return\n throw new Error(`${operationName} userErrors: ${JSON.stringify(userErrors)}`)\n}\n"]}
1
+ {"version":3,"file":"handleErrors.js","sourceRoot":"","sources":["../../src/utils/handleErrors.ts"],"names":[],"mappings":";;AAkBA,oCAeC;AAYD,gDAMC;AArCD;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAuB;IAClD,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAA;IAChD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9D,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,IAAI,GAAG,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CACpF,CAAA;IACH,CAAC;AACH,CAAC;AAQD;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,UAA0C,EAC1C,aAAqB;IAErB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAClD,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC","sourcesContent":["export interface GraphQLError {\n message: string\n locations?: Array<{line: number; column: number}>\n path?: Array<string | number>\n extensions?: Record<string, unknown>\n}\n\nexport interface ResponseErrors {\n networkStatusCode?: number\n message?: string\n graphQLErrors?: GraphQLError[]\n response?: Response\n}\n\n/**\n * Throws if the response contains GraphQL errors or a 4xx/5xx network error.\n * Call after every `client.request(...)` to propagate errors up the Promise chain.\n */\nexport function handleErrors(errors?: ResponseErrors): void {\n if (!errors) return\n\n const graphQLErrors = errors.graphQLErrors ?? []\n if (graphQLErrors.length) {\n const message = graphQLErrors.map((e) => e.message).join('; ')\n\n throw new Error(`Shopify GraphQL error: ${message}`)\n }\n\n if (errors.networkStatusCode && errors.networkStatusCode >= 400) {\n throw new Error(\n `Shopify network error ${errors.networkStatusCode}: ${errors.message ?? 'unknown'}`,\n )\n }\n}\n\nexport interface UserError {\n field?: string[] | null\n message: string\n code?: string\n}\n\n/**\n * Throws if a Shopify mutation returned any `userErrors`. Works with `userErrors`,\n * `mediaUserErrors`, or any custom userErrors-shaped field.\n */\nexport function assertNoUserErrors(\n userErrors: UserError[] | null | undefined,\n operationName: string,\n): void {\n if (!userErrors || userErrors.length === 0) return\n throw new Error(`${operationName} userErrors: ${JSON.stringify(userErrors)}`)\n}\n"]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shopify Admin GraphQL `MoneyV2` scalar wrapper.
3
+ *
4
+ * `amount` is a stringified decimal (Shopify never returns money as `number`
5
+ * to avoid float precision issues). Parse with `BigNumber`/`Decimal` if doing math.
6
+ * `currencyCode` is the ISO-4217 code, e.g. `"USD"`, `"VND"`.
7
+ */
8
+ export interface MoneyV2 {
9
+ amount: string;
10
+ currencyCode: string;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=money.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.js","sourceRoot":"","sources":["../../src/utils/money.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Shopify Admin GraphQL `MoneyV2` scalar wrapper.\n *\n * `amount` is a stringified decimal (Shopify never returns money as `number`\n * to avoid float precision issues). Parse with `BigNumber`/`Decimal` if doing math.\n * `currencyCode` is the ISO-4217 code, e.g. `\"USD\"`, `\"VND\"`.\n */\nexport interface MoneyV2 {\n amount: string\n currencyCode: string\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pintahub/shopify-next",
3
- "version": "0.4.1",
3
+ "version": "0.6.0",
4
4
  "description": "Shopify Admin GraphQL client for pintahub services via shopify-gateway",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",