@brytdesigns/shopify-ajax-cart-api 1.0.21 → 1.0.23

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.
@@ -0,0 +1,39 @@
1
+ import * as Duration from 'effect/Duration';
2
+ import * as Effect from 'effect/Effect';
3
+ import lz from 'lz-string';
4
+
5
+ const Cache = {
6
+ get(key) {
7
+ const json = localStorage.getItem(key);
8
+ if (!json) return null;
9
+ try {
10
+ const entry = JSON.parse(lz.decompressFromUTF16(json));
11
+ if (entry.expiresAt !== void 0 && Date.now() > entry.expiresAt) {
12
+ localStorage.removeItem(key);
13
+ return null;
14
+ }
15
+ return entry.value;
16
+ } catch {
17
+ localStorage.removeItem(key);
18
+ return null;
19
+ }
20
+ },
21
+ set(key, value, timeToLive) {
22
+ const entry = { value };
23
+ if (timeToLive !== void 0) {
24
+ const ttlMs = Duration.toMillis(timeToLive);
25
+ entry.expiresAt = Date.now() + ttlMs;
26
+ }
27
+ localStorage.setItem(key, lz.compressToUTF16(JSON.stringify(entry)));
28
+ },
29
+ remove(key) {
30
+ localStorage.removeItem(key);
31
+ }
32
+ };
33
+ const set = (key, value, ttl) => Effect.sync(() => Cache.set(key, value, ttl));
34
+ const get = (key) => Effect.sync(() => Cache.get(key));
35
+ const remove = (key) => Effect.sync(() => Cache.remove(key));
36
+
37
+ export { get, remove, set };
38
+ //# sourceMappingURL=cache.js.map
39
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/effect/cache.ts"],"names":[],"mappings":";;;;AASA,MAAM,KAAQ,GAAA;AAAA,EACZ,IAAO,GAAuB,EAAA;AAC5B,IAAM,MAAA,IAAA,GAAO,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AACrC,IAAI,IAAA,CAAC,MAAa,OAAA,IAAA;AAClB,IAAI,IAAA;AACF,MAAA,MAAM,QAAQ,IAAK,CAAA,KAAA,CAAM,EAAG,CAAA,mBAAA,CAAoB,IAAI,CAAC,CAAA;AACrD,MAAA,IAAI,MAAM,SAAc,KAAA,KAAA,CAAA,IAAa,KAAK,GAAI,EAAA,GAAI,MAAM,SAAW,EAAA;AACjE,QAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAC3B,QAAO,OAAA,IAAA;AAAA;AAET,MAAA,OAAO,KAAM,CAAA,KAAA;AAAA,KACP,CAAA,MAAA;AACN,MAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAC3B,MAAO,OAAA,IAAA;AAAA;AACT,GACF;AAAA,EAEA,GAAA,CAAO,GAAa,EAAA,KAAA,EAAU,UAA2C,EAAA;AACvE,IAAM,MAAA,KAAA,GAAuB,EAAE,KAAM,EAAA;AACrC,IAAA,IAAI,eAAe,MAAW,EAAA;AAC5B,MAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,QAAA,CAAS,UAAU,CAAA;AAC1C,MAAM,KAAA,CAAA,SAAA,GAAY,IAAK,CAAA,GAAA,EAAQ,GAAA,KAAA;AAAA;AAEjC,IAAa,YAAA,CAAA,OAAA,CAAQ,KAAK,EAAG,CAAA,eAAA,CAAgB,KAAK,SAAU,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,GACrE;AAAA,EAEA,OAAO,GAAmB,EAAA;AACxB,IAAA,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA;AAE/B,CAAA;AAEO,MAAM,GAAM,GAAA,CACjB,GACA,EAAA,KAAA,EACA,GAC+B,KAAA,MAAA,CAAO,IAAK,CAAA,MAAM,KAAM,CAAA,GAAA,CAAI,GAAK,EAAA,KAAA,EAAO,GAAG,CAAC;AAEhE,MAAA,GAAA,GAAM,CAAI,GACrB,KAAA,MAAA,CAAO,KAAK,MAAM,KAAA,CAAM,GAAI,CAAA,GAAG,CAAC;AAErB,MAAA,MAAA,GAAS,CAAC,GACrB,KAAA,MAAA,CAAO,KAAK,MAAM,KAAA,CAAM,MAAO,CAAA,GAAG,CAAC","file":"cache.js","sourcesContent":["import * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport lz from \"lz-string\";\n\ninterface CacheEntry<V> {\n value: V;\n expiresAt?: number;\n}\n\nconst Cache = {\n get<V>(key: string): V | null {\n const json = localStorage.getItem(key);\n if (!json) return null;\n try {\n const entry = JSON.parse(lz.decompressFromUTF16(json)) as CacheEntry<V>;\n if (entry.expiresAt !== undefined && Date.now() > entry.expiresAt) {\n localStorage.removeItem(key);\n return null;\n }\n return entry.value;\n } catch {\n localStorage.removeItem(key);\n return null;\n }\n },\n\n set<V>(key: string, value: V, timeToLive?: Duration.DurationInput): void {\n const entry: CacheEntry<V> = { value };\n if (timeToLive !== undefined) {\n const ttlMs = Duration.toMillis(timeToLive);\n entry.expiresAt = Date.now() + ttlMs;\n }\n localStorage.setItem(key, lz.compressToUTF16(JSON.stringify(entry)));\n },\n\n remove(key: string): void {\n localStorage.removeItem(key);\n },\n};\n\nexport const set = <V>(\n key: string,\n value: V,\n ttl?: Duration.DurationInput,\n): Effect.Effect<void, never> => Effect.sync(() => Cache.set(key, value, ttl));\n\nexport const get = <V>(key: string): Effect.Effect<V | null, never> =>\n Effect.sync(() => Cache.get(key));\n\nexport const remove = (key: string): Effect.Effect<void, never> =>\n Effect.sync(() => Cache.remove(key));\n"]}
@@ -1,10 +1,11 @@
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 'effect/Effect';
5
- import 'effect/ParseResult';
4
+ import * as Effect from 'effect/Effect';
5
+ import * as ParseResult from 'effect/ParseResult';
6
6
  import { Resource, Ajax } from '@brytdesigns/shopify-utils/effect';
