@brytdesigns/shopify-ajax-cart-api 1.0.23 → 1.0.24
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/effect/index.d.ts +32 -142
- package/dist/effect/schema.js +1 -57
- package/dist/effect/schema.js.map +1 -1
- package/dist/esm/index.js +41 -607
- package/dist/esm/index.js.map +1 -1
- package/dist/main/effect/schema.js +1 -57
- package/dist/main/effect/schema.js.map +1 -1
- package/dist/main/index.d.ts +68 -310
- package/package.json +1 -1
- package/dist/effect/cache.js +0 -39
- package/dist/effect/cache.js.map +0 -1
- package/dist/main/effect/cache.js +0 -39
- package/dist/main/effect/cache.js.map +0 -1
package/dist/effect/index.d.ts
CHANGED
|
@@ -157,12 +157,6 @@ export declare const add: (input?: ({
|
|
|
157
157
|
readonly url: string;
|
|
158
158
|
readonly price: number;
|
|
159
159
|
readonly id: string | number;
|
|
160
|
-
readonly quantity_rule?: {
|
|
161
|
-
readonly min: number;
|
|
162
|
-
readonly max: number | null;
|
|
163
|
-
readonly increment: number;
|
|
164
|
-
} | undefined;
|
|
165
|
-
readonly handle: string;
|
|
166
160
|
readonly properties: {
|
|
167
161
|
readonly [x: string]: string | number | boolean | null;
|
|
168
162
|
};
|
|
@@ -194,6 +188,7 @@ export declare const add: (input?: ({
|
|
|
194
188
|
readonly width: number;
|
|
195
189
|
} | undefined;
|
|
196
190
|
readonly image: string;
|
|
191
|
+
readonly handle: string;
|
|
197
192
|
readonly requires_shipping: boolean;
|
|
198
193
|
readonly product_type: string | null;
|
|
199
194
|
readonly product_title: string;
|
|
@@ -218,6 +213,11 @@ export declare const add: (input?: ({
|
|
|
218
213
|
};
|
|
219
214
|
}[];
|
|
220
215
|
readonly line_level_total_discount: number;
|
|
216
|
+
readonly quantity_rule?: {
|
|
217
|
+
readonly min: number;
|
|
218
|
+
readonly max: number | null;
|
|
219
|
+
readonly increment: number;
|
|
220
|
+
} | undefined;
|
|
221
221
|
readonly has_components: boolean;
|
|
222
222
|
readonly unit_price?: number | undefined;
|
|
223
223
|
readonly unit_price_measurement?: {
|
|
@@ -255,28 +255,6 @@ export declare const add: (input?: ({
|
|
|
255
255
|
};
|
|
256
256
|
} | null;
|
|
257
257
|
} & {
|
|
258
|
-
readonly product: {
|
|
259
|
-
readonly title: string;
|
|
260
|
-
readonly id: string | number;
|
|
261
|
-
readonly options: readonly {
|
|
262
|
-
readonly values: readonly string[];
|
|
263
|
-
readonly name: string;
|
|
264
|
-
readonly position: number;
|
|
265
|
-
}[];
|
|
266
|
-
readonly handle: string;
|
|
267
|
-
readonly variants: readonly {
|
|
268
|
-
readonly title: string;
|
|
269
|
-
readonly id: string | number;
|
|
270
|
-
readonly options: readonly string[];
|
|
271
|
-
readonly quantity_rule: {
|
|
272
|
-
readonly min: number | null;
|
|
273
|
-
readonly max: number | null;
|
|
274
|
-
readonly increment: number;
|
|
275
|
-
};
|
|
276
|
-
}[];
|
|
277
|
-
readonly tags: readonly string[];
|
|
278
|
-
readonly available: boolean;
|
|
279
|
-
};
|
|
280
258
|
readonly properties_array: readonly {
|
|
281
259
|
readonly key: string;
|
|
282
260
|
readonly value: string | number | boolean | null;
|
|
@@ -348,12 +326,6 @@ export declare const change: (input?: ({
|
|
|
348
326
|
readonly url: string;
|
|
349
327
|
readonly price: number;
|
|
350
328
|
readonly id: string | number;
|
|
351
|
-
readonly quantity_rule?: {
|
|
352
|
-
readonly min: number;
|
|
353
|
-
readonly max: number | null;
|
|
354
|
-
readonly increment: number;
|
|
355
|
-
} | undefined;
|
|
356
|
-
readonly handle: string;
|
|
357
329
|
readonly properties: {
|
|
358
330
|
readonly [x: string]: string | number | boolean | null;
|
|
359
331
|
};
|
|
@@ -385,6 +357,7 @@ export declare const change: (input?: ({
|
|
|
385
357
|
readonly width: number;
|
|
386
358
|
} | undefined;
|
|
387
359
|
readonly image: string;
|
|
360
|
+
readonly handle: string;
|
|
388
361
|
readonly requires_shipping: boolean;
|
|
389
362
|
readonly product_type: string | null;
|
|
390
363
|
readonly product_title: string;
|
|
@@ -409,6 +382,11 @@ export declare const change: (input?: ({
|
|
|
409
382
|
};
|
|
410
383
|
}[];
|
|
411
384
|
readonly line_level_total_discount: number;
|
|
385
|
+
readonly quantity_rule?: {
|
|
386
|
+
readonly min: number;
|
|
387
|
+
readonly max: number | null;
|
|
388
|
+
readonly increment: number;
|
|
389
|
+
} | undefined;
|
|
412
390
|
readonly has_components: boolean;
|
|
413
391
|
readonly unit_price?: number | undefined;
|
|
414
392
|
readonly unit_price_measurement?: {
|
|
@@ -446,28 +424,6 @@ export declare const change: (input?: ({
|
|
|
446
424
|
};
|
|
447
425
|
} | null;
|
|
448
426
|
} & {
|
|
449
|
-
readonly product: {
|
|
450
|
-
readonly title: string;
|
|
451
|
-
readonly id: string | number;
|
|
452
|
-
readonly options: readonly {
|
|
453
|
-
readonly values: readonly string[];
|
|
454
|
-
readonly name: string;
|
|
455
|
-
readonly position: number;
|
|
456
|
-
}[];
|
|
457
|
-
readonly handle: string;
|
|
458
|
-
readonly variants: readonly {
|
|
459
|
-
readonly title: string;
|
|
460
|
-
readonly id: string | number;
|
|
461
|
-
readonly options: readonly string[];
|
|
462
|
-
readonly quantity_rule: {
|
|
463
|
-
readonly min: number | null;
|
|
464
|
-
readonly max: number | null;
|
|
465
|
-
readonly increment: number;
|
|
466
|
-
};
|
|
467
|
-
}[];
|
|
468
|
-
readonly tags: readonly string[];
|
|
469
|
-
readonly available: boolean;
|
|
470
|
-
};
|
|
471
427
|
readonly properties_array: readonly {
|
|
472
428
|
readonly key: string;
|
|
473
429
|
readonly value: string | number | boolean | null;
|
|
@@ -551,12 +507,6 @@ export declare const clear: (input?: {
|
|
|
551
507
|
readonly url: string;
|
|
552
508
|
readonly price: number;
|
|
553
509
|
readonly id: string | number;
|
|
554
|
-
readonly quantity_rule?: {
|
|
555
|
-
readonly min: number;
|
|
556
|
-
readonly max: number | null;
|
|
557
|
-
readonly increment: number;
|
|
558
|
-
} | undefined;
|
|
559
|
-
readonly handle: string;
|
|
560
510
|
readonly properties: {
|
|
561
511
|
readonly [x: string]: string | number | boolean | null;
|
|
562
512
|
};
|
|
@@ -588,6 +538,7 @@ export declare const clear: (input?: {
|
|
|
588
538
|
readonly width: number;
|
|
589
539
|
} | undefined;
|
|
590
540
|
readonly image: string;
|
|
541
|
+
readonly handle: string;
|
|
591
542
|
readonly requires_shipping: boolean;
|
|
592
543
|
readonly product_type: string | null;
|
|
593
544
|
readonly product_title: string;
|
|
@@ -612,6 +563,11 @@ export declare const clear: (input?: {
|
|
|
612
563
|
};
|
|
613
564
|
}[];
|
|
614
565
|
readonly line_level_total_discount: number;
|
|
566
|
+
readonly quantity_rule?: {
|
|
567
|
+
readonly min: number;
|
|
568
|
+
readonly max: number | null;
|
|
569
|
+
readonly increment: number;
|
|
570
|
+
} | undefined;
|
|
615
571
|
readonly has_components: boolean;
|
|
616
572
|
readonly unit_price?: number | undefined;
|
|
617
573
|
readonly unit_price_measurement?: {
|
|
@@ -649,28 +605,6 @@ export declare const clear: (input?: {
|
|
|
649
605
|
};
|
|
650
606
|
} | null;
|
|
651
607
|
} & {
|
|
652
|
-
readonly product: {
|
|
653
|
-
readonly title: string;
|
|
654
|
-
readonly id: string | number;
|
|
655
|
-
readonly options: readonly {
|
|
656
|
-
readonly values: readonly string[];
|
|
657
|
-
readonly name: string;
|
|
658
|
-
readonly position: number;
|
|
659
|
-
}[];
|
|
660
|
-
readonly handle: string;
|
|
661
|
-
readonly variants: readonly {
|
|
662
|
-
readonly title: string;
|
|
663
|
-
readonly id: string | number;
|
|
664
|
-
readonly options: readonly string[];
|
|
665
|
-
readonly quantity_rule: {
|
|
666
|
-
readonly min: number | null;
|
|
667
|
-
readonly max: number | null;
|
|
668
|
-
readonly increment: number;
|
|
669
|
-
};
|
|
670
|
-
}[];
|
|
671
|
-
readonly tags: readonly string[];
|
|
672
|
-
readonly available: boolean;
|
|
673
|
-
};
|
|
674
608
|
readonly properties_array: readonly {
|
|
675
609
|
readonly key: string;
|
|
676
610
|
readonly value: string | number | boolean | null;
|
|
@@ -754,12 +688,6 @@ export declare const get: (input?: {
|
|
|
754
688
|
readonly url: string;
|
|
755
689
|
readonly price: number;
|
|
756
690
|
readonly id: string | number;
|
|
757
|
-
readonly quantity_rule?: {
|
|
758
|
-
readonly min: number;
|
|
759
|
-
readonly max: number | null;
|
|
760
|
-
readonly increment: number;
|
|
761
|
-
} | undefined;
|
|
762
|
-
readonly handle: string;
|
|
763
691
|
readonly properties: {
|
|
764
692
|
readonly [x: string]: string | number | boolean | null;
|
|
765
693
|
};
|
|
@@ -791,6 +719,7 @@ export declare const get: (input?: {
|
|
|
791
719
|
readonly width: number;
|
|
792
720
|
} | undefined;
|
|
793
721
|
readonly image: string;
|
|
722
|
+
readonly handle: string;
|
|
794
723
|
readonly requires_shipping: boolean;
|
|
795
724
|
readonly product_type: string | null;
|
|
796
725
|
readonly product_title: string;
|
|
@@ -815,6 +744,11 @@ export declare const get: (input?: {
|
|
|
815
744
|
};
|
|
816
745
|
}[];
|
|
817
746
|
readonly line_level_total_discount: number;
|
|
747
|
+
readonly quantity_rule?: {
|
|
748
|
+
readonly min: number;
|
|
749
|
+
readonly max: number | null;
|
|
750
|
+
readonly increment: number;
|
|
751
|
+
} | undefined;
|
|
818
752
|
readonly has_components: boolean;
|
|
819
753
|
readonly unit_price?: number | undefined;
|
|
820
754
|
readonly unit_price_measurement?: {
|
|
@@ -852,28 +786,6 @@ export declare const get: (input?: {
|
|
|
852
786
|
};
|
|
853
787
|
} | null;
|
|
854
788
|
} & {
|
|
855
|
-
readonly product: {
|
|
856
|
-
readonly title: string;
|
|
857
|
-
readonly id: string | number;
|
|
858
|
-
readonly options: readonly {
|
|
859
|
-
readonly values: readonly string[];
|
|
860
|
-
readonly name: string;
|
|
861
|
-
readonly position: number;
|
|
862
|
-
}[];
|
|
863
|
-
readonly handle: string;
|
|
864
|
-
readonly variants: readonly {
|
|
865
|
-
readonly title: string;
|
|
866
|
-
readonly id: string | number;
|
|
867
|
-
readonly options: readonly string[];
|
|
868
|
-
readonly quantity_rule: {
|
|
869
|
-
readonly min: number | null;
|
|
870
|
-
readonly max: number | null;
|
|
871
|
-
readonly increment: number;
|
|
872
|
-
};
|
|
873
|
-
}[];
|
|
874
|
-
readonly tags: readonly string[];
|
|
875
|
-
readonly available: boolean;
|
|
876
|
-
};
|
|
877
789
|
readonly properties_array: readonly {
|
|
878
790
|
readonly key: string;
|
|
879
791
|
readonly value: string | number | boolean | null;
|
|
@@ -933,9 +845,9 @@ export declare const update: (input?: ({
|
|
|
933
845
|
readonly attributes?: {
|
|
934
846
|
readonly [x: string]: string | number | boolean | null;
|
|
935
847
|
} | undefined;
|
|
936
|
-
readonly updates?:
|
|
848
|
+
readonly updates?: {
|
|
937
849
|
readonly [x: string]: number;
|
|
938
|
-
} | undefined;
|
|
850
|
+
} | readonly number[] | undefined;
|
|
939
851
|
readonly discount?: readonly string[] | undefined;
|
|
940
852
|
} & {
|
|
941
853
|
readonly sections?: string | undefined;
|
|
@@ -966,12 +878,6 @@ export declare const update: (input?: ({
|
|
|
966
878
|
readonly url: string;
|
|
967
879
|
readonly price: number;
|
|
968
880
|
readonly id: string | number;
|
|
969
|
-
readonly quantity_rule?: {
|
|
970
|
-
readonly min: number;
|
|
971
|
-
readonly max: number | null;
|
|
972
|
-
readonly increment: number;
|
|
973
|
-
} | undefined;
|
|
974
|
-
readonly handle: string;
|
|
975
881
|
readonly properties: {
|
|
976
882
|
readonly [x: string]: string | number | boolean | null;
|
|
977
883
|
};
|
|
@@ -1003,6 +909,7 @@ export declare const update: (input?: ({
|
|
|
1003
909
|
readonly width: number;
|
|
1004
910
|
} | undefined;
|
|
1005
911
|
readonly image: string;
|
|
912
|
+
readonly handle: string;
|
|
1006
913
|
readonly requires_shipping: boolean;
|
|
1007
914
|
readonly product_type: string | null;
|
|
1008
915
|
readonly product_title: string;
|
|
@@ -1027,6 +934,11 @@ export declare const update: (input?: ({
|
|
|
1027
934
|
};
|
|
1028
935
|
}[];
|
|
1029
936
|
readonly line_level_total_discount: number;
|
|
937
|
+
readonly quantity_rule?: {
|
|
938
|
+
readonly min: number;
|
|
939
|
+
readonly max: number | null;
|
|
940
|
+
readonly increment: number;
|
|
941
|
+
} | undefined;
|
|
1030
942
|
readonly has_components: boolean;
|
|
1031
943
|
readonly unit_price?: number | undefined;
|
|
1032
944
|
readonly unit_price_measurement?: {
|
|
@@ -1064,28 +976,6 @@ export declare const update: (input?: ({
|
|
|
1064
976
|
};
|
|
1065
977
|
} | null;
|
|
1066
978
|
} & {
|
|
1067
|
-
readonly product: {
|
|
1068
|
-
readonly title: string;
|
|
1069
|
-
readonly id: string | number;
|
|
1070
|
-
readonly options: readonly {
|
|
1071
|
-
readonly values: readonly string[];
|
|
1072
|
-
readonly name: string;
|
|
1073
|
-
readonly position: number;
|
|
1074
|
-
}[];
|
|
1075
|
-
readonly handle: string;
|
|
1076
|
-
readonly variants: readonly {
|
|
1077
|
-
readonly title: string;
|
|
1078
|
-
readonly id: string | number;
|
|
1079
|
-
readonly options: readonly string[];
|
|
1080
|
-
readonly quantity_rule: {
|
|
1081
|
-
readonly min: number | null;
|
|
1082
|
-
readonly max: number | null;
|
|
1083
|
-
readonly increment: number;
|
|
1084
|
-
};
|
|
1085
|
-
}[];
|
|
1086
|
-
readonly tags: readonly string[];
|
|
1087
|
-
readonly available: boolean;
|
|
1088
|
-
};
|
|
1089
979
|
readonly properties_array: readonly {
|
|
1090
980
|
readonly key: string;
|
|
1091
981
|
readonly value: string | number | boolean | null;
|
package/dist/effect/schema.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import * as Schema from 'effect/Schema';
|
|
2
2
|
import * as Array from 'effect/Array';
|
|
3
3
|
import * as Record from 'effect/Record';
|
|
4
|
-
import * as Effect from 'effect/Effect';
|
|
5
|
-
import * as ParseResult from 'effect/ParseResult';
|
|
6
4
|
import { Resource, Ajax } from '@brytdesigns/shopify-utils/effect';
|
|
7
5
|
import { pipe, identity } from 'effect';
|
|
8
|
-
import * as Cache from './cache';
|
|
9
6
|
|
|
10
7
|
const BaseAttributeValue = Schema.Union(
|
|
11
8
|
Schema.Null,
|
|
@@ -190,60 +187,9 @@ const UnitPriceMeasurement = Schema.Struct({
|
|
|
190
187
|
reference_unit: Schema.String,
|
|
191
188
|
reference_value: Schema.Number
|
|
192
189
|
});
|
|
193
|
-
const VariantQuantityRule = Schema.Struct({
|
|
194
|
-
min: Schema.NullOr(Schema.Number),
|
|
195
|
-
max: Schema.NullOr(Schema.Number),
|
|
196
|
-
increment: Schema.Number
|
|
197
|
-
});
|
|
198
190
|
const VariantOptions = Schema.optionalWith(Schema.Array(Schema.String), {
|
|
199
191
|
default: () => []
|
|
200
192
|
});
|
|
201
|
-
const BaseVariant = Schema.Struct({
|
|
202
|
-
id: Resource.ID,
|
|
203
|
-
title: Schema.String,
|
|
204
|
-
options: VariantOptions,
|
|
205
|
-
quantity_rule: VariantQuantityRule
|
|
206
|
-
});
|
|
207
|
-
const ProductOption = Schema.Struct({
|
|
208
|
-
name: Schema.String,
|
|
209
|
-
position: Schema.Number,
|
|
210
|
-
values: Schema.Array(Schema.String)
|
|
211
|
-
});
|
|
212
|
-
const BaseProduct = Schema.Struct({
|
|
213
|
-
id: Resource.ID,
|
|
214
|
-
title: Schema.String,
|
|
215
|
-
handle: Schema.String,
|
|
216
|
-
variants: Schema.Array(BaseVariant),
|
|
217
|
-
options: Schema.Array(ProductOption),
|
|
218
|
-
tags: Schema.Array(Schema.String),
|
|
219
|
-
available: Schema.Boolean
|
|
220
|
-
});
|
|
221
|
-
const get = (url) => Effect.tryPromise({
|
|
222
|
-
try: () => fetch(url).then((res) => {
|
|
223
|
-
if (res.ok) {
|
|
224
|
-
return res.json();
|
|
225
|
-
}
|
|
226
|
-
throw new Error(String(res.status));
|
|
227
|
-
}),
|
|
228
|
-
catch: (e) => new Error(String(e))
|
|
229
|
-
});
|
|
230
|
-
const cachedGet = (url) => Effect.gen(function* () {
|
|
231
|
-
const cacheKey = `shopify-ajax-cart-api:${url}`;
|
|
232
|
-
const cachedValue = yield* Cache.get(cacheKey);
|
|
233
|
-
if (cachedValue) return cachedValue;
|
|
234
|
-
const value = yield* get(url);
|
|
235
|
-
yield* Cache.set(cacheKey, value, "60 minutes");
|
|
236
|
-
return value;
|
|
237
|
-
});
|
|
238
|
-
const Product = Schema.transformOrFail(Schema.String, BaseProduct, {
|
|
239
|
-
decode(handle, _, ast) {
|
|
240
|
-
return Effect.mapBoth(cachedGet(`/products/${handle}.js`), {
|
|
241
|
-
onFailure: (e) => new ParseResult.Type(ast, handle, e.message),
|
|
242
|
-
onSuccess: (product) => product
|
|
243
|
-
});
|
|
244
|
-
},
|
|
245
|
-
encode: (product) => ParseResult.succeed(product.handle)
|
|
246
|
-
});
|
|
247
193
|
const BaseLineItem = Schema.Struct({
|
|
248
194
|
id: Resource.ID,
|
|
249
195
|
properties: BaseAttributes,
|
|
@@ -294,7 +240,6 @@ const LineItem = Schema.transform(
|
|
|
294
240
|
Schema.extend(
|
|
295
241
|
BaseLineItem,
|
|
296
242
|
Schema.Struct({
|
|
297
|
-
product: Product,
|
|
298
243
|
properties_array: Schema.optionalWith(BaseAttributesArray, {
|
|
299
244
|
default: () => []
|
|
300
245
|
}),
|
|
@@ -330,8 +275,7 @@ const LineItem = Schema.transform(
|
|
|
330
275
|
Record.remove("private_properties"),
|
|
331
276
|
Record.remove("private_properties_array"),
|
|
332
277
|
Record.remove("public_properties"),
|
|
333
|
-
Record.remove("public_properties_array")
|
|
334
|
-
Record.remove("product")
|
|
278
|
+
Record.remove("public_properties_array")
|
|
335
279
|
)
|
|
336
280
|
}
|
|
337
281
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/effect/schema.ts"],"names":[],"mappings":"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","file":"schema.js","sourcesContent":["import * as Schema from \"effect/Schema\";\nimport * as Array from \"effect/Array\";\nimport * as Record from \"effect/Record\";\nimport * as Effect from \"effect/Effect\";\nimport * as ParseResult from \"effect/ParseResult\";\nimport { Resource, Ajax } from \"@brytdesigns/shopify-utils/effect\";\nimport { pipe, identity } from \"effect\";\nimport * as Cache from \"./cache\";\n\ntype BaseAttributeValue = Schema.Schema.Type<typeof BaseAttributeValue>;\nconst BaseAttributeValue = Schema.Union(\n Schema.Null,\n Schema.String,\n Schema.Boolean,\n Schema.Number,\n);\n\nconst AttributesArray = Schema.Array(\n Schema.Struct({ key: Schema.String, value: BaseAttributeValue }),\n);\n\nexport type BaseAttributes = Schema.Schema.Type<typeof BaseAttributes>;\nexport const BaseAttributes = Schema.Record({\n key: Schema.String,\n value: BaseAttributeValue,\n});\n\nexport const BaseAttributesArray = Schema.transform(\n BaseAttributes,\n AttributesArray,\n {\n decode: (record) =>\n Record.toEntries(record).map(([key, value]) => ({ key, value })),\n encode: (array) =>\n Record.fromEntries(\n pipe(\n array,\n Array.map(({ key, value }) => [key, value]),\n ),\n ),\n },\n);\n\nconst BasePrivateAttributes = Schema.transform(BaseAttributes, BaseAttributes, {\n decode: Record.filter((value, key) => key.startsWith(\"_\")),\n encode: identity,\n});\n\nconst BasePublicAttributes = Schema.transform(BaseAttributes, BaseAttributes, {\n decode: Record.filter((value, key) => !key.startsWith(\"_\")),\n encode: identity,\n});\n\nconst BasePrivateAttributesArray = Schema.transform(\n BasePrivateAttributes,\n AttributesArray,\n {\n decode: (record) =>\n Record.toEntries(record).map(([key, value]) => ({ key, value })),\n encode: (array) =>\n Record.fromEntries(\n pipe(\n array,\n Array.map(({ key, value }) => [key, value]),\n ),\n ),\n },\n);\n\nconst BasePublicAttributesArray = Schema.transform(\n BasePublicAttributes,\n AttributesArray,\n {\n decode: (record) =>\n Record.toEntries(record).map(([key, value]) => ({ key, value })),\n encode: (array) =>\n Record.fromEntries(\n pipe(\n array,\n Array.map(({ key, value }) => [key, value]),\n ),\n ),\n },\n);\n\nexport const Attributes = Schema.transform(\n BaseAttributes,\n Schema.Struct({\n private: Schema.Struct({\n array: BasePrivateAttributesArray,\n record: BasePrivateAttributes,\n }),\n public: Schema.Struct({\n array: BasePublicAttributesArray,\n record: BasePublicAttributes,\n }),\n }),\n {\n decode: (attributes) => ({\n private: {\n array: attributes,\n record: attributes,\n },\n public: {\n array: attributes,\n record: attributes,\n },\n }),\n encode: (attributes) => ({\n ...attributes.private.record,\n ...attributes.public.record,\n }),\n },\n);\n\nexport type DiscountApplication = Schema.Schema.Type<\n typeof DiscountApplication\n>;\n\nexport const DiscountApplication = Schema.Struct({\n target_selection: Schema.Literal(\"all\", \"entitled\", \"explicit\"),\n target_type: Schema.Literal(\"line_item\", \"shipping_line\"),\n title: Schema.NonEmptyString,\n total_allocated_amount: Schema.Number,\n type: Schema.Literal(\"\", \"automatic\", \"discount_code\", \"manual\", \"script\"),\n value: Schema.Union(Schema.Number, Schema.NumberFromString),\n value_type: Schema.Literal(\"fixed_amount\", \"percentage\"),\n description: Schema.NullOr(Schema.String),\n});\n\nexport const Discount = Schema.Struct({\n amount: Schema.Number,\n title: Schema.String,\n});\n\nexport type CurrencyCode = Schema.Schema.Type<typeof CurrencyCode>;\nexport const CurrencyCode = Schema.String;\n\nexport type Image = Schema.Schema.Type<typeof Image>;\nexport const Image = Schema.Struct({\n aspect_ratio: Schema.Number,\n alt: Schema.String,\n height: Schema.Number,\n url: Schema.String,\n width: Schema.Number,\n});\n\nexport type OptionWithValue = Schema.Schema.Type<typeof OptionWithValue>;\nexport const OptionWithValue = Schema.Struct({\n name: Schema.String,\n value: Schema.String,\n});\n\nexport type QuantityRule = Schema.Schema.Type<typeof QuantityRule>;\nexport const QuantityRule = Schema.Struct({\n min: Schema.Number,\n max: Schema.NullOr(Schema.Number),\n increment: Schema.Number,\n});\n\nexport type SellingPlanAllocationPriceAdjustment = Schema.Schema.Type<\n typeof SellingPlanAllocationPriceAdjustment\n>;\nexport const SellingPlanAllocationPriceAdjustment = Schema.Struct({\n position: Schema.Number,\n price: Schema.Number,\n});\n\nexport const SellingPlanPriceAdjustment = Schema.Struct({\n order_count: Schema.NullOr(Schema.Number),\n position: Schema.Number,\n value: Schema.Union(Schema.Number, Schema.String),\n value_type: Schema.Literal(\"percentage\", \"fixed_amount\", \"price\"),\n});\n\nexport type SellingPlanOption = Schema.Schema.Type<typeof SellingPlanOption>;\nexport const SellingPlanOption = Schema.Struct({\n name: Schema.String,\n position: Schema.Number,\n value: Schema.String,\n});\n\nexport type SellingPlan = Schema.Schema.Type<typeof SellingPlan>;\nexport const SellingPlan = Schema.Struct({\n id: Resource.ID,\n name: Schema.String,\n description: Schema.NullOr(Schema.String),\n options: Schema.Array(SellingPlanOption),\n recurring_deliveries: Schema.optionalWith(Schema.Boolean, {\n default: () => false,\n }),\n fixed_selling_plan: Schema.optionalWith(Schema.Boolean, {\n default: () => false,\n }),\n price_adjustments: Schema.Array(SellingPlanPriceAdjustment),\n});\n\nexport type SellingPlanAllocation = Schema.Schema.Type<\n typeof SellingPlanAllocation\n>;\nexport const SellingPlanAllocation = Schema.Struct({\n price_adjustments: Schema.Array(SellingPlanAllocationPriceAdjustment),\n price: Schema.Number,\n compare_at_price: Schema.Number,\n per_delivery_price: Schema.Number,\n selling_plan: SellingPlan,\n});\n\nexport type LineLevelDiscountAllocation = Schema.Schema.Type<\n typeof LineLevelDiscountAllocation\n>;\nexport const LineLevelDiscountAllocation = Schema.Struct({\n amount: Schema.Number,\n discount_application: DiscountApplication,\n});\n\nconst CartLevelDiscountApplicationUpdate = Schema.transform(\n Schema.Struct({\n discount_application: DiscountApplication,\n }),\n DiscountApplication,\n {\n decode: (application) => application.discount_application,\n encode: (discountApplication) => ({\n discount_application: discountApplication,\n }),\n strict: false,\n },\n);\n\nexport const CartLevelDiscountApplication = Schema.Union(\n DiscountApplication,\n CartLevelDiscountApplicationUpdate,\n);\n\nexport type UnitPriceMeasurement = Schema.Schema.Type<\n typeof UnitPriceMeasurement\n>;\nexport const UnitPriceMeasurement = Schema.Struct({\n measured_type: Schema.Literal(\"volume\", \"weight\", \"dimension\"),\n quantity_unit: Schema.String,\n quantity_value: Schema.Number,\n reference_unit: Schema.String,\n reference_value: Schema.Number,\n});\n\nconst VariantQuantityRule = Schema.Struct({\n min: Schema.NullOr(Schema.Number),\n max: Schema.NullOr(Schema.Number),\n increment: Schema.Number,\n});\n\nconst VariantOptions = Schema.optionalWith(Schema.Array(Schema.String), {\n default: () => [],\n});\n\nconst BaseVariant = Schema.Struct({\n id: Resource.ID,\n title: Schema.String,\n options: VariantOptions,\n quantity_rule: VariantQuantityRule,\n});\n\nconst ProductOption = Schema.Struct({\n name: Schema.String,\n position: Schema.Number,\n values: Schema.Array(Schema.String),\n});\n\ntype BaseProduct = Schema.Schema.Type<typeof BaseProduct>;\nconst BaseProduct = Schema.Struct({\n id: Resource.ID,\n title: Schema.String,\n handle: Schema.String,\n variants: Schema.Array(BaseVariant),\n options: Schema.Array(ProductOption),\n tags: Schema.Array(Schema.String),\n available: Schema.Boolean,\n});\n\nconst get = (url: string): Effect.Effect<unknown, Error> =>\n Effect.tryPromise({\n try: () =>\n fetch(url).then((res) => {\n if (res.ok) {\n return res.json() as Promise<unknown>;\n }\n throw new Error(String(res.status));\n }),\n catch: (e) => new Error(String(e)),\n });\n\nconst cachedGet = (url: string) =>\n Effect.gen(function* () {\n const cacheKey = `shopify-ajax-cart-api:${url}`;\n const cachedValue = yield* Cache.get(cacheKey);\n if (cachedValue) return cachedValue;\n const value = yield* get(url);\n yield* Cache.set(cacheKey, value, \"60 minutes\");\n return value;\n });\n\nconst Product = Schema.transformOrFail(Schema.String, BaseProduct, {\n decode(handle, _, ast) {\n return Effect.mapBoth(cachedGet(`/products/${handle}.js`), {\n onFailure: (e) => new ParseResult.Type(ast, handle, e.message),\n onSuccess: (product) => product as BaseProduct,\n });\n },\n encode: (product) => ParseResult.succeed(product.handle),\n});\n\nexport type BaseLineItem = Schema.Schema.Type<typeof BaseLineItem>;\nconst BaseLineItem = Schema.Struct({\n id: Resource.ID,\n properties: BaseAttributes,\n quantity: Schema.Number,\n variant_id: Resource.ID,\n key: Schema.String,\n title: Schema.String,\n price: Schema.Number,\n original_price: Schema.Number,\n discounted_price: Schema.Number,\n line_price: Schema.Number,\n original_line_price: Schema.Number,\n total_discount: Schema.Number,\n discounts: Schema.optionalWith(Schema.Array(Discount), { default: () => [] }),\n sku: Schema.NullOr(Schema.String),\n grams: Schema.Number,\n vendor: Schema.String,\n taxable: Schema.Boolean,\n product_id: Resource.ID,\n product_has_only_default_variant: Schema.Boolean,\n gift_card: Schema.Boolean,\n final_line_price: Schema.Number,\n final_price: Schema.Number,\n url: Schema.String,\n featured_image: Schema.optional(Image),\n image: Schema.String,\n handle: Schema.String,\n requires_shipping: Schema.Boolean,\n product_type: Schema.NullOr(Schema.String),\n product_title: Schema.String,\n product_description: Schema.NullOr(Schema.String),\n variant_title: Schema.NullOr(Schema.String),\n variant_options: VariantOptions,\n options_with_values: Schema.Array(OptionWithValue),\n line_level_discount_allocations: Schema.Array(LineLevelDiscountAllocation),\n line_level_total_discount: Schema.Number,\n quantity_rule: Schema.optional(QuantityRule),\n has_components: Schema.optionalWith(Schema.Boolean, { default: () => false }),\n unit_price: Schema.optional(Schema.Number),\n unit_price_measurement: Schema.optional(UnitPriceMeasurement),\n selling_plan_allocation: Schema.optionalWith(\n Schema.NullOr(SellingPlanAllocation),\n { default: () => null },\n ),\n});\n\nexport type LineItem = Schema.Schema.Type<typeof LineItem>;\nexport const LineItem = Schema.transform(\n BaseLineItem,\n Schema.extend(\n BaseLineItem,\n Schema.Struct({\n product: Product,\n properties_array: Schema.optionalWith(BaseAttributesArray, {\n default: () => [],\n }),\n private_properties: Schema.optionalWith(BasePrivateAttributes, {\n default: () => ({}),\n }),\n private_properties_array: Schema.optionalWith(\n BasePrivateAttributesArray,\n {\n default: () => [],\n },\n ),\n public_properties: Schema.optionalWith(BasePublicAttributes, {\n default: () => ({}),\n }),\n public_properties_array: Schema.optionalWith(BasePublicAttributesArray, {\n default: () => [],\n }),\n }),\n ),\n {\n decode: (lineItem) => ({\n ...lineItem,\n product: lineItem.handle,\n properties_array: lineItem.properties,\n private_properties: lineItem.properties,\n private_properties_array: lineItem.properties,\n public_properties: lineItem.properties,\n public_properties_array: lineItem.properties,\n }),\n encode: (lineItem) =>\n pipe(\n Record.remove(\"properties_array\")(lineItem),\n Record.remove(\"private_properties\"),\n Record.remove(\"private_properties_array\"),\n Record.remove(\"public_properties\"),\n Record.remove(\"public_properties_array\"),\n Record.remove(\"product\"),\n ) as BaseLineItem,\n },\n);\n\ntype BaseCart = Schema.Schema.Type<typeof BaseCart>;\nexport const BaseCart = Schema.Struct({\n token: Schema.String,\n note: Schema.NullOr(Schema.String),\n attributes: BaseAttributes,\n discounts: Schema.optionalWith(Schema.Array(Discount), { default: () => [] }),\n discount_codes: Schema.optionalWith(\n Schema.Array(\n Schema.Struct({ code: Schema.String, applicable: Schema.Boolean }),\n ),\n { default: () => [] },\n ),\n original_total_price: Schema.Number,\n total_price: Schema.Number,\n total_discount: Schema.Number,\n total_weight: Schema.Number,\n item_count: Schema.Number,\n items: Schema.Array(LineItem).annotations({ concurrency: \"unbounded\" }),\n requires_shipping: Schema.Boolean,\n currency: CurrencyCode,\n items_subtotal_price: Schema.Number,\n cart_level_discount_applications: Schema.Array(CartLevelDiscountApplication),\n});\n\ntype Cart = Schema.Schema.Type<typeof Cart>;\nexport const Cart = Schema.extend(\n BaseCart,\n Schema.Struct({\n attributes_array: Schema.optionalWith(BaseAttributesArray, {\n default: () => [],\n }),\n private_attributes: Schema.optionalWith(BasePrivateAttributes, {\n default: () => ({}),\n }),\n private_attributes_array: Schema.optionalWith(BasePrivateAttributesArray, {\n default: () => [],\n }),\n public_attributes: Schema.optionalWith(BasePublicAttributes, {\n default: () => ({}),\n }),\n public_attributes_array: Schema.optionalWith(BasePublicAttributesArray, {\n default: () => [],\n }),\n }),\n);\n\nexport const makeCartTransformSchema = <\n A extends Schema.Schema.Type<typeof BaseCart>,\n I,\n R,\n>(\n schema: Schema.Schema<A, I, R>,\n) =>\n Schema.transform(schema, Cart, {\n decode: (cart) => ({\n ...cart,\n attributes_array: cart.attributes,\n private_attributes: cart.attributes,\n private_attributes_array: cart.attributes,\n public_attributes: cart.attributes,\n public_attributes_array: cart.attributes,\n }),\n encode: (cart) =>\n pipe(\n Record.remove(\"attributes_array\")(cart),\n Record.remove(\"private_attributes\"),\n Record.remove(\"private_attributes_array\"),\n Record.remove(\"public_attributes\"),\n Record.remove(\"public_attributes_array\"),\n ) as Schema.Schema.Type<Schema.Schema<A, I, R>>,\n });\n\nexport const CartOutput = makeCartTransformSchema(BaseCart);\n\nexport const makeCartSchema = (sections?: string) => {\n if (sections) {\n return makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n sections: Schema.optionalWith(\n Schema.NullOr(Ajax.Sections.makeResponseSchema(sections)),\n { default: () => null },\n ),\n }),\n ),\n );\n }\n return makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n sections: Schema.optionalWith(Schema.Null, { default: () => null }),\n }),\n ),\n );\n};\n\nexport type AddItemInput = Schema.Schema.Encoded<typeof AddItemInput>;\nexport const AddItemInput = Schema.Struct({\n id: Resource.ID,\n quantity: Schema.optionalWith(Schema.Number, { default: () => 1 }),\n properties: Schema.optionalWith(BaseAttributes, { default: () => ({}) }),\n selling_plan: Schema.optional(Resource.ID),\n});\n\nexport const BaseInput = Schema.extend(Ajax.Sections.Input);\n\nexport type CartAddInput = Schema.Schema.Encoded<typeof CartAddInput>;\nexport const CartAddInput = Schema.Struct({\n items: Schema.Array(AddItemInput),\n}).pipe(BaseInput);\n\nexport type CartAddOutput = Schema.Schema.Type<typeof CartAddOutput>;\nexport const CartAddOutput = Schema.Struct({\n items: Schema.Array(LineItem),\n});\n\nexport type UpdateItemRecordInput = Schema.Schema.Encoded<\n typeof UpdateItemRecordInput\n>;\nexport const UpdateItemRecordInput = Schema.Record({\n key: Schema.String,\n value: Schema.Number,\n});\n\nconst DiscountCodeInput = Schema.Array(Schema.String);\nconst DiscountCodeTransformed = Schema.String;\n\nexport type CartUpdateInput = Schema.Schema.Encoded<typeof CartUpdateInput>;\nexport const CartUpdateInput = Schema.Struct({\n updates: Schema.optional(\n Schema.Union(UpdateItemRecordInput, Schema.Array(Schema.Number)),\n ),\n note: Schema.optional(Schema.NullOr(Schema.String)),\n attributes: Schema.optional(BaseAttributes),\n discount: Schema.optional(\n Schema.transform(DiscountCodeInput, DiscountCodeTransformed, {\n decode: (input) => input.join(\",\"),\n encode: (input) => input.split(\",\"),\n }),\n ),\n}).pipe(BaseInput);\n\nexport type ItemAddedChangelog = Schema.Schema.Type<typeof ItemAddedChangelog>;\nexport const ItemAddedChangelog = Schema.Struct({\n variant_id: Schema.Number,\n quantity: Schema.Number,\n});\n\nexport type CartUpdateOutput = Schema.Schema.Type<typeof CartUpdateOutput>;\nexport const CartUpdateOutput = makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n items_changelog: Schema.Struct({\n added: Schema.Array(ItemAddedChangelog),\n }),\n }),\n ),\n);\n\nexport const CartChangeItemOptionalInput = Schema.Struct({\n quantity: Schema.optional(Schema.Number),\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.NullOr(Schema.String),\n }),\n ),\n selling_plan: Schema.optional(Schema.NullOr(Resource.ID)),\n}).pipe(BaseInput);\n\nexport const LineItemChange = Schema.Struct({\n product_id: Schema.Number,\n variant_id: Schema.Number,\n id: Schema.String,\n image: Schema.String,\n price: Schema.String,\n presentment_price: Schema.Number,\n quantity: Schema.Number,\n title: Schema.String,\n product_title: Schema.String,\n variant_title: Schema.String,\n vendor: Schema.String,\n product_type: Schema.String,\n sku: Schema.String,\n url: Schema.String,\n untranslated_product_title: Schema.String,\n untranslated_variant_title: Schema.String,\n view_key: Schema.String,\n});\n\nexport type CartChangeInput = Schema.Schema.Encoded<typeof CartChangeInput>;\nexport const CartChangeInput = Schema.Union(\n Schema.extend(CartChangeItemOptionalInput)(\n Schema.Struct({\n id: Schema.String,\n }),\n ),\n Schema.extend(CartChangeItemOptionalInput)(\n Schema.Struct({\n line: Schema.Number,\n }),\n ),\n);\n\nexport type CartChangeOutput = Schema.Schema.Type<typeof CartChangeOutput>;\nexport const CartChangeOutput = makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n items_added: Schema.Array(LineItemChange),\n items_removed: Schema.Array(LineItemChange),\n }),\n ),\n);\n\nexport type CartClearInput = Schema.Schema.Encoded<typeof CartClearInput>;\nexport const CartClearInput = Ajax.Sections.Input;\n\nexport type CartGetInput = Schema.Schema.Encoded<typeof CartClearInput>;\nexport const CartGetInput = Ajax.Sections.Input;\n\nexport type CartUpdateDiscountsInput = Schema.Schema.Encoded<\n typeof CartUpdateDiscountsInput\n>;\nexport const CartUpdateDiscountsInput = Schema.mutable(\n Schema.Array(Schema.NonEmptyString),\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/effect/schema.ts"],"names":[],"mappings":"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","file":"schema.js","sourcesContent":["import * as Schema from \"effect/Schema\";\nimport * as Array from \"effect/Array\";\nimport * as Record from \"effect/Record\";\nimport { Resource, Ajax } from \"@brytdesigns/shopify-utils/effect\";\nimport { pipe, identity } from \"effect\";\n\ntype BaseAttributeValue = Schema.Schema.Type<typeof BaseAttributeValue>;\nconst BaseAttributeValue = Schema.Union(\n Schema.Null,\n Schema.String,\n Schema.Boolean,\n Schema.Number,\n);\n\nconst AttributesArray = Schema.Array(\n Schema.Struct({ key: Schema.String, value: BaseAttributeValue }),\n);\n\nexport type BaseAttributes = Schema.Schema.Type<typeof BaseAttributes>;\nexport const BaseAttributes = Schema.Record({\n key: Schema.String,\n value: BaseAttributeValue,\n});\n\nexport const BaseAttributesArray = Schema.transform(\n BaseAttributes,\n AttributesArray,\n {\n decode: (record) =>\n Record.toEntries(record).map(([key, value]) => ({ key, value })),\n encode: (array) =>\n Record.fromEntries(\n pipe(\n array,\n Array.map(({ key, value }) => [key, value]),\n ),\n ),\n },\n);\n\nconst BasePrivateAttributes = Schema.transform(BaseAttributes, BaseAttributes, {\n decode: Record.filter((value, key) => key.startsWith(\"_\")),\n encode: identity,\n});\n\nconst BasePublicAttributes = Schema.transform(BaseAttributes, BaseAttributes, {\n decode: Record.filter((value, key) => !key.startsWith(\"_\")),\n encode: identity,\n});\n\nconst BasePrivateAttributesArray = Schema.transform(\n BasePrivateAttributes,\n AttributesArray,\n {\n decode: (record) =>\n Record.toEntries(record).map(([key, value]) => ({ key, value })),\n encode: (array) =>\n Record.fromEntries(\n pipe(\n array,\n Array.map(({ key, value }) => [key, value]),\n ),\n ),\n },\n);\n\nconst BasePublicAttributesArray = Schema.transform(\n BasePublicAttributes,\n AttributesArray,\n {\n decode: (record) =>\n Record.toEntries(record).map(([key, value]) => ({ key, value })),\n encode: (array) =>\n Record.fromEntries(\n pipe(\n array,\n Array.map(({ key, value }) => [key, value]),\n ),\n ),\n },\n);\n\nexport const Attributes = Schema.transform(\n BaseAttributes,\n Schema.Struct({\n private: Schema.Struct({\n array: BasePrivateAttributesArray,\n record: BasePrivateAttributes,\n }),\n public: Schema.Struct({\n array: BasePublicAttributesArray,\n record: BasePublicAttributes,\n }),\n }),\n {\n decode: (attributes) => ({\n private: {\n array: attributes,\n record: attributes,\n },\n public: {\n array: attributes,\n record: attributes,\n },\n }),\n encode: (attributes) => ({\n ...attributes.private.record,\n ...attributes.public.record,\n }),\n },\n);\n\nexport type DiscountApplication = Schema.Schema.Type<\n typeof DiscountApplication\n>;\n\nexport const DiscountApplication = Schema.Struct({\n target_selection: Schema.Literal(\"all\", \"entitled\", \"explicit\"),\n target_type: Schema.Literal(\"line_item\", \"shipping_line\"),\n title: Schema.NonEmptyString,\n total_allocated_amount: Schema.Number,\n type: Schema.Literal(\"\", \"automatic\", \"discount_code\", \"manual\", \"script\"),\n value: Schema.Union(Schema.Number, Schema.NumberFromString),\n value_type: Schema.Literal(\"fixed_amount\", \"percentage\"),\n description: Schema.NullOr(Schema.String),\n});\n\nexport const Discount = Schema.Struct({\n amount: Schema.Number,\n title: Schema.String,\n});\n\nexport type CurrencyCode = Schema.Schema.Type<typeof CurrencyCode>;\nexport const CurrencyCode = Schema.String;\n\nexport type Image = Schema.Schema.Type<typeof Image>;\nexport const Image = Schema.Struct({\n aspect_ratio: Schema.Number,\n alt: Schema.String,\n height: Schema.Number,\n url: Schema.String,\n width: Schema.Number,\n});\n\nexport type OptionWithValue = Schema.Schema.Type<typeof OptionWithValue>;\nexport const OptionWithValue = Schema.Struct({\n name: Schema.String,\n value: Schema.String,\n});\n\nexport type QuantityRule = Schema.Schema.Type<typeof QuantityRule>;\nexport const QuantityRule = Schema.Struct({\n min: Schema.Number,\n max: Schema.NullOr(Schema.Number),\n increment: Schema.Number,\n});\n\nexport type SellingPlanAllocationPriceAdjustment = Schema.Schema.Type<\n typeof SellingPlanAllocationPriceAdjustment\n>;\nexport const SellingPlanAllocationPriceAdjustment = Schema.Struct({\n position: Schema.Number,\n price: Schema.Number,\n});\n\nexport const SellingPlanPriceAdjustment = Schema.Struct({\n order_count: Schema.NullOr(Schema.Number),\n position: Schema.Number,\n value: Schema.Union(Schema.Number, Schema.String),\n value_type: Schema.Literal(\"percentage\", \"fixed_amount\", \"price\"),\n});\n\nexport type SellingPlanOption = Schema.Schema.Type<typeof SellingPlanOption>;\nexport const SellingPlanOption = Schema.Struct({\n name: Schema.String,\n position: Schema.Number,\n value: Schema.String,\n});\n\nexport type SellingPlan = Schema.Schema.Type<typeof SellingPlan>;\nexport const SellingPlan = Schema.Struct({\n id: Resource.ID,\n name: Schema.String,\n description: Schema.NullOr(Schema.String),\n options: Schema.Array(SellingPlanOption),\n recurring_deliveries: Schema.optionalWith(Schema.Boolean, {\n default: () => false,\n }),\n fixed_selling_plan: Schema.optionalWith(Schema.Boolean, {\n default: () => false,\n }),\n price_adjustments: Schema.Array(SellingPlanPriceAdjustment),\n});\n\nexport type SellingPlanAllocation = Schema.Schema.Type<\n typeof SellingPlanAllocation\n>;\nexport const SellingPlanAllocation = Schema.Struct({\n price_adjustments: Schema.Array(SellingPlanAllocationPriceAdjustment),\n price: Schema.Number,\n compare_at_price: Schema.Number,\n per_delivery_price: Schema.Number,\n selling_plan: SellingPlan,\n});\n\nexport type LineLevelDiscountAllocation = Schema.Schema.Type<\n typeof LineLevelDiscountAllocation\n>;\nexport const LineLevelDiscountAllocation = Schema.Struct({\n amount: Schema.Number,\n discount_application: DiscountApplication,\n});\n\nconst CartLevelDiscountApplicationUpdate = Schema.transform(\n Schema.Struct({\n discount_application: DiscountApplication,\n }),\n DiscountApplication,\n {\n decode: (application) => application.discount_application,\n encode: (discountApplication) => ({\n discount_application: discountApplication,\n }),\n strict: false,\n },\n);\n\nexport const CartLevelDiscountApplication = Schema.Union(\n DiscountApplication,\n CartLevelDiscountApplicationUpdate,\n);\n\nexport type UnitPriceMeasurement = Schema.Schema.Type<\n typeof UnitPriceMeasurement\n>;\nexport const UnitPriceMeasurement = Schema.Struct({\n measured_type: Schema.Literal(\"volume\", \"weight\", \"dimension\"),\n quantity_unit: Schema.String,\n quantity_value: Schema.Number,\n reference_unit: Schema.String,\n reference_value: Schema.Number,\n});\n\nconst VariantOptions = Schema.optionalWith(Schema.Array(Schema.String), {\n default: () => [],\n});\n\nexport type BaseLineItem = Schema.Schema.Type<typeof BaseLineItem>;\nconst BaseLineItem = Schema.Struct({\n id: Resource.ID,\n properties: BaseAttributes,\n quantity: Schema.Number,\n variant_id: Resource.ID,\n key: Schema.String,\n title: Schema.String,\n price: Schema.Number,\n original_price: Schema.Number,\n discounted_price: Schema.Number,\n line_price: Schema.Number,\n original_line_price: Schema.Number,\n total_discount: Schema.Number,\n discounts: Schema.optionalWith(Schema.Array(Discount), { default: () => [] }),\n sku: Schema.NullOr(Schema.String),\n grams: Schema.Number,\n vendor: Schema.String,\n taxable: Schema.Boolean,\n product_id: Resource.ID,\n product_has_only_default_variant: Schema.Boolean,\n gift_card: Schema.Boolean,\n final_line_price: Schema.Number,\n final_price: Schema.Number,\n url: Schema.String,\n featured_image: Schema.optional(Image),\n image: Schema.String,\n handle: Schema.String,\n requires_shipping: Schema.Boolean,\n product_type: Schema.NullOr(Schema.String),\n product_title: Schema.String,\n product_description: Schema.NullOr(Schema.String),\n variant_title: Schema.NullOr(Schema.String),\n variant_options: VariantOptions,\n options_with_values: Schema.Array(OptionWithValue),\n line_level_discount_allocations: Schema.Array(LineLevelDiscountAllocation),\n line_level_total_discount: Schema.Number,\n quantity_rule: Schema.optional(QuantityRule),\n has_components: Schema.optionalWith(Schema.Boolean, { default: () => false }),\n unit_price: Schema.optional(Schema.Number),\n unit_price_measurement: Schema.optional(UnitPriceMeasurement),\n selling_plan_allocation: Schema.optionalWith(\n Schema.NullOr(SellingPlanAllocation),\n { default: () => null },\n ),\n});\n\nexport type LineItem = Schema.Schema.Type<typeof LineItem>;\nexport const LineItem = Schema.transform(\n BaseLineItem,\n Schema.extend(\n BaseLineItem,\n Schema.Struct({\n properties_array: Schema.optionalWith(BaseAttributesArray, {\n default: () => [],\n }),\n private_properties: Schema.optionalWith(BasePrivateAttributes, {\n default: () => ({}),\n }),\n private_properties_array: Schema.optionalWith(\n BasePrivateAttributesArray,\n {\n default: () => [],\n },\n ),\n public_properties: Schema.optionalWith(BasePublicAttributes, {\n default: () => ({}),\n }),\n public_properties_array: Schema.optionalWith(BasePublicAttributesArray, {\n default: () => [],\n }),\n }),\n ),\n {\n decode: (lineItem) => ({\n ...lineItem,\n product: lineItem.handle,\n properties_array: lineItem.properties,\n private_properties: lineItem.properties,\n private_properties_array: lineItem.properties,\n public_properties: lineItem.properties,\n public_properties_array: lineItem.properties,\n }),\n encode: (lineItem) =>\n pipe(\n Record.remove(\"properties_array\")(lineItem),\n Record.remove(\"private_properties\"),\n Record.remove(\"private_properties_array\"),\n Record.remove(\"public_properties\"),\n Record.remove(\"public_properties_array\"),\n ) as BaseLineItem,\n },\n);\n\ntype BaseCart = Schema.Schema.Type<typeof BaseCart>;\nexport const BaseCart = Schema.Struct({\n token: Schema.String,\n note: Schema.NullOr(Schema.String),\n attributes: BaseAttributes,\n discounts: Schema.optionalWith(Schema.Array(Discount), { default: () => [] }),\n discount_codes: Schema.optionalWith(\n Schema.Array(\n Schema.Struct({ code: Schema.String, applicable: Schema.Boolean }),\n ),\n { default: () => [] },\n ),\n original_total_price: Schema.Number,\n total_price: Schema.Number,\n total_discount: Schema.Number,\n total_weight: Schema.Number,\n item_count: Schema.Number,\n items: Schema.Array(LineItem).annotations({ concurrency: \"unbounded\" }),\n requires_shipping: Schema.Boolean,\n currency: CurrencyCode,\n items_subtotal_price: Schema.Number,\n cart_level_discount_applications: Schema.Array(CartLevelDiscountApplication),\n});\n\ntype Cart = Schema.Schema.Type<typeof Cart>;\nexport const Cart = Schema.extend(\n BaseCart,\n Schema.Struct({\n attributes_array: Schema.optionalWith(BaseAttributesArray, {\n default: () => [],\n }),\n private_attributes: Schema.optionalWith(BasePrivateAttributes, {\n default: () => ({}),\n }),\n private_attributes_array: Schema.optionalWith(BasePrivateAttributesArray, {\n default: () => [],\n }),\n public_attributes: Schema.optionalWith(BasePublicAttributes, {\n default: () => ({}),\n }),\n public_attributes_array: Schema.optionalWith(BasePublicAttributesArray, {\n default: () => [],\n }),\n }),\n);\n\nexport const makeCartTransformSchema = <\n A extends Schema.Schema.Type<typeof BaseCart>,\n I,\n R,\n>(\n schema: Schema.Schema<A, I, R>,\n) =>\n Schema.transform(schema, Cart, {\n decode: (cart) => ({\n ...cart,\n attributes_array: cart.attributes,\n private_attributes: cart.attributes,\n private_attributes_array: cart.attributes,\n public_attributes: cart.attributes,\n public_attributes_array: cart.attributes,\n }),\n encode: (cart) =>\n pipe(\n Record.remove(\"attributes_array\")(cart),\n Record.remove(\"private_attributes\"),\n Record.remove(\"private_attributes_array\"),\n Record.remove(\"public_attributes\"),\n Record.remove(\"public_attributes_array\"),\n ) as Schema.Schema.Type<Schema.Schema<A, I, R>>,\n });\n\nexport const CartOutput = makeCartTransformSchema(BaseCart);\n\nexport const makeCartSchema = (sections?: string) => {\n if (sections) {\n return makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n sections: Schema.optionalWith(\n Schema.NullOr(Ajax.Sections.makeResponseSchema(sections)),\n { default: () => null },\n ),\n }),\n ),\n );\n }\n return makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n sections: Schema.optionalWith(Schema.Null, { default: () => null }),\n }),\n ),\n );\n};\n\nexport type AddItemInput = Schema.Schema.Encoded<typeof AddItemInput>;\nexport const AddItemInput = Schema.Struct({\n id: Resource.ID,\n quantity: Schema.optionalWith(Schema.Number, { default: () => 1 }),\n properties: Schema.optionalWith(BaseAttributes, { default: () => ({}) }),\n selling_plan: Schema.optional(Resource.ID),\n});\n\nexport const BaseInput = Schema.extend(Ajax.Sections.Input);\n\nexport type CartAddInput = Schema.Schema.Encoded<typeof CartAddInput>;\nexport const CartAddInput = Schema.Struct({\n items: Schema.Array(AddItemInput),\n}).pipe(BaseInput);\n\nexport type CartAddOutput = Schema.Schema.Type<typeof CartAddOutput>;\nexport const CartAddOutput = Schema.Struct({\n items: Schema.Array(LineItem),\n});\n\nexport type UpdateItemRecordInput = Schema.Schema.Encoded<\n typeof UpdateItemRecordInput\n>;\nexport const UpdateItemRecordInput = Schema.Record({\n key: Schema.String,\n value: Schema.Number,\n});\n\nconst DiscountCodeInput = Schema.Array(Schema.String);\nconst DiscountCodeTransformed = Schema.String;\n\nexport type CartUpdateInput = Schema.Schema.Encoded<typeof CartUpdateInput>;\nexport const CartUpdateInput = Schema.Struct({\n updates: Schema.optional(\n Schema.Union(UpdateItemRecordInput, Schema.Array(Schema.Number)),\n ),\n note: Schema.optional(Schema.NullOr(Schema.String)),\n attributes: Schema.optional(BaseAttributes),\n discount: Schema.optional(\n Schema.transform(DiscountCodeInput, DiscountCodeTransformed, {\n decode: (input) => input.join(\",\"),\n encode: (input) => input.split(\",\"),\n }),\n ),\n}).pipe(BaseInput);\n\nexport type ItemAddedChangelog = Schema.Schema.Type<typeof ItemAddedChangelog>;\nexport const ItemAddedChangelog = Schema.Struct({\n variant_id: Schema.Number,\n quantity: Schema.Number,\n});\n\nexport type CartUpdateOutput = Schema.Schema.Type<typeof CartUpdateOutput>;\nexport const CartUpdateOutput = makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n items_changelog: Schema.Struct({\n added: Schema.Array(ItemAddedChangelog),\n }),\n }),\n ),\n);\n\nexport const CartChangeItemOptionalInput = Schema.Struct({\n quantity: Schema.optional(Schema.Number),\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.NullOr(Schema.String),\n }),\n ),\n selling_plan: Schema.optional(Schema.NullOr(Resource.ID)),\n}).pipe(BaseInput);\n\nexport const LineItemChange = Schema.Struct({\n product_id: Schema.Number,\n variant_id: Schema.Number,\n id: Schema.String,\n image: Schema.String,\n price: Schema.String,\n presentment_price: Schema.Number,\n quantity: Schema.Number,\n title: Schema.String,\n product_title: Schema.String,\n variant_title: Schema.String,\n vendor: Schema.String,\n product_type: Schema.String,\n sku: Schema.String,\n url: Schema.String,\n untranslated_product_title: Schema.String,\n untranslated_variant_title: Schema.String,\n view_key: Schema.String,\n});\n\nexport type CartChangeInput = Schema.Schema.Encoded<typeof CartChangeInput>;\nexport const CartChangeInput = Schema.Union(\n Schema.extend(CartChangeItemOptionalInput)(\n Schema.Struct({\n id: Schema.String,\n }),\n ),\n Schema.extend(CartChangeItemOptionalInput)(\n Schema.Struct({\n line: Schema.Number,\n }),\n ),\n);\n\nexport type CartChangeOutput = Schema.Schema.Type<typeof CartChangeOutput>;\nexport const CartChangeOutput = makeCartTransformSchema(\n Schema.extend(\n BaseCart,\n Schema.Struct({\n items_added: Schema.Array(LineItemChange),\n items_removed: Schema.Array(LineItemChange),\n }),\n ),\n);\n\nexport type CartClearInput = Schema.Schema.Encoded<typeof CartClearInput>;\nexport const CartClearInput = Ajax.Sections.Input;\n\nexport type CartGetInput = Schema.Schema.Encoded<typeof CartClearInput>;\nexport const CartGetInput = Ajax.Sections.Input;\n\nexport type CartUpdateDiscountsInput = Schema.Schema.Encoded<\n typeof CartUpdateDiscountsInput\n>;\nexport const CartUpdateDiscountsInput = Schema.mutable(\n Schema.Array(Schema.NonEmptyString),\n);\n"]}
|