spree_core 4.2.5 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/finders/concerns/spree/product_filterable.rb +9 -0
- data/app/finders/spree/cms_pages/find.rb +41 -0
- data/app/finders/spree/menus/find.rb +11 -0
- data/app/finders/spree/option_values/find_available.rb +20 -0
- data/app/finders/spree/orders/find_complete.rb +14 -2
- data/app/finders/spree/orders/find_current.rb +1 -13
- data/app/finders/spree/product_properties/find_available.rb +20 -0
- data/app/finders/spree/products/find.rb +80 -21
- data/app/finders/spree/stores/find_current.rb +24 -0
- data/app/finders/spree/taxons/find.rb +22 -6
- data/app/helpers/spree/base_helper.rb +69 -7
- data/app/helpers/spree/locale_helper.rb +5 -1
- data/app/helpers/spree/products_helper.rb +7 -3
- data/app/models/concerns/spree/display_link.rb +42 -0
- data/app/models/concerns/spree/display_money.rb +6 -2
- data/app/models/concerns/spree/filter_param.rb +21 -0
- data/app/models/concerns/spree/image_methods.rb +24 -0
- data/app/models/concerns/spree/memoized_data.rb +24 -0
- data/app/models/concerns/spree/multi_store_resource.rb +24 -0
- data/app/models/concerns/spree/product_scopes.rb +71 -8
- data/app/models/concerns/spree/single_store_resource.rb +19 -0
- data/app/models/concerns/spree/user_address.rb +19 -0
- data/app/models/concerns/spree/user_methods.rb +14 -12
- data/app/models/concerns/spree/user_payment_source.rb +1 -1
- data/app/models/concerns/spree/user_reporting.rb +35 -10
- data/app/models/concerns/spree/user_roles.rb +25 -0
- data/app/models/spree/ability.rb +3 -1
- data/app/models/spree/address.rb +27 -6
- data/app/models/spree/app_configuration.rb +8 -0
- data/app/models/spree/app_dependencies.rb +20 -6
- data/app/models/spree/base.rb +18 -0
- data/app/models/spree/classification.rb +3 -0
- data/app/models/spree/cms/pages/feature_page.rb +7 -0
- data/app/models/spree/cms/pages/homepage.rb +20 -0
- data/app/models/spree/cms/pages/standard_page.rb +4 -0
- data/app/models/spree/cms/sections/featured_article.rb +22 -0
- data/app/models/spree/cms/sections/hero_image.rb +38 -0
- data/app/models/spree/cms/sections/image_gallery.rb +103 -0
- data/app/models/spree/cms/sections/product_carousel.rb +14 -0
- data/app/models/spree/cms/sections/rich_text_content.rb +13 -0
- data/app/models/spree/cms/sections/side_by_side_images.rb +74 -0
- data/app/models/spree/cms_page.rb +66 -0
- data/app/models/spree/cms_section.rb +69 -0
- data/app/models/spree/country.rb +14 -6
- data/app/models/spree/credit_card.rb +2 -8
- data/app/models/spree/customer_return.rb +8 -2
- data/app/models/spree/gateway/bogus.rb +6 -4
- data/app/models/spree/icon.rb +9 -0
- data/app/models/spree/image/configuration/active_storage.rb +2 -0
- data/app/models/spree/image.rb +5 -24
- data/app/models/spree/inventory_unit.rb +1 -1
- data/app/models/spree/line_item.rb +1 -1
- data/app/models/spree/menu.rb +63 -0
- data/app/models/spree/menu_item.rb +76 -0
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +11 -0
- data/app/models/spree/option_value_variant.rb +1 -1
- data/app/models/spree/order/address_book.rb +3 -5
- data/app/models/spree/order/currency_updater.rb +1 -1
- data/app/models/spree/order/emails.rb +32 -0
- data/app/models/spree/order/payments.rb +1 -1
- data/app/models/spree/order/store_credit.rb +1 -1
- data/app/models/spree/order.rb +46 -45
- data/app/models/spree/payment.rb +7 -0
- data/app/models/spree/payment_method.rb +16 -0
- data/app/models/spree/preferences/preferable.rb +12 -0
- data/app/models/spree/preferences/preferable_class_methods.rb +10 -1
- data/app/models/spree/product.rb +37 -30
- data/app/models/spree/product_property.rb +19 -4
- data/app/models/spree/promotion/rules/country.rb +1 -1
- data/app/models/spree/promotion/rules/first_order.rb +4 -3
- data/app/models/spree/promotion/rules/taxon.rb +10 -7
- data/app/models/spree/promotion.rb +6 -15
- data/app/models/spree/promotion_handler/cart.rb +7 -2
- data/app/models/spree/promotion_handler/coupon.rb +5 -4
- data/app/models/spree/promotion_handler/free_shipping.rb +5 -6
- data/app/models/spree/promotion_handler/page.rb +3 -2
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +1 -0
- data/app/models/spree/promotion_rule.rb +2 -0
- data/app/models/spree/property.rb +28 -1
- data/app/models/spree/reimbursement.rb +3 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -1
- data/app/models/spree/shipment_handler.rb +4 -2
- data/app/models/spree/stock/quantifier.rb +6 -6
- data/app/models/spree/stock_location.rb +9 -0
- data/app/models/spree/store.rb +90 -7
- data/app/models/spree/store_credit.rb +7 -3
- data/app/models/spree/store_credit_event.rb +2 -2
- data/app/models/spree/store_payment_method.rb +11 -0
- data/app/models/spree/store_product.rb +11 -0
- data/app/models/spree/store_promotion.rb +11 -0
- data/app/models/spree/taxon.rb +22 -1
- data/app/models/spree/taxon_image/configuration/active_storage.rb +2 -0
- data/app/models/spree/taxon_image.rb +1 -0
- data/app/models/spree/taxonomy.rb +3 -1
- data/app/models/spree/variant.rb +21 -6
- data/app/presenters/spree/filters/options_presenter.rb +47 -0
- data/app/presenters/spree/filters/price_presenter.rb +22 -0
- data/app/presenters/spree/filters/price_range_presenter.rb +29 -0
- data/app/presenters/spree/filters/properties_presenter.rb +23 -0
- data/app/presenters/spree/filters/property_presenter.rb +42 -0
- data/app/presenters/spree/filters/quantified_price_range_presenter.rb +44 -0
- data/app/services/spree/account/addresses/create.rb +1 -0
- data/app/services/spree/account/addresses/helper.rb +6 -0
- data/app/services/spree/account/addresses/update.rb +9 -3
- data/app/services/spree/account/create.rb +17 -0
- data/app/services/spree/account/update.rb +15 -0
- data/app/services/spree/build_localized_redirect_url.rb +1 -1
- data/app/services/spree/cart/associate.rb +16 -0
- data/app/services/spree/cart/change_currency.rb +27 -0
- data/app/services/spree/cart/create.rb +5 -3
- data/app/services/spree/cart/destroy.rb +40 -0
- data/app/services/spree/cart/empty.rb +36 -0
- data/app/services/spree/cart/estimate_shipping_rates.rb +3 -3
- data/app/services/spree/checkout/add_store_credit.rb +1 -1
- data/app/services/spree/classifications/reposition.rb +18 -0
- data/app/services/spree/credit_cards/destroy.rb +41 -0
- data/app/sorters/spree/base_sorter.rb +23 -11
- data/app/sorters/spree/products/sort.rb +23 -7
- data/app/validators/db_maximum_length_validator.rb +5 -0
- data/app/validators/email_validator.rb +3 -1
- data/config/initializers/active_storage.rb +2 -0
- data/config/locales/en.yml +177 -3
- data/config/routes.rb +0 -5
- data/db/migrate/20201023152810_add_filterable_to_spree_properties.rb +8 -0
- data/db/migrate/20210407200948_create_spree_menus.rb +16 -0
- data/db/migrate/20210408092939_create_spree_menu_items.rb +31 -0
- data/db/migrate/20210504163720_add_filter_param_to_spree_product_properties.rb +8 -0
- data/db/migrate/20210505114659_add_filter_param_to_spree_properties.rb +8 -0
- data/db/migrate/20210512191732_create_spree_cms_pages.rb +24 -0
- data/db/migrate/20210514204251_create_spree_cms_sections.rb +22 -0
- data/db/migrate/20210527094055_create_spree_products_stores.rb +36 -0
- data/db/migrate/20210608045519_ensure_store_default_country_is_set.rb +5 -0
- data/db/migrate/20210702112334_add_missing_timestamp_columns.rb +46 -0
- data/db/migrate/20210713131614_add_unique_index_on_property_id_and_product_id_to_product_properties.rb +29 -0
- data/db/migrate/20210715091956_add_store_id_to_spree_store_credits.rb +10 -0
- data/db/migrate/20210716093151_add_store_id_to_spree_taxonomies.rb +11 -0
- data/db/migrate/20210716104141_add_index_on_name_parent_id_and_taxonomy_id_on_spree_taxons.rb +31 -0
- data/db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb +31 -0
- data/db/migrate/20210721125657_create_spree_promotions_stores.rb +29 -0
- data/db/migrate/20210722090705_add_store_id_to_spree_customer_returns.rb +11 -0
- data/db/migrate/20210726065456_change_integer_id_columns_into_bigint.rb +305 -0
- data/db/migrate/20210730154425_fix_promotion_code_and_path_unique_indexes.rb +9 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +11 -6
- data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
- data/lib/generators/spree/dummy_model/templates/model.rb.tt +1 -1
- data/lib/generators/spree/install/install_generator.rb +12 -24
- data/lib/spree/core/components.rb +8 -0
- data/lib/spree/core/controller_helpers/auth.rb +7 -1
- data/lib/spree/core/controller_helpers/common.rb +1 -1
- data/lib/spree/core/controller_helpers/order.rb +4 -4
- data/lib/spree/core/controller_helpers/search.rb +1 -0
- data/lib/spree/core/controller_helpers/store.rb +24 -1
- data/lib/spree/core/engine.rb +6 -0
- data/lib/spree/core/importer/product.rb +3 -1
- data/lib/spree/core/product_duplicator.rb +1 -0
- data/lib/spree/core/search/base.rb +17 -22
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +8 -4
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/money.rb +2 -1
- data/lib/spree/permitted_attributes.rb +21 -3
- data/lib/spree/testing_support/authorization_helpers.rb +6 -3
- data/lib/spree/testing_support/capybara_config.rb +3 -1
- data/lib/spree/testing_support/common_rake.rb +17 -4
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +1 -1
- data/lib/spree/testing_support/factories/classification_factory.rb +8 -0
- data/lib/spree/testing_support/factories/cms_page_factory.rb +20 -0
- data/lib/spree/testing_support/factories/cms_section_factory.rb +31 -0
- data/lib/spree/testing_support/factories/customer_return_factory.rb +24 -17
- data/lib/spree/testing_support/factories/icon_factory.rb +7 -0
- data/lib/spree/testing_support/factories/line_item_factory.rb +6 -2
- data/lib/spree/testing_support/factories/menu_factory.rb +16 -0
- data/lib/spree/testing_support/factories/menu_item_factory.rb +10 -0
- data/lib/spree/testing_support/factories/options_factory.rb +5 -0
- data/lib/spree/testing_support/factories/order_factory.rb +11 -2
- data/lib/spree/testing_support/factories/payment_method_factory.rb +6 -2
- data/lib/spree/testing_support/factories/product_factory.rb +17 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +18 -9
- data/lib/spree/testing_support/factories/property_factory.rb +22 -0
- data/lib/spree/testing_support/factories/stock_location_factory.rb +5 -4
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -0
- data/lib/spree/testing_support/factories/store_factory.rb +11 -0
- data/lib/spree/testing_support/factories/taxon_factory.rb +3 -1
- data/lib/spree/testing_support/factories/taxon_image_factory.rb +7 -0
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -0
- data/lib/spree/testing_support/factories/user_factory.rb +7 -2
- data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
- data/lib/spree/testing_support/flatpickr_capybara.rb +58 -35
- data/lib/spree/testing_support/locale_helpers.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +9 -9
- data/lib/spree/testing_support/rspec_retry_config.rb +5 -0
- data/lib/tasks/core.rake +1 -1
- data/spec/fixtures/favicon.ico +0 -0
- data/spec/fixtures/files/icon_256x256.gif +0 -0
- data/spec/fixtures/files/icon_256x256.png +0 -0
- data/spec/fixtures/files/icon_512x512.png +0 -0
- data/spec/fixtures/files/img_256x128.png +0 -0
- data/spree_core.gemspec +12 -11
- metadata +211 -159
- data/app/assets/images/logo/spree_50.png +0 -0
- data/app/assets/images/noimage/large.png +0 -0
- data/app/assets/images/noimage/mini.png +0 -0
- data/app/assets/images/noimage/product.png +0 -0
- data/app/assets/images/noimage/small.png +0 -0
- data/app/assets/javascripts/spree.js +0 -78
- data/app/controllers/spree/errors_controller.rb +0 -11
- data/app/helpers/spree/mail_helper.rb +0 -29
- data/app/mailers/spree/base_mailer.rb +0 -46
- data/app/mailers/spree/order_mailer.rb +0 -26
- data/app/mailers/spree/reimbursement_mailer.rb +0 -12
- data/app/mailers/spree/shipment_mailer.rb +0 -12
- data/app/mailers/spree/test_mailer.rb +0 -8
- data/app/models/spree/validations/db_maximum_length_validator.rb +0 -22
- data/app/views/layouts/spree/base_mailer.html.erb +0 -46
- data/app/views/spree/errors/forbidden.html.erb +0 -0
- data/app/views/spree/errors/unauthorized.html.erb +0 -0
- data/app/views/spree/order_mailer/cancel_email.html.erb +0 -24
- data/app/views/spree/order_mailer/cancel_email.text.erb +0 -38
- data/app/views/spree/order_mailer/confirm_email.html.erb +0 -23
- data/app/views/spree/order_mailer/confirm_email.text.erb +0 -39
- data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +0 -23
- data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +0 -38
- data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +0 -56
- data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +0 -24
- data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -12
- data/app/views/spree/shared/_base_mailer_header.html.erb +0 -13
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -456
- data/app/views/spree/shared/_error_messages.html.erb +0 -11
- data/app/views/spree/shared/_mailer_line_item.html.erb +0 -16
- data/app/views/spree/shared/_paths.html.erb +0 -8
- data/app/views/spree/shared/_purchased_items_table.html.erb +0 -69
- data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +0 -13
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +0 -27
- data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +0 -13
- data/app/views/spree/shared/purchased_items_table/_total.html.erb +0 -13
- data/app/views/spree/shipment_mailer/shipped_email.html.erb +0 -36
- data/app/views/spree/shipment_mailer/shipped_email.text.erb +0 -17
- data/app/views/spree/test_mailer/test_email.html.erb +0 -40
- data/app/views/spree/test_mailer/test_email.text.erb +0 -4
- data/config/initializers/assets.rb +0 -2
- data/config/initializers/premailer_assets.rb +0 -1
- data/config/initializers/premailer_rails.rb +0 -3
- data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +0 -10
- data/lib/generators/spree/dummy/templates/initializers/bullet.rb +0 -5
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -15
- data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -16
- data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -16
- data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -16
- data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +0 -23
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +0 -13
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +0 -5
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +0 -5
- data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +0 -11
- data/lib/tasks/email.rake +0 -10
- data/vendor/assets/javascripts/cleave.js +0 -1669
- data/vendor/assets/javascripts/fetch.umd.js +0 -531
- data/vendor/assets/javascripts/jquery.payment.js +0 -652
- data/vendor/assets/javascripts/jsuri.js +0 -458
- data/vendor/assets/javascripts/polyfill.min.js +0 -1
@@ -1,531 +0,0 @@
|
|
1
|
-
(function (global, factory) {
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
4
|
-
(factory((global.WHATWGFetch = {})));
|
5
|
-
}(this, (function (exports) { 'use strict';
|
6
|
-
|
7
|
-
var support = {
|
8
|
-
searchParams: 'URLSearchParams' in self,
|
9
|
-
iterable: 'Symbol' in self && 'iterator' in Symbol,
|
10
|
-
blob:
|
11
|
-
'FileReader' in self &&
|
12
|
-
'Blob' in self &&
|
13
|
-
(function() {
|
14
|
-
try {
|
15
|
-
new Blob();
|
16
|
-
return true
|
17
|
-
} catch (e) {
|
18
|
-
return false
|
19
|
-
}
|
20
|
-
})(),
|
21
|
-
formData: 'FormData' in self,
|
22
|
-
arrayBuffer: 'ArrayBuffer' in self
|
23
|
-
};
|
24
|
-
|
25
|
-
function isDataView(obj) {
|
26
|
-
return obj && DataView.prototype.isPrototypeOf(obj)
|
27
|
-
}
|
28
|
-
|
29
|
-
if (support.arrayBuffer) {
|
30
|
-
var viewClasses = [
|
31
|
-
'[object Int8Array]',
|
32
|
-
'[object Uint8Array]',
|
33
|
-
'[object Uint8ClampedArray]',
|
34
|
-
'[object Int16Array]',
|
35
|
-
'[object Uint16Array]',
|
36
|
-
'[object Int32Array]',
|
37
|
-
'[object Uint32Array]',
|
38
|
-
'[object Float32Array]',
|
39
|
-
'[object Float64Array]'
|
40
|
-
];
|
41
|
-
|
42
|
-
var isArrayBufferView =
|
43
|
-
ArrayBuffer.isView ||
|
44
|
-
function(obj) {
|
45
|
-
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
|
46
|
-
};
|
47
|
-
}
|
48
|
-
|
49
|
-
function normalizeName(name) {
|
50
|
-
if (typeof name !== 'string') {
|
51
|
-
name = String(name);
|
52
|
-
}
|
53
|
-
if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) {
|
54
|
-
throw new TypeError('Invalid character in header field name')
|
55
|
-
}
|
56
|
-
return name.toLowerCase()
|
57
|
-
}
|
58
|
-
|
59
|
-
function normalizeValue(value) {
|
60
|
-
if (typeof value !== 'string') {
|
61
|
-
value = String(value);
|
62
|
-
}
|
63
|
-
return value
|
64
|
-
}
|
65
|
-
|
66
|
-
// Build a destructive iterator for the value list
|
67
|
-
function iteratorFor(items) {
|
68
|
-
var iterator = {
|
69
|
-
next: function() {
|
70
|
-
var value = items.shift();
|
71
|
-
return {done: value === undefined, value: value}
|
72
|
-
}
|
73
|
-
};
|
74
|
-
|
75
|
-
if (support.iterable) {
|
76
|
-
iterator[Symbol.iterator] = function() {
|
77
|
-
return iterator
|
78
|
-
};
|
79
|
-
}
|
80
|
-
|
81
|
-
return iterator
|
82
|
-
}
|
83
|
-
|
84
|
-
function Headers(headers) {
|
85
|
-
this.map = {};
|
86
|
-
|
87
|
-
if (headers instanceof Headers) {
|
88
|
-
headers.forEach(function(value, name) {
|
89
|
-
this.append(name, value);
|
90
|
-
}, this);
|
91
|
-
} else if (Array.isArray(headers)) {
|
92
|
-
headers.forEach(function(header) {
|
93
|
-
this.append(header[0], header[1]);
|
94
|
-
}, this);
|
95
|
-
} else if (headers) {
|
96
|
-
Object.getOwnPropertyNames(headers).forEach(function(name) {
|
97
|
-
this.append(name, headers[name]);
|
98
|
-
}, this);
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
Headers.prototype.append = function(name, value) {
|
103
|
-
name = normalizeName(name);
|
104
|
-
value = normalizeValue(value);
|
105
|
-
var oldValue = this.map[name];
|
106
|
-
this.map[name] = oldValue ? oldValue + ', ' + value : value;
|
107
|
-
};
|
108
|
-
|
109
|
-
Headers.prototype['delete'] = function(name) {
|
110
|
-
delete this.map[normalizeName(name)];
|
111
|
-
};
|
112
|
-
|
113
|
-
Headers.prototype.get = function(name) {
|
114
|
-
name = normalizeName(name);
|
115
|
-
return this.has(name) ? this.map[name] : null
|
116
|
-
};
|
117
|
-
|
118
|
-
Headers.prototype.has = function(name) {
|
119
|
-
return this.map.hasOwnProperty(normalizeName(name))
|
120
|
-
};
|
121
|
-
|
122
|
-
Headers.prototype.set = function(name, value) {
|
123
|
-
this.map[normalizeName(name)] = normalizeValue(value);
|
124
|
-
};
|
125
|
-
|
126
|
-
Headers.prototype.forEach = function(callback, thisArg) {
|
127
|
-
for (var name in this.map) {
|
128
|
-
if (this.map.hasOwnProperty(name)) {
|
129
|
-
callback.call(thisArg, this.map[name], name, this);
|
130
|
-
}
|
131
|
-
}
|
132
|
-
};
|
133
|
-
|
134
|
-
Headers.prototype.keys = function() {
|
135
|
-
var items = [];
|
136
|
-
this.forEach(function(value, name) {
|
137
|
-
items.push(name);
|
138
|
-
});
|
139
|
-
return iteratorFor(items)
|
140
|
-
};
|
141
|
-
|
142
|
-
Headers.prototype.values = function() {
|
143
|
-
var items = [];
|
144
|
-
this.forEach(function(value) {
|
145
|
-
items.push(value);
|
146
|
-
});
|
147
|
-
return iteratorFor(items)
|
148
|
-
};
|
149
|
-
|
150
|
-
Headers.prototype.entries = function() {
|
151
|
-
var items = [];
|
152
|
-
this.forEach(function(value, name) {
|
153
|
-
items.push([name, value]);
|
154
|
-
});
|
155
|
-
return iteratorFor(items)
|
156
|
-
};
|
157
|
-
|
158
|
-
if (support.iterable) {
|
159
|
-
Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
|
160
|
-
}
|
161
|
-
|
162
|
-
function consumed(body) {
|
163
|
-
if (body.bodyUsed) {
|
164
|
-
return Promise.reject(new TypeError('Already read'))
|
165
|
-
}
|
166
|
-
body.bodyUsed = true;
|
167
|
-
}
|
168
|
-
|
169
|
-
function fileReaderReady(reader) {
|
170
|
-
return new Promise(function(resolve, reject) {
|
171
|
-
reader.onload = function() {
|
172
|
-
resolve(reader.result);
|
173
|
-
};
|
174
|
-
reader.onerror = function() {
|
175
|
-
reject(reader.error);
|
176
|
-
};
|
177
|
-
})
|
178
|
-
}
|
179
|
-
|
180
|
-
function readBlobAsArrayBuffer(blob) {
|
181
|
-
var reader = new FileReader();
|
182
|
-
var promise = fileReaderReady(reader);
|
183
|
-
reader.readAsArrayBuffer(blob);
|
184
|
-
return promise
|
185
|
-
}
|
186
|
-
|
187
|
-
function readBlobAsText(blob) {
|
188
|
-
var reader = new FileReader();
|
189
|
-
var promise = fileReaderReady(reader);
|
190
|
-
reader.readAsText(blob);
|
191
|
-
return promise
|
192
|
-
}
|
193
|
-
|
194
|
-
function readArrayBufferAsText(buf) {
|
195
|
-
var view = new Uint8Array(buf);
|
196
|
-
var chars = new Array(view.length);
|
197
|
-
|
198
|
-
for (var i = 0; i < view.length; i++) {
|
199
|
-
chars[i] = String.fromCharCode(view[i]);
|
200
|
-
}
|
201
|
-
return chars.join('')
|
202
|
-
}
|
203
|
-
|
204
|
-
function bufferClone(buf) {
|
205
|
-
if (buf.slice) {
|
206
|
-
return buf.slice(0)
|
207
|
-
} else {
|
208
|
-
var view = new Uint8Array(buf.byteLength);
|
209
|
-
view.set(new Uint8Array(buf));
|
210
|
-
return view.buffer
|
211
|
-
}
|
212
|
-
}
|
213
|
-
|
214
|
-
function Body() {
|
215
|
-
this.bodyUsed = false;
|
216
|
-
|
217
|
-
this._initBody = function(body) {
|
218
|
-
this._bodyInit = body;
|
219
|
-
if (!body) {
|
220
|
-
this._bodyText = '';
|
221
|
-
} else if (typeof body === 'string') {
|
222
|
-
this._bodyText = body;
|
223
|
-
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
|
224
|
-
this._bodyBlob = body;
|
225
|
-
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
|
226
|
-
this._bodyFormData = body;
|
227
|
-
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
228
|
-
this._bodyText = body.toString();
|
229
|
-
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
|
230
|
-
this._bodyArrayBuffer = bufferClone(body.buffer);
|
231
|
-
// IE 10-11 can't handle a DataView body.
|
232
|
-
this._bodyInit = new Blob([this._bodyArrayBuffer]);
|
233
|
-
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
|
234
|
-
this._bodyArrayBuffer = bufferClone(body);
|
235
|
-
} else {
|
236
|
-
this._bodyText = body = Object.prototype.toString.call(body);
|
237
|
-
}
|
238
|
-
|
239
|
-
if (!this.headers.get('content-type')) {
|
240
|
-
if (typeof body === 'string') {
|
241
|
-
this.headers.set('content-type', 'text/plain;charset=UTF-8');
|
242
|
-
} else if (this._bodyBlob && this._bodyBlob.type) {
|
243
|
-
this.headers.set('content-type', this._bodyBlob.type);
|
244
|
-
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
|
245
|
-
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
|
246
|
-
}
|
247
|
-
}
|
248
|
-
};
|
249
|
-
|
250
|
-
if (support.blob) {
|
251
|
-
this.blob = function() {
|
252
|
-
var rejected = consumed(this);
|
253
|
-
if (rejected) {
|
254
|
-
return rejected
|
255
|
-
}
|
256
|
-
|
257
|
-
if (this._bodyBlob) {
|
258
|
-
return Promise.resolve(this._bodyBlob)
|
259
|
-
} else if (this._bodyArrayBuffer) {
|
260
|
-
return Promise.resolve(new Blob([this._bodyArrayBuffer]))
|
261
|
-
} else if (this._bodyFormData) {
|
262
|
-
throw new Error('could not read FormData body as blob')
|
263
|
-
} else {
|
264
|
-
return Promise.resolve(new Blob([this._bodyText]))
|
265
|
-
}
|
266
|
-
};
|
267
|
-
|
268
|
-
this.arrayBuffer = function() {
|
269
|
-
if (this._bodyArrayBuffer) {
|
270
|
-
return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
|
271
|
-
} else {
|
272
|
-
return this.blob().then(readBlobAsArrayBuffer)
|
273
|
-
}
|
274
|
-
};
|
275
|
-
}
|
276
|
-
|
277
|
-
this.text = function() {
|
278
|
-
var rejected = consumed(this);
|
279
|
-
if (rejected) {
|
280
|
-
return rejected
|
281
|
-
}
|
282
|
-
|
283
|
-
if (this._bodyBlob) {
|
284
|
-
return readBlobAsText(this._bodyBlob)
|
285
|
-
} else if (this._bodyArrayBuffer) {
|
286
|
-
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
|
287
|
-
} else if (this._bodyFormData) {
|
288
|
-
throw new Error('could not read FormData body as text')
|
289
|
-
} else {
|
290
|
-
return Promise.resolve(this._bodyText)
|
291
|
-
}
|
292
|
-
};
|
293
|
-
|
294
|
-
if (support.formData) {
|
295
|
-
this.formData = function() {
|
296
|
-
return this.text().then(decode)
|
297
|
-
};
|
298
|
-
}
|
299
|
-
|
300
|
-
this.json = function() {
|
301
|
-
return this.text().then(JSON.parse)
|
302
|
-
};
|
303
|
-
|
304
|
-
return this
|
305
|
-
}
|
306
|
-
|
307
|
-
// HTTP methods whose capitalization should be normalized
|
308
|
-
var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
|
309
|
-
|
310
|
-
function normalizeMethod(method) {
|
311
|
-
var upcased = method.toUpperCase();
|
312
|
-
return methods.indexOf(upcased) > -1 ? upcased : method
|
313
|
-
}
|
314
|
-
|
315
|
-
function Request(input, options) {
|
316
|
-
options = options || {};
|
317
|
-
var body = options.body;
|
318
|
-
|
319
|
-
if (input instanceof Request) {
|
320
|
-
if (input.bodyUsed) {
|
321
|
-
throw new TypeError('Already read')
|
322
|
-
}
|
323
|
-
this.url = input.url;
|
324
|
-
this.credentials = input.credentials;
|
325
|
-
if (!options.headers) {
|
326
|
-
this.headers = new Headers(input.headers);
|
327
|
-
}
|
328
|
-
this.method = input.method;
|
329
|
-
this.mode = input.mode;
|
330
|
-
this.signal = input.signal;
|
331
|
-
if (!body && input._bodyInit != null) {
|
332
|
-
body = input._bodyInit;
|
333
|
-
input.bodyUsed = true;
|
334
|
-
}
|
335
|
-
} else {
|
336
|
-
this.url = String(input);
|
337
|
-
}
|
338
|
-
|
339
|
-
this.credentials = options.credentials || this.credentials || 'same-origin';
|
340
|
-
if (options.headers || !this.headers) {
|
341
|
-
this.headers = new Headers(options.headers);
|
342
|
-
}
|
343
|
-
this.method = normalizeMethod(options.method || this.method || 'GET');
|
344
|
-
this.mode = options.mode || this.mode || null;
|
345
|
-
this.signal = options.signal || this.signal;
|
346
|
-
this.referrer = null;
|
347
|
-
|
348
|
-
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
|
349
|
-
throw new TypeError('Body not allowed for GET or HEAD requests')
|
350
|
-
}
|
351
|
-
this._initBody(body);
|
352
|
-
}
|
353
|
-
|
354
|
-
Request.prototype.clone = function() {
|
355
|
-
return new Request(this, {body: this._bodyInit})
|
356
|
-
};
|
357
|
-
|
358
|
-
function decode(body) {
|
359
|
-
var form = new FormData();
|
360
|
-
body
|
361
|
-
.trim()
|
362
|
-
.split('&')
|
363
|
-
.forEach(function(bytes) {
|
364
|
-
if (bytes) {
|
365
|
-
var split = bytes.split('=');
|
366
|
-
var name = split.shift().replace(/\+/g, ' ');
|
367
|
-
var value = split.join('=').replace(/\+/g, ' ');
|
368
|
-
form.append(decodeURIComponent(name), decodeURIComponent(value));
|
369
|
-
}
|
370
|
-
});
|
371
|
-
return form
|
372
|
-
}
|
373
|
-
|
374
|
-
function parseHeaders(rawHeaders) {
|
375
|
-
var headers = new Headers();
|
376
|
-
// Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
|
377
|
-
// https://tools.ietf.org/html/rfc7230#section-3.2
|
378
|
-
var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
|
379
|
-
preProcessedHeaders.split(/\r?\n/).forEach(function(line) {
|
380
|
-
var parts = line.split(':');
|
381
|
-
var key = parts.shift().trim();
|
382
|
-
if (key) {
|
383
|
-
var value = parts.join(':').trim();
|
384
|
-
headers.append(key, value);
|
385
|
-
}
|
386
|
-
});
|
387
|
-
return headers
|
388
|
-
}
|
389
|
-
|
390
|
-
Body.call(Request.prototype);
|
391
|
-
|
392
|
-
function Response(bodyInit, options) {
|
393
|
-
if (!options) {
|
394
|
-
options = {};
|
395
|
-
}
|
396
|
-
|
397
|
-
this.type = 'default';
|
398
|
-
this.status = options.status === undefined ? 200 : options.status;
|
399
|
-
this.ok = this.status >= 200 && this.status < 300;
|
400
|
-
this.statusText = 'statusText' in options ? options.statusText : 'OK';
|
401
|
-
this.headers = new Headers(options.headers);
|
402
|
-
this.url = options.url || '';
|
403
|
-
this._initBody(bodyInit);
|
404
|
-
}
|
405
|
-
|
406
|
-
Body.call(Response.prototype);
|
407
|
-
|
408
|
-
Response.prototype.clone = function() {
|
409
|
-
return new Response(this._bodyInit, {
|
410
|
-
status: this.status,
|
411
|
-
statusText: this.statusText,
|
412
|
-
headers: new Headers(this.headers),
|
413
|
-
url: this.url
|
414
|
-
})
|
415
|
-
};
|
416
|
-
|
417
|
-
Response.error = function() {
|
418
|
-
var response = new Response(null, {status: 0, statusText: ''});
|
419
|
-
response.type = 'error';
|
420
|
-
return response
|
421
|
-
};
|
422
|
-
|
423
|
-
var redirectStatuses = [301, 302, 303, 307, 308];
|
424
|
-
|
425
|
-
Response.redirect = function(url, status) {
|
426
|
-
if (redirectStatuses.indexOf(status) === -1) {
|
427
|
-
throw new RangeError('Invalid status code')
|
428
|
-
}
|
429
|
-
|
430
|
-
return new Response(null, {status: status, headers: {location: url}})
|
431
|
-
};
|
432
|
-
|
433
|
-
exports.DOMException = self.DOMException;
|
434
|
-
try {
|
435
|
-
new exports.DOMException();
|
436
|
-
} catch (err) {
|
437
|
-
exports.DOMException = function(message, name) {
|
438
|
-
this.message = message;
|
439
|
-
this.name = name;
|
440
|
-
var error = Error(message);
|
441
|
-
this.stack = error.stack;
|
442
|
-
};
|
443
|
-
exports.DOMException.prototype = Object.create(Error.prototype);
|
444
|
-
exports.DOMException.prototype.constructor = exports.DOMException;
|
445
|
-
}
|
446
|
-
|
447
|
-
function fetch(input, init) {
|
448
|
-
return new Promise(function(resolve, reject) {
|
449
|
-
var request = new Request(input, init);
|
450
|
-
|
451
|
-
if (request.signal && request.signal.aborted) {
|
452
|
-
return reject(new exports.DOMException('Aborted', 'AbortError'))
|
453
|
-
}
|
454
|
-
|
455
|
-
var xhr = new XMLHttpRequest();
|
456
|
-
|
457
|
-
function abortXhr() {
|
458
|
-
xhr.abort();
|
459
|
-
}
|
460
|
-
|
461
|
-
xhr.onload = function() {
|
462
|
-
var options = {
|
463
|
-
status: xhr.status,
|
464
|
-
statusText: xhr.statusText,
|
465
|
-
headers: parseHeaders(xhr.getAllResponseHeaders() || '')
|
466
|
-
};
|
467
|
-
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
|
468
|
-
var body = 'response' in xhr ? xhr.response : xhr.responseText;
|
469
|
-
resolve(new Response(body, options));
|
470
|
-
};
|
471
|
-
|
472
|
-
xhr.onerror = function() {
|
473
|
-
reject(new TypeError('Network request failed'));
|
474
|
-
};
|
475
|
-
|
476
|
-
xhr.ontimeout = function() {
|
477
|
-
reject(new TypeError('Network request failed'));
|
478
|
-
};
|
479
|
-
|
480
|
-
xhr.onabort = function() {
|
481
|
-
reject(new exports.DOMException('Aborted', 'AbortError'));
|
482
|
-
};
|
483
|
-
|
484
|
-
xhr.open(request.method, request.url, true);
|
485
|
-
|
486
|
-
if (request.credentials === 'include') {
|
487
|
-
xhr.withCredentials = true;
|
488
|
-
} else if (request.credentials === 'omit') {
|
489
|
-
xhr.withCredentials = false;
|
490
|
-
}
|
491
|
-
|
492
|
-
if ('responseType' in xhr && support.blob) {
|
493
|
-
xhr.responseType = 'blob';
|
494
|
-
}
|
495
|
-
|
496
|
-
request.headers.forEach(function(value, name) {
|
497
|
-
xhr.setRequestHeader(name, value);
|
498
|
-
});
|
499
|
-
|
500
|
-
if (request.signal) {
|
501
|
-
request.signal.addEventListener('abort', abortXhr);
|
502
|
-
|
503
|
-
xhr.onreadystatechange = function() {
|
504
|
-
// DONE (success or failure)
|
505
|
-
if (xhr.readyState === 4) {
|
506
|
-
request.signal.removeEventListener('abort', abortXhr);
|
507
|
-
}
|
508
|
-
};
|
509
|
-
}
|
510
|
-
|
511
|
-
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
|
512
|
-
})
|
513
|
-
}
|
514
|
-
|
515
|
-
fetch.polyfill = true;
|
516
|
-
|
517
|
-
if (!self.fetch) {
|
518
|
-
self.fetch = fetch;
|
519
|
-
self.Headers = Headers;
|
520
|
-
self.Request = Request;
|
521
|
-
self.Response = Response;
|
522
|
-
}
|
523
|
-
|
524
|
-
exports.Headers = Headers;
|
525
|
-
exports.Request = Request;
|
526
|
-
exports.Response = Response;
|
527
|
-
exports.fetch = fetch;
|
528
|
-
|
529
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
530
|
-
|
531
|
-
})));
|