7
7
  import { pipe, identity } from 'effect';
8
+ import * as Cache from './cache';
8
9
 
9
10
  const BaseAttributeValue = Schema.Union(
10
11
  Schema.Null,
@@ -189,9 +190,60 @@ const UnitPriceMeasurement = Schema.Struct({
189
190
  reference_unit: Schema.String,
190
191
  reference_value: Schema.Number
191
192
  });
193
+ const VariantQuantityRule = Schema.Struct({
194
+ min: Schema.NullOr(Schema.Number),
195
+ max: Schema.NullOr(Schema.Number),
196
+ increment: Schema.Number
197
+ });
192
198
  const VariantOptions = Schema.optionalWith(Schema.Array(Schema.String), {
193
199
  default: () => []
194
200
  });
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
+ });
195
247
  const BaseLineItem = Schema.Struct({
196
248
  id: Resource.ID,
197
249
  properties: BaseAttributes,
@@ -242,6 +294,7 @@ const LineItem = Schema.transform(
242
294
  Schema.extend(
243
295
  BaseLineItem,
244
296
  Schema.Struct({
297
+ product: Product,
245
298
  properties_array: Schema.optionalWith(BaseAttributesArray, {
246
299
  default: () => []
247
300
  }),
@@ -265,6 +318,7 @@ const LineItem = Schema.transform(
265
318
  {
266
319
  decode: (lineItem) => ({
267
320
  ...lineItem,
321
+ product: lineItem.handle,
268
322
  properties_array: lineItem.properties,
269
323
  private_properties: lineItem.properties,
270
324
  private_properties_array: lineItem.properties,
@@ -276,7 +330,8 @@ const LineItem = Schema.transform(
276
330
  Record.remove("private_properties"),
277
331
  Record.remove("private_properties_array"),
278
332
  Record.remove("public_properties"),
279
- Record.remove("public_properties_array")
333
+ Record.remove("public_properties_array"),
334
+ Record.remove("product")
280
335
  )
281
336
  }
282
337
  );
@@ -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\";\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 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"]}
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"]}