@brytdesigns/shopify-ajax-cart-api 1.0.2 → 1.0.3

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.
@@ -1613,6 +1613,143 @@ export declare namespace createAjaxCartClient {
1613
1613
  signal?: AbortSignal;
1614
1614
  };
1615
1615
  }
1616
+ export declare const validateCart: (cart: unknown) => {
1617
+ readonly total_discount: number;
1618
+ readonly discounts: readonly {
1619
+ readonly title: string;
1620
+ readonly amount: number;
1621
+ }[];
1622
+ readonly requires_shipping: boolean;
1623
+ readonly token: string;
1624
+ readonly note: string | null;
1625
+ readonly attributes: {
1626
+ readonly [x: string]: string | number | boolean | null;
1627
+ };
1628
+ readonly discount_codes: readonly {
1629
+ readonly code: string;
1630
+ readonly applicable: boolean;
1631
+ }[];
1632
+ readonly original_total_price: number;
1633
+ readonly total_price: number;
1634
+ readonly total_weight: number;
1635
+ readonly item_count: number;
1636
+ readonly items: readonly {
1637
+ readonly title: string;
1638
+ readonly url: string;
1639
+ readonly price: number;
1640
+ readonly id: string | number;
1641
+ readonly key: string;
1642
+ readonly properties: {
1643
+ readonly [x: string]: string | number | boolean | null;
1644
+ } | null;
1645
+ readonly quantity: number;
1646
+ readonly variant_id: string | number;
1647
+ readonly original_price: number;
1648
+ readonly discounted_price: number;
1649
+ readonly line_price: number;
1650
+ readonly original_line_price: number;
1651
+ readonly total_discount: number;
1652
+ readonly discounts: readonly {
1653
+ readonly title: string;
1654
+ readonly amount: number;
1655
+ }[];
1656
+ readonly sku: string | null;
1657
+ readonly grams: number;
1658
+ readonly vendor: string;
1659
+ readonly taxable: boolean;
1660
+ readonly product_id: string | number;
1661
+ readonly product_has_only_default_variant: boolean;
1662
+ readonly gift_card: boolean;
1663
+ readonly final_line_price: number;
1664
+ readonly final_price: number;
1665
+ readonly featured_image?: {
1666
+ readonly aspect_ratio: number;
1667
+ readonly alt: string;
1668
+ readonly height: number;
1669
+ readonly url: string;
1670
+ readonly width: number;
1671
+ } | undefined;
1672
+ readonly image: string;
1673
+ readonly handle: string;
1674
+ readonly requires_shipping: boolean;
1675
+ readonly product_type: string;
1676
+ readonly product_title: string;
1677
+ readonly product_description: string;
1678
+ readonly variant_title: string | null;
1679
+ readonly variant_options: readonly string[];
1680
+ readonly options_with_values: readonly {
1681
+ readonly value: string;
1682
+ readonly name: string;
1683
+ }[];
1684
+ readonly line_level_discount_allocations: readonly {
1685
+ readonly amount: number;
1686
+ readonly discount_application: {
1687
+ readonly target_selection: "all" | "entitled" | "explicit";
1688
+ readonly target_type: "line_item" | "shipping_line";
1689
+ readonly title: string;
1690
+ readonly total_allocated_amount: number;
1691
+ readonly type: "" | "automatic" | "discount_code" | "manual" | "script";
1692
+ readonly value: number;
1693
+ readonly value_type: "fixed_amount" | "percentage";
1694
+ readonly description: string | null;
1695
+ };
1696
+ }[];
1697
+ readonly line_level_total_discount: number;
1698
+ readonly quantity_rule?: {
1699
+ readonly min: number;
1700
+ readonly max: number | null;
1701
+ readonly increment: number;
1702
+ } | undefined;
1703
+ readonly has_components: boolean;
1704
+ readonly unit_price?: number | undefined;
1705
+ readonly unit_price_measurement?: {
1706
+ readonly measured_type: "volume" | "weight" | "dimension";
1707
+ readonly quantity_unit: string;
1708
+ readonly quantity_value: number;
1709
+ readonly reference_unit: string;
1710
+ readonly reference_value: number;
1711
+ } | undefined;
1712
+ readonly selling_plan_allocation: {
1713
+ readonly price: number;
1714
+ readonly price_adjustments: readonly {
1715
+ readonly position: number;
1716
+ readonly price: number;
1717
+ }[];
1718
+ readonly compare_at_price: number;
1719
+ readonly per_delivery_price: number;
1720
+ readonly selling_plan: {
1721
+ readonly description: string | null;
1722
+ readonly name: string;
1723
+ readonly id: string | number;
1724
+ readonly options: readonly {
1725
+ readonly value: string;
1726
+ readonly name: string;
1727
+ readonly position: number;
1728
+ }[];
1729
+ readonly recurring_deliveries: boolean;
1730
+ readonly fixed_selling_plan: boolean;
1731
+ readonly price_adjustments: readonly {
1732
+ readonly value: number;
1733
+ readonly value_type: "fixed_amount" | "percentage" | "price";
1734
+ readonly position: number;
1735
+ readonly order_count: number | null;
1736
+ }[];
1737
+ };
1738
+ } | null;
1739
+ }[];
1740
+ readonly currency: string;
1741
+ readonly items_subtotal_price: number;
1742
+ readonly cart_level_discount_applications: readonly {
1743
+ readonly target_selection: "all" | "entitled" | "explicit";
1744
+ readonly target_type: "line_item" | "shipping_line";
1745
+ readonly title: string;
1746
+ readonly total_allocated_amount: number;
1747
+ readonly type: "" | "automatic" | "discount_code" | "manual" | "script";
1748
+ readonly value: number;
1749
+ readonly value_type: "fixed_amount" | "percentage";
1750
+ readonly description: string | null;
1751
+ }[];
1752
+ };
1616
1753
  export declare const createAjaxCartApi: ({ debug }: {
1617
1754
  debug?: boolean | undefined;
1618
1755
  }) => {
@@ -4,8 +4,11 @@ import * as Layer from 'effect/Layer';
4
4
  import * as LogLevel from 'effect/LogLevel';
5
5
  import * as API from './effect/index.js';
6
6
  import * as AjaxRequest from './effect/services/AjaxRequest.js';
7
+ import * as Schema from 'effect/Schema';
7
8
  import { AjaxClientResponse } from './effect/data/index.js';
9
+ import { Cart } from './effect/schema.js';
8
10
 
11
+ const validateCart = (cart) => Effect.runSync(Schema.decodeUnknown(Cart)(cart));
9
12
  const createAjaxCartApi = ({ debug = false }) => {
10
13
  let baseLayer = Layer.empty;
11
14
  let minimumLogLevel = LogLevel.None;
@@ -183,6 +186,6 @@ const createAjaxCartApi = ({ debug = false }) => {
183
186
  };
184
187
  };
185
188
 
186
- export { createAjaxCartApi };
189
+ export { createAjaxCartApi, validateCart };
187
190
  //# sourceMappingURL=index.js.map
188
191
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import * as Effect from \"effect/Effect\";\nimport * as Logger from \"effect/Logger\";\nimport * as Layer from \"effect/Layer\";\nimport * as LogLevel from \"effect/LogLevel\";\nimport * as API from \"./effect/index.js\";\nimport * as AjaxRequest from \"./effect/services/AjaxRequest.js\";\nimport { AjaxClientResponse } from \"./effect/data/index.js\";\n\nexport namespace createAjaxCartClient {\n export type Options = {\n debug?: boolean;\n // logger?: <Message, Output>(\n // options: Logger.Logger.Options<Message>\n // ) => Output;\n };\n\n export type RequestOptions = {\n signal?: AbortSignal;\n };\n}\n\nexport const createAjaxCartApi = ({ debug = false }) => {\n let baseLayer = Layer.empty;\n let minimumLogLevel = LogLevel.None;\n let loggerLayer = Logger.pretty;\n\n if (debug) {\n baseLayer = Layer.mergeAll(loggerLayer);\n minimumLogLevel = LogLevel.All;\n }\n\n // if (logger) {\n // loggerLayer = Logger.replace(Logger.defaultLogger, Logger.make(logger));\n // baseLayer = Layer.mergeAll(loggerLayer);\n // minimumLogLevel = LogLevel.All;\n // }\n\n const ajaxLayer = Layer.mergeAll(baseLayer, AjaxRequest.Default);\n\n return {\n add: (\n input: API.add.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.add(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n change: (\n input: API.change.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.change(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n clear: (\n input: API.clear.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.clear(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n\n get: (\n input: API.get.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.get(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n\n update: (\n input: API.update.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.update(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.succeed(\n AjaxClientResponse.make({\n error: {\n status: 400,\n message: error.message,\n description: \"Something went wrong\",\n },\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n };\n};\n"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import * as Effect from \"effect/Effect\";\nimport * as Logger from \"effect/Logger\";\nimport * as Layer from \"effect/Layer\";\nimport * as LogLevel from \"effect/LogLevel\";\nimport * as API from \"./effect/index.js\";\nimport * as AjaxRequest from \"./effect/services/AjaxRequest.js\";\nimport * as Schema from \"effect/Schema\";\nimport { AjaxClientResponse } from \"./effect/data/index.js\";\nimport { Cart } from \"./effect/schema.js\";\n\nexport namespace createAjaxCartClient {\n export type Options = {\n debug?: boolean;\n // logger?: <Message, Output>(\n // options: Logger.Logger.Options<Message>\n // ) => Output;\n };\n\n export type RequestOptions = {\n signal?: AbortSignal;\n };\n}\n\nexport const validateCart = (cart: unknown) =>\n Effect.runSync(Schema.decodeUnknown(Cart)(cart));\n\nexport const createAjaxCartApi = ({ debug = false }) => {\n let baseLayer = Layer.empty;\n let minimumLogLevel = LogLevel.None;\n let loggerLayer = Logger.pretty;\n\n if (debug) {\n baseLayer = Layer.mergeAll(loggerLayer);\n minimumLogLevel = LogLevel.All;\n }\n\n // if (logger) {\n // loggerLayer = Logger.replace(Logger.defaultLogger, Logger.make(logger));\n // baseLayer = Layer.mergeAll(loggerLayer);\n // minimumLogLevel = LogLevel.All;\n // }\n\n const ajaxLayer = Layer.mergeAll(baseLayer, AjaxRequest.Default);\n\n return {\n add: (\n input: API.add.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.add(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n change: (\n input: API.change.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.change(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n clear: (\n input: API.clear.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.clear(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n\n get: (\n input: API.get.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.get(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.fail(\n new Error(error.message, {\n cause: error.cause,\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n\n update: (\n input: API.update.Input,\n options?: createAjaxCartClient.RequestOptions,\n ) =>\n Effect.runPromise(\n API.update(input).pipe(\n Logger.withMinimumLogLevel(minimumLogLevel),\n Effect.provide(ajaxLayer),\n Effect.catchAll((error) => {\n if (\n error._tag === \"ParseError\" ||\n error._tag === \"RequestError\" ||\n error._tag === \"ResponseError\" ||\n error._tag ===\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\"\n ) {\n return Effect.succeed(\n AjaxClientResponse.make({\n error: {\n status: 400,\n message: error.message,\n description: \"Something went wrong\",\n },\n }),\n );\n }\n if (error._tag === \"HttpBodyError\") {\n const reason = error.reason;\n if (reason._tag === \"JsonError\") {\n return Effect.fail(new Error(\"Failed to parse JSON response\"));\n }\n if (reason._tag === \"SchemaError\") {\n return Effect.fail(\n new Error(reason.error.message, {\n cause: reason.error.cause,\n }),\n );\n }\n }\n return Effect.fail(new Error(error.toString()));\n }),\n ),\n {\n signal: options?.signal,\n },\n ),\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brytdesigns/shopify-ajax-cart-api",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "An AJAX cart that integrates with the AJAX Cart API",
5
5
  "main": "./dist/main/index.js",
6
6
  "types": "./dist/main/index.d.ts",