Skip to content

Commit 42f9087

Browse files
author
tkostuch
committed
Merge remote-tracking branch '@vue-storefront/release/v1.12.0-rc.1' into release/v1.12.0
2 parents e4223fc + f0b81d2 commit 42f9087

File tree

536 files changed

+6056
-28014
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

536 files changed

+6056
-28014
lines changed

.gitmodules

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[submodule "src/modules/vsf-cache-nginx"]
2+
path = src/modules/vsf-cache-nginx
3+
url = https://github.com/new-fantastic/vsf-cache-nginx.git
4+
branch = master
5+
[submodule "src/modules/vsf-cache-varnish"]
6+
path = src/modules/vsf-cache-varnish
7+
url = https://github.com/new-fantastic/vsf-cache-varnish.git
8+
branch = master

.gitpod.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
tasks:
2+
- init: |
3+
yarn install
4+
echo '{ "api": { "url": "https://next.storefrontcloud.io" }}' > config/local.json
5+
yarn build
6+
command: yarn dev
7+
8+
ports:
9+
- port: 3000
10+
onOpen: open-preview
11+
12+
vscode:
13+
extensions:
14+
- [email protected]:TEzauMObB6f3i2JqlvrOpA==
15+
- [email protected]:/v3eRFwBI38JLZJv5ExY5g==
16+
- [email protected]:peDPJqeL8FmmJiabU4fAJQ==
17+
- [email protected]:oZ/8R2VhZEhkHsoeO57hSw==
18+
- [email protected]:lKCmLIZAiCM0M8AjDnwCLQ==
19+
- [email protected]:oYJg0oZA/6FBnFfW599HRg==

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
10

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ cache:
77
- node_modules
88

99
install:
10+
- git clone --quiet --single-branch --branch master https://github.com/DivanteLtd/vsf-default.git ./src/themes/default
1011
- yarn
1112

1213
jobs:

CHANGELOG.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,85 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.12.0] - 2020.06.01
9+
10+
### Added
11+
12+
- Add `vsf-capybara` support as a dependency and extend CLI to support customization - @psmyrek (#4209)
13+
- Support theme configuration via CLI - @psmyrek (#4395)
14+
- Allow parent_ids field on product as an alternative to urlpath based breadcrumb navigation (#4219)
15+
- Pass the original item_id when updating/deleting a cart entry @carlokok (#4218)
16+
- Separating endpoints for CSR/SSR - @Fifciu (#2861)
17+
- Added short hands for version and help flags - @jamesgeorge007 (#3946)
18+
- Add `or` operator for Elasticsearch filters in `quickSearchByQuery` and use exists if value is `null` - @cewald (#3960)
19+
- Add unified fetch in mappingFallback for all searched entities - @gibkigonzo (#3942)
20+
- add npm-run-all for parallel build - @gibkigonzo (#3819)
21+
- Add OutputCaching support for x-vs-store-code - @benjick (#3979)
22+
- The new search adapter `api-search-query` has been added. When you switch to it, by setting the `config.server.api = "api-search-query"` the ElasticSearch query is being built in the [`vue-storefront-api`](https://github.com/DivanteLtd/vue-storefront-api/pull/390) which saves around 400kB in the bundle size as `bodybuilder` is no longer needed in the frontend - @pkarw - #2167
23+
- This new `api-search-query` adapter supports the `response_format` query parameter which now is sent to the `/api/catalog` endpoint. Currently there is just one additional format supported: `response_format=compact`. When used, the response format got optimized by: a) remapping the results, removing the `_source` from the `hits.hits`; b) compressing the JSON fields names according to the `config.products.fieldsToCompact`; c) removing the JSON fields from the `product.configurable_children` when their values === parent product values; overall response size reduced over -70% - @pkarw
24+
- The `amp-renderer` module has been disabled by default to save the bundle size; If you'd like to enable it uncomment the module from the `src/modules` and uncomment the `product-amp` and `category-amp` links that are added to the `<head>` section in the `src/themes/default/Product.vue` and `src/themes/default/Category.vue`
25+
- Reset Password confirmation page - @Fifciu (#2576)
26+
- Add `Intl.NumberFormat()`/`toLocaleString()` via polyfill support in NodeJs - @cewald (#3836, #4040)
27+
- Added `saveBandwidthOverCache` parameter for skipping caching for products data - @andrzejewsky (#3706)
28+
- New zoom effect for product gallery images - @Michal-Dziedzinski (#2755)
29+
- Add custom currency separators and amount of fraction digits - @EndPositive (#3553)
30+
- Product Page Schema implementation as JSON-LD - @Michal-Dziedzinski (#3704)
31+
- Add `/cache-version.json` route to get current cache version
32+
- Built-in module for detecting device type based on UserAgent with SSR support - @Fifciu
33+
- Update to `storefront-query-builder` version `1.0.0` - @cewald (#4234)
34+
- Move generating files from webpack config to script @gibkigonzo (#4236)
35+
- Add correct type matching to `getConfigurationMatchLevel` - @cewald (#4241)
36+
- Support `useSpecificImagePaths` with `useExactUrlsNoProxy` - @cewald (#4243)
37+
- Adds module which handles cache invalidation for Fastly. - @gibkigonzo (#4096)
38+
- Add vsf-cache-nginx and vsf-cache-varnish modules - @gibkigonzo (#4096)
39+
- Added meta info for CMS pages from Magento @mdanilowicz (#4392)
40+
- Add useful core events to server & logger - @cewald (#4419)
41+
42+
### Fixed
43+
44+
- Fixed `resultPorcessor` typo - @psmyrek
45+
- Negative price has doubled minus sign - @psmyrek (#4353)
46+
- Fixed Search product fails for category filter when categoryId is string - @adityasharma7 (#3929)
47+
- Revert init filters in Vue app - @gibkigonzo (#3929)
48+
- All categories disappearing if you add the child category name to includeFields - @1070rik (#4015)
49+
- Fix overlapping text in PersonalDetails component - @jakubmakielkowski (#4024)
50+
- Redirect from checkout to home with a proper store code - @Fifciu
51+
- Added back error notification when user selects invalid configuration - @1070rik (#4033)
52+
- findConfigurableChildAsync - return best match for configurable variant - @gibkigonzo, @cewald (#4042, #4216)
53+
- use storeCode for mappingFallback url - @gibkigonzo (#4050)
54+
- `getVariantWithLowestPrice` uses inexistent `final_price` property - @cewald (#4091)
55+
- Fixed `NOT_ALLOWED_SSR_EXTENSIONS_REGEX` to only match with file extensions having a dot - @haelbichalex (#4100)
56+
- Fixed problem with not showing error message when placing an order fails - @qiqqq
57+
- Invoking afterCacheInvalidated server hook in a proper moment - @Fifciu (#4176)
58+
- Fixed `cart/isVirtualCart` to return `false` when cart is empty - @haelbichalex(#4182)
59+
- Use `setProductGallery` in `product/setCurrent` to use logic of the action - @cewald (#4153)
60+
- Use same data format in getConfigurationMatchLevel - @gibkigonzo (#4208)
61+
- removed possible memory leak in ssr - @resubaka (#4247)
62+
- Bugfix for reactivity of `current_configuration` in `populateProductConfigurationAsync` - @cewald (#4258)
63+
- Bugfix for build exception in Node v13.13+ - @cewald (#4249)
64+
- Convert option ids to string while comparing them in `getProductConfiguration` - @gibkigonzo (#4484)
65+
- change value to number in price filter - @gibkigonzo (#4478)
66+
67+
### Changed / Improved
68+
69+
- Optimized `translation.processor` to process only enabled locale CSV files - @pkarw (#3950)
70+
- Remove commit register mapping - @gibkigonzo (#3875)
71+
- Improved method `findConfigurableChildAsync` - find variant with lowest price - @gibkigonzo (#3939)
72+
- Removed `product/loadConfigurableAttributes` calls - @andrzejewsky (#3336)
73+
- Removed unused locales in disabled multistore - @gibkigonzo (#4072)
74+
- Optimized attributes loading - @andrzejewsky (#3948)
75+
- Cart optimization can now be used regardless if entity optimization is enabled - @juho-jaakkola (#4198)
76+
- Improve typescript support for test utils - @resubaka (#4067)
77+
- Removed `product/loadConfigurableAttributes` calls - @andrzejewsky, @gibkigonzo (#3336)
78+
- Disable `mapFallback` url by default - @gibkigonzo(#4092)
79+
- Include token in pricing sync - @carlokok (#4156)
80+
- Move 'graphql' search adapter from core to src (deprecated) - @gibkigonzo (#4214)
81+
- Homepage, new products query, uses now `new` attribute - @mdanilwoicz
82+
- Refactor product module, more info in upgrade notes- @gibkigonzo (#3952, #4459)
83+
- Move default theme to separate repository https://github.com/DivanteLtd/vsf-default - @gibkigonzo (#4255)
84+
- add two numbers after dot to price by default, calculate default price for bundle or grouped main product, update typing, add fallback to attribute options - @gibkigonzo (#4476)
85+
- udpate yarn and filter shipping methods for instant checkout - @gibkigonzo (#4480)
86+
887
## [1.11.4] - 2020.05.26
988

1089
### Added

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
Already a JavaScript/Vue.js developer? Pick an issue, push a pull request (PR) and instantly become a member of the vue-storefront contributors community.
44
We've marked some issues as "Easy first pick" to make it easier for newcomers to begin!
55

6+
You can start a ready-to-code development environment in your browser, by clicking the button below:
7+
8+
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/)
9+
610
Thank you for your interest in, and engagement!
711

812
Before you type an issue please read about out [release lifecycle](https://docs.vuestorefront.io/guide/basics/release-cycle.html).

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<a href="https://github.com/DivanteLtd/vue-storefront"><img src="https://img.shields.io/badge/stable%20branch-master-blue.svg" alt="Branch stable"></a>
99
<a href="https://github.com/DivanteLtd/vue-storefront/tree/develop"><img src="https://img.shields.io/badge/dev%20branch-develop-blue.svg" alt="Branch Develop"></a>
1010
<a href="https://slack.vuestorefront.io">![Branch Develop](https://img.shields.io/badge/community%20chat-slack-FF1493.svg)</a>
11+
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/from-referrer/)
1112

1213
Vue Storefront is a standalone PWA storefront for your eCommerce, possible to connect with any eCommerce backend (eg. Magento, <a href="https://github.com/DivanteLtd/coreshop-vsbridge">Pimcore/CoreShop</a>, [BigCommerce](https://github.com/DivanteLtd/bigcommerce2vuestorefront), Prestashop or Shopware) through the API.
1314

config/default.json

Lines changed: 108 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@
6868
"config": {}
6969
}
7070
},
71+
"initialResources": [
72+
{
73+
"filters": ["vsf-newsletter-modal", "vsf-languages-modal", "vsf-layout-empty", "vsf-layout-minimal", "vsf-order-confirmation", "vsf-search-panel"],
74+
"type": "script",
75+
"onload": true,
76+
"rel": "prefetch"
77+
},
78+
{
79+
"filters": ["vsf-category", "vsf-home", "vsf-not-found", "vsf-error", "vsf-product", "vsf-cms", "vsf-checkout", "vsf-compare", "vsf-my-account", "vsf-static", "vsf-reset-password"],
80+
"type": "script",
81+
"onload": true,
82+
"rel": "prefetch"
83+
}
84+
],
7185
"staticPages": {
7286
"updateOnRequest": true,
7387
"destPath": "static"
@@ -91,7 +105,8 @@
91105
"port": 8080
92106
},
93107
"api": {
94-
"url": "http://localhost:8080"
108+
"url": "http://localhost:8080",
109+
"saveBandwidthOverCache": true
95110
},
96111
"elasticsearch": {
97112
"httpAuth": "",
@@ -284,12 +299,14 @@
284299
"is_comparable",
285300
"options",
286301
"tier_prices"
287-
]
302+
],
303+
"loadByAttributeMetadata": false
288304
},
289305
"productList": {
290306
"sort": "updated_at:desc",
291307
"includeFields": [
292308
"activity",
309+
"configurable_children.attributes",
293310
"configurable_children.id",
294311
"configurable_children.final_price",
295312
"configurable_children.color",
@@ -328,18 +345,37 @@
328345
"*small_image"
329346
],
330347
"excludeFields": [
348+
"attribute_set_id",
331349
"configurable_options",
332350
"description",
333351
"sgn",
334352
"*.sgn",
335353
"msrp_display_actual_price_type",
336354
"*.msrp_display_actual_price_type",
337-
"required_options"
355+
"required_options",
356+
"media_gallery",
357+
"stock.use_config_min_qty",
358+
"stock.use_config_notify_stock_qty",
359+
"stock.stock_id",
360+
"stock.use_config_backorders",
361+
"stock.use_config_enable_qty_inc",
362+
"stock.enable_qty_increments",
363+
"stock.use_config_manage_stock",
364+
"stock.use_config_min_sale_qty",
365+
"stock.notify_stock_qty",
366+
"stock.use_config_max_sale_qty",
367+
"stock.use_config_max_sale_qty",
368+
"stock.qty_increments",
369+
"stock.stock_status_changed_auto",
370+
"stock.show_default_notification_message",
371+
"stock.use_config_qty_increments",
372+
"stock.is_decimal_divided"
338373
]
339374
},
340375
"productListWithChildren": {
341376
"includeFields": [
342377
"activity",
378+
"configurable_children.attributes",
343379
"configurable_children.image",
344380
"configurable_children.sku",
345381
"configurable_children.price",
@@ -380,12 +416,30 @@
380416
"url_key"
381417
],
382418
"excludeFields": [
419+
"attribute_set_id",
383420
"description",
384421
"sgn",
385422
"*.sgn",
386423
"msrp_display_actual_price_type",
387424
"*.msrp_display_actual_price_type",
388-
"required_options"
425+
"required_options",
426+
"media_gallery",
427+
"stock.use_config_min_qty",
428+
"stock.use_config_notify_stock_qty",
429+
"stock.stock_id",
430+
"stock.use_config_backorders",
431+
"stock.use_config_enable_qty_inc",
432+
"stock.enable_qty_increments",
433+
"stock.use_config_manage_stock",
434+
"stock.use_config_min_sale_qty",
435+
"stock.notify_stock_qty",
436+
"stock.use_config_max_sale_qty",
437+
"stock.use_config_max_sale_qty",
438+
"stock.qty_increments",
439+
"stock.stock_status_changed_auto",
440+
"stock.show_default_notification_message",
441+
"stock.use_config_qty_increments",
442+
"stock.is_decimal_divided"
389443
]
390444
},
391445
"review": {
@@ -519,6 +573,34 @@
519573
"disablePersistentAttributesCache": false
520574
},
521575
"products": {
576+
"fieldsToCompact": {
577+
"minimal_price": "mp",
578+
"has_options": "ho",
579+
"url_key": "u",
580+
"status": "s",
581+
"required_options": "ro",
582+
"name": "nm",
583+
"tax_class_id": "tci",
584+
"description": "desc",
585+
"minimal_regular_price": "mrp",
586+
"final_price": "fp",
587+
"price": "p",
588+
"special_price": "sp",
589+
"original_final_price": "ofp",
590+
"original_price": "op",
591+
"original_special_price": "osp",
592+
"final_price_incl_tax": "fpit",
593+
"original_price_incl_tax": "opit",
594+
"price_incl_tax": "pit",
595+
"special_price_incl_tax": "spit",
596+
"final_price_tax": "fpt",
597+
"price_tax": "pt",
598+
"special_price_tax": "spt",
599+
"original_price_tax": "opt",
600+
"image": "i",
601+
"small_image": "si",
602+
"thumbnail": "t"
603+
},
522604
"disablePersistentProductsCache": true,
523605
"useMagentoUrlKeys": true,
524606
"setFirstVarianAsDefaultInURL": false,
@@ -529,6 +611,7 @@
529611
"listOutOfStockProducts": true,
530612
"preventConfigurableChildrenDirectAccess": true,
531613
"alwaysSyncPlatformPricesOver": false,
614+
"alwaysSyncPricesClientSide": false,
532615
"clearPricesBeforePlatformSync": false,
533616
"waitForPlatformSync": false,
534617
"setupVariantByAttributeCode": true,
@@ -625,9 +708,11 @@
625708
},
626709
"users": {
627710
"autoRefreshTokens": true,
711+
"loginAfterCreatePassword": true,
628712
"endpoint": "/api/user",
629713
"history_endpoint": "/api/user/order-history?token={{token}}&pageSize={{pageSize}}&currentPage={{currentPage}}",
630714
"resetPassword_endpoint": "/api/user/reset-password",
715+
"createPassword_endpoint": "http://localhost:8080/api/user/create-password",
631716
"changePassword_endpoint": "/api/user/change-password?token={{token}}",
632717
"login_endpoint": "/api/user/login",
633718
"create_endpoint": "/api/user/create",
@@ -688,6 +773,9 @@
688773
"defaultLocale": "en-US",
689774
"currencyCode": "USD",
690775
"currencySign": "$",
776+
"currencyDecimal": "",
777+
"currencyGroup": "",
778+
"fractionDigits": 2,
691779
"priceFormat": "{sign}{amount}",
692780
"dateFormat": "HH:mm D/M/YYYY",
693781
"fullCountryName": "United States",
@@ -756,8 +844,8 @@
756844
"newProducts": {
757845
"filter": [
758846
{
759-
"key": "category.name",
760-
"value": { "eq": "Tees" }
847+
"key": "new",
848+
"value": { "eq": 1 }
761849
}
762850
]
763851
},
@@ -769,5 +857,19 @@
769857
}
770858
]
771859
}
860+
},
861+
"urlModule": {
862+
"enableMapFallbackUrl": false,
863+
"endpoint": "/api/url",
864+
"map_endpoint": "/api/url/map"
865+
},
866+
"fastly": {
867+
"enabled":false
868+
},
869+
"nginx": {
870+
"enabled":false
871+
},
872+
"varnish": {
873+
"enabled":false
772874
}
773875
}

core/app.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ import { enabledModules } from './modules-entry'
2525
import globalConfig from 'config'
2626
import { injectReferences } from '@vue-storefront/core/lib/modules'
2727
import { coreHooksExecutors } from '@vue-storefront/core/hooks'
28-
import { registerClientModules } from 'src/modules/client';
28+
import { registerClientModules } from 'src/modules/client'
2929
import initialStateFactory from '@vue-storefront/core/helpers/initialStateFactory'
30-
import { createRouter, createRouterProxy } from '@vue-storefront/core/helpers/router';
30+
import { createRouter, createRouterProxy } from '@vue-storefront/core/helpers/router'
31+
import { checkForIntlPolyfill } from '@vue-storefront/i18n/intl'
3132

3233
const stateFactory = initialStateFactory(store.state)
3334

@@ -49,7 +50,12 @@ const createApp = async (ssrContext, config, storeCode = null): Promise<{app: Vu
4950
store.state.__DEMO_MODE__ = (config.demomode === true)
5051
if (ssrContext) {
5152
// @deprecated - we shouldn't share server context between requests
52-
Vue.prototype.$ssrRequestContext = { output: { cacheTags: ssrContext.output.cacheTags } }
53+
Vue.prototype.$ssrRequestContext = {
54+
output: {
55+
cacheTags: ssrContext.output.cacheTags
56+
},
57+
userAgent: ssrContext.server.request.headers['user-agent']
58+
}
5359

5460
Vue.prototype.$cacheTags = ssrContext.output.cacheTags
5561
}
@@ -101,6 +107,8 @@ const createApp = async (ssrContext, config, storeCode = null): Promise<{app: Vu
101107
registerModules(enabledModules, appContext)
102108
registerTheme(globalConfig.theme, app, routerProxy, store, globalConfig, ssrContext)
103109

110+
await checkForIntlPolyfill(storeView)
111+
104112
coreHooksExecutors.afterAppInit()
105113
// @deprecated from 2.0
106114
EventBus.$emit('application-after-init', app)

0 commit comments

Comments
 (0)