bitsnap-checkout
Version:
This is Bitsnap Checkout React library for easy integration with any website which is using React framework
797 lines (778 loc) • 114 kB
JavaScript
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
ApplePayButton: () => ApplePay_default,
Bitsnap: () => Bitsnap,
BitsnapCheckout: () => BitsnapCart_default,
GooglePayButton: () => GooglePay_default,
addProductToCart: () => addProductToCart,
createCheckout: () => createCheckout,
createPaymentURL: () => createPaymentURL,
getReferenceIfPossible: () => getReferenceIfPossible,
handleWebhook: () => handleWebhook,
handleWebhookSignature: () => handleWebhookSignature,
hideCart: () => hideCart,
injectReferenceToRequestIfNeeded: () => injectReferenceToRequestIfNeeded,
setCustomHost: () => setCustomHost,
setProjectID: () => setProjectID,
showCart: () => showCart
});
module.exports = __toCommonJS(src_exports);
// src/components/checkout/ApplePay.tsx
var import_apple_pay_button = __toESM(require("apple-pay-button"));
// src/public.api.client.ts
var import_connect = require("@connectrpc/connect");
var import_connect_web = require("@connectrpc/connect-web");
// src/gen/proto/public/v1/public_api_pb.ts
var import_codegenv25 = require("@bufbuild/protobuf/codegenv2");
var import_wkt3 = require("@bufbuild/protobuf/wkt");
// src/gen/proto/common/v1/gateway_pb.ts
var import_codegenv2 = require("@bufbuild/protobuf/codegenv2");
var file_common_v1_gateway = /* @__PURE__ */ (0, import_codegenv2.fileDesc)("Chdjb21tb24vdjEvZ2F0ZXdheS5wcm90bxIJY29tbW9uLnYxKrMBCgdHYXRld2F5Eg8KC0dBVEVXQVlfQUxMEAASFwoTR0FURVdBWV9QUlpFTEVXWV8yNBABEhIKDkdBVEVXQVlfU1RSSVBFEAISEAoMR0FURVdBWV9UUEFZEAMSHAoYR0FURVdBWV9DQVNIX09OX0RFTElWRVJZEAQSEAoMR0FURVdBWV9GUkVFEAUSFgoSR0FURVdBWV9JTlBPU1RfUEFZEAYSEAoMR0FURVdBWV9QQVlVEAdCTlpMZ2l0aHViLmNvbS9lbW1lbXMvc3VwZXItY2FydC9hcHBzL3Nydi13b3JrZXIvdXRpbHMvbW9kZWxzL2NvbW1vbi92MTtjb21tb252MWIGcHJvdG8z");
// src/gen/proto/common/v1/address_pb.ts
var import_codegenv22 = require("@bufbuild/protobuf/codegenv2");
var file_common_v1_address = /* @__PURE__ */ (0, import_codegenv22.fileDesc)("Chdjb21tb24vdjEvYWRkcmVzcy5wcm90bxIJY29tbW9uLnYxIocBCgdBZGRyZXNzEgwKBG5hbWUYASABKAkSDQoFbGluZTEYAiABKAkSEgoFbGluZTIYAyABKAlIAIgBARIMCgRjaXR5GAQgASgJEg8KB2NvdW50cnkYBSABKAkSFQoIemlwX2NvZGUYBiABKAlIAYgBAUIICgZfbGluZTJCCwoJX3ppcF9jb2RlIq4BCg5CaWxsaW5nQWRkcmVzcxIMCgRuYW1lGAEgASgJEg0KBWxpbmUxGAIgASgJEhIKBWxpbmUyGAMgASgJSACIAQESDAoEY2l0eRgEIAEoCRIPCgdjb3VudHJ5GAUgASgJEhUKCHppcF9jb2RlGAYgASgJSAGIAQESEwoGdGF4X2lkGAcgASgJSAKIAQFCCAoGX2xpbmUyQgsKCV96aXBfY29kZUIJCgdfdGF4X2lkQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw");
var AddressSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_common_v1_address, 0);
var BillingAddressSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_common_v1_address, 1);
// src/gen/proto/common/v1/push_notifications_pb.ts
var import_codegenv23 = require("@bufbuild/protobuf/codegenv2");
var import_wkt = require("@bufbuild/protobuf/wkt");
var file_common_v1_push_notifications = /* @__PURE__ */ (0, import_codegenv23.fileDesc)("CiJjb21tb24vdjEvcHVzaF9ub3RpZmljYXRpb25zLnByb3RvEgljb21tb24udjEi9gEKG1B1c2hOb3RpZmljYXRpb25EZXZpY2VUb2tlbhIXCgpwdXNoX3Rva2VuGAIgASgJSACIAQESNAoLZXhwaXJlX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESEwoGcDI1NmRoGAQgASgJSAKIAQESFQoIZW5kcG9pbnQYBSABKAlIA4gBARIlCghwbGF0Zm9ybRgGIAEoDjITLmNvbW1vbi52MS5QbGF0Zm9ybUINCgtfcHVzaF90b2tlbkIOCgxfZXhwaXJlX3RpbWVCCQoHX3AyNTZkaEILCglfZW5kcG9pbnQiZwoXUHVzaE5vdGlmaWNhdGlvblBheWxvYWQSDQoFdGl0bGUYAiABKAkSFQoIb3Blbl91cmwYAyABKAlIAYgBARIOCgRib2R5GAQgASgJSABCCQoHbWVzc2FnZUILCglfb3Blbl91cmwqeAoIUGxhdGZvcm0SGAoUUExBVEZPUk1fVU5TUEVDSUZJRUQQABIQCgxQTEFURk9STV9XRUIQARIYChRQTEFURk9STV9JT1NfU0FOREJPWBACEhAKDFBMQVRGT1JNX0lPUxADEhQKEFBMQVRGT1JNX0FORFJPSUQQBCp0ChFOb3RpZmljYXRpb25FdmVudBIRCg1FVkVOVF9VTktOT1dOEAASEgoORVZFTlRfUkVDRUlWRUQQARIQCgxFVkVOVF9PUEVORUQQAhIRCg1FVkVOVF9DTElDS0VEEAMSEwoPRVZFTlRfRElTTUlTU0VEEAQqmQEKGU5vdGlmaWNhdGlvbkdyb3VwSG93T2Z0ZW4SJwojTk9USUZJQ0FUSU9OX0dST1VQX0hPV19PRlRFTl9SQVJFTFkQABImCiJOT1RJRklDQVRJT05fR1JPVVBfSE9XX09GVEVOX09GVEVOEAESKwonTk9USUZJQ0FUSU9OX0dST1VQX0hPV19PRlRFTl9WRVJZX09GVEVOEAJCTlpMZ2l0aHViLmNvbS9lbW1lbXMvc3VwZXItY2FydC9hcHBzL3Nydi13b3JrZXIvdXRpbHMvbW9kZWxzL2NvbW1vbi92MTtjb21tb252MWIGcHJvdG8z", [import_wkt.file_google_protobuf_timestamp]);
// src/gen/proto/dashboard/v1/audiobooks_pb.ts
var import_codegenv24 = require("@bufbuild/protobuf/codegenv2");
var import_wkt2 = require("@bufbuild/protobuf/wkt");
var file_dashboard_v1_audiobooks = /* @__PURE__ */ (0, import_codegenv24.fileDesc)("Ch1kYXNoYm9hcmQvdjEvYXVkaW9ib29rcy5wcm90bxIXZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEiFgoUR2V0QXVkaW9ib29rc1JlcXVlc3QiIQoTR2V0QXVkaW9ib29rUmVxdWVzdBIKCgJpZBgBIAEoCSKrAQoHQ2hhcHRlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESGgoNbXVsdGltZWRpYV9pZBgEIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIQCg5fbXVsdGltZWRpYV9pZCLzAgoJQXVkaW9ib29rEg8KAmlkGAEgASgJSACIAQESEgoKcHJvamVjdF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhMKC2NvdmVyX2ltYWdlGAUgASgJEhcKD3RodW1ibmFpbF9pbWFnZRgGIAEoCRIyCghjaGFwdGVycxgHIAMoCzIgLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkNoYXB0ZXISFwoPaXNfZG93bmxvYWRhYmxlGAggASgIEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiQKF2lzX2Jyb3dzZXJfZG93bmxvYWRhYmxlGAogASgISAGIAQESGQoMYWNjZW50X2NvbG9yGAsgASgJSAKIAQFCBQoDX2lkQhoKGF9pc19icm93c2VyX2Rvd25sb2FkYWJsZUIPCg1fYWNjZW50X2NvbG9yIk8KFUdldEF1ZGlvYm9va3NSZXNwb25zZRI2CgphdWRpb2Jvb2tzGAEgAygLMiIuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQXVkaW9ib29rImAKFEdldEF1ZGlvYm9va1Jlc3BvbnNlEjoKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9va0gAiAEBQgwKCl9hdWRpb2Jvb2siVwoeQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXF1ZXN0EjUKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9vayLRAQofQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZRJSCgdzdWNjZXNzGAEgASgLMj8uZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZS5SZXN1bHRIABI6CgdmYWlsdXJlGAIgASgOMicuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuRmFpbHVyZU1lc3NhZ2VIABoUCgZSZXN1bHQSCgoCaWQYASABKAlCCAoGcmVzdWx0IiQKFkRlbGV0ZUF1ZGlvYm9va1JlcXVlc3QSCgoCaWQYASABKAkiVQofR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVxdWVzdBIUCgxhdWRpb2Jvb2tfaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBAUIICgZfZW1haWwi+AIKIEdldEF1ZGlvYm9va0FjY2Vzc0VtYWlsc1Jlc3BvbnNlElMKB3N1Y2Nlc3MYASABKAsyQC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHNSZXNwb25zZS5SZXN1bHRIABI6CgdmYWlsdXJlGAIgASgOMicuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuRmFpbHVyZU1lc3NhZ2VIABpYCgtBY2Nlc3NFbWFpbBIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpfCgZSZXN1bHQSVQoGZW1haWxzGAEgAygLMkUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVzcG9uc2UuQWNjZXNzRW1haWxCCAoGcmVzdWx0IkMKHENyZWF0ZUF1ZGlvYm9va0FjY2Vzc1JlcXVlc3QSFAoMYXVkaW9ib29rX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJIjgKHERlbGV0ZUF1ZGlvYm9va0FjY2Vzc1JlcXVlc3QSGAoQc3lzdGVtX2FjY2Vzc19pZBgBIAEoCSJ/CgxCb29sUmVzcG9uc2USKQoHc3VjY2VzcxgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjoKB2ZhaWx1cmUYAiABKA4yJy5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5GYWlsdXJlTWVzc2FnZUgAQggKBnJlc3VsdCqpAQoORmFpbHVyZU1lc3NhZ2USGwoXRkFJTFVSRV9NRVNTQUdFX1VOS05PV04QABIlCiFGQUlMVVJFX01FU1NBR0VfUFJPSkVDVF9OT1RfRk9VTkQQARIlCiFGQUlMVVJFX01FU1NBR0VfQ0hBUFRFUl9OT1RfRk9VTkQQAhIsCihGQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0NIQVBURVJfRk9STUFUEAMy6gYKEUF1ZGlvYm9va3NTZXJ2aWNlEm4KDUdldEF1ZGlvYm9va3MSLS5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tzUmVxdWVzdBouLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkdldEF1ZGlvYm9va3NSZXNwb25zZRJrCgxHZXRBdWRpb2Jvb2sSLC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tSZXF1ZXN0Gi0uZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rUmVzcG9uc2USjAEKF0NyZWF0ZU9yVXBkYXRlQXVkaW9ib29rEjcuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXF1ZXN0GjguZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZRJpCg9EZWxldGVBdWRpb2Jvb2sSLy5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5EZWxldGVBdWRpb2Jvb2tSZXF1ZXN0GiUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQm9vbFJlc3BvbnNlEo8BChhHZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHMSOC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHNSZXF1ZXN0GjkuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVzcG9uc2USdQoVQ3JlYXRlQXVkaW9ib29rQWNjZXNzEjUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlQXVkaW9ib29rQWNjZXNzUmVxdWVzdBolLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkJvb2xSZXNwb25zZRJ1ChVEZWxldGVBdWRpb2Jvb2tBY2Nlc3MSNS5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5EZWxldGVBdWRpb2Jvb2tBY2Nlc3NSZXF1ZXN0GiUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQm9vbFJlc3BvbnNlYgZwcm90bzM", [import_wkt2.file_google_protobuf_timestamp, import_wkt2.file_google_protobuf_empty]);
// src/gen/proto/public/v1/public_api_pb.ts
var file_public_v1_public_api = /* @__PURE__ */ (0, import_codegenv25.fileDesc)("ChpwdWJsaWMvdjEvcHVibGljX2FwaS5wcm90bxINcHVibGljX2FwaS52MSI3CiFJc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSLFAgoiSXNPbmVDbGlja1BheW1lbnRBdmFpbGFibGVSZXNwb25zZRISCgppbnBvc3RfcGF5GAEgASgIEhEKCWFwcGxlX3BheRgCIAEoCBISCgpnb29nbGVfcGF5GAMgASgIEmEKEWdvb2dsZV9wYXlfY29uZmlnGAQgASgLMkEucHVibGljX2FwaS52MS5Jc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlc3BvbnNlLkdvb2dsZVBheUNvbmZpZ0gAiAEBGmsKD0dvb2dsZVBheUNvbmZpZxITCgttZXJjaGFudF9pZBgBIAEoCRIVCg1tZXJjaGFudF9uYW1lGAIgASgJEg8KB2dhdGV3YXkYAyABKAkSGwoTZ2F0ZXdheV9tZXJjaGFudF9pZBgEIAEoCUIUChJfZ29vZ2xlX3BheV9jb25maWci0QMKH09uZUNsaWNrQXV0aG9yaXplUGF5bWVudFJlcXVlc3QSRwoHZ2F0ZXdheRgBIAEoDjI2LnB1YmxpY19hcGkudjEuT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVxdWVzdC5HYXRld2F5EhMKC3BheW1lbnREYXRhGAIgASgJEhUKDXBheW1lbnRNZXRob2QYAyABKAkSHQoVdHJhbnNhY3Rpb25JZGVudGlmaWVyGAQgASgJEjcKBW9yZGVyGAUgASgLMigucHVibGljX2FwaS52MS5HZXRQcmVPcmRlckRldGFpbHNSZXF1ZXN0EjEKEHNoaXBwaW5nX2FkZHJlc3MYBiABKAsyEi5jb21tb24udjEuQWRkcmVzc0gAiAEBEjcKD2JpbGxpbmdfYWRkcmVzcxgHIAEoCzIZLmNvbW1vbi52MS5CaWxsaW5nQWRkcmVzc0gBiAEBEhUKCG1ldGFkYXRhGAggASgJSAKIAQEiKAoHR2F0ZXdheRINCglBUFBMRV9QQVkQABIOCgpHT09HTEVfUEFZEAFCEwoRX3NoaXBwaW5nX2FkZHJlc3NCEgoQX2JpbGxpbmdfYWRkcmVzc0ILCglfbWV0YWRhdGEipAEKIE9uZUNsaWNrQXV0aG9yaXplUGF5bWVudFJlc3BvbnNlEhIKCmlzX3N1Y2Nlc3MYASABKAgSFAoMcmVkaXJlY3RfdXJsGAIgASgJEhYKDnRyYW5zYWN0aW9uX2lkGAMgASgJEiMKFmFwcGxlX3BheV90cmFja2luZ191cmwYBCABKAlIAIgBAUIZChdfYXBwbGVfcGF5X3RyYWNraW5nX3VybCIsCgxQcmVPcmRlckl0ZW0SCgoCaWQYASABKAkSEAoIcXVhbnRpdHkYAiABKAUi1QIKGUdldFByZU9yZGVyRGV0YWlsc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIqCgVpdGVtcxgCIAMoCzIbLnB1YmxpY19hcGkudjEuUHJlT3JkZXJJdGVtEhkKDGNvdW50cnlfY29kZRgDIAEoCUgAiAEBEhYKCXBvc3RfY29kZRgEIAEoCUgBiAEBEhcKCmNvdXBvbkNvZGUYBSABKAlIAogBARISCgVlbWFpbBgGIAEoCUgDiAEBEiUKGHNlbGVjdGVkX2RlbGl2ZXJ5X21ldGhvZBgHIAEoCUgEiAEBEhIKBXBob25lGAggASgJSAWIAQFCDwoNX2NvdW50cnlfY29kZUIMCgpfcG9zdF9jb2RlQg0KC19jb3Vwb25Db2RlQggKBl9lbWFpbEIbChlfc2VsZWN0ZWRfZGVsaXZlcnlfbWV0aG9kQggKBl9waG9uZSKsAQoORGVsaXZlcnlNZXRob2QSCgoCaWQYASABKAkSDgoGYW1vdW50GAIgASgFEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIVCghtaW5fZGF5cxgFIAEoBUgBiAEBEhUKCG1heF9kYXlzGAYgASgFSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgsKCV9taW5fZGF5c0ILCglfbWF4X2RheXMiswIKGkdldFByZU9yZGVyRGV0YWlsc1Jlc3BvbnNlEi4KB21ldGhvZHMYASADKAsyHS5wdWJsaWNfYXBpLnYxLkRlbGl2ZXJ5TWV0aG9kEhcKCmNvdXBvbkNvZGUYAiABKAlIAIgBARIlChhzZWxlY3RlZF9kZWxpdmVyeV9tZXRob2QYAyABKAlIAYgBARIZCgx0b3RhbF9hbW91bnQYBCABKAVIAogBARIZCgxjb3Vwb25fdmFsdWUYBSABKAVIA4gBARIQCghjdXJyZW5jeRgGIAEoCRIPCgdjb3VudHJ5GAcgASgJQg0KC19jb3Vwb25Db2RlQhsKGV9zZWxlY3RlZF9kZWxpdmVyeV9tZXRob2RCDwoNX3RvdGFsX2Ftb3VudEIPCg1fY291cG9uX3ZhbHVlImIKKU5vdGlmeVVzZXJBYm91dFByb2R1Y3RBdmFpbGFiaWxpdHlSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEgoKcHJvZHVjdF9pZBgCIAEoCRINCgVlbWFpbBgDIAEoCSJNCh9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRSZXF1ZXN0EhYKDnZhbGlkYXRpb25fdXJsGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiPAogQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50UmVzcG9uc2USGAoQbWVyY2hhbnRfc2Vzc2lvbhgBIAEoCSJOCiJHZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSFAoMYWxsX3ZhcmlhbnRzGAIgAygJIsIECiNHZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXNwb25zZRJhChBhdmFpbGFibGVfY291bnRzGAEgAygLMkcucHVibGljX2FwaS52MS5HZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXNwb25zZS5BdmFpbGFibGVDb3VudHNFbnRyeRJMCgVlcnJvchgCIAEoDjI4LnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVzcG9uc2UuRXJyb3JIAIgBARpRChhBdmFpbGFibGVDb3VudEZvclByb2R1Y3QSIwobYXZhaWxhYmxlX3F1YW50aXR5X3RvX29yZGVyGAEgASgFEhAKCGNhbl9iYWNrGAIgASgIGoMBChRBdmFpbGFibGVDb3VudHNFbnRyeRILCgNrZXkYASABKAkSWgoFdmFsdWUYAiABKAsySy5wdWJsaWNfYXBpLnYxLkdldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlc3BvbnNlLkF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdDoCOAEihgEKBUVycm9yEhEKDUVSUk9SX1VOS05PV04QABIbChdFUlJPUl9QUk9KRUNUX05PVF9GT1VORBABEh8KG0VSUk9SX1BST0RVQ1RfTk9UX0FWQUlMQUJMRRACEiwKKEVSUk9SX1BST0RVQ1RfTk9UX0FWQUlMQUJMRV9CVVRfQ0FOX0JBQ0sQA0IICgZfZXJyb3IiNQodVXNlclBhbmVsRGVsZXRlQWNjb3VudFJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJIkAKFERpZEJ1eVByb2R1Y3RSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJIv4BCiFVcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSTQoNbW9kaWZpY2F0aW9ucxgDIAMoCzI2LnB1YmxpY19hcGkudjEuVXBkYXRlTm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0Lkdyb3VwEjoKD2VuYWJsZWRfbWV0aG9kcxgEIAMoDjIhLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uTWV0aG9kGiQKBUdyb3VwEgoKAmlkGAEgASgJEg8KB2VuYWJsZWQYAiABKAgiUQonVXBkYXRlR2xvYmFsTm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIQCghpc19tdXRlZBgCIAEoCCJRCiVHZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIqEBChFOb3RpZmljYXRpb25Hcm91cBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBI3Cglob3dfb2Z0ZW4YBSABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkIOCgxfZGVzY3JpcHRpb24isQIKJkdldE5vdGlmaWNhdGlvblNldHRpbmdzRGV0YWlsc1Jlc3BvbnNlEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIvCgV0aGVtZRgDIAEoCzIbLnB1YmxpY19hcGkudjEuUHJvamVjdFRoZW1lSACIAQESPAoRYXZhaWxhYmxlX21ldGhvZHMYBCADKA4yIS5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbk1ldGhvZBI6Cg9lbmFibGVkX21ldGhvZHMYBSADKA4yIS5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbk1ldGhvZBIwCgZncm91cHMYBiADKAsyIC5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbkdyb3VwQggKBl90aGVtZSJDCh5HZXROb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEgsKA2FsbBgCIAEoCCLwAgofR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXNwb25zZRJICghwcm9qZWN0cxgBIAMoCzI2LnB1YmxpY19hcGkudjEuR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXNwb25zZS5Qcm9qZWN0EhAKCGlzX211dGVkGAIgASgIGqUBCgdQcm9qZWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSRQoGc3RhdHVzGAMgASgOMjUucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc1Jlc3BvbnNlLlN0YXR1cxIvCgV0aGVtZRgEIAEoCzIbLnB1YmxpY19hcGkudjEuUHJvamVjdFRoZW1lSACIAQFCCAoGX3RoZW1lIkkKBlN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQABISCg5TVEFUVVNfRU5BQkxFRBABEhMKD1NUQVRVU19ESVNBQkxFRBACIkEKKVVzZXJQYW5lbFB1c2hHZXRBdmFpbGFibGVDb21wYW5pZXNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCSLrAgoqVXNlclBhbmVsUHVzaEdldEF2YWlsYWJsZUNvbXBhbmllc1Jlc3BvbnNlElQKCWNvbXBhbmllcxgBIAMoCzJBLnB1YmxpY19hcGkudjEuVXNlclBhbmVsUHVzaEdldEF2YWlsYWJsZUNvbXBhbmllc1Jlc3BvbnNlLkNvbXBhbnkacQoFR3JvdXASCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhYKCWhvd19vZnRlbhgEIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuGnQKB0NvbXBhbnkSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRJPCgZncm91cHMYAyADKAsyPy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbFB1c2hHZXRBdmFpbGFibGVDb21wYW5pZXNSZXNwb25zZS5Hcm91cCIwChpTaG91bGRTaG9wUHJvZHVjdHNSZXNwb25zZRISCgppc192aXNpYmxlGAEgASgIIkQKFkdldFNob3BQcm9kdWN0c1JlcXVlc3QSGQoMYWNjZXNzX3Rva2VuGAEgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiLYAQoXR2V0U2hvcFByb2R1Y3RzUmVzcG9uc2USQAoIcHJvZHVjdHMYBSADKAsyLi5wdWJsaWNfYXBpLnYxLkdldFNob3BQcm9kdWN0c1Jlc3BvbnNlLlByb2R1Y3QaewoHUHJvZHVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCWltYWdlX3VybBgDIAEoCRINCgVwcmljZRgEIAEoCRIeChFpc19hbHJlYWR5X2JvdWdodBgFIAEoCEgAiAEBQhQKEl9pc19hbHJlYWR5X2JvdWdodCLUAQofVXNlclBhbmVsR2V0RmlsZURldGFpbHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRGaWxlRGV0YWlsc1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaKwoGUmVzdWx0EhIKCnByb2plY3RfaWQYASABKAkSDQoFZmlsZXMYAiADKAlCCAoGcmVzdWx0IkkKHlVzZXJQYW5lbEdldEZpbGVEZXRhaWxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJIvkCCiFVc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzUmVzcG9uc2USSgoHc3VjY2VzcxgBIAEoCzI3LnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaywEKBlJlc3VsdBISCgpwcm9qZWN0X2lkGAEgASgJEhIKCnRpY2tldF91cmwYAiABKAkSFAoMcHJvZHVjdF9uYW1lGAMgASgJEhkKEXByb2R1Y3RfaW1hZ2VfdXJsGAQgASgJEh4KEWdvb2dsZV93YWxsZXRfdXJsGAUgASgJSACIAQESHQoQYXBwbGVfd2FsbGV0X3VybBgGIAEoCUgBiAEBQhQKEl9nb29nbGVfd2FsbGV0X3VybEITChFfYXBwbGVfd2FsbGV0X3VybEIICgZyZXN1bHQiSwogVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhEKCWFjY2Vzc19pZBgCIAEoCSKqBAowVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc0Rvd25sb2FkVVJMc1Jlc3BvbnNlElkKB3N1Y2Nlc3MYASABKAsyRi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXNwb25zZS5SZXN1bHRIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAGnYKGEF1ZGlvYm9va0Rvd25sb2FkRGV0YWlscxISCgpjaGFwdGVyX2lkGAEgASgJEhIKCnB1YmxpY191cmwYAiABKAkSHQoQZG93bmxvYWRhYmxlX3VybBgDIAEoCUgAiAEBQhMKEV9kb3dubG9hZGFibGVfdXJsGuYBCgZSZXN1bHQSfAoaYXVkaW9ib29rX2Rvd25sb2FkX2RldGFpbHMYASADKAsyWC5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXNwb25zZS5BdWRpb2Jvb2tEb3dubG9hZERldGFpbHMSMwomaXNfYXZhaWxhYmxlX3RvX2Rvd25sb2FkX2luX21vYmlsZV9hcHAYAiABKAhIAIgBAUIpCidfaXNfYXZhaWxhYmxlX3RvX2Rvd25sb2FkX2luX21vYmlsZV9hcHBCCAoGcmVzdWx0IoIBCi9Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzRG93bmxvYWRVUkxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJEhcKCmlzX2Jyb3dzZXIYAyABKAhIAIgBAUINCgtfaXNfYnJvd3NlciKbAQokVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc1Jlc3BvbnNlEjcKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9va0gAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSABCCAoGcmVzdWx0Ik4KI1VzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIRCglhY2Nlc3NfaWQYAiABKAkiMwobVXNlclBhbmVsR2V0UHJvZHVjdHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCSLZAQocVXNlclBhbmVsR2V0UHJvZHVjdHNSZXNwb25zZRJFCgdzdWNjZXNzGAEgASgLMjIucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaNgoGUmVzdWx0EiwKCHByb2R1Y3RzGAEgAygLMhoucHVibGljX2FwaS52MS5Vc2VyUHJvZHVjdEIICgZyZXN1bHQiLgoWVXNlclBhbmVsTG9nb3V0UmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkitAEKHlVzZXJQYW5lbExvZ2luV2l0aENvZGVSZXNwb25zZRIWCgxhY2Nlc3NfdG9rZW4YASABKAlIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAEhIKBWVtYWlsGAMgASgJSAGIAQESFAoHdXNlcl9pZBgEIAEoCUgCiAEBQggKBnJlc3VsdEIICgZfZW1haWxCCgoIX3VzZXJfaWQiLQodVXNlclBhbmVsTG9naW5XaXRoQ29kZVJlcXVlc3QSDAoEY29kZRgBIAEoBSKxAQoWVXNlclBhbmVsTG9naW5SZXNwb25zZRI/CgdzdWNjZXNzGAEgASgLMiwucHVibGljX2FwaS52MS5Vc2VyUGFuZWxMb2dpblJlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaGgoGUmVzdWx0EhAKCHJldHJ5X2luGAEgASgFQggKBnJlc3VsdCJeChVVc2VyUGFuZWxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSHwoScmVndWxhdGlvbnNfYWNjZXB0GAIgASgISACIAQFCFQoTX3JlZ3VsYXRpb25zX2FjY2VwdCI5ChdHZXRPcmRlclJldHJ5VXJsUmVxdWVzdBIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIr8BChhHZXRPcmRlclJldHJ5VXJsUmVzcG9uc2USPgoDdXJsGAEgASgLMi8ucHVibGljX2FwaS52MS5HZXRPcmRlclJldHJ5VXJsUmVzcG9uc2UuU3VjY2Vzc0gAEhEKB2ZhaWx1cmUYAiABKAlIABpGCgdTdWNjZXNzEgsKA3VybBgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIICgZyZXN1bHQiMQoPR2V0T3JkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkifAoQR2V0T3JkZXJSZXNwb25zZRIPCgJpZBgBIAEoCUgAiAEBEiIKBWl0ZW1zGAIgAygLMhMucHVibGljX2FwaS52MS5JdGVtEiwKB2RldGFpbHMYAyABKAsyGy5wdWJsaWNfYXBpLnYxLk9yZGVyRGV0YWlsc0IFCgNfaWQi+QEKDE9yZGVyRGV0YWlscxI1CgVpdGVtcxgBIAMoCzImLnB1YmxpY19hcGkudjEuT3JkZXJEZXRhaWxzLlNpbmdsZUl0ZW0SIwoHZ2F0ZXdheRgCIAEoDjISLmNvbW1vbi52MS5HYXRld2F5GowBCgpTaW5nbGVJdGVtEgoKAmlkGAEgASgJEhYKCWltYWdlX3VybBgCIAEoCUgAiAEBEgwKBG5hbWUYAyABKAkSEAoIcXVhbnRpdHkYBCABKAUSFAoMcHJpY2VfYW1vdW50GAUgASgDEhYKDnByaWNlX2N1cnJlbmN5GAYgASgJQgwKCl9pbWFnZV91cmwi0QEKBEl0ZW0SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCglpbWFnZV91cmwYAyABKAkSPAoRZmlsZV9kb3dubG9hZGFibGUYBCABKAsyHy5wdWJsaWNfYXBpLnYxLkZpbGVEb3dubG9hZGFibGVIABItCglhdWRpb2Jvb2sYBSABKAsyGC5wdWJsaWNfYXBpLnYxLkF1ZGlvYm9va0gAEicKBnRpY2tldBgGIAEoCzIVLnB1YmxpY19hcGkudjEuVGlja2V0SABCBgoEaXRlbSIkChBGaWxlRG93bmxvYWRhYmxlEhAKCGZpbGVfdXJsGAEgASgJIiUKCUF1ZGlvYm9vaxIYChBhcHBfZG93bmxvYWRfdXJsGAEgASgJIoEBCgZUaWNrZXQSEQoJdGlja2V0X2lkGAEgASgJEhsKDmFwcGxlX3Bhc3NfdXJsGAIgASgJSACIAQESHgoRZ29vZ2xlX3RpY2tldF91cmwYAyABKAlIAYgBAUIRCg9fYXBwbGVfcGFzc191cmxCFAoSX2dvb2dsZV90aWNrZXRfdXJsIq0CCgtVc2VyUHJvZHVjdBISCgpwcm9qZWN0X2lkGAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCRISCgpwcm9kdWN0X2lkGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIbChNwcm9kdWN0X2Rlc2NyaXB0aW9uGAUgASgJEhkKEXByb2R1Y3RfaW1hZ2VfdXJsGAYgASgJEjQKDHByb2R1Y3RfdHlwZRgHIAEoDjIeLnB1YmxpY19hcGkudjEuVXNlclByb2R1Y3RUeXBlEhEKCWFjY2Vzc19pZBgIIAEoCRI3Cg1wcm9qZWN0X3RoZW1lGAkgASgLMhsucHVibGljX2FwaS52MS5Qcm9qZWN0VGhlbWVIAIgBAUIQCg5fcHJvamVjdF90aGVtZSJ1CgxCb29sUmVzcG9uc2USKQoHc3VjY2VzcxgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSABCCAoGcmVzdWx0Im4KEFB1c2hFdmVudFJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhcKD25vdGlmaWNhdGlvbl9pZBgCIAEoCRIrCgVldmVudBgDIAEoDjIcLmNvbW1vbi52MS5Ob3RpZmljYXRpb25FdmVudCKtAQoaUHVzaFNlbmREZXZpY2VUb2tlblJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEjcKB3BheWxvYWQYAiABKAsyJi5jb21tb24udjEuUHVzaE5vdGlmaWNhdGlvbkRldmljZVRva2VuEiQKF2lzX25vdGlmaWNhdGlvbl9ncmFudGVkGAMgASgISACIAQFCGgoYX2lzX25vdGlmaWNhdGlvbl9ncmFudGVkIsIBCgxQcm9qZWN0VGhlbWUSFgoJaW1hZ2VfdXJsGAEgASgJSACIAQESGwoOaW1hZ2VfZGFya191cmwYAiABKAlIAYgBARIYCgticmFuZF9jb2xvchgDIAEoCUgCiAEBEh0KEGJyYW5kX2NvbG9yX2RhcmsYBCABKAlIA4gBAUIMCgpfaW1hZ2VfdXJsQhEKD19pbWFnZV9kYXJrX3VybEIOCgxfYnJhbmRfY29sb3JCEwoRX2JyYW5kX2NvbG9yX2RhcmsqhwEKD1VzZXJQcm9kdWN0VHlwZRIdChlVU0VSX1BST0RVQ1RfVFlQRV9VTktOT1dOEAASGwoXVVNFUl9QUk9EVUNUX1RZUEVfQVVESU8QARIaChZVU0VSX1BST0RVQ1RfVFlQRV9GSUxFEAISHAoYVVNFUl9QUk9EVUNUX1RZUEVfVElDS0VUEAMqsQMKDkZhaWx1cmVNZXNzYWdlEhsKF0ZBSUxVUkVfTUVTU0FHRV9VTktOT1dOEAASIwofRkFJTFVSRV9NRVNTQUdFX0VNQUlMX05PVF9GT1VORBABEiMKH0ZBSUxVUkVfTUVTU0FHRV9JTkNPUlJFQ1RfRU1BSUwQAhIiCh5GQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0NPREUQAxIwCixGQUlMVVJFX01FU1NBR0VfR0VORVJBVEVfQUNDRVNTX1RPS0VOX0ZBSUxFRBAEEiEKHUZBSUxVUkVfTUVTU0FHRV9MT0dPVVRfRkFJTEVEEAUSJQohRkFJTFVSRV9NRVNTQUdFX1BSRFVDVFNfTk9UX0ZPVU5EEAYSJwojRkFJTFVSRV9NRVNTQUdFX0FVRElPQk9PS19OT1RfRk9VTkQQBxInCiNGQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0FVRElPQk9PSxAIEiAKHEZBSUxVUkVfTUVTU0FHRV9VTkFVVEhPUklaRUQQCRIkCiBGQUlMVVJFX01FU1NBR0VfVElDS0VUX05PVF9GT1VORBAKKo8BChJOb3RpZmljYXRpb25NZXRob2QSHwobTk9USUZJQ0FUSU9OX01FVEhPRF9VTktOT1dOEAASHQoZTk9USUZJQ0FUSU9OX01FVEhPRF9FTUFJTBABEhsKF05PVElGSUNBVElPTl9NRVRIT0RfU01TEAISHAoYTk9USUZJQ0FUSU9OX01FVEhPRF9QVVNIEAMy8BYKEFB1YmxpY0FwaVNlcnZpY2USSwoIR2V0T3JkZXISHi5wdWJsaWNfYXBpLnYxLkdldE9yZGVyUmVxdWVzdBofLnB1YmxpY19hcGkudjEuR2V0T3JkZXJSZXNwb25zZRJjChBHZXRPcmRlclJldHJ5VXJsEiYucHVibGljX2FwaS52MS5HZXRPcmRlclJldHJ5VXJsUmVxdWVzdBonLnB1YmxpY19hcGkudjEuR2V0T3JkZXJSZXRyeVVybFJlc3BvbnNlEl0KDlVzZXJQYW5lbExvZ2luEiQucHVibGljX2FwaS52MS5Vc2VyUGFuZWxMb2dpblJlcXVlc3QaJS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ2luUmVzcG9uc2USdQoWVXNlclBhbmVsTG9naW5XaXRoQ29kZRIsLnB1YmxpY19hcGkudjEuVXNlclBhbmVsTG9naW5XaXRoQ29kZVJlcXVlc3QaLS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ2luV2l0aENvZGVSZXNwb25zZRJVCg9Vc2VyUGFuZWxMb2dvdXQSJS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ291dFJlcXVlc3QaGy5wdWJsaWNfYXBpLnYxLkJvb2xSZXNwb25zZRJjChZVc2VyUGFuZWxEZWxldGVBY2NvdW50EiwucHVibGljX2FwaS52MS5Vc2VyUGFuZWxEZWxldGVBY2NvdW50UmVxdWVzdBobLnB1YmxpY19hcGkudjEuQm9vbFJlc3BvbnNlEm8KFFVzZXJQYW5lbEdldFByb2R1Y3RzEioucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRQcm9kdWN0c1JlcXVlc3QaKy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldFByb2R1Y3RzUmVzcG9uc2UShwEKHFVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHMSMi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNSZXF1ZXN0GjMucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzUmVzcG9uc2USqwEKKFVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHMSPi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXF1ZXN0Gj8ucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzRG93bmxvYWRVUkxzUmVzcG9uc2USeAoXVXNlclBhbmVsR2V0RmlsZURldGFpbHMSLS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEZpbGVEZXRhaWxzUmVxdWVzdBouLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0RmlsZURldGFpbHNSZXNwb25zZRJ+ChlVc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzEi8ucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzUmVxdWVzdBowLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1Jlc3BvbnNlElgKE1B1c2hTZW5kRGV2aWNlVG9rZW4SKS5wdWJsaWNfYXBpLnYxLlB1c2hTZW5kRGV2aWNlVG9rZW5SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkQKCVB1c2hFdmVudBIfLnB1YmxpY19hcGkudjEuUHVzaEV2ZW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJXChJTaG91bGRTaG9wUHJvZHVjdHMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKS5wdWJsaWNfYXBpLnYxLlNob3VsZFNob3BQcm9kdWN0c1Jlc3BvbnNlEmAKD0dldFNob3BQcm9kdWN0cxIlLnB1YmxpY19hcGkudjEuR2V0U2hvcFByb2R1Y3RzUmVxdWVzdBomLnB1YmxpY19hcGkudjEuR2V0U2hvcFByb2R1Y3RzUmVzcG9uc2USTAoNRGlkQnV5UHJvZHVjdBIjLnB1YmxpY19hcGkudjEuRGlkQnV5UHJvZHVjdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSeAoXR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3MSLS5wdWJsaWNfYXBpLnYxLkdldE5vdGlmaWNhdGlvblNldHRpbmdzUmVxdWVzdBouLnB1YmxpY19hcGkudjEuR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXNwb25zZRKNAQoeR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NEZXRhaWxzEjQucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHNSZXF1ZXN0GjUucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHNSZXNwb25zZRJyCiBVcGRhdGVHbG9iYWxOb3RpZmljYXRpb25TZXR0aW5ncxI2LnB1YmxpY19hcGkudjEuVXBkYXRlR2xvYmFsTm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmYKGlVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdzEjAucHVibGljX2FwaS52MS5VcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkShAEKG0dldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdBIxLnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVxdWVzdBoyLnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVzcG9uc2USgQEKGklzT25lQ2xpY2tQYXltZW50QXZhaWxhYmxlEjAucHVibGljX2FwaS52MS5Jc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlcXVlc3QaMS5wdWJsaWNfYXBpLnYxLklzT25lQ2xpY2tQYXltZW50QXZhaWxhYmxlUmVzcG9uc2USaQoSR2V0UHJlT3JkZXJEZXRhaWxzEigucHVibGljX2FwaS52MS5HZXRQcmVPcmRlckRldGFpbHNSZXF1ZXN0GikucHVibGljX2FwaS52MS5HZXRQcmVPcmRlckRldGFpbHNSZXNwb25zZRJ7ChhBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnQSLi5wdWJsaWNfYXBpLnYxLkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudFJlcXVlc3QaLy5wdWJsaWNfYXBpLnYxLkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudFJlc3BvbnNlEnsKGEF1dGhvcml6ZU9uZUNsaWNrUGF5bWVudBIuLnB1YmxpY19hcGkudjEuT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVxdWVzdBovLnB1YmxpY19hcGkudjEuT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVzcG9uc2USdgoiTm90aWZ5VXNlckFib3V0UHJvZHVjdEF2YWlsYWJpbGl0eRI4LnB1YmxpY19hcGkudjEuTm90aWZ5VXNlckFib3V0UHJvZHVjdEF2YWlsYWJpbGl0eVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHliBnByb3RvMw", [import_wkt3.file_google_protobuf_timestamp, file_common_v1_gateway, file_common_v1_address, file_common_v1_push_notifications, import_wkt3.file_google_protobuf_empty, file_dashboard_v1_audiobooks]);
var PreOrderItemSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_public_v1_public_api, 4);
var GetPreOrderDetailsRequestSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_public_v1_public_api, 5);
var PublicApiService = /* @__PURE__ */ (0, import_codegenv25.serviceDesc)(file_public_v1_public_api, 0);
// src/public.api.client.ts
var PublicApiClient;
((PublicApiClient2) => {
function get(host) {
return (0, import_connect.createClient)(PublicApiService, getTransport(host));
}
PublicApiClient2.get = get;
let transport;
function getTransport(host) {
if (transport == null) {
transport = (0, import_connect_web.createConnectTransport)({
useBinaryFormat: true,
baseUrl: host + "/api/rpc"
});
}
return transport;
}
})(PublicApiClient || (PublicApiClient = {}));
// src/components/checkout/CartProvider.tsx
var import_protobuf = require("@bufbuild/protobuf");
var import_react = require("react");
var import_react_query = require("react-query");
var import_zod = __toESM(require("zod"));
// src/components/checkout/constants.ts
var HOST = "https://bitsnap.pl";
function setCustomHost(host) {
HOST = host;
}
// src/components/checkout/helper.methods.ts
function buildURL(projectID, path) {
return `${HOST}/api/integrations/${projectID}/public-commerce${path}`;
}
// src/components/checkout/lib/err.ts
function isErr(x) {
return typeof x === "object" && x != null && "ERR" in x;
}
function Err(message, type) {
return { ERR: true, error: message, type };
}
// src/components/checkout/lib/round.number.ts
function round(num, numberOfDecimals = 2) {
return Number(
+(Math.round(Number(num + "e+" + numberOfDecimals)) + "e-" + numberOfDecimals)
);
}
function formatCurrency(amount, currency) {
const formatter = Intl.NumberFormat(navigator.language, {
style: "currency",
currency,
currencyDisplay: "symbol"
});
return formatter.format(amount / 100);
}
// src/components/checkout/state.ts
var import_zustand = require("zustand");
var useCheckoutStore = (0, import_zustand.create)((set) => ({
isCartVisible: false,
numberOfProductsInCart: 2,
showCart: () => set((state) => ({ ...state, isCartVisible: true })),
hideCart: () => set((state) => ({ ...state, isCartVisible: false })),
setNumberOfProductsInCart: (numberOfProductsInCart) => set((state) => ({ ...state, numberOfProductsInCart }))
}));
// src/components/checkout/methods.ts
async function addProductToCart(id, quantity = 1, metadata) {
return Bitsnap.addProductToCart(id, quantity, metadata);
}
function showCart() {
return Bitsnap.showCart();
}
function hideCart() {
return Bitsnap.hideCart();
}
var Bitsnap;
((Bitsnap2) => {
async function addProductToCart2(id, quantity = 1, metadata) {
const projectID = getProjectID();
if (projectID == null) {
throw new Error("No project ID found");
}
const methods = getCheckoutMethods(projectID);
const err = await methods.addProduct({
productID: id,
quantity,
metadata
});
if (err != null) {
return err;
}
return void 0;
}
Bitsnap2.addProductToCart = addProductToCart2;
function showCart2() {
useCheckoutStore.setState({ isCartVisible: true });
}
Bitsnap2.showCart = showCart2;
function hideCart2() {
useCheckoutStore.setState({ isCartVisible: false });
}
Bitsnap2.hideCart = hideCart2;
})(Bitsnap || (Bitsnap = {}));
async function createPaymentURL(request) {
const projectID = getProjectID();
if (projectID == null) {
throw new Error("No project ID found");
}
request = injectReferenceToRequestIfNeeded(request);
const result = await fetch(buildURL(projectID, "/buy"), {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(request)
});
if (result.status != 200) {
console.warn(
"result",
await result.text(),
result.status,
result.statusText
);
return Err("internal-error", "internal");
}
const response = await result.json();
return {
url: response.url
};
}
async function createCheckout(request) {
const projectID = getProjectID();
if (projectID == null) {
throw new Error("No project ID found");
}
const headers = {
"Content-Type": "application/json",
...request.apiKey != null ? { Authorization: `Bearer ${request.apiKey}` } : {}
};
const path = request.testMode ? `/api/payment/link/auto/${projectID}/test` : `/api/payment/link/auto/${projectID}`;
delete request.apiKey;
delete request.testMode;
const response = await fetch(HOST + path, {
method: "POST",
headers,
body: JSON.stringify(request)
});
const payload = await response.json();
return {
status: "ok",
redirectURL: payload.url
};
}
function getReferenceIfPossible() {
if (typeof localStorage == "undefined") {
return void 0;
}
const refLink = localStorage.getItem("bitsnap-ref");
if (refLink == null) {
return void 0;
}
return refLink;
}
function injectReferenceToRequestIfNeeded(request) {
const ref = getReferenceIfPossible();
if (ref == null) {
return request;
}
if (request.metadata == null) {
request.metadata = {};
}
request.metadata["ref"] = ref;
return request;
}
// src/components/checkout/google.pay.mapper.ts
function mapGooglePayConfiguration(args) {
var _a;
const { items, googlePayConfig, checkout, result, cartRequiresShipping } = args;
if (result.totalAmount == null) {
return void 0;
}
let intents = [];
if (cartRequiresShipping) {
intents.push("SHIPPING_ADDRESS");
intents.push("SHIPPING_OPTION");
}
const returnValue = {
apiVersion: 2,
apiVersionMinor: 0,
callbackIntents: intents,
allowedPaymentMethods: [
{
type: "CARD",
parameters: {
allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
allowedCardNetworks: ["MASTERCARD", "VISA"]
},
tokenizationSpecification: {
type: "PAYMENT_GATEWAY",
parameters: {
gateway: googlePayConfig.gateway,
gatewayMerchantId: googlePayConfig.gatewayId
}
}
}
],
emailRequired: true,
shippingAddressParameters: {
phoneNumberRequired: cartRequiresShipping
},
shippingAddressRequired: cartRequiresShipping,
shippingOptionRequired: cartRequiresShipping,
shippingOptionParameters: cartRequiresShipping ? {
shippingOptions: result.methods.slice(0, 5).map((method) => {
var _a2;
return {
id: method.id,
label: method.name + ` - ${formatCurrency(method.amount, result.currency)}`,
description: (_a2 = method.description) != null ? _a2 : ""
};
}),
defaultSelectedOptionId: result.selectedDeliveryMethod
} : void 0,
merchantInfo: {
merchantId: googlePayConfig.merchantId + "",
merchantName: googlePayConfig.merchantName
},
transactionInfo: {
totalPriceStatus: "FINAL",
totalPriceLabel: "P\u0142atno\u015B\u0107 za koszyk",
totalPrice: `${round(result.totalAmount / 100, 2)}`,
currencyCode: result.currency,
countryCode: result.country,
checkoutOption: "COMPLETE_IMMEDIATE_PURCHASE",
displayItems: mapGooglePayDisplayItems(items, result.methods, (_a = result.selectedDeliveryMethod) != null ? _a : result.methods.length > 0 ? result.methods[0].id : void 0, checkout.couponCode, result.couponValue)
}
};
console.log("returnValue", returnValue);
return returnValue;
}
function mapGooglePayDisplayItems(items, methods, deliveryMethod, couponCode, couponValue) {
const displayItems = [];
let subtotalAmount = 0;
for (const item of items) {
if (item.details == null) {
continue;
}
subtotalAmount += item.details.price * item.quantity;
displayItems.push({
label: item.details.name + " x " + item.quantity,
price: `${round(item.details.price / 100, 2)}`,
type: "LINE_ITEM",
status: "FINAL"
});
}
const selectedDeliveryMethod = methods.find((method) => method.id === deliveryMethod);
if (selectedDeliveryMethod != null) {
displayItems.push({
label: selectedDeliveryMethod.name,
price: `${round(selectedDeliveryMethod.amount / 100, 2)}`,
type: "SHIPPING_OPTION",
status: "FINAL"
});
}
if (couponCode != null && couponValue != null) {
displayItems.push({
label: `Kupon ${couponCode}`,
price: `${round(couponValue / 100, 2)}`,
type: "DISCOUNT",
status: "FINAL"
});
}
if (subtotalAmount > 0) {
displayItems.push({
label: "Subtotal",
price: `${round(subtotalAmount / 100, 2)}`,
type: "SUBTOTAL",
status: "FINAL"
});
}
return displayItems;
}
// src/components/checkout/CartProvider.tsx
var import_jsx_runtime = require("react/jsx-runtime");
var MARKETING_AGREEMENT_ID = "__m_a";
var CartProviderContext = (0, import_react.createContext)(void 0);
var bitsnapProjectID = void 0;
function setProjectID(projectID) {
bitsnapProjectID = projectID;
}
function getProjectID() {
if (bitsnapProjectID != null) {
return bitsnapProjectID;
}
const me = document.querySelector(
'script[data-id][data-name="internal-cart"]'
);
const projectID = me == null ? void 0 : me.getAttribute("data-id");
return projectID != null ? projectID : void 0;
}
function getNewHostIfExist() {
const me = document.querySelector(
'script[data-id][data-name="internal-cart"]'
);
const customHost = me == null ? void 0 : me.getAttribute("data-custom-host");
return customHost != null ? customHost : void 0;
}
var CartProvider = ({ children }) => {
const queryClient = new import_react_query.QueryClient();
const projectID = getProjectID();
if (projectID == null) {
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
}
const checkoutMethods = getCheckoutMethods(projectID);
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CartProviderContext.Provider, { value: checkoutMethods, children }) });
};
var getProducts = async (projectID) => {
var _a, _b;
const products = (_b = (_a = getCheckout()) == null ? void 0 : _a.products) != null ? _b : [];
const productIds = Array.from(
new Set(products.map((product) => product.productID))
);
const params = new URLSearchParams();
params.set("ids", productIds.join(","));
const result = await fetch(
buildURL(projectID, `/products?${params.toString()}`),
{
method: "GET"
}
);
if (result.status != 200) {
return [];
}
const payload = await result.json();
products.forEach((product) => {
var _a2;
product["details"] = (_a2 = payload.result) == null ? void 0 : _a2.find((el) => {
if (el.id === product.productID) {
return true;
}
if (el.variants != null && el.variants.length > 0) {
const index = el.variants.findIndex(
(variant) => variant.id === product.productID
);
return index !== -1;
}
return false;
});
});
return products.filter((el) => "details" in el).map((el) => {
el.details = resolveProductDetailsFromSingleProduct(
el.productID,
el.details
);
return el;
});
};
var useCartProvider = () => {
const context = (0, import_react.useContext)(CartProviderContext);
if (context === void 0) {
throw new Error("useCartProvider must be used within a CartProvider");
}
return context;
};
var CartProvider_default = CartProvider;
var googlePayConfigSchema = import_zod.default.object({
isAvailable: import_zod.default.boolean(),
merchantId: import_zod.default.string(),
merchantName: import_zod.default.string(),
gateway: import_zod.default.string(),
gatewayId: import_zod.default.string()
});
var checkoutSchema = import_zod.default.object({
country: import_zod.default.string().optional(),
couponCode: import_zod.default.string().optional(),
selectedDeliveryMethod: import_zod.default.string().optional(),
postalCode: import_zod.default.string().optional(),
email: import_zod.default.string().optional(),
products: import_zod.default.array(
import_zod.default.object({
id: import_zod.default.string(),
productID: import_zod.default.string(),
quantity: import_zod.default.number(),
metadata: import_zod.default.record(import_zod.default.string(), import_zod.default.string().optional()).optional()
})
).optional(),
googlePayConfig: googlePayConfigSchema.optional()
});
var emptyCheckout = {
country: void 0,
couponCode: void 0,
email: void 0,
selectedDeliveryMethod: void 0,
postalCode: void 0,
products: [],
googlePayConfig: void 0
};
var checkoutKey = "checkout";
function getCheckout() {
try {
const value = localStorage.getItem(checkoutKey);
if (value == null) {
return emptyCheckout;
}
return checkoutSchema.parse(JSON.parse(value));
} catch (e) {
return emptyCheckout;
}
}
function addProducts(products) {
const checkout = getCheckout();
if (checkout.products == null) {
checkout.products = [];
}
checkout.products.push(...products.map((el) => ({
id: Math.random().toString(36).substring(7),
productID: el.productID,
quantity: el.quantity,
metadata: el.metadata
})));
saveCheckout(checkout);
}
function removeProductFromCheckout(ids) {
var _a;
const checkout = getCheckout();
const newCheckout = {
...checkout,
products: (_a = checkout == null ? void 0 : checkout.products) == null ? void 0 : _a.filter(
(product) => !ids.includes(product.productID) && !ids.includes(product.id)
)
};
saveCheckout(newCheckout);
}
function saveCheckout(model) {
localStorage.setItem(checkoutKey, JSON.stringify(model));
}
var getCheckoutMethods = (projectID) => {
const newHost = getNewHostIfExist();
if (newHost != null) {
setCustomHost(newHost);
}
return {
async checkIfApplePayIsAvailable() {
if (typeof window == "undefined" || typeof document == "undefined") {
return false;
}
if ("ApplePaySession" in window === false) {
return false;
}
try {
const result = await PublicApiClient.get(HOST).isOneClickPaymentAvailable({
projectId: projectID
});
return result.applePay;
} catch (e) {
console.error("Error checking if Apple Pay is available", e);
return false;
}
},
async getGooglePayConfiguration(args) {
if (typeof window == "undefined" || typeof document == "undefined") {
return {
isAvailable: false
};
}
try {
const googlePayConfig = await resolveGooglePayConfiguration(projectID);
if ((googlePayConfig == null ? void 0 : googlePayConfig.isAvailable) != true) {
return {
isAvailable: false
};
}
const checkout = getCheckout();
if (checkout == null) {
console.log("checkout is null");
return {
isAvailable: false
};
}
if (args && args.items != null && args.items.length > 0) {
if (checkout.products) {
removeProductFromCheckout(checkout.products.map((el) => el.productID));
}
addProducts(args.items);
}
const products = await getProducts(projectID);
if (isErr(products)) {
return {
isAvailable: false
};
}
const result = await PublicApiClient.get(HOST).getPreOrderDetails({
items: products.map(
(el) => (0, import_protobuf.create)(PreOrderItemSchema, { id: el.productID, quantity: el.quantity })
),
projectId: projectID,
// we can detect 5 the closest inpost pickup point based on shipping address.
postCode: checkout.postalCode,
couponCode: checkout.couponCode,
countryCode: checkout.country,
selectedDeliveryMethod: checkout.selectedDeliveryMethod
});
if (result.totalAmount == null) {
return {
isAvailable: false
};
}
const cartRequiresShipping = products.find((el) => {
var _a;
return ((_a = el.details) == null ? void 0 : _a.isDeliverable) == true;
}) != null;
const mappedPaymentRequest = await mapGooglePayConfiguration({
items: products,
googlePayConfig,
checkout,
cartRequiresShipping,
result
});
if (mappedPaymentRequest == null) {
return {
isAvailable: false
};
}
return {
isAvailable: true,
config: mappedPaymentRequest
};
} catch (e) {
console.error("Error resolving Google Pay configuration", e);
return {
isAvailable: false
};
}
},
async clearCart() {
var _a;
const empty = structuredClone(emptyCheckout);
empty.country = (_a = getCheckout()) == null ? void 0 : _a.country;
saveCheckout(empty);
},
async getAvailableCountries() {
const result = await fetch(buildURL(projectID, "/countries"), {
method: "GET"
});
if (result.status != 200) {
return [];
}
try {
return import_zod.default.array(
import_zod.default.object({
name: import_zod.default.string(),
code: import_zod.default.string()
})
).parse(await result.json());
} catch (e) {
return Err(e.toString(), "internal");
}
},
async getCountry() {
var _a;
let country = (_a = getCheckout()) == null ? void 0 : _a.country;
if (country == null) {
country = "PL";
const checkout = getCheckout();
checkout.country = country;
saveCheckout(checkout);
}
return country;
},
async getNumberOfElementsInCart() {
var _a, _b, _c;
return (_c = (_b = (_a = getCheckout()) == null ? void 0 : _a.products) == null ? void 0 : _b.reduce(
(acc, product) => acc + product.quantity,
0
)) != null ? _c : 0;
},
async getProducts() {
return await getProducts(projectID);
},
async removeProductFromCart(args) {
return removeProductFromCheckout([args.id]);
},
async setCountry(country) {
const checkout = getCheckout();
checkout.country = country;
saveCheckout(checkout);
},
async setCouponCodeIfPossible(couponCode) {
const checkout = getCheckout();
checkout.couponCode = couponCode;
saveCheckout(checkout);
},
async setPostalCode(postalCode) {
const checkout = getCheckout();
checkout.postalCode = postalCode;
saveCheckout(checkout);
},
async setDeliveryMethod(deliveryMethod) {
const checkout = getCheckout();
checkout.selectedDeliveryMethod = deliveryMethod;
saveCheckout(checkout);
},
async setEmail(email) {
const checkout = getCheckout();
checkout.email = email;
saveCheckout(checkout);
},
async addProduct(args) {
return addProducts([args]);
},
async updateQuantity(args) {
var _a;
const checkout = getCheckout();
checkout.products = (_a = checkout.products) == null ? void 0 : _a.map((product) => {
if (product.id === args.id) {
product.quantity = args.quantity;
}
return product;
});
saveCheckout(checkout);
},
async redirectToNextStep() {
const checkout = getCheckout();
if (checkout.products == null || checkout.products.length == 0) {
return Err("cart-is-empty", "badInput");
}
const mergedMetadata = checkout.products.reduce(
(acc, product) => {
if (product.metadata != null) {
Object.keys(product.metadata).forEach((key) => {
var _a;
const value = (_a = product.metadata) == null ? void 0 : _a[key];
if (value != null) {
acc[key] = value;
}
});
}
return acc;
},
{}
);
const payload = {
items: checkout.products.map((el) => {
return {
id: el.productID,
quantity: el.quantity
};
}),
askForNote: true,
countries: checkout.country ? [checkout.country] : void 0,
metadata: mergedMetadata
};
const paymentResponse = await createPaymentURL(payload);
if (isErr(paymentResponse)) {
console.warn("cannot create payment URL", paymentResponse.error);
return paymentResponse;
}
return {
url: paymentResponse.url
};
},
async justRedirectToPayment(args) {
let payload = {
items: [
{
id: args.productID,
quantity: 1
}
],
askForNote: false,
details: args.email || args.name ? {
name: args.name,
email: args.email
} : void 0
};
payload = injectReferenceToRequestIfNeeded(payload);
if (args.country == null) {
args.country = "pl";
}
if (payload.details == null) {
payload.details = {};
}
if (payload.details.address == null) {
payload.details.address = {};
}
payload.details.address.country = args.country;
if (args.marketingAgreement === true) {
payload.additionalAgreements = [
{
id: MARKETING_AGREEMENT_ID,
name: "",
required: true,
answer: true
}
];
}
const result = await fetch(buildURL(projectID, "/buy"), {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
console.log("CODE", resu