@pintahub/shopify-next 0.7.1 → 0.9.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.
- package/dist/commands/fulfillments/UpdateFulfillmentTrackingCommand.d.ts +22 -0
- package/dist/commands/fulfillments/UpdateFulfillmentTrackingCommand.js +40 -0
- package/dist/commands/fulfillments/UpdateFulfillmentTrackingCommand.js.map +1 -0
- package/dist/commands/fulfillments/index.d.ts +1 -0
- package/dist/commands/fulfillments/index.js +18 -0
- package/dist/commands/fulfillments/index.js.map +1 -0
- package/dist/commands/metaobjects/GetMetaobjectCommand.d.ts +30 -0
- package/dist/commands/metaobjects/GetMetaobjectCommand.js +41 -0
- package/dist/commands/metaobjects/GetMetaobjectCommand.js.map +1 -0
- package/dist/commands/metaobjects/ListBannersCommand.d.ts +36 -0
- package/dist/commands/metaobjects/ListBannersCommand.js +47 -0
- package/dist/commands/metaobjects/ListBannersCommand.js.map +1 -0
- package/dist/commands/metaobjects/ListFAQsCommand.d.ts +21 -0
- package/dist/commands/metaobjects/ListFAQsCommand.js +63 -0
- package/dist/commands/metaobjects/ListFAQsCommand.js.map +1 -0
- package/dist/commands/metaobjects/SearchMetaobjectsCommand.d.ts +27 -0
- package/dist/commands/metaobjects/SearchMetaobjectsCommand.js +54 -0
- package/dist/commands/metaobjects/SearchMetaobjectsCommand.js.map +1 -0
- package/dist/commands/metaobjects/index.d.ts +4 -0
- package/dist/commands/metaobjects/index.js +21 -0
- package/dist/commands/metaobjects/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/richText.d.ts +7 -0
- package/dist/utils/richText.js +95 -0
- package/dist/utils/richText.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AdminApiClient } from '@shopify/admin-api-client';
|
|
2
|
+
import { Command } from '../../client/Command';
|
|
3
|
+
export interface FulfillmentTrackingInput {
|
|
4
|
+
number?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
company?: string;
|
|
7
|
+
numbers?: string[];
|
|
8
|
+
urls?: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface UpdateFulfillmentTrackingInput {
|
|
11
|
+
fulfillmentId: string;
|
|
12
|
+
trackingInfo: FulfillmentTrackingInput;
|
|
13
|
+
notifyCustomer?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface UpdateFulfillmentTrackingOutput {
|
|
16
|
+
id: string;
|
|
17
|
+
/** Enum: PENDING | OPEN | SUCCESS | CANCELLED | ERROR | FAILURE */
|
|
18
|
+
status: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class UpdateFulfillmentTrackingCommand extends Command<UpdateFulfillmentTrackingInput, UpdateFulfillmentTrackingOutput> {
|
|
21
|
+
execute(client: AdminApiClient): Promise<UpdateFulfillmentTrackingOutput>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateFulfillmentTrackingCommand = 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 MUTATION = /* GraphQL */ `
|
|
8
|
+
mutation UpdateFulfillmentTracking($fulfillmentId: ID!, $trackingInfoInput: FulfillmentTrackingInput!, $notifyCustomer: Boolean) {
|
|
9
|
+
fulfillmentTrackingInfoUpdate(fulfillmentId: $fulfillmentId, trackingInfoInput: $trackingInfoInput, notifyCustomer: $notifyCustomer) {
|
|
10
|
+
fulfillment {
|
|
11
|
+
id
|
|
12
|
+
status
|
|
13
|
+
}
|
|
14
|
+
userErrors {
|
|
15
|
+
field
|
|
16
|
+
message
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
class UpdateFulfillmentTrackingCommand extends Command_1.Command {
|
|
22
|
+
async execute(client) {
|
|
23
|
+
const variables = {
|
|
24
|
+
fulfillmentId: (0, globalId_1.getGlobalID)(this.input.fulfillmentId, 'Fulfillment'),
|
|
25
|
+
trackingInfoInput: this.input.trackingInfo,
|
|
26
|
+
notifyCustomer: this.input.notifyCustomer,
|
|
27
|
+
};
|
|
28
|
+
const { data, errors } = await client.request(MUTATION, { variables });
|
|
29
|
+
(0, handleErrors_1.handleErrors)(errors);
|
|
30
|
+
if (!data)
|
|
31
|
+
throw new Error('UpdateFulfillmentTrackingCommand: no data returned');
|
|
32
|
+
const { fulfillment, userErrors } = data.fulfillmentTrackingInfoUpdate;
|
|
33
|
+
(0, handleErrors_1.assertNoUserErrors)(userErrors, 'UpdateFulfillmentTrackingCommand');
|
|
34
|
+
if (!fulfillment)
|
|
35
|
+
throw new Error('UpdateFulfillmentTrackingCommand: fulfillment is null');
|
|
36
|
+
return fulfillment;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.UpdateFulfillmentTrackingCommand = UpdateFulfillmentTrackingCommand;
|
|
40
|
+
//# sourceMappingURL=UpdateFulfillmentTrackingCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateFulfillmentTrackingCommand.js","sourceRoot":"","sources":["../../../src/commands/fulfillments/UpdateFulfillmentTrackingCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAyF;AACzF,mDAAgD;AAEhD,MAAM,QAAQ,GAAG,aAAa,CAAC;;;;;;;;;;;;;CAa9B,CAAA;AA8BD,MAAa,gCAAiC,SAAQ,iBAGrD;IACC,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,aAAa,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC;YACnE,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YAC1C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;SAC1C,CAAA;QAED,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,oDAAoD,CAAC,CAAA;QAEhF,MAAM,EAAC,WAAW,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,6BAA6B,CAAA;QACpE,IAAA,iCAAkB,EAAC,UAAU,EAAE,kCAAkC,CAAC,CAAA;QAClE,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAE1F,OAAO,WAAW,CAAA;IACpB,CAAC;CACF;AArBD,4EAqBC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors, assertNoUserErrors, type UserError} from '../../utils/handleErrors'\nimport {getGlobalID} from '../../utils/globalId'\n\nconst MUTATION = /* GraphQL */ `\n mutation UpdateFulfillmentTracking($fulfillmentId: ID!, $trackingInfoInput: FulfillmentTrackingInput!, $notifyCustomer: Boolean) {\n fulfillmentTrackingInfoUpdate(fulfillmentId: $fulfillmentId, trackingInfoInput: $trackingInfoInput, notifyCustomer: $notifyCustomer) {\n fulfillment {\n id\n status\n }\n userErrors {\n field\n message\n }\n }\n }\n`\n\n// Provide either single tracking (number/url) or multi-package (numbers/urls), not both.\nexport interface FulfillmentTrackingInput {\n number?: string\n url?: string\n company?: string\n numbers?: string[]\n urls?: string[]\n}\n\nexport interface UpdateFulfillmentTrackingInput {\n fulfillmentId: string\n trackingInfo: FulfillmentTrackingInput\n notifyCustomer?: boolean\n}\n\nexport interface UpdateFulfillmentTrackingOutput {\n id: string\n /** Enum: PENDING | OPEN | SUCCESS | CANCELLED | ERROR | FAILURE */\n status: string\n}\n\ninterface MutationResponse {\n fulfillmentTrackingInfoUpdate: {\n fulfillment: UpdateFulfillmentTrackingOutput | null\n userErrors: UserError[]\n }\n}\n\nexport class UpdateFulfillmentTrackingCommand extends Command<\n UpdateFulfillmentTrackingInput,\n UpdateFulfillmentTrackingOutput\n> {\n async execute(client: AdminApiClient): Promise<UpdateFulfillmentTrackingOutput> {\n const variables = {\n fulfillmentId: getGlobalID(this.input.fulfillmentId, 'Fulfillment'),\n trackingInfoInput: this.input.trackingInfo,\n notifyCustomer: this.input.notifyCustomer,\n }\n\n const {data, errors} = await client.request<MutationResponse>(MUTATION, {variables})\n handleErrors(errors)\n if (!data) throw new Error('UpdateFulfillmentTrackingCommand: no data returned')\n\n const {fulfillment, userErrors} = data.fulfillmentTrackingInfoUpdate\n assertNoUserErrors(userErrors, 'UpdateFulfillmentTrackingCommand')\n if (!fulfillment) throw new Error('UpdateFulfillmentTrackingCommand: fulfillment is null')\n\n return fulfillment\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './UpdateFulfillmentTrackingCommand';
|
|
@@ -0,0 +1,18 @@
|
|
|
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("./UpdateFulfillmentTrackingCommand"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/fulfillments/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAkD","sourcesContent":["export * from './UpdateFulfillmentTrackingCommand'\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AdminApiClient } from '@shopify/admin-api-client';
|
|
2
|
+
import { Command } from '../../client/Command';
|
|
3
|
+
export interface GetMetaobjectInput {
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
export interface MetaobjectField {
|
|
7
|
+
key: string;
|
|
8
|
+
type: string;
|
|
9
|
+
value: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface GetMetaobjectOutput {
|
|
12
|
+
id: string;
|
|
13
|
+
handle: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
type: string;
|
|
16
|
+
fields: MetaobjectField[];
|
|
17
|
+
capabilities: {
|
|
18
|
+
publishable: {
|
|
19
|
+
status: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Sentinel returned when the metaobject no longer exists (deleted on Shopify). */
|
|
24
|
+
export interface MetaobjectNotFound {
|
|
25
|
+
status: 'not_found';
|
|
26
|
+
}
|
|
27
|
+
export type GetMetaobjectResult = GetMetaobjectOutput | MetaobjectNotFound;
|
|
28
|
+
export declare class GetMetaobjectCommand extends Command<GetMetaobjectInput, GetMetaobjectResult> {
|
|
29
|
+
execute(client: AdminApiClient): Promise<GetMetaobjectResult>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetMetaobjectCommand = 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 GetMetaobject($id: ID!) {
|
|
9
|
+
metaobject(id: $id) {
|
|
10
|
+
id
|
|
11
|
+
handle
|
|
12
|
+
displayName
|
|
13
|
+
type
|
|
14
|
+
fields {
|
|
15
|
+
key
|
|
16
|
+
type
|
|
17
|
+
value
|
|
18
|
+
}
|
|
19
|
+
capabilities {
|
|
20
|
+
publishable {
|
|
21
|
+
status
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
class GetMetaobjectCommand extends Command_1.Command {
|
|
28
|
+
async execute(client) {
|
|
29
|
+
const variables = { id: (0, globalId_1.getGlobalID)(this.input.id, 'Metaobject') };
|
|
30
|
+
const { data, errors } = await client.request(QUERY, { variables });
|
|
31
|
+
(0, handleErrors_1.handleErrors)(errors);
|
|
32
|
+
if (!data)
|
|
33
|
+
throw new Error('GetMetaobjectCommand: no data returned');
|
|
34
|
+
if (data.metaobject === null) {
|
|
35
|
+
return { status: 'not_found' };
|
|
36
|
+
}
|
|
37
|
+
return data.metaobject;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.GetMetaobjectCommand = GetMetaobjectCommand;
|
|
41
|
+
//# sourceMappingURL=GetMetaobjectCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetMetaobjectCommand.js","sourceRoot":"","sources":["../../../src/commands/metaobjects/GetMetaobjectCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAgD;AAEhD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;CAmB3B,CAAA;AAkCD,MAAa,oBAAqB,SAAQ,iBAGzC;IACC,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,EAAE,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,EAAC,CAAA;QAEhE,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,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,CAAA;QAC9B,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF;AAjBD,oDAiBC","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 GetMetaobject($id: ID!) {\n metaobject(id: $id) {\n id\n handle\n displayName\n type\n fields {\n key\n type\n value\n }\n capabilities {\n publishable {\n status\n }\n }\n }\n }\n`\n\nexport interface GetMetaobjectInput {\n id: string\n}\n\nexport interface MetaobjectField {\n key: string\n type: string\n value: string | null\n}\n\nexport interface GetMetaobjectOutput {\n id: string\n handle: string\n displayName: string\n type: string\n fields: MetaobjectField[]\n capabilities: {\n publishable: {status: string}\n }\n}\n\n/** Sentinel returned when the metaobject no longer exists (deleted on Shopify). */\nexport interface MetaobjectNotFound {\n status: 'not_found'\n}\n\nexport type GetMetaobjectResult = GetMetaobjectOutput | MetaobjectNotFound\n\ninterface QueryResponse {\n metaobject: GetMetaobjectOutput | null\n}\n\nexport class GetMetaobjectCommand extends Command<\n GetMetaobjectInput,\n GetMetaobjectResult\n> {\n async execute(client: AdminApiClient): Promise<GetMetaobjectResult> {\n const variables = {id: getGlobalID(this.input.id, 'Metaobject')}\n\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('GetMetaobjectCommand: no data returned')\n\n if (data.metaobject === null) {\n return {status: 'not_found'}\n }\n\n return data.metaobject\n }\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AdminApiClient } from '@shopify/admin-api-client';
|
|
2
|
+
import { Command } from '../../client/Command';
|
|
3
|
+
export interface BannerImage {
|
|
4
|
+
altText: string | null;
|
|
5
|
+
url: string;
|
|
6
|
+
width: number | null;
|
|
7
|
+
height: number | null;
|
|
8
|
+
}
|
|
9
|
+
export interface BannerField {
|
|
10
|
+
key: string;
|
|
11
|
+
value: string | null;
|
|
12
|
+
reference: {
|
|
13
|
+
image: BannerImage;
|
|
14
|
+
} | null;
|
|
15
|
+
}
|
|
16
|
+
export interface BannerNode {
|
|
17
|
+
id: string;
|
|
18
|
+
type: string;
|
|
19
|
+
handle: string;
|
|
20
|
+
fields: BannerField[];
|
|
21
|
+
capabilities: {
|
|
22
|
+
publishable: {
|
|
23
|
+
status: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface ListBannersInput {
|
|
28
|
+
/** Max banners to return. Defaults to 10. */
|
|
29
|
+
first?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ListBannersOutput {
|
|
32
|
+
items: BannerNode[];
|
|
33
|
+
}
|
|
34
|
+
export declare class ListBannersCommand extends Command<ListBannersInput, ListBannersOutput> {
|
|
35
|
+
execute(client: AdminApiClient): Promise<ListBannersOutput>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ListBannersCommand = void 0;
|
|
4
|
+
const Command_1 = require("../../client/Command");
|
|
5
|
+
const handleErrors_1 = require("../../utils/handleErrors");
|
|
6
|
+
const QUERY = /* GraphQL */ `
|
|
7
|
+
query ListBanners($first: Int!) {
|
|
8
|
+
metaobjects(type: "banner", first: $first) {
|
|
9
|
+
nodes {
|
|
10
|
+
id
|
|
11
|
+
type
|
|
12
|
+
handle
|
|
13
|
+
fields {
|
|
14
|
+
key
|
|
15
|
+
value
|
|
16
|
+
reference {
|
|
17
|
+
... on MediaImage {
|
|
18
|
+
image {
|
|
19
|
+
altText
|
|
20
|
+
url
|
|
21
|
+
width
|
|
22
|
+
height
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
capabilities {
|
|
28
|
+
publishable {
|
|
29
|
+
status
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
class ListBannersCommand extends Command_1.Command {
|
|
37
|
+
async execute(client) {
|
|
38
|
+
const variables = { first: this.input?.first ?? 10 };
|
|
39
|
+
const { data, errors } = await client.request(QUERY, { variables });
|
|
40
|
+
(0, handleErrors_1.handleErrors)(errors);
|
|
41
|
+
if (!data)
|
|
42
|
+
throw new Error('ListBannersCommand: no data returned');
|
|
43
|
+
return { items: data.metaobjects.nodes };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ListBannersCommand = ListBannersCommand;
|
|
47
|
+
//# sourceMappingURL=ListBannersCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBannersCommand.js","sourceRoot":"","sources":["../../../src/commands/metaobjects/ListBannersCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAA;AAwCD,MAAa,kBAAmB,SAAQ,iBAA4C;IAClF,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,EAAC,CAAA;QAElD,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,WAAW,CAAC,KAAK,EAAC,CAAA;IACxC,CAAC;CACF;AAVD,gDAUC","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 ListBanners($first: Int!) {\n metaobjects(type: \"banner\", first: $first) {\n nodes {\n id\n type\n handle\n fields {\n key\n value\n reference {\n ... on MediaImage {\n image {\n altText\n url\n width\n height\n }\n }\n }\n }\n capabilities {\n publishable {\n status\n }\n }\n }\n }\n }\n`\n\nexport interface BannerImage {\n altText: string | null\n url: string\n width: number | null\n height: number | null\n}\n\nexport interface BannerField {\n key: string\n value: string | null\n reference: {image: BannerImage} | null\n}\n\nexport interface BannerNode {\n id: string\n type: string\n handle: string\n fields: BannerField[]\n capabilities: {\n publishable: {status: string}\n }\n}\n\nexport interface ListBannersInput {\n /** Max banners to return. Defaults to 10. */\n first?: number\n}\n\nexport interface ListBannersOutput {\n items: BannerNode[]\n}\n\ninterface QueryResponse {\n metaobjects: {\n nodes: BannerNode[]\n }\n}\n\nexport class ListBannersCommand extends Command<ListBannersInput, ListBannersOutput> {\n async execute(client: AdminApiClient): Promise<ListBannersOutput> {\n const variables = {first: this.input?.first ?? 10}\n\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('ListBannersCommand: no data returned')\n\n return {items: data.metaobjects.nodes}\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 FAQItem {
|
|
4
|
+
id: string;
|
|
5
|
+
type: string;
|
|
6
|
+
handle: string;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
title: string;
|
|
9
|
+
/** HTML built from the `content` field (rich_text_field → HTML, single_line_text_field → <p>). */
|
|
10
|
+
body: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ListFAQsInput {
|
|
13
|
+
/** Max FAQs to return. Defaults to 100. */
|
|
14
|
+
first?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ListFAQsOutput {
|
|
17
|
+
items: FAQItem[];
|
|
18
|
+
}
|
|
19
|
+
export declare class ListFAQsCommand extends Command<ListFAQsInput, ListFAQsOutput> {
|
|
20
|
+
execute(client: AdminApiClient): Promise<ListFAQsOutput>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ListFAQsCommand = void 0;
|
|
4
|
+
const Command_1 = require("../../client/Command");
|
|
5
|
+
const handleErrors_1 = require("../../utils/handleErrors");
|
|
6
|
+
const richText_1 = require("../../utils/richText");
|
|
7
|
+
const QUERY = /* GraphQL */ `
|
|
8
|
+
query ListFAQs($first: Int!) {
|
|
9
|
+
metaobjects(type: "faq", first: $first) {
|
|
10
|
+
nodes {
|
|
11
|
+
id
|
|
12
|
+
type
|
|
13
|
+
handle
|
|
14
|
+
updatedAt
|
|
15
|
+
fields {
|
|
16
|
+
key
|
|
17
|
+
value
|
|
18
|
+
type
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
// rich_text_field stores a JSON schema; single_line_text_field stores plain text.
|
|
25
|
+
function parseContentToHtml(content, type) {
|
|
26
|
+
if (type === 'single_line_text_field') {
|
|
27
|
+
return `<p>${content}</p>`;
|
|
28
|
+
}
|
|
29
|
+
if (type !== 'rich_text_field')
|
|
30
|
+
return content;
|
|
31
|
+
return `<div>${(0, richText_1.convertSchemaToHtml)(content)}</div>`;
|
|
32
|
+
}
|
|
33
|
+
function parseFAQ(node) {
|
|
34
|
+
const { fields, ...rest } = node;
|
|
35
|
+
if (!fields || !fields.length)
|
|
36
|
+
return null;
|
|
37
|
+
const byKey = fields.reduce((acc, field) => {
|
|
38
|
+
if (field.key)
|
|
39
|
+
acc[field.key] = field;
|
|
40
|
+
return acc;
|
|
41
|
+
}, {});
|
|
42
|
+
const title = byKey.title?.value;
|
|
43
|
+
if (!title)
|
|
44
|
+
return null;
|
|
45
|
+
const content = byKey.content;
|
|
46
|
+
const body = content?.value ? parseContentToHtml(content.value, content.type) : '';
|
|
47
|
+
return { ...rest, title, body };
|
|
48
|
+
}
|
|
49
|
+
class ListFAQsCommand extends Command_1.Command {
|
|
50
|
+
async execute(client) {
|
|
51
|
+
const variables = { first: this.input?.first ?? 100 };
|
|
52
|
+
const { data, errors } = await client.request(QUERY, { variables });
|
|
53
|
+
(0, handleErrors_1.handleErrors)(errors);
|
|
54
|
+
if (!data)
|
|
55
|
+
throw new Error('ListFAQsCommand: no data returned');
|
|
56
|
+
const items = data.metaobjects.nodes
|
|
57
|
+
.map(parseFAQ)
|
|
58
|
+
.filter((item) => item !== null);
|
|
59
|
+
return { items };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.ListFAQsCommand = ListFAQsCommand;
|
|
63
|
+
//# sourceMappingURL=ListFAQsCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListFAQsCommand.js","sourceRoot":"","sources":["../../../src/commands/metaobjects/ListFAQsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AACrD,mDAAwD;AAExD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;CAgB3B,CAAA;AAyCD,kFAAkF;AAClF,SAAS,kBAAkB,CAAC,OAAe,EAAE,IAAY;IACvD,IAAI,IAAI,KAAK,wBAAwB,EAAE,CAAC;QACtC,OAAO,MAAM,OAAO,MAAM,CAAA;IAC5B,CAAC;IAED,IAAI,IAAI,KAAK,iBAAiB;QAAE,OAAO,OAAO,CAAA;IAE9C,OAAO,QAAQ,IAAA,8BAAmB,EAAC,OAAO,CAAC,QAAQ,CAAA;AACrD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB;IAChC,MAAM,EAAC,MAAM,EAAE,GAAG,IAAI,EAAC,GAAG,IAAI,CAAA;IAC9B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAA8B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACtE,IAAI,KAAK,CAAC,GAAG;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAErC,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAA;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAElF,OAAO,EAAC,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAA;AAC/B,CAAC;AAED,MAAa,eAAgB,SAAQ,iBAAsC;IACzE,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,GAAG,EAAC,CAAA;QAEnD,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,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;aACjC,GAAG,CAAC,QAAQ,CAAC;aACb,MAAM,CAAC,CAAC,IAAI,EAAmB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QAEnD,OAAO,EAAC,KAAK,EAAC,CAAA;IAChB,CAAC;CACF;AAdD,0CAcC","sourcesContent":["import type {AdminApiClient} from '@shopify/admin-api-client'\nimport {Command} from '../../client/Command'\nimport {handleErrors} from '../../utils/handleErrors'\nimport {convertSchemaToHtml} from '../../utils/richText'\n\nconst QUERY = /* GraphQL */ `\n query ListFAQs($first: Int!) {\n metaobjects(type: \"faq\", first: $first) {\n nodes {\n id\n type\n handle\n updatedAt\n fields {\n key\n value\n type\n }\n }\n }\n }\n`\n\ninterface RawFAQField {\n key: string\n value: string | null\n type: string\n}\n\ninterface RawFAQNode {\n id: string\n type: string\n handle: string\n updatedAt: string\n fields: RawFAQField[]\n}\n\nexport interface FAQItem {\n id: string\n type: string\n handle: string\n updatedAt: string\n title: string\n /** HTML built from the `content` field (rich_text_field → HTML, single_line_text_field → <p>). */\n body: string\n}\n\nexport interface ListFAQsInput {\n /** Max FAQs to return. Defaults to 100. */\n first?: number\n}\n\nexport interface ListFAQsOutput {\n items: FAQItem[]\n}\n\ninterface QueryResponse {\n metaobjects: {\n nodes: RawFAQNode[]\n }\n}\n\n// rich_text_field stores a JSON schema; single_line_text_field stores plain text.\nfunction parseContentToHtml(content: string, type: string): string {\n if (type === 'single_line_text_field') {\n return `<p>${content}</p>`\n }\n\n if (type !== 'rich_text_field') return content\n\n return `<div>${convertSchemaToHtml(content)}</div>`\n}\n\nfunction parseFAQ(node: RawFAQNode): FAQItem | null {\n const {fields, ...rest} = node\n if (!fields || !fields.length) return null\n\n const byKey = fields.reduce<Record<string, RawFAQField>>((acc, field) => {\n if (field.key) acc[field.key] = field\n\n return acc\n }, {})\n\n const title = byKey.title?.value\n if (!title) return null\n\n const content = byKey.content\n const body = content?.value ? parseContentToHtml(content.value, content.type) : ''\n\n return {...rest, title, body}\n}\n\nexport class ListFAQsCommand extends Command<ListFAQsInput, ListFAQsOutput> {\n async execute(client: AdminApiClient): Promise<ListFAQsOutput> {\n const variables = {first: this.input?.first ?? 100}\n\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('ListFAQsCommand: no data returned')\n\n const items = data.metaobjects.nodes\n .map(parseFAQ)\n .filter((item): item is FAQItem => item !== null)\n\n return {items}\n }\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AdminApiClient } from '@shopify/admin-api-client';
|
|
2
|
+
import { Command } from '../../client/Command';
|
|
3
|
+
export interface SearchMetaobjectsInput {
|
|
4
|
+
type: string;
|
|
5
|
+
first?: number;
|
|
6
|
+
after?: string;
|
|
7
|
+
query?: string;
|
|
8
|
+
/** Supports "id", "type", "updated_at", "display_name". */
|
|
9
|
+
sortKey?: string;
|
|
10
|
+
reverse?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface MetaobjectNode {
|
|
13
|
+
id: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
type: string;
|
|
16
|
+
handle: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SearchMetaobjectsOutput {
|
|
19
|
+
items: MetaobjectNode[];
|
|
20
|
+
pageInfo: {
|
|
21
|
+
endCursor: string | null;
|
|
22
|
+
hasNextPage: boolean;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare class SearchMetaobjectsCommand extends Command<SearchMetaobjectsInput, SearchMetaobjectsOutput> {
|
|
26
|
+
execute(client: AdminApiClient): Promise<SearchMetaobjectsOutput>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchMetaobjectsCommand = void 0;
|
|
4
|
+
const Command_1 = require("../../client/Command");
|
|
5
|
+
const handleErrors_1 = require("../../utils/handleErrors");
|
|
6
|
+
const QUERY = /* GraphQL */ `
|
|
7
|
+
query SearchMetaobjects(
|
|
8
|
+
$type: String!
|
|
9
|
+
$first: Int
|
|
10
|
+
$after: String
|
|
11
|
+
$query: String
|
|
12
|
+
$sortKey: String
|
|
13
|
+
$reverse: Boolean
|
|
14
|
+
) {
|
|
15
|
+
metaobjects(
|
|
16
|
+
type: $type
|
|
17
|
+
first: $first
|
|
18
|
+
after: $after
|
|
19
|
+
query: $query
|
|
20
|
+
sortKey: $sortKey
|
|
21
|
+
reverse: $reverse
|
|
22
|
+
) {
|
|
23
|
+
nodes {
|
|
24
|
+
id
|
|
25
|
+
displayName
|
|
26
|
+
type
|
|
27
|
+
handle
|
|
28
|
+
}
|
|
29
|
+
pageInfo {
|
|
30
|
+
endCursor
|
|
31
|
+
hasNextPage
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
class SearchMetaobjectsCommand extends Command_1.Command {
|
|
37
|
+
async execute(client) {
|
|
38
|
+
const variables = {
|
|
39
|
+
type: this.input.type,
|
|
40
|
+
first: this.input.first ?? 200,
|
|
41
|
+
after: this.input.after,
|
|
42
|
+
query: this.input.query,
|
|
43
|
+
sortKey: this.input.sortKey,
|
|
44
|
+
reverse: this.input.reverse,
|
|
45
|
+
};
|
|
46
|
+
const { data, errors } = await client.request(QUERY, { variables });
|
|
47
|
+
(0, handleErrors_1.handleErrors)(errors);
|
|
48
|
+
if (!data)
|
|
49
|
+
throw new Error('SearchMetaobjectsCommand: no data returned');
|
|
50
|
+
return { items: data.metaobjects.nodes, pageInfo: data.metaobjects.pageInfo };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.SearchMetaobjectsCommand = SearchMetaobjectsCommand;
|
|
54
|
+
//# sourceMappingURL=SearchMetaobjectsCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchMetaobjectsCommand.js","sourceRoot":"","sources":["../../../src/commands/metaobjects/SearchMetaobjectsCommand.ts"],"names":[],"mappings":";;;AACA,kDAA4C;AAC5C,2DAAqD;AAErD,MAAM,KAAK,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAA;AAkCD,MAAa,wBAAyB,SAAQ,iBAG7C;IACC,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC5B,CAAA;QAED,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,4CAA4C,CAAC,CAAA;QAExE,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAC,CAAA;IAC7E,CAAC;CACF;AApBD,4DAoBC","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 SearchMetaobjects(\n $type: String!\n $first: Int\n $after: String\n $query: String\n $sortKey: String\n $reverse: Boolean\n ) {\n metaobjects(\n type: $type\n first: $first\n after: $after\n query: $query\n sortKey: $sortKey\n reverse: $reverse\n ) {\n nodes {\n id\n displayName\n type\n handle\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n`\n\nexport interface SearchMetaobjectsInput {\n type: string\n first?: number\n after?: string\n query?: string\n /** Supports \"id\", \"type\", \"updated_at\", \"display_name\". */\n sortKey?: string\n reverse?: boolean\n}\n\nexport interface MetaobjectNode {\n id: string\n displayName: string\n type: string\n handle: string\n}\n\nexport interface SearchMetaobjectsOutput {\n items: MetaobjectNode[]\n pageInfo: {\n endCursor: string | null\n hasNextPage: boolean\n }\n}\n\ninterface QueryResponse {\n metaobjects: {\n nodes: MetaobjectNode[]\n pageInfo: SearchMetaobjectsOutput['pageInfo']\n }\n}\n\nexport class SearchMetaobjectsCommand extends Command<\n SearchMetaobjectsInput,\n SearchMetaobjectsOutput\n> {\n async execute(client: AdminApiClient): Promise<SearchMetaobjectsOutput> {\n const variables = {\n type: this.input.type,\n first: this.input.first ?? 200,\n after: this.input.after,\n query: this.input.query,\n sortKey: this.input.sortKey,\n reverse: this.input.reverse,\n }\n\n const {data, errors} = await client.request<QueryResponse>(QUERY, {variables})\n handleErrors(errors)\n if (!data) throw new Error('SearchMetaobjectsCommand: no data returned')\n\n return {items: data.metaobjects.nodes, pageInfo: data.metaobjects.pageInfo}\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
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("./SearchMetaobjectsCommand"), exports);
|
|
18
|
+
__exportStar(require("./GetMetaobjectCommand"), exports);
|
|
19
|
+
__exportStar(require("./ListBannersCommand"), exports);
|
|
20
|
+
__exportStar(require("./ListFAQsCommand"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/metaobjects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA0C;AAC1C,yDAAsC;AACtC,uDAAoC;AACpC,oDAAiC","sourcesContent":["export * from './SearchMetaobjectsCommand'\nexport * from './GetMetaobjectCommand'\nexport * from './ListBannersCommand'\nexport * from './ListFAQsCommand'\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,7 @@ export type { MoneyV2 } from './utils/money';
|
|
|
6
6
|
export * from './commands/customers';
|
|
7
7
|
export * from './commands/payments';
|
|
8
8
|
export * from './commands/menus';
|
|
9
|
+
export * from './commands/metaobjects';
|
|
9
10
|
export * from './commands/orders';
|
|
10
11
|
export * from './commands/collections';
|
|
12
|
+
export * from './commands/fulfillments';
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,8 @@ 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/metaobjects"), exports);
|
|
32
33
|
__exportStar(require("./commands/orders"), exports);
|
|
33
34
|
__exportStar(require("./commands/collections"), exports);
|
|
35
|
+
__exportStar(require("./commands/fulfillments"), exports);
|
|
34
36
|
//# 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;AAG1C,gCAAgC;AAChC,uDAAoC;AACpC,sDAAmC;AACnC,mDAAgC;AAChC,oDAAiC;AACjC,yDAAsC","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'\nexport * from './commands/collections'\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,yDAAsC;AACtC,oDAAiC;AACjC,yDAAsC;AACtC,0DAAuC","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/metaobjects'\nexport * from './commands/orders'\nexport * from './commands/collections'\nexport * from './commands/fulfillments'\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a Shopify rich_text_field JSON schema into an HTML string.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the legacy `@pintahub/shopify-api` richText helper so metaobject
|
|
5
|
+
* consumers (e.g. FAQs) keep producing identical HTML after migration.
|
|
6
|
+
*/
|
|
7
|
+
export declare const convertSchemaToHtml: (schema: any, scoped?: boolean | string) => string;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Converts a Shopify rich_text_field JSON schema into an HTML string.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors the legacy `@pintahub/shopify-api` richText helper so metaobject
|
|
6
|
+
* consumers (e.g. FAQs) keep producing identical HTML after migration.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.convertSchemaToHtml = void 0;
|
|
10
|
+
const convertSchemaToHtml = (schema, scoped = false) => {
|
|
11
|
+
if (typeof schema === 'string') {
|
|
12
|
+
schema = JSON.parse(schema);
|
|
13
|
+
}
|
|
14
|
+
let html = ``;
|
|
15
|
+
if (schema.type === 'root' && schema.children.length > 0) {
|
|
16
|
+
if (scoped) {
|
|
17
|
+
html += `
|
|
18
|
+
<div class="${scoped === true ? `rte` : scoped}">
|
|
19
|
+
${(0, exports.convertSchemaToHtml)(schema.children)}
|
|
20
|
+
</div>
|
|
21
|
+
`;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
html += (0, exports.convertSchemaToHtml)(schema.children);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
for (const el of schema) {
|
|
29
|
+
switch (el.type) {
|
|
30
|
+
case 'paragraph':
|
|
31
|
+
html += buildParagraph(el);
|
|
32
|
+
break;
|
|
33
|
+
case 'heading':
|
|
34
|
+
html += buildHeading(el);
|
|
35
|
+
break;
|
|
36
|
+
case 'list':
|
|
37
|
+
html += buildList(el);
|
|
38
|
+
break;
|
|
39
|
+
case 'list-item':
|
|
40
|
+
html += buildListItem(el);
|
|
41
|
+
break;
|
|
42
|
+
case 'link':
|
|
43
|
+
html += buildLink(el);
|
|
44
|
+
break;
|
|
45
|
+
case 'text':
|
|
46
|
+
html += buildText(el);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return html;
|
|
54
|
+
};
|
|
55
|
+
exports.convertSchemaToHtml = convertSchemaToHtml;
|
|
56
|
+
function buildParagraph(el) {
|
|
57
|
+
if (el?.children) {
|
|
58
|
+
return `<p>${(0, exports.convertSchemaToHtml)(el?.children)}</p>`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function buildHeading(el) {
|
|
62
|
+
if (el?.children) {
|
|
63
|
+
return `<h${el?.level}>${(0, exports.convertSchemaToHtml)(el?.children)}</h${el?.level}>`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function buildList(el) {
|
|
67
|
+
if (el?.children) {
|
|
68
|
+
if (el?.listType === 'ordered') {
|
|
69
|
+
return `<ol>${(0, exports.convertSchemaToHtml)(el?.children)}</ol>`;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return `<ul>${(0, exports.convertSchemaToHtml)(el?.children)}</ul>`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function buildListItem(el) {
|
|
77
|
+
if (el?.children) {
|
|
78
|
+
return `<li>${(0, exports.convertSchemaToHtml)(el?.children)}</li>`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function buildLink(el) {
|
|
82
|
+
return `<a href="${el?.url}" title="${el?.title}" target="${el?.target}">${(0, exports.convertSchemaToHtml)(el?.children)}</a>`;
|
|
83
|
+
}
|
|
84
|
+
function buildText(el) {
|
|
85
|
+
const { value } = el;
|
|
86
|
+
const withBreaks = (value || '').replace(/\n/g, '<br/>');
|
|
87
|
+
if (el?.bold) {
|
|
88
|
+
return `<strong>${withBreaks}</strong>`;
|
|
89
|
+
}
|
|
90
|
+
if (el?.italic) {
|
|
91
|
+
return `<em>${withBreaks}</em>`;
|
|
92
|
+
}
|
|
93
|
+
return withBreaks;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=richText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"richText.js","sourceRoot":"","sources":["../../src/utils/richText.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Converts a Shopify rich_text_field JSON schema into an HTML string.\n *\n * Mirrors the legacy `@pintahub/shopify-api` richText helper so metaobject\n * consumers (e.g. FAQs) keep producing identical HTML after migration.\n */\n\ntype RichTextNode = Record<string, any>\n\nexport const convertSchemaToHtml = (schema: any, scoped: boolean | string = false): string => {\n if (typeof schema === 'string') {\n schema = JSON.parse(schema)\n }\n\n let html = ``\n\n if (schema.type === 'root' && schema.children.length > 0) {\n if (scoped) {\n html += `\n <div class=\"${scoped === true ? `rte` : scoped}\">\n ${convertSchemaToHtml(schema.children)}\n </div>\n `\n } else {\n html += convertSchemaToHtml(schema.children)\n }\n } else {\n for (const el of schema as RichTextNode[]) {\n switch (el.type) {\n case 'paragraph':\n html += buildParagraph(el)\n break\n case 'heading':\n html += buildHeading(el)\n break\n case 'list':\n html += buildList(el)\n break\n case 'list-item':\n html += buildListItem(el)\n break\n case 'link':\n html += buildLink(el)\n break\n case 'text':\n html += buildText(el)\n break\n default:\n break\n }\n }\n }\n\n return html\n}\n\nfunction buildParagraph(el: RichTextNode) {\n if (el?.children) {\n return `<p>${convertSchemaToHtml(el?.children)}</p>`\n }\n}\n\nfunction buildHeading(el: RichTextNode) {\n if (el?.children) {\n return `<h${el?.level}>${convertSchemaToHtml(el?.children)}</h${el?.level}>`\n }\n}\n\nfunction buildList(el: RichTextNode) {\n if (el?.children) {\n if (el?.listType === 'ordered') {\n return `<ol>${convertSchemaToHtml(el?.children)}</ol>`\n } else {\n return `<ul>${convertSchemaToHtml(el?.children)}</ul>`\n }\n }\n}\n\nfunction buildListItem(el: RichTextNode) {\n if (el?.children) {\n return `<li>${convertSchemaToHtml(el?.children)}</li>`\n }\n}\n\nfunction buildLink(el: RichTextNode) {\n return `<a href=\"${el?.url}\" title=\"${el?.title}\" target=\"${\n el?.target\n }\">${convertSchemaToHtml(el?.children)}</a>`\n}\n\nfunction buildText(el: RichTextNode) {\n const {value} = el\n const withBreaks = (value || '').replace(/\\n/g, '<br/>')\n\n if (el?.bold) {\n return `<strong>${withBreaks}</strong>`\n }\n if (el?.italic) {\n return `<em>${withBreaks}</em>`\n }\n\n return withBreaks\n}\n"]}
|