n8n-nodes-shopify-custom 2.0.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 (139) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +68 -0
  3. package/dist/credentials/ShopifyCustomAdminApi.credentials.d.ts +10 -0
  4. package/dist/credentials/ShopifyCustomAdminApi.credentials.js +65 -0
  5. package/dist/credentials/ShopifyCustomAdminApi.credentials.js.map +1 -0
  6. package/dist/icons/shopify.dark.svg +12 -0
  7. package/dist/icons/shopify.svg +12 -0
  8. package/dist/nodes/ShopifyCustom/ShopifyCustom.node.d.ts +15 -0
  9. package/dist/nodes/ShopifyCustom/ShopifyCustom.node.js +358 -0
  10. package/dist/nodes/ShopifyCustom/ShopifyCustom.node.js.map +1 -0
  11. package/dist/nodes/ShopifyCustom/ShopifyCustom.node.json +18 -0
  12. package/dist/nodes/ShopifyCustom/config/operations/collection.d.ts +2 -0
  13. package/dist/nodes/ShopifyCustom/config/operations/collection.js +306 -0
  14. package/dist/nodes/ShopifyCustom/config/operations/collection.js.map +1 -0
  15. package/dist/nodes/ShopifyCustom/config/operations/common.d.ts +13 -0
  16. package/dist/nodes/ShopifyCustom/config/operations/common.js +222 -0
  17. package/dist/nodes/ShopifyCustom/config/operations/common.js.map +1 -0
  18. package/dist/nodes/ShopifyCustom/config/operations/customer.d.ts +2 -0
  19. package/dist/nodes/ShopifyCustom/config/operations/customer.js +107 -0
  20. package/dist/nodes/ShopifyCustom/config/operations/customer.js.map +1 -0
  21. package/dist/nodes/ShopifyCustom/config/operations/draftOrder.d.ts +2 -0
  22. package/dist/nodes/ShopifyCustom/config/operations/draftOrder.js +118 -0
  23. package/dist/nodes/ShopifyCustom/config/operations/draftOrder.js.map +1 -0
  24. package/dist/nodes/ShopifyCustom/config/operations/index.d.ts +7 -0
  25. package/dist/nodes/ShopifyCustom/config/operations/index.js +48 -0
  26. package/dist/nodes/ShopifyCustom/config/operations/index.js.map +1 -0
  27. package/dist/nodes/ShopifyCustom/config/operations/metafieldDefinition.d.ts +2 -0
  28. package/dist/nodes/ShopifyCustom/config/operations/metafieldDefinition.js +192 -0
  29. package/dist/nodes/ShopifyCustom/config/operations/metafieldDefinition.js.map +1 -0
  30. package/dist/nodes/ShopifyCustom/config/operations/metafieldValue.d.ts +2 -0
  31. package/dist/nodes/ShopifyCustom/config/operations/metafieldValue.js +125 -0
  32. package/dist/nodes/ShopifyCustom/config/operations/metafieldValue.js.map +1 -0
  33. package/dist/nodes/ShopifyCustom/config/operations/metaobject.d.ts +2 -0
  34. package/dist/nodes/ShopifyCustom/config/operations/metaobject.js +198 -0
  35. package/dist/nodes/ShopifyCustom/config/operations/metaobject.js.map +1 -0
  36. package/dist/nodes/ShopifyCustom/config/operations/order.d.ts +2 -0
  37. package/dist/nodes/ShopifyCustom/config/operations/order.js +111 -0
  38. package/dist/nodes/ShopifyCustom/config/operations/order.js.map +1 -0
  39. package/dist/nodes/ShopifyCustom/config/operations/product.d.ts +2 -0
  40. package/dist/nodes/ShopifyCustom/config/operations/product.js +118 -0
  41. package/dist/nodes/ShopifyCustom/config/operations/product.js.map +1 -0
  42. package/dist/nodes/ShopifyCustom/config/operations/productVariant.d.ts +2 -0
  43. package/dist/nodes/ShopifyCustom/config/operations/productVariant.js +109 -0
  44. package/dist/nodes/ShopifyCustom/config/operations/productVariant.js.map +1 -0
  45. package/dist/nodes/ShopifyCustom/config/operations/service.d.ts +2 -0
  46. package/dist/nodes/ShopifyCustom/config/operations/service.js +14 -0
  47. package/dist/nodes/ShopifyCustom/config/operations/service.js.map +1 -0
  48. package/dist/nodes/ShopifyCustom/config/operations/types.d.ts +13 -0
  49. package/dist/nodes/ShopifyCustom/config/operations/types.js +3 -0
  50. package/dist/nodes/ShopifyCustom/config/operations/types.js.map +1 -0
  51. package/dist/nodes/ShopifyCustom/config/resources.d.ts +9 -0
  52. package/dist/nodes/ShopifyCustom/config/resources.js +62 -0
  53. package/dist/nodes/ShopifyCustom/config/resources.js.map +1 -0
  54. package/dist/nodes/ShopifyCustom/shared/collections/ruleConditions.d.ts +17 -0
  55. package/dist/nodes/ShopifyCustom/shared/collections/ruleConditions.js +281 -0
  56. package/dist/nodes/ShopifyCustom/shared/collections/ruleConditions.js.map +1 -0
  57. package/dist/nodes/ShopifyCustom/shared/errors.d.ts +8 -0
  58. package/dist/nodes/ShopifyCustom/shared/errors.js +37 -0
  59. package/dist/nodes/ShopifyCustom/shared/errors.js.map +1 -0
  60. package/dist/nodes/ShopifyCustom/shared/graphql/client.d.ts +26 -0
  61. package/dist/nodes/ShopifyCustom/shared/graphql/client.js +73 -0
  62. package/dist/nodes/ShopifyCustom/shared/graphql/client.js.map +1 -0
  63. package/dist/nodes/ShopifyCustom/shared/graphql/registry.d.ts +17 -0
  64. package/dist/nodes/ShopifyCustom/shared/graphql/registry.js +962 -0
  65. package/dist/nodes/ShopifyCustom/shared/graphql/registry.js.map +1 -0
  66. package/dist/nodes/ShopifyCustom/shared/graphql/templates/collection.d.ts +5 -0
  67. package/dist/nodes/ShopifyCustom/shared/graphql/templates/collection.js +99 -0
  68. package/dist/nodes/ShopifyCustom/shared/graphql/templates/collection.js.map +1 -0
  69. package/dist/nodes/ShopifyCustom/shared/graphql/templates/commonFragments.d.ts +7 -0
  70. package/dist/nodes/ShopifyCustom/shared/graphql/templates/commonFragments.js +69 -0
  71. package/dist/nodes/ShopifyCustom/shared/graphql/templates/commonFragments.js.map +1 -0
  72. package/dist/nodes/ShopifyCustom/shared/graphql/templates/customer.d.ts +5 -0
  73. package/dist/nodes/ShopifyCustom/shared/graphql/templates/customer.js +94 -0
  74. package/dist/nodes/ShopifyCustom/shared/graphql/templates/customer.js.map +1 -0
  75. package/dist/nodes/ShopifyCustom/shared/graphql/templates/draftOrder.d.ts +5 -0
  76. package/dist/nodes/ShopifyCustom/shared/graphql/templates/draftOrder.js +91 -0
  77. package/dist/nodes/ShopifyCustom/shared/graphql/templates/draftOrder.js.map +1 -0
  78. package/dist/nodes/ShopifyCustom/shared/graphql/templates/metafields.d.ts +10 -0
  79. package/dist/nodes/ShopifyCustom/shared/graphql/templates/metafields.js +223 -0
  80. package/dist/nodes/ShopifyCustom/shared/graphql/templates/metafields.js.map +1 -0
  81. package/dist/nodes/ShopifyCustom/shared/graphql/templates/metaobject.d.ts +5 -0
  82. package/dist/nodes/ShopifyCustom/shared/graphql/templates/metaobject.js +92 -0
  83. package/dist/nodes/ShopifyCustom/shared/graphql/templates/metaobject.js.map +1 -0
  84. package/dist/nodes/ShopifyCustom/shared/graphql/templates/order.d.ts +5 -0
  85. package/dist/nodes/ShopifyCustom/shared/graphql/templates/order.js +95 -0
  86. package/dist/nodes/ShopifyCustom/shared/graphql/templates/order.js.map +1 -0
  87. package/dist/nodes/ShopifyCustom/shared/graphql/templates/product.d.ts +5 -0
  88. package/dist/nodes/ShopifyCustom/shared/graphql/templates/product.js +107 -0
  89. package/dist/nodes/ShopifyCustom/shared/graphql/templates/product.js.map +1 -0
  90. package/dist/nodes/ShopifyCustom/shared/graphql/templates/productVariant.d.ts +5 -0
  91. package/dist/nodes/ShopifyCustom/shared/graphql/templates/productVariant.js +99 -0
  92. package/dist/nodes/ShopifyCustom/shared/graphql/templates/productVariant.js.map +1 -0
  93. package/dist/nodes/ShopifyCustom/shared/metafields/definitions.d.ts +24 -0
  94. package/dist/nodes/ShopifyCustom/shared/metafields/definitions.js +65 -0
  95. package/dist/nodes/ShopifyCustom/shared/metafields/definitions.js.map +1 -0
  96. package/dist/nodes/ShopifyCustom/shared/metafields/ownerTypeMap.d.ts +3 -0
  97. package/dist/nodes/ShopifyCustom/shared/metafields/ownerTypeMap.js +19 -0
  98. package/dist/nodes/ShopifyCustom/shared/metafields/ownerTypeMap.js.map +1 -0
  99. package/dist/nodes/ShopifyCustom/shared/metafields/referenceLoaders.d.ts +2 -0
  100. package/dist/nodes/ShopifyCustom/shared/metafields/referenceLoaders.js +122 -0
  101. package/dist/nodes/ShopifyCustom/shared/metafields/referenceLoaders.js.map +1 -0
  102. package/dist/nodes/ShopifyCustom/shared/metafields/types.d.ts +17 -0
  103. package/dist/nodes/ShopifyCustom/shared/metafields/types.js +57 -0
  104. package/dist/nodes/ShopifyCustom/shared/metafields/types.js.map +1 -0
  105. package/dist/nodes/ShopifyCustom/shared/metafields/uiFactory.d.ts +2 -0
  106. package/dist/nodes/ShopifyCustom/shared/metafields/uiFactory.js +395 -0
  107. package/dist/nodes/ShopifyCustom/shared/metafields/uiFactory.js.map +1 -0
  108. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/constants.d.ts +20 -0
  109. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/constants.js +61 -0
  110. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/constants.js.map +1 -0
  111. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/index.d.ts +3 -0
  112. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/index.js +43 -0
  113. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/index.js.map +1 -0
  114. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/list.d.ts +2 -0
  115. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/list.js +103 -0
  116. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/list.js.map +1 -0
  117. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/reference.d.ts +2 -0
  118. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/reference.js +80 -0
  119. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/reference.js.map +1 -0
  120. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/scalar.d.ts +2 -0
  121. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/scalar.js +110 -0
  122. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/scalar.js.map +1 -0
  123. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/structured.d.ts +2 -0
  124. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/structured.js +64 -0
  125. package/dist/nodes/ShopifyCustom/shared/metafields/valueAdapters/structured.js.map +1 -0
  126. package/dist/nodes/ShopifyCustom/shared/metafields/valuePayload.d.ts +3 -0
  127. package/dist/nodes/ShopifyCustom/shared/metafields/valuePayload.js +89 -0
  128. package/dist/nodes/ShopifyCustom/shared/metafields/valuePayload.js.map +1 -0
  129. package/dist/nodes/ShopifyCustom/shared/output/outputMapper.d.ts +3 -0
  130. package/dist/nodes/ShopifyCustom/shared/output/outputMapper.js +82 -0
  131. package/dist/nodes/ShopifyCustom/shared/output/outputMapper.js.map +1 -0
  132. package/dist/nodes/ShopifyCustom/shared/themes/templateSuffixes.d.ts +2 -0
  133. package/dist/nodes/ShopifyCustom/shared/themes/templateSuffixes.js +83 -0
  134. package/dist/nodes/ShopifyCustom/shared/themes/templateSuffixes.js.map +1 -0
  135. package/dist/nodes/ShopifyCustom/shopify.dark.svg +12 -0
  136. package/dist/nodes/ShopifyCustom/shopify.svg +12 -0
  137. package/dist/package.json +62 -0
  138. package/dist/tsconfig.tsbuildinfo +1 -0
  139. package/package.json +62 -0
