@brytdesigns/shopify-ajax-cart-api 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/effect/api/CartAdd.js +13 -0
  2. package/dist/effect/api/CartAdd.js.map +1 -0
  3. package/dist/effect/api/CartChange.js +13 -0
  4. package/dist/effect/api/CartChange.js.map +1 -0
  5. package/dist/effect/api/CartClear.js +13 -0
  6. package/dist/effect/api/CartClear.js.map +1 -0
  7. package/dist/effect/api/CartGet.js +13 -0
  8. package/dist/effect/api/CartGet.js.map +1 -0
  9. package/dist/effect/api/CartUpdate.js +13 -0
  10. package/dist/effect/api/CartUpdate.js.map +1 -0
  11. package/dist/effect/data/AjaxClientResponse.js +9 -0
  12. package/dist/effect/data/AjaxClientResponse.js.map +1 -0
  13. package/dist/effect/data/index.js +4 -0
  14. package/dist/effect/data/index.js.map +1 -0
  15. package/dist/effect/errors.js +17 -0
  16. package/dist/effect/errors.js.map +1 -0
  17. package/dist/effect/index.d.ts +1629 -0
  18. package/dist/effect/index.js +16 -0
  19. package/dist/effect/index.js.map +1 -0
  20. package/dist/effect/logger/LoggerUtils.js +10 -0
  21. package/dist/effect/logger/LoggerUtils.js.map +1 -0
  22. package/dist/effect/schema.js +293 -0
  23. package/dist/effect/schema.js.map +1 -0
  24. package/dist/effect/services/AjaxRequest.js +106 -0
  25. package/dist/effect/services/AjaxRequest.js.map +1 -0
  26. package/dist/main/effect/api/CartAdd.js +13 -0
  27. package/dist/main/effect/api/CartAdd.js.map +1 -0
  28. package/dist/main/effect/api/CartChange.js +13 -0
  29. package/dist/main/effect/api/CartChange.js.map +1 -0
  30. package/dist/main/effect/api/CartClear.js +13 -0
  31. package/dist/main/effect/api/CartClear.js.map +1 -0
  32. package/dist/main/effect/api/CartGet.js +13 -0
  33. package/dist/main/effect/api/CartGet.js.map +1 -0
  34. package/dist/main/effect/api/CartUpdate.js +13 -0
  35. package/dist/main/effect/api/CartUpdate.js.map +1 -0
  36. package/dist/main/effect/data/AjaxClientResponse.js +9 -0
  37. package/dist/main/effect/data/AjaxClientResponse.js.map +1 -0
  38. package/dist/main/effect/data/index.js +4 -0
  39. package/dist/main/effect/data/index.js.map +1 -0
  40. package/dist/main/effect/errors.js +17 -0
  41. package/dist/main/effect/errors.js.map +1 -0
  42. package/dist/main/effect/index.js +16 -0
  43. package/dist/main/effect/index.js.map +1 -0
  44. package/dist/main/effect/logger/LoggerUtils.js +10 -0
  45. package/dist/main/effect/logger/LoggerUtils.js.map +1 -0
  46. package/dist/main/effect/schema.js +293 -0
  47. package/dist/main/effect/schema.js.map +1 -0
  48. package/dist/main/effect/services/AjaxRequest.js +106 -0
  49. package/dist/main/effect/services/AjaxRequest.js.map +1 -0
  50. package/dist/main/index.d.ts +3044 -0
  51. package/dist/main/index.js +188 -0
  52. package/dist/main/index.js.map +1 -0
  53. package/package.json +42 -0
