@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.
- package/dist/effect/api/CartAdd.js +13 -0
- package/dist/effect/api/CartAdd.js.map +1 -0
- package/dist/effect/api/CartChange.js +13 -0
- package/dist/effect/api/CartChange.js.map +1 -0
- package/dist/effect/api/CartClear.js +13 -0
- package/dist/effect/api/CartClear.js.map +1 -0
- package/dist/effect/api/CartGet.js +13 -0
- package/dist/effect/api/CartGet.js.map +1 -0
- package/dist/effect/api/CartUpdate.js +13 -0
- package/dist/effect/api/CartUpdate.js.map +1 -0
- package/dist/effect/data/AjaxClientResponse.js +9 -0
- package/dist/effect/data/AjaxClientResponse.js.map +1 -0
- package/dist/effect/data/index.js +4 -0
- package/dist/effect/data/index.js.map +1 -0
- package/dist/effect/errors.js +17 -0
- package/dist/effect/errors.js.map +1 -0
- package/dist/effect/index.d.ts +1629 -0
- package/dist/effect/index.js +16 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/effect/logger/LoggerUtils.js +10 -0
- package/dist/effect/logger/LoggerUtils.js.map +1 -0
- package/dist/effect/schema.js +293 -0
- package/dist/effect/schema.js.map +1 -0
- package/dist/effect/services/AjaxRequest.js +106 -0
- package/dist/effect/services/AjaxRequest.js.map +1 -0
- package/dist/main/effect/api/CartAdd.js +13 -0
- package/dist/main/effect/api/CartAdd.js.map +1 -0
- package/dist/main/effect/api/CartChange.js +13 -0
- package/dist/main/effect/api/CartChange.js.map +1 -0
- package/dist/main/effect/api/CartClear.js +13 -0
- package/dist/main/effect/api/CartClear.js.map +1 -0
- package/dist/main/effect/api/CartGet.js +13 -0
- package/dist/main/effect/api/CartGet.js.map +1 -0
- package/dist/main/effect/api/CartUpdate.js +13 -0
- package/dist/main/effect/api/CartUpdate.js.map +1 -0
- package/dist/main/effect/data/AjaxClientResponse.js +9 -0
- package/dist/main/effect/data/AjaxClientResponse.js.map +1 -0
- package/dist/main/effect/data/index.js +4 -0
- package/dist/main/effect/data/index.js.map +1 -0
- package/dist/main/effect/errors.js +17 -0
- package/dist/main/effect/errors.js.map +1 -0
- package/dist/main/effect/index.js +16 -0
- package/dist/main/effect/index.js.map +1 -0
- package/dist/main/effect/logger/LoggerUtils.js +10 -0
- package/dist/main/effect/logger/LoggerUtils.js.map +1 -0
- package/dist/main/effect/schema.js +293 -0
- package/dist/main/effect/schema.js.map +1 -0
- package/dist/main/effect/services/AjaxRequest.js +106 -0
- package/dist/main/effect/services/AjaxRequest.js.map +1 -0
- package/dist/main/index.d.ts +3044 -0
- package/dist/main/index.js +188 -0
- package/dist/main/index.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as CartAdd from './api/CartAdd.js';
|
|
2
|
+
import * as CartChange from './api/CartChange.js';
|
|
3
|
+
import * as CartClear from './api/CartClear.js';
|
|
4
|
+
import * as CartGet from './api/CartGet.js';
|
|
5
|
+
import * as CartUpdate from './api/CartUpdate.js';
|
|
6
|
+
export * from './errors.js';
|
|
7
|
+
|
|
8
|
+
const add = CartAdd.make;
|
|
9
|
+
const change = CartChange.make;
|
|
10
|
+
const clear = CartClear.make;
|
|
11
|
+
const get = CartGet.make;
|
|
12
|
+
const update = CartUpdate.make;
|
|
13
|
+
|
|
14
|
+
export { add, change, clear, get, update };
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/effect/index.ts"],"names":[],"mappings":";;;;;;;AASO,MAAM,MAAM,OAAQ,CAAA;AAKpB,MAAM,SAAS,UAAW,CAAA;AAK1B,MAAM,QAAQ,SAAU,CAAA;AAKxB,MAAM,MAAM,OAAQ,CAAA;AAKpB,MAAM,SAAS,UAAW,CAAA","file":"index.js","sourcesContent":["import * as CartAdd from \"./api/CartAdd.js\";\nimport * as CartChange from \"./api/CartChange.js\";\nimport * as CartClear from \"./api/CartClear.js\";\nimport * as CartGet from \"./api/CartGet.js\";\nimport * as CartUpdate from \"./api/CartUpdate.js\";\n\nexport namespace add {\n export type Input = CartAdd.AddInput;\n}\nexport const add = CartAdd.make;\n\nexport namespace change {\n export type Input = CartChange.ChangeInput;\n}\nexport const change = CartChange.make;\n\nexport namespace clear {\n export type Input = CartClear.ClearInput;\n}\nexport const clear = CartClear.make;\n\nexport namespace get {\n export type Input = CartGet.GetInput;\n}\nexport const get = CartGet.make;\n\nexport namespace update {\n export type Input = CartUpdate.UpdateInput;\n}\nexport const update = CartUpdate.make;\n\nexport * from \"./errors.js\";\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Logging } from '@brytdesigns/shopify-utils/effect';
|
|
2
|
+
|
|
3
|
+
const withNamespacedLogSpan = Logging.makeNamespacedLogSpan(
|
|
4
|
+
"[@brytdesigns/shopify-hybrid-cart-client]"
|
|
5
|
+
);
|
|
6
|
+
const filterLevelOrNever = Logging.filterLevelOrNever;
|
|
7
|
+
|
|
8
|
+
export { filterLevelOrNever, withNamespacedLogSpan };
|
|
9
|
+
//# sourceMappingURL=LoggerUtils.js.map
|
|
10
|
+
//# sourceMappingURL=LoggerUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/effect/logger/LoggerUtils.ts"],"names":[],"mappings":";;AAEO,MAAM,wBAAwB,OAAQ,CAAA,qBAAA;AAAA,EAC3C;AACF;AAEO,MAAM,qBAAqB,OAAQ,CAAA","file":"LoggerUtils.js","sourcesContent":["import { Logging } from \"@brytdesigns/shopify-utils/effect\";\n\nexport const withNamespacedLogSpan = Logging.makeNamespacedLogSpan(\n \"[@brytdesigns/shopify-hybrid-cart-client]\"\n);\n\nexport const filterLevelOrNever = Logging.filterLevelOrNever;\n"]}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import * as Schema from 'effect/Schema';
|
|
2
|
+
import { Resource, Ajax } from '@brytdesigns/shopify-utils/effect';
|
|
3
|
+
|
|
4
|
+
const BaseAttributes = Schema.Record({
|
|
5
|
+
key: Schema.String,
|
|
6
|
+
value: Schema.Union(
|
|
7
|
+
Schema.Null,
|
|
8
|
+
Schema.String,
|
|
9
|
+
Schema.Boolean,
|
|
10
|
+
Schema.Number
|
|
11
|
+
)
|
|
12
|
+
});
|
|
13
|
+
const Attributes = BaseAttributes;
|
|
14
|
+
const DiscountApplication = Schema.Struct({
|
|
15
|
+
target_selection: Schema.Literal("all", "entitled", "explicit"),
|
|
16
|
+
target_type: Schema.Literal("line_item", "shipping_line"),
|
|
17
|
+
title: Schema.NonEmptyString,
|
|
18
|
+
total_allocated_amount: Schema.Number,
|
|
19
|
+
type: Schema.Literal("", "automatic", "discount_code", "manual", "script"),
|
|
20
|
+
value: Schema.Union(Schema.Number, Schema.NumberFromString),
|
|
21
|
+
value_type: Schema.Literal("fixed_amount", "percentage"),
|
|
22
|
+
description: Schema.NullOr(Schema.String)
|
|
23
|
+
});
|
|
24
|
+
const Discount = Schema.Struct({
|
|
25
|
+
amount: Schema.Number,
|
|
26
|
+
title: Schema.String
|
|
27
|
+
});
|
|
28
|
+
const CurrencyCode = Schema.String;
|
|
29
|
+
const Image = Schema.Struct({
|
|
30
|
+
aspect_ratio: Schema.Number,
|
|
31
|
+
alt: Schema.String,
|
|
32
|
+
height: Schema.Number,
|
|
33
|
+
url: Schema.String,
|
|
34
|
+
width: Schema.Number
|
|
35
|
+
});
|
|
36
|
+
const OptionWithValue = Schema.Struct({
|
|
37
|
+
name: Schema.String,
|
|
38
|
+
value: Schema.String
|
|
39
|
+
});
|
|
40
|
+
const QuantityRule = Schema.Struct({
|
|
41
|
+
min: Schema.Number,
|
|
42
|
+
max: Schema.NullOr(Schema.Number),
|
|
43
|
+
increment: Schema.Number
|
|
44
|
+
});
|
|
45
|
+
const SellingPlanAllocationPriceAdjustment = Schema.Struct({
|
|
46
|
+
position: Schema.Number,
|
|
47
|
+
price: Schema.Number
|
|
48
|
+
});
|
|
49
|
+
const SellingPlanPriceAdjustment = Schema.Struct({
|
|
50
|
+
order_count: Schema.NullOr(Schema.Number),
|
|
51
|
+
position: Schema.Number,
|
|
52
|
+
value: Schema.Number,
|
|
53
|
+
value_type: Schema.Literal("percentage", "fixed_amount", "price")
|
|
54
|
+
});
|
|
55
|
+
const SellingPlanOption = Schema.Struct({
|
|
56
|
+
name: Schema.String,
|
|
57
|
+
position: Schema.Number,
|
|
58
|
+
value: Schema.String
|
|
59
|
+
});
|
|
60
|
+
const SellingPlan = Schema.Struct({
|
|
61
|
+
id: Resource.ID,
|
|
62
|
+
name: Schema.String,
|
|
63
|
+
description: Schema.NullOr(Schema.String),
|
|
64
|
+
options: Schema.Array(SellingPlanOption),
|
|
65
|
+
recurring_deliveries: Schema.optionalWith(Schema.Boolean, {
|
|
66
|
+
default: () => false
|
|
67
|
+
}),
|
|
68
|
+
fixed_selling_plan: Schema.optionalWith(Schema.Boolean, {
|
|
69
|
+
default: () => false
|
|
70
|
+
}),
|
|
71
|
+
price_adjustments: Schema.Array(SellingPlanPriceAdjustment)
|
|
72
|
+
});
|
|
73
|
+
const SellingPlanAllocation = Schema.Struct({
|
|
74
|
+
price_adjustments: Schema.Array(SellingPlanAllocationPriceAdjustment),
|
|
75
|
+
price: Schema.Number,
|
|
76
|
+
compare_at_price: Schema.Number,
|
|
77
|
+
per_delivery_price: Schema.Number,
|
|
78
|
+
selling_plan: SellingPlan
|
|
79
|
+
});
|
|
80
|
+
const LineLevelDiscountAllocation = Schema.Struct({
|
|
81
|
+
amount: Schema.Number,
|
|
82
|
+
discount_application: DiscountApplication
|
|
83
|
+
});
|
|
84
|
+
const CartLevelDiscountApplicationUpdate = Schema.transform(
|
|
85
|
+
Schema.Struct({
|
|
86
|
+
discount_application: DiscountApplication
|
|
87
|
+
}),
|
|
88
|
+
DiscountApplication,
|
|
89
|
+
{
|
|
90
|
+
decode: (application) => application.discount_application,
|
|
91
|
+
encode: (discountApplication) => ({
|
|
92
|
+
discount_application: discountApplication
|
|
93
|
+
}),
|
|
94
|
+
strict: false
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
const CartLevelDiscountApplication = Schema.Union(
|
|
98
|
+
DiscountApplication,
|
|
99
|
+
CartLevelDiscountApplicationUpdate
|
|
100
|
+
);
|
|
101
|
+
const UnitPriceMeasurement = Schema.Struct({
|
|
102
|
+
measured_type: Schema.Literal("volume", "weight", "dimension"),
|
|
103
|
+
quantity_unit: Schema.String,
|
|
104
|
+
quantity_value: Schema.Number,
|
|
105
|
+
reference_unit: Schema.String,
|
|
106
|
+
reference_value: Schema.Number
|
|
107
|
+
});
|
|
108
|
+
const LineItem = Schema.Struct({
|
|
109
|
+
id: Resource.ID,
|
|
110
|
+
properties: Schema.optionalWith(Schema.NullOr(Attributes), {
|
|
111
|
+
default: () => ({})
|
|
112
|
+
}),
|
|
113
|
+
quantity: Schema.Number,
|
|
114
|
+
variant_id: Resource.ID,
|
|
115
|
+
key: Schema.String,
|
|
116
|
+
title: Schema.String,
|
|
117
|
+
price: Schema.Number,
|
|
118
|
+
original_price: Schema.Number,
|
|
119
|
+
discounted_price: Schema.Number,
|
|
120
|
+
line_price: Schema.Number,
|
|
121
|
+
original_line_price: Schema.Number,
|
|
122
|
+
total_discount: Schema.Number,
|
|
123
|
+
discounts: Schema.optionalWith(Schema.Array(Discount), { default: () => [] }),
|
|
124
|
+
sku: Schema.NullOr(Schema.String),
|
|
125
|
+
grams: Schema.Number,
|
|
126
|
+
vendor: Schema.String,
|
|
127
|
+
taxable: Schema.Boolean,
|
|
128
|
+
product_id: Resource.ID,
|
|
129
|
+
product_has_only_default_variant: Schema.Boolean,
|
|
130
|
+
gift_card: Schema.Boolean,
|
|
131
|
+
final_line_price: Schema.Number,
|
|
132
|
+
final_price: Schema.Number,
|
|
133
|
+
url: Schema.String,
|
|
134
|
+
featured_image: Schema.optional(Image),
|
|
135
|
+
image: Schema.String,
|
|
136
|
+
handle: Schema.String,
|
|
137
|
+
requires_shipping: Schema.Boolean,
|
|
138
|
+
product_type: Schema.String,
|
|
139
|
+
product_title: Schema.String,
|
|
140
|
+
product_description: Schema.String,
|
|
141
|
+
variant_title: Schema.NullOr(Schema.String),
|
|
142
|
+
variant_options: Schema.Array(Schema.String),
|
|
143
|
+
options_with_values: Schema.Array(OptionWithValue),
|
|
144
|
+
line_level_discount_allocations: Schema.Array(LineLevelDiscountAllocation),
|
|
145
|
+
line_level_total_discount: Schema.Number,
|
|
146
|
+
quantity_rule: Schema.optional(QuantityRule),
|
|
147
|
+
has_components: Schema.optionalWith(Schema.Boolean, { default: () => false }),
|
|
148
|
+
unit_price: Schema.optional(Schema.Number),
|
|
149
|
+
unit_price_measurement: Schema.optional(UnitPriceMeasurement),
|
|
150
|
+
selling_plan_allocation: Schema.optionalWith(
|
|
151
|
+
Schema.NullOr(SellingPlanAllocation),
|
|
152
|
+
{ default: () => null }
|
|
153
|
+
)
|
|
154
|
+
});
|
|
155
|
+
const Cart = Schema.Struct({
|
|
156
|
+
token: Schema.String,
|
|
157
|
+
note: Schema.NullOr(Schema.String),
|
|
158
|
+
attributes: Schema.optionalWith(Attributes, {
|
|
159
|
+
default: () => ({})
|
|
160
|
+
}),
|
|
161
|
+
discounts: Schema.optionalWith(Schema.Array(Discount), { default: () => [] }),
|
|
162
|
+
discount_codes: Schema.optionalWith(
|
|
163
|
+
Schema.Array(
|
|
164
|
+
Schema.Struct({ code: Schema.String, applicable: Schema.Boolean })
|
|
165
|
+
),
|
|
166
|
+
{ default: () => [] }
|
|
167
|
+
),
|
|
168
|
+
original_total_price: Schema.Number,
|
|
169
|
+
total_price: Schema.Number,
|
|
170
|
+
total_discount: Schema.Number,
|
|
171
|
+
total_weight: Schema.Number,
|
|
172
|
+
item_count: Schema.Number,
|
|
173
|
+
items: Schema.Array(LineItem),
|
|
174
|
+
requires_shipping: Schema.Boolean,
|
|
175
|
+
currency: CurrencyCode,
|
|
176
|
+
items_subtotal_price: Schema.Number,
|
|
177
|
+
cart_level_discount_applications: Schema.Array(CartLevelDiscountApplication)
|
|
178
|
+
});
|
|
179
|
+
const makeCartSchema = (sections) => {
|
|
180
|
+
if (sections) {
|
|
181
|
+
return Schema.Struct({
|
|
182
|
+
...Cart.fields,
|
|
183
|
+
sections: Schema.optionalWith(
|
|
184
|
+
Schema.NullOr(Ajax.Sections.makeResponseSchema(sections)),
|
|
185
|
+
{ default: () => null }
|
|
186
|
+
)
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return Schema.Struct({
|
|
190
|
+
...Cart.fields,
|
|
191
|
+
sections: Schema.optionalWith(Schema.Null, { default: () => null })
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
const AddItemInput = Schema.Struct({
|
|
195
|
+
id: Resource.ID,
|
|
196
|
+
quantity: Schema.optionalWith(Schema.Number, { default: () => 1 }),
|
|
197
|
+
properties: Schema.optionalWith(BaseAttributes, { default: () => ({}) }),
|
|
198
|
+
selling_plan: Schema.optional(Resource.ID)
|
|
199
|
+
});
|
|
200
|
+
const BaseInput = Schema.extend(Ajax.Sections.Input);
|
|
201
|
+
const CartAddInput = Schema.Struct({
|
|
202
|
+
items: Schema.Array(AddItemInput)
|
|
203
|
+
}).pipe(BaseInput);
|
|
204
|
+
const CartAddOutput = Schema.Struct({
|
|
205
|
+
items: Schema.Array(LineItem)
|
|
206
|
+
});
|
|
207
|
+
const UpdateItemRecordInput = Schema.Record({
|
|
208
|
+
key: Schema.String,
|
|
209
|
+
value: Schema.Number
|
|
210
|
+
});
|
|
211
|
+
const DiscountCodeInput = Schema.Array(Schema.String);
|
|
212
|
+
const DiscountCodeTransformed = Schema.String;
|
|
213
|
+
const CartUpdateInput = Schema.Struct({
|
|
214
|
+
updates: Schema.optional(
|
|
215
|
+
Schema.Union(UpdateItemRecordInput, Schema.Array(Schema.Number))
|
|
216
|
+
),
|
|
217
|
+
note: Schema.optional(Schema.NullOr(Schema.String)),
|
|
218
|
+
attributes: Schema.optional(Attributes),
|
|
219
|
+
discount: Schema.optionalWith(
|
|
220
|
+
Schema.transform(DiscountCodeInput, DiscountCodeTransformed, {
|
|
221
|
+
decode: (input) => input.join(","),
|
|
222
|
+
encode: (input) => input.split(",")
|
|
223
|
+
}),
|
|
224
|
+
{
|
|
225
|
+
default: () => ""
|
|
226
|
+
}
|
|
227
|
+
)
|
|
228
|
+
}).pipe(BaseInput);
|
|
229
|
+
const ItemAddedChangelog = Schema.Struct({
|
|
230
|
+
variant_id: Schema.Number,
|
|
231
|
+
quantity: Schema.Number
|
|
232
|
+
});
|
|
233
|
+
const CartUpdateOutput = Schema.Struct({
|
|
234
|
+
...Cart.fields,
|
|
235
|
+
items_changelog: Schema.Struct({
|
|
236
|
+
added: Schema.Array(ItemAddedChangelog)
|
|
237
|
+
})
|
|
238
|
+
});
|
|
239
|
+
const CartChangeItemOptionalInput = Schema.Struct({
|
|
240
|
+
quantity: Schema.optional(Schema.Number),
|
|
241
|
+
properties: Schema.optional(
|
|
242
|
+
Schema.Record({
|
|
243
|
+
key: Schema.String,
|
|
244
|
+
value: Schema.NullOr(Schema.String)
|
|
245
|
+
})
|
|
246
|
+
),
|
|
247
|
+
selling_plan: Schema.optional(Schema.NullOr(Resource.ID))
|
|
248
|
+
}).pipe(BaseInput);
|
|
249
|
+
const LineItemChange = Schema.Struct({
|
|
250
|
+
product_id: Schema.Number,
|
|
251
|
+
variant_id: Schema.Number,
|
|
252
|
+
id: Schema.String,
|
|
253
|
+
image: Schema.String,
|
|
254
|
+
price: Schema.String,
|
|
255
|
+
presentment_price: Schema.Number,
|
|
256
|
+
quantity: Schema.Number,
|
|
257
|
+
title: Schema.String,
|
|
258
|
+
product_title: Schema.String,
|
|
259
|
+
variant_title: Schema.String,
|
|
260
|
+
vendor: Schema.String,
|
|
261
|
+
product_type: Schema.String,
|
|
262
|
+
sku: Schema.String,
|
|
263
|
+
url: Schema.String,
|
|
264
|
+
untranslated_product_title: Schema.String,
|
|
265
|
+
untranslated_variant_title: Schema.String,
|
|
266
|
+
view_key: Schema.String
|
|
267
|
+
});
|
|
268
|
+
const CartChangeInput = Schema.Union(
|
|
269
|
+
Schema.extend(CartChangeItemOptionalInput)(
|
|
270
|
+
Schema.Struct({
|
|
271
|
+
id: Schema.String
|
|
272
|
+
})
|
|
273
|
+
),
|
|
274
|
+
Schema.extend(CartChangeItemOptionalInput)(
|
|
275
|
+
Schema.Struct({
|
|
276
|
+
line: Schema.Number
|
|
277
|
+
})
|
|
278
|
+
)
|
|
279
|
+
);
|
|
280
|
+
const CartChangeOutput = Schema.Struct({
|
|
281
|
+
...Cart.fields,
|
|
282
|
+
items_added: Schema.Array(LineItemChange),
|
|
283
|
+
items_removed: Schema.Array(LineItemChange)
|
|
284
|
+
});
|
|
285
|
+
const CartClearInput = Ajax.Sections.Input;
|
|
286
|
+
const CartGetInput = Ajax.Sections.Input;
|
|
287
|
+
const CartUpdateDiscountsInput = Schema.mutable(
|
|
288
|
+
Schema.Array(Schema.NonEmptyString)
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
export { AddItemInput, Attributes, BaseAttributes, BaseInput, Cart, CartAddInput, CartAddOutput, CartChangeInput, CartChangeItemOptionalInput, CartChangeOutput, CartClearInput, CartGetInput, CartLevelDiscountApplication, CartUpdateDiscountsInput, CartUpdateInput, CartUpdateOutput, CurrencyCode, Discount, DiscountApplication, Image, ItemAddedChangelog, LineItem, LineItemChange, LineLevelDiscountAllocation, OptionWithValue, QuantityRule, SellingPlan, SellingPlanAllocation, SellingPlanAllocationPriceAdjustment, SellingPlanOption, SellingPlanPriceAdjustment, UnitPriceMeasurement, UpdateItemRecordInput, makeCartSchema };
|
|
292
|
+
//# sourceMappingURL=schema.js.map
|
|
293
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +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 { Resource, Ajax } from \"@brytdesigns/shopify-utils/effect\";\n\nexport type BaseAttributes = Schema.Schema.Type<typeof BaseAttributes>;\nexport const BaseAttributes = Schema.Record({\n key: Schema.String,\n value: Schema.Union(\n Schema.Null,\n Schema.String,\n Schema.Boolean,\n Schema.Number,\n ),\n});\n\nexport const Attributes = BaseAttributes;\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.Number,\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\nexport type LineItem = Schema.Schema.Type<typeof LineItem>;\nexport const LineItem = Schema.Struct({\n id: Resource.ID,\n properties: Schema.optionalWith(Schema.NullOr(Attributes), {\n default: () => ({}),\n }),\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.String,\n product_title: Schema.String,\n product_description: Schema.String,\n variant_title: Schema.NullOr(Schema.String),\n variant_options: Schema.Array(Schema.String),\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 const Cart = Schema.Struct({\n token: Schema.String,\n note: Schema.NullOr(Schema.String),\n attributes: Schema.optionalWith(Attributes, {\n default: () => ({}),\n }),\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),\n requires_shipping: Schema.Boolean,\n currency: CurrencyCode,\n items_subtotal_price: Schema.Number,\n cart_level_discount_applications: Schema.Array(CartLevelDiscountApplication),\n});\n\nexport const makeCartSchema = (sections?: string) => {\n if (sections) {\n return Schema.Struct({\n ...Cart.fields,\n sections: Schema.optionalWith(\n Schema.NullOr(Ajax.Sections.makeResponseSchema(sections)),\n { default: () => null },\n ),\n });\n }\n return Schema.Struct({\n ...Cart.fields,\n sections: Schema.optionalWith(Schema.Null, { default: () => null }),\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(Attributes),\n discount: Schema.optionalWith(\n Schema.transform(DiscountCodeInput, DiscountCodeTransformed, {\n decode: (input) => input.join(\",\"),\n encode: (input) => input.split(\",\"),\n }),\n {\n default: () => \"\",\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 = Schema.Struct({\n ...Cart.fields,\n items_changelog: Schema.Struct({\n added: Schema.Array(ItemAddedChangelog),\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 = Schema.Struct({\n ...Cart.fields,\n items_added: Schema.Array(LineItemChange),\n items_removed: Schema.Array(LineItemChange),\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"]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import * as Schema from 'effect/Schema';
|
|
3
|
+
import * as Function from 'effect/Function';
|
|
4
|
+
import * as HttpClient from '@effect/platform/HttpClient';
|
|
5
|
+
import * as HttpClientResponse from '@effect/platform/HttpClientResponse';
|
|
6
|
+
import * as HttpClientRequest from '@effect/platform/HttpClientRequest';
|
|
7
|
+
import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
|
|
8
|
+
import { Ajax } from '@brytdesigns/shopify-utils/effect';
|
|
9
|
+
import * as LoggerUtils from '../logger/LoggerUtils.js';
|
|
10
|
+
import { InvalidAjaxMethodError } from '../errors.js';
|
|
11
|
+
import { AjaxClientResponse } from '../data/index.js';
|
|
12
|
+
|
|
13
|
+
Schema.Struct({});
|
|
14
|
+
const Default = FetchHttpClient.layer;
|
|
15
|
+
const makeFactory = ({
|
|
16
|
+
inputSchema,
|
|
17
|
+
routeName,
|
|
18
|
+
method,
|
|
19
|
+
outputSchema
|
|
20
|
+
}) => (input) => Effect.gen(function* () {
|
|
21
|
+
const client = yield* HttpClient.HttpClient;
|
|
22
|
+
const decodedInput = yield* Schema.decodeUnknown(inputSchema)(
|
|
23
|
+
input || {}
|
|
24
|
+
);
|
|
25
|
+
const routes = Ajax.Window.ShopifyRoutes.make();
|
|
26
|
+
const route = routes[routeName];
|
|
27
|
+
const url = `${window.location.origin}${route}`;
|
|
28
|
+
let request;
|
|
29
|
+
if (method === "post") {
|
|
30
|
+
request = yield* HttpClientRequest.post(url, {
|
|
31
|
+
acceptJson: true
|
|
32
|
+
}).pipe(HttpClientRequest.bodyJson(decodedInput));
|
|
33
|
+
} else if (method === "get") {
|
|
34
|
+
request = HttpClientRequest.get(url, {
|
|
35
|
+
acceptJson: true
|
|
36
|
+
}).pipe(HttpClientRequest.setUrlParams(decodedInput));
|
|
37
|
+
} else {
|
|
38
|
+
return yield* Effect.fail(new InvalidAjaxMethodError());
|
|
39
|
+
}
|
|
40
|
+
const response = yield* client.execute(request);
|
|
41
|
+
if (response.status !== 200) {
|
|
42
|
+
const data = yield* response.json;
|
|
43
|
+
return AjaxClientResponse.make({
|
|
44
|
+
error: {
|
|
45
|
+
description: data.description,
|
|
46
|
+
status: data.status,
|
|
47
|
+
message: data.message
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (decodedInput.sections) {
|
|
52
|
+
const output2 = outputSchema.pipe(
|
|
53
|
+
Schema.extend(
|
|
54
|
+
Schema.Struct({
|
|
55
|
+
sections: Ajax.Sections.makeResponseSchema(decodedInput.sections)
|
|
56
|
+
})
|
|
57
|
+
)
|
|
58
|
+
);
|
|
59
|
+
const json2 = yield* Function.pipe(
|
|
60
|
+
response,
|
|
61
|
+
HttpClientResponse.schemaBodyJson(output2)
|
|
62
|
+
);
|
|
63
|
+
const clientResponse2 = AjaxClientResponse.make({
|
|
64
|
+
data: json2
|
|
65
|
+
});
|
|
66
|
+
yield* Effect.annotateLogsScoped({
|
|
67
|
+
method,
|
|
68
|
+
route,
|
|
69
|
+
input: decodedInput,
|
|
70
|
+
output: clientResponse2
|
|
71
|
+
});
|
|
72
|
+
yield* Effect.logInfo("Request");
|
|
73
|
+
return clientResponse2;
|
|
74
|
+
}
|
|
75
|
+
const output = outputSchema.pipe(
|
|
76
|
+
Schema.extend(
|
|
77
|
+
Schema.Struct({
|
|
78
|
+
sections: Schema.optionalWith(Schema.Null, { default: () => null })
|
|
79
|
+
})
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
const json = yield* Function.pipe(
|
|
83
|
+
response,
|
|
84
|
+
HttpClientResponse.schemaBodyJson(output)
|
|
85
|
+
);
|
|
86
|
+
const clientResponse = AjaxClientResponse.make({
|
|
87
|
+
data: json
|
|
88
|
+
});
|
|
89
|
+
yield* Effect.annotateLogsScoped({
|
|
90
|
+
method,
|
|
91
|
+
route,
|
|
92
|
+
input: decodedInput,
|
|
93
|
+
output: clientResponse
|
|
94
|
+
});
|
|
95
|
+
yield* Effect.logInfo("Request");
|
|
96
|
+
return clientResponse;
|
|
97
|
+
}).pipe(
|
|
98
|
+
Effect.scoped,
|
|
99
|
+
LoggerUtils.withNamespacedLogSpan(
|
|
100
|
+
routeName.replace("_url", "").replace("_", ":")
|
|
101
|
+
)
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
export { Default, makeFactory };
|
|
105
|
+
//# sourceMappingURL=AjaxRequest.js.map
|
|
106
|
+
//# sourceMappingURL=AjaxRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/effect/services/AjaxRequest.ts"],"names":["output","json","clientResponse"],"mappings":"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","file":"AjaxRequest.js","sourcesContent":["import * as Effect from \"effect/Effect\";\nimport * as Schema from \"effect/Schema\";\nimport * as Function from \"effect/Function\";\nimport * as HttpClient from \"@effect/platform/HttpClient\";\nimport * as HttpClientResponse from \"@effect/platform/HttpClientResponse\";\nimport * as HttpClientRequest from \"@effect/platform/HttpClientRequest\";\nimport * as FetchHttpClient from \"@effect/platform/FetchHttpClient\";\n\nimport { Ajax } from \"@brytdesigns/shopify-utils/effect\";\n\nimport * as LoggerUtils from \"../logger/LoggerUtils.js\";\nimport { type CartError, InvalidAjaxMethodError } from \"../errors.js\";\nimport { AjaxClientResponse } from \"../data/index.js\";\n\nconst BaseOutputSchema = Schema.Struct({});\n\nexport const Default = FetchHttpClient.layer;\n\nexport const makeFactory =\n <\n A extends typeof Ajax.Sections.Input.Type,\n I,\n R,\n B extends typeof BaseOutputSchema.Type,\n J,\n S,\n >({\n inputSchema,\n routeName,\n method,\n outputSchema,\n }: {\n method: keyof Pick<typeof HttpClientRequest, \"post\" | \"get\">;\n routeName: keyof Pick<\n Ajax.Window.ShopifyRoutes.ShopifyRoutes,\n | \"cart_add_url\"\n | \"cart_update_url\"\n | \"cart_url\"\n | \"cart_change_url\"\n | \"cart_clear_url\"\n >;\n inputSchema: Schema.Schema<A, I, R>;\n outputSchema: Schema.Schema<B, J, S>;\n }) =>\n (input?: Schema.Schema<A, I, R>[\"Encoded\"]) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient;\n const decodedInput = yield* Schema.decodeUnknown(inputSchema)(\n input || {}\n );\n const routes = Ajax.Window.ShopifyRoutes.make();\n const route = routes[routeName];\n const url = `${window.location.origin}${route}`;\n\n let request: HttpClientRequest.HttpClientRequest;\n\n if (method === \"post\") {\n request = yield* HttpClientRequest.post(url, {\n acceptJson: true,\n }).pipe(HttpClientRequest.bodyJson(decodedInput));\n } else if (method === \"get\") {\n request = HttpClientRequest.get(url, {\n acceptJson: true,\n }).pipe(HttpClientRequest.setUrlParams(decodedInput));\n } else {\n return yield* Effect.fail(new InvalidAjaxMethodError());\n }\n\n const response = yield* client.execute(request);\n\n if (response.status !== 200) {\n const data = (yield* response.json) as CartError;\n return AjaxClientResponse.make({\n error: {\n description: data.description,\n status: data.status,\n message: data.message,\n },\n });\n }\n\n if (decodedInput.sections) {\n const output = outputSchema.pipe(\n Schema.extend(\n Schema.Struct({\n sections: Ajax.Sections.makeResponseSchema(decodedInput.sections),\n })\n )\n );\n\n const json = yield* Function.pipe(\n response,\n HttpClientResponse.schemaBodyJson(output)\n );\n\n const clientResponse = AjaxClientResponse.make({\n data: json,\n });\n\n yield* Effect.annotateLogsScoped({\n method,\n route,\n input: decodedInput,\n output: clientResponse,\n });\n\n yield* Effect.logInfo(\"Request\");\n\n return clientResponse;\n }\n\n const output = outputSchema.pipe(\n Schema.extend(\n Schema.Struct({\n sections: Schema.optionalWith(Schema.Null, { default: () => null }),\n })\n )\n );\n\n const json = yield* Function.pipe(\n response,\n HttpClientResponse.schemaBodyJson(output)\n );\n\n const clientResponse = AjaxClientResponse.make({\n data: json,\n });\n\n yield* Effect.annotateLogsScoped({\n method,\n route,\n input: decodedInput,\n output: clientResponse,\n });\n\n yield* Effect.logInfo(\"Request\");\n\n return clientResponse;\n }).pipe(\n Effect.scoped,\n LoggerUtils.withNamespacedLogSpan(\n routeName.replace(\"_url\", \"\").replace(\"_\", \":\")\n )\n );\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CartAddOutput, CartAddInput } from '../schema.js';
|
|
2
|
+
import * as AjaxRequest from '../services/AjaxRequest.js';
|
|
3
|
+
|
|
4
|
+
const make = AjaxRequest.makeFactory({
|
|
5
|
+
routeName: "cart_add_url",
|
|
6
|
+
method: "post",
|
|
7
|
+
inputSchema: CartAddInput,
|
|
8
|
+
outputSchema: CartAddOutput
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { make };
|
|
12
|
+
//# sourceMappingURL=CartAdd.js.map
|
|
13
|
+
//# sourceMappingURL=CartAdd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/effect/api/CartAdd.ts"],"names":[],"mappings":";;;AAMa,MAAA,IAAA,GAAO,YAAY,WAAY,CAAA;AAAA,EAC1C,SAAW,EAAA,cAAA;AAAA,EACX,MAAQ,EAAA,MAAA;AAAA,EACR,WAAa,EAAA,YAAA;AAAA,EACb,YAAc,EAAA;AAChB,CAAC","file":"CartAdd.js","sourcesContent":["import { CartAddInput, CartAddOutput } from \"../schema.js\";\n\nimport * as AjaxRequest from \"../services/AjaxRequest.js\";\n\nexport type AddInput = CartAddInput;\n\nexport const make = AjaxRequest.makeFactory({\n routeName: \"cart_add_url\",\n method: \"post\",\n inputSchema: CartAddInput,\n outputSchema: CartAddOutput,\n});\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CartChangeOutput, CartChangeInput } from '../schema.js';
|
|
2
|
+
import * as AjaxRequest from '../services/AjaxRequest.js';
|
|
3
|
+
|
|
4
|
+
const make = AjaxRequest.makeFactory({
|
|
5
|
+
routeName: "cart_change_url",
|
|
6
|
+
method: "post",
|
|
7
|
+
inputSchema: CartChangeInput,
|
|
8
|
+
outputSchema: CartChangeOutput
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { make };
|
|
12
|
+
//# sourceMappingURL=CartChange.js.map
|
|
13
|
+
//# sourceMappingURL=CartChange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/effect/api/CartChange.ts"],"names":[],"mappings":";;;AAMa,MAAA,IAAA,GAAO,YAAY,WAAY,CAAA;AAAA,EAC1C,SAAW,EAAA,iBAAA;AAAA,EACX,MAAQ,EAAA,MAAA;AAAA,EACR,WAAa,EAAA,eAAA;AAAA,EACb,YAAc,EAAA;AAChB,CAAC","file":"CartChange.js","sourcesContent":["import { CartChangeInput, CartChangeOutput } from \"../schema.js\";\n\nimport * as AjaxRequest from \"../services/AjaxRequest.js\";\n\nexport type ChangeInput = CartChangeInput;\n\nexport const make = AjaxRequest.makeFactory({\n routeName: \"cart_change_url\",\n method: \"post\",\n inputSchema: CartChangeInput,\n outputSchema: CartChangeOutput,\n});\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Cart, CartClearInput } from '../schema.js';
|
|
2
|
+
import * as AjaxRequest from '../services/AjaxRequest.js';
|
|
3
|
+
|
|
4
|
+
const make = AjaxRequest.makeFactory({
|
|
5
|
+
routeName: "cart_clear_url",
|
|
6
|
+
method: "post",
|
|
7
|
+
inputSchema: CartClearInput,
|
|
8
|
+
outputSchema: Cart
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { make };
|
|
12
|
+
//# sourceMappingURL=CartClear.js.map
|
|
13
|
+
//# sourceMappingURL=CartClear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/effect/api/CartClear.ts"],"names":[],"mappings":";;;AAMa,MAAA,IAAA,GAAO,YAAY,WAAY,CAAA;AAAA,EAC1C,SAAW,EAAA,gBAAA;AAAA,EACX,MAAQ,EAAA,MAAA;AAAA,EACR,WAAa,EAAA,cAAA;AAAA,EACb,YAAc,EAAA;AAChB,CAAC","file":"CartClear.js","sourcesContent":["import { Cart, CartClearInput } from \"../schema.js\";\n\nimport * as AjaxRequest from \"../services/AjaxRequest.js\";\n\nexport type ClearInput = CartClearInput;\n\nexport const make = AjaxRequest.makeFactory({\n routeName: \"cart_clear_url\",\n method: \"post\",\n inputSchema: CartClearInput,\n outputSchema: Cart,\n});\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Cart, CartGetInput } from '../schema.js';
|
|
2
|
+
import * as AjaxRequest from '../services/AjaxRequest.js';
|
|
3
|
+
|
|
4
|
+
const make = AjaxRequest.makeFactory({
|
|
5
|
+
routeName: "cart_url",
|
|
6
|
+
method: "get",
|
|
7
|
+
inputSchema: CartGetInput,
|
|
8
|
+
outputSchema: Cart
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { make };
|
|
12
|
+
//# sourceMappingURL=CartGet.js.map
|
|
13
|
+
//# sourceMappingURL=CartGet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/effect/api/CartGet.ts"],"names":[],"mappings":";;;AAMa,MAAA,IAAA,GAAO,YAAY,WAAY,CAAA;AAAA,EAC1C,SAAW,EAAA,UAAA;AAAA,EACX,MAAQ,EAAA,KAAA;AAAA,EACR,WAAa,EAAA,YAAA;AAAA,EACb,YAAc,EAAA;AAChB,CAAC","file":"CartGet.js","sourcesContent":["import { Cart, CartGetInput } from \"../schema.js\";\n\nimport * as AjaxRequest from \"../services/AjaxRequest.js\";\n\nexport type GetInput = CartGetInput;\n\nexport const make = AjaxRequest.makeFactory({\n routeName: \"cart_url\",\n method: \"get\",\n inputSchema: CartGetInput,\n outputSchema: Cart,\n});\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CartUpdateOutput, CartUpdateInput } from '../schema.js';
|
|
2
|
+
import * as AjaxRequest from '../services/AjaxRequest.js';
|
|
3
|
+
|
|
4
|
+
const make = AjaxRequest.makeFactory({
|
|
5
|
+
routeName: "cart_update_url",
|
|
6
|
+
method: "post",
|
|
7
|
+
inputSchema: CartUpdateInput,
|
|
8
|
+
outputSchema: CartUpdateOutput
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { make };
|
|
12
|
+
//# sourceMappingURL=CartUpdate.js.map
|
|
13
|
+
//# sourceMappingURL=CartUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/effect/api/CartUpdate.ts"],"names":[],"mappings":";;;AAMa,MAAA,IAAA,GAAO,YAAY,WAAY,CAAA;AAAA,EAC1C,SAAW,EAAA,iBAAA;AAAA,EACX,MAAQ,EAAA,MAAA;AAAA,EACR,WAAa,EAAA,eAAA;AAAA,EACb,YAAc,EAAA;AAChB,CAAC","file":"CartUpdate.js","sourcesContent":["import { CartUpdateInput, CartUpdateOutput } from \"../schema.js\";\n\nimport * as AjaxRequest from \"../services/AjaxRequest.js\";\n\nexport type UpdateInput = CartUpdateInput;\n\nexport const make = AjaxRequest.makeFactory({\n routeName: \"cart_update_url\",\n method: \"post\",\n inputSchema: CartUpdateInput,\n outputSchema: CartUpdateOutput,\n});\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Data from 'effect/Data';
|
|
2
|
+
|
|
3
|
+
class AjaxClientResponse extends Data.Class {
|
|
4
|
+
}
|
|
5
|
+
const make = (data) => Data.case()(data);
|
|
6
|
+
|
|
7
|
+
export { AjaxClientResponse, make };
|
|
8
|
+
//# sourceMappingURL=AjaxClientResponse.js.map
|
|
9
|
+
//# sourceMappingURL=AjaxClientResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/effect/data/AjaxClientResponse.ts"],"names":[],"mappings":";;AAWO,MAAM,kBAAA,SAAwC,KAAK,KAExD,CAAA;AAAC;AAEI,MAAM,OAAO,CAClB,IAAA,KACG,IAAK,CAAA,IAAA,GAAkC,IAAI","file":"AjaxClientResponse.js","sourcesContent":["import * as Data from \"effect/Data\";\n\ninterface IAjaxClientResponse<TData = any> {\n data?: TData;\n error?: {\n status: number;\n message: string;\n description?: string;\n };\n}\n\nexport class AjaxClientResponse<TData = any> extends Data.Class<\n IAjaxClientResponse<TData>\n> {}\n\nexport const make = <TData = undefined>(\n data: Parameters<ReturnType<typeof Data.case<AjaxClientResponse<TData>>>>[0]\n) => Data.case<AjaxClientResponse<TData>>()(data);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as Data from 'effect/Data';
|
|
2
|
+
|
|
3
|
+
class CartError extends Data.TaggedError(
|
|
4
|
+
"@brytdesigns/hybrid-cart-client/CartError"
|
|
5
|
+
) {
|
|
6
|
+
}
|
|
7
|
+
class InvalidAjaxMethodError extends Data.TaggedError(
|
|
8
|
+
"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError"
|
|
9
|
+
) {
|
|
10
|
+
constructor() {
|
|
11
|
+
super({ message: "Invalid HTTP method | Allowed: 'get' or 'post'" });
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { CartError, InvalidAjaxMethodError };
|
|
16
|
+
//# sourceMappingURL=errors.js.map
|
|
17
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/effect/errors.ts"],"names":[],"mappings":";;AAMO,MAAM,kBAAkB,IAAK,CAAA,WAAA;AAAA,EAClC;AACF,CAIG,CAAA;AAAE;AAME,MAAM,+BAA+B,IAAK,CAAA,WAAA;AAAA,EAC/C;AACF,CAEG,CAAA;AAAA,EACD,WAAc,GAAA;AACZ,IAAM,KAAA,CAAA,EAAE,OAAS,EAAA,gDAAA,EAAkD,CAAA;AAAA;AAEvE","file":"errors.js","sourcesContent":["import * as Data from \"effect/Data\";\n\n/**\n * @internal\n *\n */\nexport class CartError extends Data.TaggedError(\n \"@brytdesigns/hybrid-cart-client/CartError\",\n)<{\n status: number;\n message: string;\n description: string;\n}> { }\n\n/**\n * @internal\n *\n */\nexport class InvalidAjaxMethodError extends Data.TaggedError(\n \"@brytdesigns/hybrid-cart-client/InvalidAjaxMethodError\",\n)<{\n message: string;\n}> {\n constructor() {\n super({ message: \"Invalid HTTP method | Allowed: 'get' or 'post'\" });\n }\n}\n"]}
|