@@ -0,0 +1,2 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export declare function serializeReferenceMetafieldValue(type: string, item: IDataObject): string | undefined;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeReferenceMetafieldValue = serializeReferenceMetafieldValue;
4
+ const constants_1 = require("./constants");
5
+ function isObject(value) {
6
+ return !!value && typeof value === 'object' && !Array.isArray(value);
7
+ }
8
+ function parseManualIds(value) {
9
+ if (value === undefined || value === null) {
10
+ return [];
11
+ }
12
+ return String(value)
13
+ .split(/[\n,]/g)
14
+ .map((item) => item.trim())
15
+ .filter((item) => item.length > 0);
16
+ }
17
+ function parseJsonStringArray(value) {
18
+ if (value === undefined || value === null || value === '') {
19
+ return [];
20
+ }
21
+ const normalize = (items) => items
22
+ .map((item) => String(item !== null && item !== void 0 ? item : '').trim())
23
+ .filter((item) => item.length > 0);
24
+ if (Array.isArray(value)) {
25
+ return normalize(value);
26
+ }
27
+ if (typeof value === 'string') {
28
+ const trimmed = value.trim();
29
+ if (trimmed.length === 0) {
30
+ return [];
31
+ }
32
+ let parsed;
33
+ try {
34
+ parsed = JSON.parse(trimmed);
35
+ }
36
+ catch {
37
+ throw new Error('Reference list values must be a valid JSON array');
38
+ }
39
+ if (!Array.isArray(parsed)) {
40
+ throw new Error('Reference list values must be a JSON array');
41
+ }
42
+ return normalize(parsed);
43
+ }
44
+ throw new Error('Reference list values must be a JSON array');
45
+ }
46
+ function parseReferenceListItems(value) {
47
+ if (!isObject(value) || !Array.isArray(value.items)) {
48
+ return [];
49
+ }
50
+ return value.items
51
+ .filter(isObject)
52
+ .map((entry) => { var _a; return String((_a = entry.gid) !== null && _a !== void 0 ? _a : '').trim(); })
53
+ .filter((gid) => gid.length > 0);
54
+ }
55
+ function serializeReferenceMetafieldValue(type, item) {
56
+ if ((0, constants_1.isTypeIn)(type, constants_1.REFERENCE_TYPES)) {
57
+ const directValue = (typeof item.referenceGid === 'string' && item.referenceGid.trim()) ||
58
+ (typeof item.referenceId === 'string' && item.referenceId.trim()) ||
59
+ parseManualIds(item.manualReferenceIds)[0];
60
+ if (!directValue) {
61
+ return undefined;
62
+ }
63
+ return String(directValue);
64
+ }
65
+ if ((0, constants_1.isTypeIn)(type, constants_1.LIST_REFERENCE_TYPES)) {
66
+ const jsonArrayIds = parseJsonStringArray(item.listStringArray);
67
+ const listItems = parseReferenceListItems(item.listReferenceItems);
68
+ const selectedIds = Array.isArray(item.referenceIds)
69
+ ? item.referenceIds.map((value) => String(value))
70
+ : [];
71
+ const manualIds = parseManualIds(item.manualReferenceIds);
72
+ const uniqueIds = [...new Set([...jsonArrayIds, ...listItems, ...selectedIds, ...manualIds])];
73
+ if (uniqueIds.length === 0) {
74
+ return undefined;
75
+ }
76
+ return JSON.stringify(uniqueIds);
77
+ }
78
+ return undefined;
79
+ }
80
+ //# sourceMappingURL=reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../../../../../nodes/ShopifyCustom/shared/metafields/valueAdapters/reference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export declare function serializeScalarMetafieldValue(type: string, item: IDataObject): string | undefined;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeScalarMetafieldValue = serializeScalarMetafieldValue;
4
+ const constants_1 = require("./constants");
5
+ function isEmpty(value) {
6
+ return value === undefined || value === null || value === '';
7
+ }
8
+ function asIsoDate(value) {
9
+ const date = new Date(value);
10
+ if (Number.isNaN(date.getTime())) {
11
+ throw new Error(`Invalid date value: ${value}`);
12
+ }
13
+ return date.toISOString().slice(0, 10);
14
+ }
15
+ function asIsoDateTime(value) {
16
+ const date = new Date(value);
17
+ if (Number.isNaN(date.getTime())) {
18
+ throw new Error(`Invalid date time value: ${value}`);
19
+ }
20
+ return date.toISOString();
21
+ }
22
+ function decodeHtmlEntities(value) {
23
+ return value
24
+ .replace(/ /gi, ' ')
25
+ .replace(/&/gi, '&')
26
+ .replace(/&lt;/gi, '<')
27
+ .replace(/&gt;/gi, '>')
28
+ .replace(/&quot;/gi, '"')
29
+ .replace(/&#39;/gi, "'");
30
+ }
31
+ function htmlToTextLines(html) {
32
+ const withLineBreaks = html
33
+ .replace(/<br\s*\/?>/gi, '\n')
34
+ .replace(/<\/(p|div|li|h1|h2|h3|h4|h5|h6)>/gi, '\n');
35
+ const withoutTags = withLineBreaks.replace(/<[^>]*>/g, '');
36
+ return decodeHtmlEntities(withoutTags)
37
+ .split(/\r?\n/g)
38
+ .map((line) => line.trim())
39
+ .filter((line) => line.length > 0);
40
+ }
41
+ function toRichTextDocumentFromHtml(html) {
42
+ const lines = htmlToTextLines(html);
43
+ const children = (lines.length > 0 ? lines : ['']).map((line) => ({
44
+ type: 'paragraph',
45
+ children: [
46
+ {
47
+ type: 'text',
48
+ value: line,
49
+ },
50
+ ],
51
+ }));
52
+ return JSON.stringify({
53
+ type: 'root',
54
+ children,
55
+ });
56
+ }
57
+ function serializeScalarMetafieldValue(type, item) {
58
+ if ((0, constants_1.isTypeIn)(type, constants_1.BOOLEAN_TYPES)) {
59
+ return String(Boolean(item.booleanValue));
60
+ }
61
+ if ((0, constants_1.isTypeIn)(type, constants_1.INTEGER_TYPES)) {
62
+ if (isEmpty(item.integerValue)) {
63
+ return undefined;
64
+ }
65
+ return String(Math.trunc(Number(item.integerValue)));
66
+ }
67
+ if ((0, constants_1.isTypeIn)(type, constants_1.NUMBER_TYPES)) {
68
+ if (isEmpty(item.numberValue)) {
69
+ return undefined;
70
+ }
71
+ return String(Number(item.numberValue));
72
+ }
73
+ if ((0, constants_1.isTypeIn)(type, constants_1.TEXT_TYPES)) {
74
+ if (type === 'email' && !isEmpty(item.emailValue)) {
75
+ return String(item.emailValue);
76
+ }
77
+ if (isEmpty(item.textValue)) {
78
+ return undefined;
79
+ }
80
+ return String(item.textValue);
81
+ }
82
+ if ((0, constants_1.isTypeIn)(type, constants_1.DATE_TYPES)) {
83
+ if (isEmpty(item.dateValue)) {
84
+ return undefined;
85
+ }
86
+ return asIsoDate(String(item.dateValue));
87
+ }
88
+ if ((0, constants_1.isTypeIn)(type, constants_1.DATE_TIME_TYPES)) {
89
+ if (isEmpty(item.dateTimeValue)) {
90
+ return undefined;
91
+ }
92
+ return asIsoDateTime(String(item.dateTimeValue));
93
+ }
94
+ if ((0, constants_1.isTypeIn)(type, constants_1.JSON_TYPES)) {
95
+ if (type === 'rich_text_field' && !isEmpty(item.richTextHtml)) {
96
+ return toRichTextDocumentFromHtml(String(item.richTextHtml));
97
+ }
98
+ if (isEmpty(item.jsonValue)) {
99
+ return undefined;
100
+ }
101
+ const text = String(item.jsonValue);
102
+ JSON.parse(text);
103
+ return text;
104
+ }
105
+ if (isEmpty(item.textValue)) {
106
+ return undefined;
107
+ }
108
+ return String(item.textValue);
109
+ }
110
+ //# sourceMappingURL=scalar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../../../nodes/ShopifyCustom/shared/metafields/valueAdapters/scalar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export declare function serializeStructuredMetafieldValue(type: string, item: IDataObject): string | undefined;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeStructuredMetafieldValue = serializeStructuredMetafieldValue;
4
+ const constants_1 = require("./constants");
5
+ function isEmpty(value) {
6
+ return value === undefined || value === null || value === '';
7
+ }
8
+ function ensureNumber(value, fieldName) {
9
+ const parsed = Number(value);
10
+ if (Number.isNaN(parsed)) {
11
+ throw new Error(`"${fieldName}" must be a number`);
12
+ }
13
+ return parsed;
14
+ }
15
+ function serializeStructuredMetafieldValue(type, item) {
16
+ if ((0, constants_1.isTypeIn)(type, constants_1.MONEY_TYPES)) {
17
+ if (isEmpty(item.moneyAmount) || isEmpty(item.moneyCurrencyCode)) {
18
+ return undefined;
19
+ }
20
+ return JSON.stringify({
21
+ amount: String(item.moneyAmount),
22
+ currency_code: String(item.moneyCurrencyCode).toUpperCase(),
23
+ });
24
+ }
25
+ if ((0, constants_1.isTypeIn)(type, constants_1.RATING_TYPES)) {
26
+ if (isEmpty(item.ratingValue) || isEmpty(item.ratingScaleMin) || isEmpty(item.ratingScaleMax)) {
27
+ return undefined;
28
+ }
29
+ return JSON.stringify({
30
+ value: String(item.ratingValue),
31
+ scale_min: String(item.ratingScaleMin),
32
+ scale_max: String(item.ratingScaleMax),
33
+ });
34
+ }
35
+ if ((0, constants_1.isTypeIn)(type, constants_1.DIMENSION_TYPES)) {
36
+ if (isEmpty(item.dimensionValue) || isEmpty(item.dimensionUnit)) {
37
+ return undefined;
38
+ }
39
+ return JSON.stringify({
40
+ value: String(ensureNumber(item.dimensionValue, 'Dimension Value')),
41
+ unit: String(item.dimensionUnit),
42
+ });
43
+ }
44
+ if ((0, constants_1.isTypeIn)(type, constants_1.VOLUME_TYPES)) {
45
+ if (isEmpty(item.volumeValue) || isEmpty(item.volumeUnit)) {
46
+ return undefined;
47
+ }
48
+ return JSON.stringify({
49
+ value: String(ensureNumber(item.volumeValue, 'Volume Value')),
50
+ unit: String(item.volumeUnit),
51
+ });
52
+ }
53
+ if ((0, constants_1.isTypeIn)(type, constants_1.WEIGHT_TYPES)) {
54
+ if (isEmpty(item.weightValue) || isEmpty(item.weightUnit)) {
55
+ return undefined;
56
+ }
57
+ return JSON.stringify({
58
+ value: String(ensureNumber(item.weightValue, 'Weight Value')),
59
+ unit: String(item.weightUnit),
60
+ });
61
+ }
62
+ return undefined;
63
+ }
64
+ //# sourceMappingURL=structured.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured.js","sourceRoot":"","sources":["../../../../../../nodes/ShopifyCustom/shared/metafields/valueAdapters/structured.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export declare function buildMetafieldsSetPayload(nodeName: string, ownerId: string, collectionValue: unknown): IDataObject[];
3
+ export declare function buildMetafieldsDeletePayload(nodeName: string, ownerId: string, collectionValue: unknown): IDataObject[];
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildMetafieldsSetPayload = buildMetafieldsSetPayload;
4
+ exports.buildMetafieldsDeletePayload = buildMetafieldsDeletePayload;
5
+ const definitions_1 = require("./definitions");
6
+ const valueAdapters_1 = require("./valueAdapters");
7
+ function isObject(value) {
8
+ return !!value && typeof value === 'object' && !Array.isArray(value);
9
+ }
10
+ function asString(value) {
11
+ if (value === undefined || value === null) {
12
+ return undefined;
13
+ }
14
+ const normalized = String(value).trim();
15
+ return normalized.length > 0 ? normalized : undefined;
16
+ }
17
+ function parseItems(source) {
18
+ if (!isObject(source) || !Array.isArray(source.items)) {
19
+ return [];
20
+ }
21
+ return source.items.filter(isObject);
22
+ }
23
+ function resolveDefinition(item) {
24
+ const definitionEncoded = asString(item.definition);
25
+ if (!definitionEncoded) {
26
+ return null;
27
+ }
28
+ return (0, definitions_1.decodeDefinitionOptionValue)(definitionEncoded);
29
+ }
30
+ function resolveType(item, definition) {
31
+ if (definition) {
32
+ return definition.type;
33
+ }
34
+ const typeFromInput = asString(item.metafieldType);
35
+ if (!typeFromInput) {
36
+ throw new Error('Metafield type is required');
37
+ }
38
+ return typeFromInput;
39
+ }
40
+ function buildMetafieldsSetPayload(nodeName, ownerId, collectionValue) {
41
+ const items = parseItems(collectionValue);
42
+ const payload = [];
43
+ for (const item of items) {
44
+ const definition = resolveDefinition(item);
45
+ if (!definition) {
46
+ throw new Error(`[${nodeName}] Metafield definition is required`);
47
+ }
48
+ const namespace = definition.namespace;
49
+ const key = definition.key;
50
+ if (!namespace || !key) {
51
+ throw new Error(`[${nodeName}] Metafield namespace and key are required`);
52
+ }
53
+ const type = resolveType(item, definition);
54
+ const value = (0, valueAdapters_1.serializeMetafieldValue)(type, item);
55
+ if (value === undefined) {
56
+ continue;
57
+ }
58
+ payload.push({
59
+ ownerId,
60
+ namespace,
61
+ key,
62
+ type,
63
+ value,
64
+ });
65
+ }
66
+ return payload;
67
+ }
68
+ function buildMetafieldsDeletePayload(nodeName, ownerId, collectionValue) {
69
+ const items = parseItems(collectionValue);
70
+ const payload = [];
71
+ for (const item of items) {
72
+ const definition = resolveDefinition(item);
73
+ if (!definition) {
74
+ throw new Error(`[${nodeName}] Metafield definition is required`);
75
+ }
76
+ const namespace = definition.namespace;
77
+ const key = definition.key;
78
+ if (!namespace || !key) {
79
+ continue;
80
+ }
81
+ payload.push({
82
+ ownerId,
83
+ namespace,
84
+ key,
85
+ });
86
+ }
87
+ return payload;
88
+ }
89
+ //# sourceMappingURL=valuePayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valuePayload.js","sourceRoot":"","sources":["../../../../../nodes/ShopifyCustom/shared/metafields/valuePayload.ts"],"names":[],"mappings":";;AAkDA,8DAqCC;AAED,oEA6BC;AApHD,+CAA4D;AAC5D,mDAA0D;AAE1D,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAiB;IAO3C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,IAAA,yCAA2B,EAAC,iBAAiB,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,IAAiB,EAAE,UAAgD;IACvF,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,UAAU,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,aAAa,CAAC;AACtB,CAAC;AAED,SAAgB,yBAAyB,CACxC,QAAgB,EAChB,OAAe,EACf,eAAwB;IAExB,MAAM,KAAK,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,oCAAoC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACvC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAE3B,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,4CAA4C,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAA,uCAAuB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS;QACV,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACZ,OAAO;YACP,SAAS;YACT,GAAG;YACH,IAAI;YACJ,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAgB,4BAA4B,CAC3C,QAAgB,EAChB,OAAe,EACf,eAAwB;IAExB,MAAM,KAAK,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,oCAAoC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACvC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAE3B,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,SAAS;QACV,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACZ,OAAO;YACP,SAAS;YACT,GAAG;SACH,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export type ShopifyOutputMode = 'simplified' | 'raw' | 'selectedFields';
3
+ export declare function mapOutputItems(mode: ShopifyOutputMode, simplifiedPayload: unknown, rawPayload: IDataObject, selectedFieldsRaw: string): IDataObject[];
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapOutputItems = mapOutputItems;
4
+ function isObject(value) {
5
+ return !!value && typeof value === 'object' && !Array.isArray(value);
6
+ }
7
+ function getByPath(source, path) {
8
+ if (!path) {
9
+ return undefined;
10
+ }
11
+ const chunks = path.split('.').filter((chunk) => chunk.length > 0);
12
+ let current = source;
13
+ for (const chunk of chunks) {
14
+ if (!isObject(current) && !Array.isArray(current)) {
15
+ return undefined;
16
+ }
17
+ if (Array.isArray(current)) {
18
+ const index = Number(chunk);
19
+ if (Number.isNaN(index)) {
20
+ return undefined;
21
+ }
22
+ current = current[index];
23
+ continue;
24
+ }
25
+ current = current[chunk];
26
+ }
27
+ return current;
28
+ }
29
+ function setByPath(target, path, value) {
30
+ const chunks = path.split('.').filter((chunk) => chunk.length > 0);
31
+ if (chunks.length === 0) {
32
+ return;
33
+ }
34
+ let current = target;
35
+ for (let index = 0; index < chunks.length - 1; index += 1) {
36
+ const chunk = chunks[index];
37
+ if (!isObject(current[chunk])) {
38
+ current[chunk] = {};
39
+ }
40
+ current = current[chunk];
41
+ }
42
+ current[chunks[chunks.length - 1]] = value;
43
+ }
44
+ function normalizeToArray(payload) {
45
+ if (Array.isArray(payload)) {
46
+ return payload.filter(isObject);
47
+ }
48
+ if (isObject(payload)) {
49
+ return [payload];
50
+ }
51
+ return [];
52
+ }
53
+ function toSelectedFields(items, selectedFieldsRaw) {
54
+ const fields = selectedFieldsRaw
55
+ .split(',')
56
+ .map((field) => field.trim())
57
+ .filter((field) => field.length > 0);
58
+ if (fields.length === 0) {
59
+ return items;
60
+ }
61
+ return items.map((item) => {
62
+ const selectedItem = {};
63
+ for (const field of fields) {
64
+ const value = getByPath(item, field);
65
+ if (value !== undefined) {
66
+ setByPath(selectedItem, field, value);
67
+ }
68
+ }
69
+ return selectedItem;
70
+ });
71
+ }
72
+ function mapOutputItems(mode, simplifiedPayload, rawPayload, selectedFieldsRaw) {
73
+ if (mode === 'raw') {
74
+ return [rawPayload];
75
+ }
76
+ const simplifiedItems = normalizeToArray(simplifiedPayload);
77
+ if (mode === 'selectedFields') {
78
+ return toSelectedFields(simplifiedItems, selectedFieldsRaw);
79
+ }
80
+ return simplifiedItems.length > 0 ? simplifiedItems : [rawPayload];
81
+ }
82
+ //# sourceMappingURL=outputMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputMapper.js","sourceRoot":"","sources":["../../../../../nodes/ShopifyCustom/shared/output/outputMapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow';
2
+ export declare function getTemplateSuffixOptions(context: ILoadOptionsFunctions, templateName: string): Promise<INodePropertyOptions[]>;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTemplateSuffixOptions = getTemplateSuffixOptions;
4
+ const client_1 = require("../graphql/client");
5
+ const THEME_TEMPLATE_FILES_QUERY = `
6
+ query ThemeTemplateFiles($themeFirst: Int!, $filesFirst: Int!) {
7
+ themes(first: $themeFirst, roles: [MAIN]) {
8
+ nodes {
9
+ id
10
+ name
11
+ files(first: $filesFirst) {
12
+ nodes {
13
+ filename
14
+ }
15
+ }
16
+ }
17
+ }
18
+ }
19
+ `;
20
+ const CACHE_TTL_MS = 2 * 60 * 1000;
21
+ const templateSuffixCache = new Map();
22
+ function escapeRegex(value) {
23
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
24
+ }
25
+ function toSuffixLabel(value) {
26
+ return value
27
+ .split(/[._-]/g)
28
+ .filter((chunk) => chunk.length > 0)
29
+ .map((chunk) => chunk[0].toUpperCase() + chunk.slice(1))
30
+ .join(' ');
31
+ }
32
+ function parseTemplateSuffix(filename, templateName) {
33
+ var _a;
34
+ const matcher = new RegExp(`^templates/${escapeRegex(templateName)}(?:\\.(.+))?\\.json$`);
35
+ const match = filename.match(matcher);
36
+ if (!match) {
37
+ return undefined;
38
+ }
39
+ return (_a = match[1]) !== null && _a !== void 0 ? _a : '';
40
+ }
41
+ async function getTemplateSuffixOptions(context, templateName) {
42
+ var _a, _b, _c, _d, _e, _f;
43
+ const cacheKey = templateName;
44
+ const cached = templateSuffixCache.get(cacheKey);
45
+ if (cached && cached.expiresAt > Date.now()) {
46
+ return cached.data;
47
+ }
48
+ const response = await (0, client_1.executeShopifyGraphql)(context, THEME_TEMPLATE_FILES_QUERY, {
49
+ themeFirst: 1,
50
+ filesFirst: 250,
51
+ }, 0);
52
+ (0, client_1.assertNoGraphQLErrors)(context, response, 0);
53
+ const theme = (_c = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.themes) === null || _b === void 0 ? void 0 : _b.nodes) === null || _c === void 0 ? void 0 : _c[0];
54
+ const files = (_e = (_d = theme === null || theme === void 0 ? void 0 : theme.files) === null || _d === void 0 ? void 0 : _d.nodes) !== null && _e !== void 0 ? _e : [];
55
+ const suffixSet = new Set();
56
+ for (const file of files) {
57
+ const suffix = parseTemplateSuffix(String((_f = file.filename) !== null && _f !== void 0 ? _f : ''), templateName);
58
+ if (suffix !== undefined) {
59
+ suffixSet.add(suffix);
60
+ }
61
+ }
62
+ const dynamicOptions = Array.from(suffixSet)
63
+ .filter((suffix) => suffix.length > 0)
64
+ .sort((a, b) => a.localeCompare(b))
65
+ .map((suffix) => ({
66
+ name: toSuffixLabel(suffix),
67
+ value: suffix,
68
+ }));
69
+ const options = [
70
+ {
71
+ name: 'Default',
72
+ value: '',
73
+ description: 'Use the default template',
74
+ },
75
+ ...dynamicOptions,
76
+ ];
77
+ templateSuffixCache.set(cacheKey, {
78
+ expiresAt: Date.now() + CACHE_TTL_MS,
79
+ data: options,
80
+ });
81
+ return options;
82
+ }
83
+ //# sourceMappingURL=templateSuffixes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateSuffixes.js","sourceRoot":"","sources":["../../../../../nodes/ShopifyCustom/shared/themes/templateSuffixes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ <svg width="150" height="170" viewBox="0 0 150 170" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_45_2)">
3
+ <path d="M131.5 32.8C131.4 31.9 130.6 31.5 130 31.5C129.4 31.5 116.3 30.5 116.3 30.5C116.3 30.5 107.2 21.4 106.1 20.5C105.1 19.5 103.2 19.8 102.4 20C102.3 20 100.4 20.6 97.3 21.6C94.2 12.7 88.9 4.60001 79.4 4.60001H78.5C75.9 1.20001 72.5 -0.399994 69.7 -0.399994C47.7 -0.399994 37.1 27.1 33.8 41.1C25.2 43.8 19.1 45.6 18.4 45.9C13.6 47.4 13.5 47.5 12.9 52C12.4 55.4 -0.0999756 152.1 -0.0999756 152.1L97.2 170.3L150 158.9C150.1 158.7 131.6 33.7 131.5 32.8ZM91.9 23C89.5 23.7 86.6 24.6 83.7 25.6V23.8C83.7 18.4 83 14 81.7 10.5C86.7 11.1 89.8 16.6 91.9 23ZM75.6 11.6C76.9 15 77.8 19.8 77.8 26.4V27.4C72.4 29.1 66.7 30.8 60.8 32.7C64.1 20.1 70.4 13.9 75.6 11.6ZM69.2 5.39999C70.2 5.39999 71.2 5.79999 72 6.39999C64.9 9.69999 57.4 18 54.3 34.8C49.6 36.3 45.1 37.6 40.8 39C44.4 26.2 53.4 5.39999 69.2 5.39999Z" fill="white"/>
4
+ <path d="M130 31.3C129.4 31.3 116.3 30.3 116.3 30.3C116.3 30.3 107.2 21.2 106.1 20.3C105.7 19.9 105.2 19.7 104.8 19.7L97.5 170.3L150.3 158.9C150.3 158.9 131.8 33.7 131.7 32.8C131.3 31.9 130.6 31.5 130 31.3Z" fill="#8E3E3F"/>
5
+ <path d="M79.4 60.5L73 79.8C73 79.8 67.2 76.7 60.3 76.7C50 76.7 49.5 83.2 49.5 84.8C49.5 93.6 72.5 97 72.5 117.7C72.5 134 62.2 144.5 48.3 144.5C31.5 144.5 23.1 134.1 23.1 134.1L27.6 119.3C27.6 119.3 36.4 126.9 43.8 126.9C48.7 126.9 50.7 123.1 50.7 120.3C50.7 108.8 31.9 108.3 31.9 89.3C31.9 73.4 43.3 58 66.4 58C75 57.9 79.4 60.5 79.4 60.5Z" fill="#8E3E3F"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_45_2">
9
+ <rect width="150" height="170" fill="white"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg width="150" height="170" viewBox="0 0 150 170" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_28_2)">
3
+ <path d="M131.5 32.8C131.4 31.9 130.6 31.5 130 31.5C129.4 31.5 116.3 30.5 116.3 30.5C116.3 30.5 107.2 21.4 106.1 20.5C105.1 19.5 103.2 19.8 102.4 20C102.3 20 100.4 20.6 97.3 21.6C94.2 12.7 88.9 4.60001 79.4 4.60001H78.5C75.9 1.20001 72.5 -0.399994 69.7 -0.399994C47.7 -0.399994 37.1 27.1 33.8 41.1C25.2 43.8 19.1 45.6 18.4 45.9C13.6 47.4 13.5 47.5 12.9 52C12.4 55.4 -0.0999756 152.1 -0.0999756 152.1L97.2 170.3L150 158.9C150.1 158.7 131.6 33.7 131.5 32.8ZM91.9 23C89.5 23.7 86.6 24.6 83.7 25.6V23.8C83.7 18.4 83 14 81.7 10.5C86.7 11.1 89.8 16.6 91.9 23ZM75.6 11.6C76.9 15 77.8 19.8 77.8 26.4V27.4C72.4 29.1 66.7 30.8 60.8 32.7C64.1 20.1 70.4 13.9 75.6 11.6ZM69.2 5.39999C70.2 5.39999 71.2 5.79999 72 6.39999C64.9 9.69999 57.4 18 54.3 34.8C49.6 36.3 45.1 37.6 40.8 39C44.4 26.2 53.4 5.39999 69.2 5.39999Z" fill="#BF4749"/>
4
+ <path d="M130 31.3C129.4 31.3 116.3 30.3 116.3 30.3C116.3 30.3 107.2 21.2 106.1 20.3C105.7 19.9 105.2 19.7 104.8 19.7L97.5 170.3L150.3 158.9C150.3 158.9 131.8 33.7 131.7 32.8C131.3 31.9 130.6 31.5 130 31.3Z" fill="#8E3E3F"/>
5
+ <path d="M79.4 60.5L73 79.8C73 79.8 67.2 76.7 60.3 76.7C50 76.7 49.5 83.2 49.5 84.8C49.5 93.6 72.5 97 72.5 117.7C72.5 134 62.2 144.5 48.3 144.5C31.5 144.5 23.1 134.1 23.1 134.1L27.6 119.3C27.6 119.3 36.4 126.9 43.8 126.9C48.7 126.9 50.7 123.1 50.7 120.3C50.7 108.8 31.9 108.3 31.9 89.3C31.9 73.4 43.3 58 66.4 58C75 57.9 79.4 60.5 79.4 60.5Z" fill="white"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_28_2">
9
+ <rect width="150" height="170" fill="white"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>