@@ -0,0 +1,188 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import * as Logger from 'effect/Logger';
3
+ import * as Layer from 'effect/Layer';
4
+ import * as LogLevel from 'effect/LogLevel';
5
+ import * as API from './effect/index.js';
6
+ import * as AjaxRequest from './effect/services/AjaxRequest.js';
7
+ import { AjaxClientResponse } from './effect/data/index.js';
8
+
9
+ const createAjaxCartApi = ({ debug = false }) => {
10
+ let baseLayer = Layer.empty;
11
+ let minimumLogLevel = LogLevel.None;
12
+ let loggerLayer = Logger.pretty;
13
+ if (debug) {
14
+ baseLayer = Layer.mergeAll(loggerLayer);
15
+ minimumLogLevel = LogLevel.All;
16
+ }
17
+ const ajaxLayer = Layer.mergeAll(baseLayer, AjaxRequest.Default);
18
+ return {
19
+ add: (input, options) => Effect.runPromise(
20
+ API.add(input).pipe(
21
+ Logger.withMinimumLogLevel(minimumLogLevel),
22
+ Effect.provide(ajaxLayer),
23
+ Effect.catchAll((error) => {
24
+ if (error._tag === "ParseError" || error._tag === "RequestError" || error._tag === "ResponseError" || error._tag === "@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError") {
25
+ return Effect.fail(
26
+ new Error(error.message, {
27
+ cause: error.cause
28
+ })
29
+ );
30
+ }
31
+ if (error._tag === "HttpBodyError") {
32
+ const reason = error.reason;
33
+ if (reason._tag === "JsonError") {
34
+ return Effect.fail(new Error("Failed to parse JSON response"));
35
+ }
36
+ if (reason._tag === "SchemaError") {
37
+ return Effect.fail(
38
+ new Error(reason.error.message, {
39
+ cause: reason.error.cause
40
+ })
41
+ );
42
+ }
43
+ }
44
+ return Effect.fail(new Error(error.toString()));
45
+ })
46
+ ),
47
+ {
48
+ signal: options?.signal
49
+ }
50
+ ),
51
+ change: (input, options) => Effect.runPromise(
52
+ API.change(input).pipe(
53
+ Logger.withMinimumLogLevel(minimumLogLevel),
54
+ Effect.provide(ajaxLayer),
55
+ Effect.catchAll((error) => {
56
+ if (error._tag === "ParseError" || error._tag === "RequestError" || error._tag === "ResponseError" || error._tag === "@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError") {
57
+ return Effect.fail(
58
+ new Error(error.message, {
59
+ cause: error.cause
60
+ })
61
+ );
62
+ }
63
+ if (error._tag === "HttpBodyError") {
64
+ const reason = error.reason;
65
+ if (reason._tag === "JsonError") {
66
+ return Effect.fail(new Error("Failed to parse JSON response"));
67
+ }
68
+ if (reason._tag === "SchemaError") {
69
+ return Effect.fail(
70
+ new Error(reason.error.message, {
71
+ cause: reason.error.cause
72
+ })
73
+ );
74
+ }
75
+ }
76
+ return Effect.fail(new Error(error.toString()));
77
+ })
78
+ ),
79
+ {
80
+ signal: options?.signal
81
+ }
82
+ ),
83
+ clear: (input, options) => Effect.runPromise(
84
+ API.clear(input).pipe(
85
+ Logger.withMinimumLogLevel(minimumLogLevel),
86
+ Effect.provide(ajaxLayer),
87
+ Effect.catchAll((error) => {
88
+ if (error._tag === "ParseError" || error._tag === "RequestError" || error._tag === "ResponseError" || error._tag === "@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError") {
89
+ return Effect.fail(
90
+ new Error(error.message, {
91
+ cause: error.cause
92
+ })
93
+ );
94
+ }
95
+ if (error._tag === "HttpBodyError") {
96
+ const reason = error.reason;
97
+ if (reason._tag === "JsonError") {
98
+ return Effect.fail(new Error("Failed to parse JSON response"));
99
+ }
100
+ if (reason._tag === "SchemaError") {
101
+ return Effect.fail(
102
+ new Error(reason.error.message, {
103
+ cause: reason.error.cause
104
+ })
105
+ );
106
+ }
107
+ }
108
+ return Effect.fail(new Error(error.toString()));
109
+ })
110
+ ),
111
+ {
112
+ signal: options?.signal
113
+ }
114
+ ),
115
+ get: (input, options) => Effect.runPromise(
116
+ API.get(input).pipe(
117
+ Logger.withMinimumLogLevel(minimumLogLevel),
118
+ Effect.provide(ajaxLayer),
119
+ Effect.catchAll((error) => {
120
+ if (error._tag === "ParseError" || error._tag === "RequestError" || error._tag === "ResponseError" || error._tag === "@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError") {
121
+ return Effect.fail(
122
+ new Error(error.message, {
123
+ cause: error.cause
124
+ })
125
+ );
126
+ }
127
+ if (error._tag === "HttpBodyError") {
128
+ const reason = error.reason;
129
+ if (reason._tag === "JsonError") {
130
+ return Effect.fail(new Error("Failed to parse JSON response"));
131
+ }
132
+ if (reason._tag === "SchemaError") {
133
+ return Effect.fail(
134
+ new Error(reason.error.message, {
135
+ cause: reason.error.cause
136
+ })
137
+ );
138
+ }
139
+ }
140
+ return Effect.fail(new Error(error.toString()));
141
+ })
142
+ ),
143
+ {
144
+ signal: options?.signal
145
+ }
146
+ ),
147
+ update: (input, options) => Effect.runPromise(
148
+ API.update(input).pipe(
149
+ Logger.withMinimumLogLevel(minimumLogLevel),
150
+ Effect.provide(ajaxLayer),
151
+ Effect.catchAll((error) => {
152
+ if (error._tag === "ParseError" || error._tag === "RequestError" || error._tag === "ResponseError" || error._tag === "@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError") {
153
+ return Effect.succeed(
154
+ AjaxClientResponse.make({
155
+ error: {
156
+ status: 400,
157
+ message: error.message,
158
+ description: "Something went wrong"
159
+ }
160
+ })
161
+ );
162
+ }
163
+ if (error._tag === "HttpBodyError") {
164
+ const reason = error.reason;
165
+ if (reason._tag === "JsonError") {
166
+ return Effect.fail(new Error("Failed to parse JSON response"));
167
+ }
168
+ if (reason._tag === "SchemaError") {
169
+ return Effect.fail(
170
+ new Error(reason.error.message, {
171
+ cause: reason.error.cause
172
+ })
173
+ );
174
+ }
175
+ }
176
+ return Effect.fail(new Error(error.toString()));
177
+ })
178
+ ),
179
+ {
180
+ signal: options?.signal
181
+ }
182
+ )
183
+ };
184
+ };
185
+
186
+ export { createAjaxCartApi };
187
+ //# sourceMappingURL=index.js.map
188
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"]}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@brytdesigns/shopify-ajax-cart-api",
3
+ "version": "1.0.0",
4
+ "description": "An AJAX cart that integrates with the AJAX Cart API",
5
+ "main": "./dist/main/index.js",
6
+ "types": "./dist/main/index.d.ts",
7
+ "module": "./dist/main/index.js",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/main/index.d.ts",
14
+ "import": "./dist/main/index.js"
15
+ },
16
+ "./effect": {
17
+ "types": "./dist/main/effect/index.d.ts",
18
+ "import": "./dist/main/effect/index.js"
19
+ }
20
+ },
21
+ "type": "module",
22
+ "keywords": [],
23
+ "author": "Bryt Designs",
24
+ "license": "ISC",
25
+ "devDependencies": {
26
+ "@effect/vitest": "^0.19.0",
27
+ "dts-bundle-generator": "^9.5.1",
28
+ "tsup": "^8.4.0",
29
+ "vitest": "^3.0.6"
30
+ },
31
+ "dependencies": {
32
+ "@effect/platform": "0.82.4",
33
+ "effect": "3.15.2",
34
+ "@brytdesigns/shopify-utils": "1.2.13"
35
+ },
36
+ "scripts": {
37
+ "build": "tsup --clean",
38
+ "dev": "tsx src/index.ts",
39
+ "typecheck": "tsc --noEmit",
40
+ "test": "vitest"
41
+ }
42
+ }