Skip to content

Commit

Permalink
chore: release 1.0.0-rc.8 (#1063)
Browse files Browse the repository at this point in the history
* chore(M2-261): refactor getters from composables to theme (#730)

* fix(homepage): fixed new products carousel ssr rendering issues (#736)

* fix(composables): revert getters (#739)

- copy getters back to the legacy composables for a backward compatibility package and mark all as deprecated

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* chore: update @vue-storefront packages to 2.5.6 (#740)

* refactor(theme): copy composable helpers to theme (#734)

* refactor(theme): move composable helpers to theme

* refactor(theme): remove type dependency on monorepo api

* refactor(theme): remove getVueContext

* feat(api-client): improve performance of node HTTP calls (#737)

* refactor(composable): refactor useReview (#729)

* refactor(composable): refactor useReview

squash this

* refactor(theme): change to new refactored usereview composable

* refactor(composable): deprecate useReview factory aswell

* refactor(theme): move commands into separate files and change naming convention

* refactor(theme): add spaces for readability

* refactor(theme): add typings for commands

* refactor(theme): fix useReview imports

* fix(theme): fix TypeScript errors after adding context.d.ts $magento types

* refactor(theme): adjust to lack of state refs in composable

* refactor(composable): remove unused params

also use local types, not magento-api ones

* refactor(composables): add composable command types

* refactor(composable): refactor useBilling (#744)

* refactor(composables): refactor usePaymentProvider (#745)

* refactor: refactored useAddresses (#743)

* refactor(composables): refactor useMakeOrder composable
- move composable to the Theme package
- mark composable as deprecated

* refactor(theme): refactored useUpsellProducts composable (#738)

* refactor(theme): refactored useUpsellProducts composable, fixed product page ssr issues

* refactor: cr fixes for upsell products

* Update packages/theme/composables/useUpsellProducts/index.ts

Co-authored-by: Bartosz Herba <[email protected]>

* Update packages/theme/composables/useUpsellProducts/index.ts

Co-authored-by: Bartosz Herba <[email protected]>

* Update packages/theme/composables/useUpsellProducts/useUpsellProducts.d.ts

Co-authored-by: Bartosz Herba <[email protected]>

* refactor: refactored useUrlResolver (#747)

* refactor(theme): refactored HeaderLogo component to use the new useConfig composable (#750)

* refactor: refactored useUserOrder composable (#748)

* refactor(theme): refactored SearchBar component to use new composables (#749)

* refactor(composable): refactor useUserShipping (#751)

- move useUserShipping to the theme
- mark useUserShipping in composable package as deprecated

* refactor(theme): disable @vue-storefront/core $vsf context plugin (#741)

see https://github.com/vuestorefront/vue-storefront/pull/6641/
the abillity to do this is new in @vue-storefront/[email protected]
(version bump made earlier today)

suqsh this

feat(theme): maybe remove later add semi-debuggable server-side source-maps

checkpoint: homepage loads after using own context

refactor(theme): checkpoint 2 - shim $vsf

add sharedContextMap

refactor(theme): move context shim to module because of loading precedence

stop using useVSFContext

copy integrationPlugin from core to theme

$magento -> $vsf.magento (in components for now)

refactor(theme): use theme getters over composable ones

refactor(theme): convert code comments to task

see https://vsf.atlassian.net/browse/M2-328

* chore: add concurrency control to GitHub actions (#754)

* refactor: refactores types and composables to new ones from theme (#752)

* refactor(composables): refactor useUserBilling (#756)

- mark useUserBilling as deprecated in composables package
- rework checkout to use useUserAddress theme composable instead

* chore: auto-assign team members to pull requests

* refactor: refactored useCOuntrySearch composable (#757)

* refactor(theme): @vue-storefront types dependency refactoring (#758)

- remove types dependency on package @vue-storefront/magento-api

* fix(checkout): fix issue with blocked payment method step (#764)

- selecting billing address will now unlock move to next step action

* refactor: move magento nuxt integration plugin to theme (#755)

* refactor(composable): add missing depercated annotations (#767)

* chore: remove @vue-storefront/magento dependency from theme

* fix(notification): remove notification cookie once the message is displayed (#775)

* fix(myaccount): fix error handling for customer data and email update action (#777)

* refactor: removed links from order's product (#778)

* chore: fix pre-commit hook warning for {.vue}

fixes M2-322

it's a .lintstagedrc warning - the {} is usually used to match many
extensions in regex, while we just use a single term - ".vue"

after this commit the warning is gone

* fix: fixed adding/removing address funcionality (#776)

* refactor(theme): update Storefront-UI to 0.13.0 (#781)

* build: disabled nuxt modern mode (#762)

* chore: add more GitHub environments for more detailed Jira deployments (#771)

Partially addresses M2-341

chore: use reusable workflow in deployment .yml file

fix interpolation spacing

remove commented out previous pipeline

don't use startsWith where not necessary

add target_urls

the enterprise env is unused for a business purpose for now so I'm using it as testing grounds

can't have secrets for types

both secrets and inputs are on the same level

revert to using secrets

add secrets keyword

remove debug branch references

* fix: remove prepare-commit-msg hook

before this commit running git commit ran commitizen instead of showing
the traditional git commit message prompt

doing that was too much of an intrusion into the workflow so we've
decided to keep cz, but make it optional to use instead of required

* fix(theme): remove placeholder for a sorting mechanism in the category navbar (#782)

- because we have default sorting value, additional placeholder is not required

* fix(theme): billing address is cleared while returning to billing step on checkout (#783)

- add billing address persistence by loading once the step is mounted
- add selection of default address if none is selected

* refactor(theme): refactored bundle and grouped products (#784)

* chore: hide yarn-specific output in precommit hook (#788)

lint-staged output is still shown, just hide the "yarn run v1.2.2" etc.

* chore: run eslint only 1 time instead of 3 times (#787)

M2-345

* refactor: disabled sfui core plugin (#785)

* chore: lint-staged should be run only once (#789)

M2-323

https://github.com/okonet/lint-staged/tree/d327873b1c0b6fbdeb6fd276e523043d51d6de37#how-to-use-lint-staged-in-a-multi-package-monorepo

* fix: M2-298. fixed broken my account pages, removed onSSR hooks (#790)

* refactor: replace @vue-storefront/core logger plugin

M2-294

refactor(logger): add new rewritten logger

refactor(logger): remove console.log

move logger from plugins to helpers

refactor(logger): replace core Logger imports with our own

change path from plugins to helpers

* chore: remove context shim (#791)

M2-328
this was necessary when we still had the @vue-storefront/core
composables in packages/theme

disabling the @vue-storefront/core context plugin was not possible
without the shim from this commit

since we've already migrated all composables this is ok to remove

* refactor: remove dependencies on @vue-storefront/core types

M2-299

* fix: add missing magentoConfig property

* fix: setCurrency can take customQuery

* refactor: refactored i18n plugins (#794)

* M2-295. Refactored i18n plugins

* M2-300. Removed @vue-storefront/core dependency

* fix: M2-222. fixed my account issues (#795)

* fix: fixed my account buttons (#799)

* ci: add commit sha as redis prefix

before this commit you always needed to curl /invalidate-cache after PR
manually

after this commit this will hopefully be done by default

M2-342

* fix(category): move products loading to onMount hook to avoid caching prices (#793)

* refactor(prices): make prices non cachable
- add usePrice composable in catalog module
- rework category page to load prices onMounted lifecycle to avoid caching

* refactor(home): make new product carousel non cachable
- load products data onMounted to avoid price caching

* fix(theme): mobile store banner
- replace SfButton with SfLink so we can have images inside elements without breaking hydration

* refactor(theme): change the way related and upsell products are loaded
- upsell/related products on the PDP will be now loaded onMounted hook

M2-306

* refactor: unify cookie retrieval (#797)

* refactor: refactor cookie API

M2-331

reduce code duplication

refactor: remove unneeded type assertion

refactor: refactor cookies to use the new cookie API

refactor: checkpoint

refactor: i18n plugin

refactor: improve typings LocaleObject[] | string[] unions

refactor: i18n plugin

refactor: refactor middleware to typescript

update cookies aswell

refactor: don't return void

refactor: use storefront ui colors for UiNotification

refactor: more cookie refactors

refactor: refactor i18n plugin

refactor: fix unit tests post-refactor

* refactor: add remove method

add optional opts

* refactor: add proper typing for nuxtplugin + integration

* refactor: add remove method to state

* refactor: use new remove methods where applicable

* refactor: re-add getters and simplify i18n ternary

* ci!: simplify env config (#813)

* ci: simplify env config

BREAKING: rename certain env vars
MAGENTO_GRAPHQL -> MAGENTO_GRAPHQL_URL
REDIS__* (HOST etc.) -> REDIS_*
MAGENTO_EXTERNAL_CHECKOUT -> MAGENTO_EXTERNAL_CHECKOUT_ENABLED
_ENABLED env vars will only enable things if you set their value to
"true" (MY_ENV_VAR=true)

remove convict and related format package because convict cannot be used
in a browser - BREAKING: use .env in packages/theme instead of packages/theme/config/[env].json

remove dotenv because nuxt already uses dotenv under the hood

stop using GitHub repository secrets that are not actually secrets

refactor: remove convict and dotenv

dotenv is already used by nuxt under the hood

remove leftover config import

add sentry_dsn to dockerfile args

* ci!: add VSF_ prefix to environment variables

add VSF_ prefix where omitted

* chore: add PWA icon

removes the warning when running yarn dev:theme

* chore: fix staging .yml crashing precommit hook

there's no point in having 3 .lintstagedrc files that all do the same thing

this commit also fixes the issue where comitting ANY file that is not in
packages/**/* would crash the precommit hook and abort git commit

this was happening (Configuration not found error) because there was no .lintstagedrc
file in the repo root, so `npx lint-staged` did not know what to do

* docs: M2-371.  generate composables doc from jsdoc comments (#800)

* fix: fix useContent jsdoc examples (#820)

* fix: vsf has no redis on localhost

* ci: invalidate cache after 1 day

with key prefixes, this is so that redis does not contain thousands of
super old keys for old deployments forever

M2-342

* fix(checkout): accept one-digit house numbers (#824)

M2-332

* chore: fix some "yarn install" peer dependency warnings (#818)

* chore: add graphql peer dependency

restore newer graphql version

* chore: add vue as hard dependency

this gives us direct control over the vue version rather than relying on
whatever a subdependency installs

* chore: fix eslint-config-typescript not in internal eslint pkg

* chore: fix @nuxt/typescript-build conflict between 'latest' & '2.1.0'

* refactor(filter): rework filters (#815)

- move category filters to the separate component
- add filters renderers and filter config resolver
- move configuration from middleware to catalog module
- partially add UT, add todo for missing tests

* refactor: refactored useCategory for better dx experience (#829)

* refactor: refactored useCategory for better dx experience

* Update packages/theme/composables/useCategory/index.ts

Co-authored-by: Artur Tagisow <[email protected]>

* refactor. refactored useCategory errors object to use load instead of search

Co-authored-by: Artur Tagisow <[email protected]>

* feat(catalog): breadcrumbs (#819)

* feat(catalog): breadcrumbs

feat(catalog): breadcrumbs

refactor: make CategoryTree use common logic

refactor: add props to breadcrumbs

refactor: destructure ancestors

refactor: fix isCategoryTreeLoaded conditions

refactor: move breadcrumbs outside categories

refactor: use app.localePath instead of cookies

chore: comments

refactor: destructure context for app

* fix: store cookie not set during first page load

This was tested after clearing all the cookies in the browser

* docs: add JSDoc comments to useAddress composable, its types and the related API methods (#821)

* chore: change useAddress to a function declaration

* feat: add useAddress jsdocs

* docs: add jsdoc comments to useAddress

* docs: add JSDoc comments to customer address API methods

* docs: add JSDoc comments to the interfaces used by useAddresses

* fix: rollback a miss replace

* fix: fix useAddress methods' examples

* docs: fix list formatting in useAddresses

* docs: list useAddresses and the related API methods in documentation

* docs: explain in useAddresses were the addresses can be used

* docs: remove list of places that use useAddresses

* docs: break line between section directive and content

* docs: document useCategory composable, its types and related API methods using TSDocs (#828)

* chore: transform categoryList API method into function declaration

* docs: add TSDocs to categoryList API method and its GraphQL Query

* chore: standardize useCategory and its types

* docs: add TSDocs to useCategory and its types

* docs: change how types are exported to fix TSDoc links

* fix: fix categoryList item in the API Methods menu in the docs

* fix: use Category type instead of any in useCategory

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* docs: update Environments document (#832)

* refactor(filters): add information about selected filters in filters sidebar (#830)

* refactor(filter): rework filters
- move category filters to the separate component
- add filters renderers and filter config resolver
- move configuration from middleware to catalog module
- partially add UT, add todo for missing tests

* refactor(filters): add selected filters component

M2-406

* refactor: update category page after merge develop

* refactor: on filters/sorting/pagination change only products will be reloaded

* docs: update Supported features document (#833)

* fix: image provider options (#838)

- fix env typo

* feat!: make `error`, `loading`, and `result` properties readonly on `useCategorySearch` composable (#848)

* feat!: rename UseCategorySearch type to UseCategorySearchInterface

* chore: transform categorySearch to function declaration

* docs: add docs for categorySearch API method

* chore: convert useCategorySearch to function declaration

* feat: export useCategorySeach types and improve its definitions

* docs: add docs for useCategorySearch composable

* feat!: make error, loading and result readonly in useCategorySearch

* docs: improve useCategorySearch description

* feat!: rename the errors interface of useCategory  to UseCategorySearchErrors

* feat: export useCategorySearch types

* refactor: removed size guide (#840)

* fix: fixed review submittion on PDP (#841)

* fix: fixed useCategorySearch issues (#849)

* refactor: move graphql client to context (#839)

* refactor: remove cookie instead of empty set

test: fix tests

* refactor: move graphqlclient from useApi to context

M2-354

this is so you can query graphql endpoints in plugins

refactor: useApi to use client from context

refactor: move dynamic headers to client instance

I don't want to keep the append the headers in useApi because if someone
wants to pull the graphql clients from the context - e.g. when
requesting something in a plugin - they'll have to reimplement the
cookie logic again

this commit is a checkpoint commit - the '' fallback in graphqlClient
isn't ideal because the header shouldn't be appended to the request if
it's empty. Getters are limited int this way. I'll try something with Proxy

refactor: proxy workaround for dynamic headers

refactor: use proxies as workaround for dynamic headers

refactor: add template types to useApi

refactor: remove references to customApolloHttpLinkOptions

fix: fix spread

refactor: code review changes

* feat!: define a type for billingDetails and make refs readonly in the useBilling composable (#844)

* chore: transform useBilling to a function declaration

* feat: add types and interfaces for useBilling

* docs: add TSDoc comments to useBilling and its types

* feat!: make useBilling error and loading refs readonly

* feat!: define an interface for billingDetails in useBilling save method

* docs: remove the "remarks" section in useBilling

* docs: list useBilling in docs' composables menu

* docs: remove placement in loading ref

* docs: fix useBilling load params arg that shouldn't be require

* feat: add more support for cloudinary images (#850)

- add nuxt-img support on cart and product page
- fix images proportions in all places where nuxt-img is used

* fix: tags resolving on pdp

* feat!: make `loading` and `error` properties readonly in the `useUserOrder` composable (#845)

* feat!: make `loading` and `error` properties readonly in the `useUserOrder` composable

* docs: add JSDoc to the `customerOrders` API handler

* chore: pinia `this.` shouldn't be `any`

M2-496

https://github.com/vuejs/pinia/issues/981

fix: ts errors because of now enabled noImplicitAny: true

* chore: display types for pinia's nuxt context plugin

M2-496

`this.$nuxt` is only valid when using tsserver (TypeSCript language
server), but not with Volar.

Volar is for Vue 3 by default while for Vue 2 some extra config is
needed, so that's probably why

* refactor: pull out api client from pinia's nuxt context

M2-496

* feat!: make `loading` and `error` properties readonly in the `useCart` composable (#827)

* refactor: change useCart declaration from const to function

* refactor: addConfigurableProductstoCart docs and function notation

- add JSDoc
- refactor to use function instead of arrow function

* refactor: addConfigurableProducts to cart JSDoc and function notation

- add JSDoc
- refactor from arrow function to function notation

* refactor: addProductsToCart JSDoc and function notation

- add JSDoc comments
- refactor from arrow function to function notation

* refactor: addVirtualProductsToCart JSDoc and function notation

- add JSDoc comments
- refactor from arrow function to function notation

* refactor: applyCouponToCart JSDoc and notation

- add JSDoc comment
- refactor from arrow function to function notation

* refactor: cart JSDoc and notation

- add JSDoc comment
- refactor from arrow function to function notation

* refactor: customerCart JSDoc and notation

- add JSDoc comment
- refactor from arrow function to function notation

* refactor: removeCouponFromCart JSDoc and notation

- add JSDoc comment
- refactor from arrow function to function notation

* refactor: removeItemFromCart JSDoc and notation

- add JSDoc comment
- refactor from arrow function to function notation

* refactor: updateCartItems JSDoc and notation

- add JSDoc comment
- refactor from arrow function to function notatio

* feat: add link to useCart documentation

* docs: add documentation for useCart composable

* docs: add documentation for UseCartInterface#load

* docs: add documentation for useCart interfaces

* feat!: make UseCartErrors properties nullable

BREAKING CHANGE: all properties of the UseCartErrors interface are
converted to a union with null. The new type is `Error | null` for all
properties

* docs: add UseCartInterface's loadTotalQty JSDoc

* docs: add UseCartInterface's addItem JSDoc

* docs: simplify `useCart` JSDoc

* refactor: cleanup useCart types and JSDoc

* docs: simplify `useCart` composable docs

* docs: update useCart JSDoc

* refactor: replace imports with `import type`

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* docs: add API methods to sidebar

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* chore: removed cache-control settings from product and category page (#836)

* feat!: make `loading` and `error` properties readonly in the `useWishlist` composable (#843)

* feat!: make `loading` property readonly in the `useConfig` composable (#846)

* refactor!: rename UseConfig to UseConfigInterface

* refactor: make UseConfigInterface a typescript interface

* feat!: make loading `useConfig#loading` readonly

* docs: add useConfig composable JSDoc

* docs: add storeConfig API JSDoc

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat!: make `error` and `loading` properties readonly on `useCountrySearch` composable (#847)

* feat: create `UseCountrySearchInterface`

* feat!: readonly properties on useCountrySearch

BREAKING CHANGE: `loading` and `error` properties from the
`UseCountrySearchInterface` are now readonly

* docs: add `useCountrySearch` JSDoc

* docs: add country and countries API JSDoc

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat!: make `loading` and `error` readonly in useExternalCheckout composable (#856)

* docs: add useExternalCheckout JSDoc

* feat!: make `loading` and `error` readonly

BREAKING CHANGE: useExternalCheckout `loading` and `error` properties
are now readonly

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* refactor: refactored useCurrency `load` and `change` methods (#857)

* refactor: removed unnecessary loading changes from useCurrency.change method

* refactor: updated useCurrency.load method to use correct customQuery params

* Update packages/theme/composables/useCurrency/index.ts

Co-authored-by: Vitor L Cavalcanti <[email protected]>

* Update packages/theme/composables/useCurrency/index.ts

Co-authored-by: Vitor L Cavalcanti <[email protected]>

Co-authored-by: Vitor L Cavalcanti <[email protected]>

* feat!: make `useForgotPassword` properties readonly (#860)

* docs: add JSDoc to API client's `resetPassword`

* docs: add JSDoc to `requestPasswordResetEmail`

* docs: add `useForgotPassword` JSDoc

* feat!: make `useForgotPassword` properties readonly

BREAKING CHANGE: `error`, `loading` and `result` properties are now
readonly on the `UseForgotPasswordInterface` type returned by
`useForgotPassword`

* refactor: remove category getters call from app header (#853)

* refactor: remove category getters call from app header
M2-415

* refactor: remove category getters call from app header
- apply suggestions from code review

Co-authored-by: Artur Tagisow <[email protected]>

Co-authored-by: Artur Tagisow <[email protected]>

* feat!: make `error` and `loading` properties readonly on `useCurrency` composable  (#864)

* chore: convert useCurrency to function declaration

* feat!: rename UseCurrency interface to UseCurrencyInterface

* feat: define types for useCurrency methods' params

* feat: named export useCurrency and its types

* docs: add docs for useCurrency composable

* docs: add docs for currency API Method

* chore: convert currency API method to function declaration

* chore: rollback a type change in load method's params

* feat!: make error and loading readonly in useCurrency

* fix: remove unused cacheControl in category and product pages

* docs: improve TSDocs descriptions for useCurrency types' properties

* refactor: search results (#867)

- remove category results from search results

M2-418

* chore: include e2e tsconfig for ts-eslint (#869)

M2-237

* refactor: store config query (#862)

* refactor: store config query
- move loading of the store config to the plugin
- docs: add store config usage docs
- remove usage of storeGetters and storeConfigGetters

M2-414

* Apply suggestions from code review

Co-authored-by: Artur Tagisow <[email protected]>

Co-authored-by: Artur Tagisow <[email protected]>

* perf!: load whole user object only when necessary (#859)

* perf!: load full user data only when necessary

login no longer loads the customer store
register no longer loads the customer store

* fix: myaccount crash when wishlist empty

* perf: run speedcurve tests after deployment

* fix: fix wrong ref path and use speedcurve action 1.2.2

* ci: github tokens don't launch deployment_status events

I wanted to create a workflow that runs after a deployment is reported
as successful through the chrnorm/deployment-action

But turns out that—if you use the default github.token—workflows can't
trigger other workflows.

The token in the secret is *my* personal access token with *just* the
repo_deployment scope (I don't know if it'll work yet)

See https://github.com/chrnorm/deployment-action/issues/7

* ci: fix speedcurve workflow condition false negative

see https://github.com/vuestorefront/magento2/actions/runs/2188091619 -
this shouldn't happen

i looked through the events sent by github's webhooks and indeed the
path should be deployment, not deployment_status

* ci: fix empty speedcurve note

* feat!: make `error` and `loading` properties readonly on `useUserAddress` composable (M2-401) (#885)

* feat!: make `error` and `loading` properties readonly in the `useGetShippingMethods` composable (#874)

* docs: add getAvailableCustomerShippingMethods docs

* docs: add `useGetShippingMethods` composable JSDoc

* feat!: make `useGetShippingMethods` properties readonly

BREAKING CHANGE: `error` and `loading` properties from
`useGetShippingMethods` composable are made readonly

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat!: make `error` and `loading` properties readonly in `useGuestUser` composable (#875)

* docs: add `setGuestEmailOnCart` JSDoc

* docs: add JSDoc to `useGuestUser` composable

* feat!: make properties readonly on `useGuestUser`

BREAKING CHANGE: make `error` and `loading` properties of `useGuestUser`
composable readonly

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* refactor: remove category getters (#886)

M2-445

* docs: add `useImage` composable JSDoc (#876)

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat!: make `error` and `loading` properties readonly on `useFacet` composable (#877)

* chore: rename FacetSearchResult generic type param

* feat!: rename UseFacet interface to UseFacetInterface

* feat!: make error, result and loading properties readonly on useFacet

* feat: use type inference and remove unused object on useFacet

* feat!: make result mutable again on useFacet

* feat!: rename FacetSearchResult to UseFacetSearchResult

* feat: export useFacet types and SearchData

* chore: fix formatting issues on useFacet

* docs: add TSDocs for useFacet and its types

* docs: add docs to products API method

* chore: convert useFacet and its module functions to function declarations

* docs: list useFacet and products API method in docs menu

* docs: fix copypaste in useFacet description

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* ci: improve speedcurve note readability

if you go to
https://app.speedcurve.com/vsf/favorite/?cs=md&d=31&db=856943&dc=2&de=1&df=%7B%7D&ds=1
you'll see that the notes for each data point on the graph are very long
and obscure the actual graphs

this commit was made to resolve that readability problem
I removed the gh actions link (links in speedcurve notes aren't clickable)
and shortened the github sha, as the default one is way too long

* feat!: make `error` and `loading` properties readonly on `useUser` composable (#887)

* feat!: make `error` and `loading` properties readonly on `useUser` composable (M2-400)

* chore: fix build

* feat!: make `error` and `loading` properties readonly on `useUpsellProducts` composable (#894)

* refactor: make everything in catalog module use TypeScript (#872)

* chore: force lang="ts" in vue script blocks

* refactor: add lang="ts" to leftover catalog components

* chore: eslint errors

chore: fix eslint error

chore: eslint; don't destructure props (reactivity loss)

* chore: move spec file to .ts

also some eslint

chore: move spec file to .ts

chore: move .spec file to ts

chore: move spec file to js + eslint

* chore: move catalog index file to .ts

chore: type catalog module root

* refactor: remove any from buildCategoryTree

refactor: improve category store typing

* refactor: add prop types to CategoryNavbar.vue

* chore: remove unnecessary component names

* refactor: typedef any params

* refactor: move desktop category filters from SfSidebar to the main layout column (#884)

refactor: change removable filters behavior
- removable filters will be now updated only on the explict filter selection action
- actions are now sticky so it will be easier to apply filters

refactor: fix CR issues

M2-425

* feat!: make `error` and `loading` properties readonly on `useMakeOrder` composable  (#878)

* fix: add context type to placeOrderCommand and fix it

* chore: convert useMakeOrder to function declaration

* chore: remove unused gql import in placeOrder API method

* chore: convert placeOrder to function declaration

* docs: write docs for placeOrder API method

* feat: add UseMakeOrderInterface and export it with the composable

* feat!: make error and loading properties readonly on useMakeOrder

* docs: add docs for useMakeOrder and its types

* chore: receive context.app as arg in useMakeOrder command

* fix: rollback useMakeOrder command argument to context

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat: show category title below breadcrumbs (#892)

M2-427

* refactor: helpers in catalog module
- get rid of buildCategoryTree helper and CategoryTreeInterface
- split helpers into meaningfull files
- add UT for all helpers
M2-444

* feat!: make `error` and `loading` properties readonly on `usePaymentProvider` composable (#881)

* feat!: rename SetPaymentMethodOnCartInputs to PaymentMethodParams and simplify it

* chore: move PaymentMethodParams to its own module

* feat: define types for usePaymentProvider composable

* fix: usePaymentProvider commands should use context.app and return an array

* feat!: make error and loading properties readonly on usePaymentProvider

* chore: convert usePaymentProvider to function declaration

* docs: write docs for usePaymentProvider

* docs: write docs for getAvailablePaymentMethods

* chore: convert getAvailablePaymentMethods to function declaration

* docs: write docs for setPaymentMethodOnCart

* chore: convert setPaymentMethodOnCart to function declaration

* docs: fix typo on usePaymentProvider docs

* chore: use 'import type' in getAvailablePaymentMethods

Co-authored-by: Bartosz Herba <[email protected]>

* chore: use 'import type' in setPaymentMethodOnCart

Co-authored-by: Bartosz Herba <[email protected]>

* fix: use context.app instead of context in usePaymentProvider commands

* fix: rollback usePaymentProvider commands arguments to context

Co-authored-by: Bartosz Herba <[email protected]>

* feat!: make `error` and `loading` properties readonly on `useNewsletter` composable (#879)

* feat!: rename UseNewsletter to UseNewsletterInterface

* fix: fix error and loading types in useNewsletter

* feat!: make error and loading properties readonly on useNewsletter

* feat: add UseNewsletterUpdateSubscriptionParams type

* chore: convert useNewsletter to function declaration

* docs: write docs for useNewsletter

* feat: export useNewsletter and its types in ~/composables

* feat: use a real enum in SubscriptionStatusesEnum

* chore: convert subscribeEmailToNewsletter to function declaration

* docs: write docs for subscribeEmailToNewsletter

* feat: remove repeated SubscriptionStatusesEnum

* chore: use 'import type' on subscribeEmailToNewsletter

Co-authored-by: Bartosz Herba <[email protected]>

* feat: define types for updateSubscriptionCommand

* fix: rollback useNewsletter command argument to context

Co-authored-by: Bartosz Herba <[email protected]>
Co-authored-by: Marcin Kwiatkowski <[email protected]>

* docs: `useUpsellProducts` composable (M2-398) (#902)

* docs: `useUiNotification` composable (M2-397) (#904)

* feat!: make `error` and `loading` properties readonly on `useStore` composble (#905)

* feat!: make `error` and `loading` properties readonly on `useStore` composable

* docs: add description to the  api

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* fix: password reset issue (#909)

- update button type to properly trigger form submit action
M2-499

* docs: remove API methods from sidebar (#919)

* feat!: make `error` and `loading` properties readonly on `useReview` composable (M2-392) (#906)

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* fix: wishlist sidebar (#918)

- fix issue with refreshig sidebar wishlist
- fix issue with wishlist sidebar transition
- fix issue with cart sidebar transition
M2-539

* feat!: refactor `useProduct` composable `error` and make its refs readonly (#889)

* feat: define types and use context.app on useProduct commands

* feat: define types for useProduct

* feat!: remove GetProductSearchParams repeated declaration on useProduct

* feat!: make error and loading properties readonly on useProduct

* chore: convert useProduct to function declaration

* docs: write docs for useProduct

* feat!: set useProduct's method names as its error properties

* docs: write docs for productDetail API method

* fix: import GetProductSearchParams from ~/composables/types

* fix: rollback useProduct commands argument to context

* fix: fixed build issues

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat: Home Page - Changed products carousel to products section (#914)

Co-authored-by: Alexander Devitsky <[email protected]>

* build: fixed build errors and warnings (#920)

* feat!: make `error` and `loading` properties readonly on `useRelatedProducts` composable (#916)

* chore: convert useRelatedProducts to function

* feat: create UseRelatedProductsSearchParams type

* feat!: rename RelatedProducts to RelatedProduct for useRelatedProducts

* feat: export useRelatedProducts types in '~/composables'

* docs: write docs for useRelatedProducts

* docs: write docs for relatedProducts

* chore: convert relatedProduct to function declaration

* feat!: make error and loading properties readonly on useRelatedProducts

* feat!: rename UseRelatedProductsError to UseRelatedProductsErrors

* feat!: make `error` and `loading` properties readonly on `useShipping` composable (#921)

* feat!: refactor useShipping types

* feat!: make error and loading properties readonly on useShipping

* docs: write useShipping docs

* docs: write TSDocs for setShippingAddressesOnCart

* docs: fix typo on resetPassword TSDocs

* chore: convert setShippingAddressesOnCart to function declaration

* feat: export useShipping types on ~/composables

* feat!: make `error` and `loading` properties readonly on `useShippingProvider` composable (#922)

* feat!: make error and loading readonly on useShippingProvider

* feat: add UseShippingProviderSaveParams type

* feat!: remove unused types from useShippingProvider

* feat: add UseShippingProviderLoadParams type

* feat: export useShippingProvider types on ~/composables

* feat: define types for useShippingProvider command

* docs: write the docs for useShippingProvider composable

* docs: write docs for setShippingMethodsOnCart

* chore: convert setShippingMethodsOnCart to function declaration

* chore: use 'import type' statements

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* feat: define types and write docs for `useUiHelpers` composable (#923)

* chore: convert top-level arrows to function declarations on useUiHelpers

* feat: define types for reduceFilters

* docs: write docs for useUiHelpers params interfaces and group them

* feat: define UseUiHelpersInterface type and export it

* docs: write the docs for useUiHelpers composable

* feat: export useUiHelpers as named too

* fix: replace broken params type in useUiHelpers

* docs: fix broken reference in changeSearchTerm method

* feat!: standardize `useMagentoConfiguration` composable (#924)

* feat!: move useMagentoConfiguration to its own folder

* feat!: refactor useMagentoConfiguration types

* docs: write docs for useMagentoConfiguration

* chore: convert useMagentoConfiguration to function declaration and format

* feat: export useMagentoConfiguration and its types from ~/composables

* docs: fix copypasted description

* feat!: standardize `useUrlResolver` composable and make its properties readonly (#925)

* feat!: move useUrlResolver to its own folder

* feat: define types for useUrlResolver composable

* feat!: make error and loading properties readonly on useUrlResolver

* chore: convert useUrlResolver to function declaration

* docs: write docs for urlResolver API method

* docs: write the docs for useUrlResolver

* feat: export useUrlResolver and its types from ~/composables

* chore: convert urlResolver to function declaration and format it

* docs: fix order of useUrlResolver in the composables menu

* refactor: components for product list/grid

M2-447

refactor: split product list and grid components

refactor: move common props to composition function

fix: paths

fix: don't show empty when isShowProducts = false

fix: don't set width on skeletons

fix: wishlist icons appearing when not supposed to

fix: can't add to cart in grid view

refactor: squash this

* test: add global vue/nuxt mocks for unit tests

* feat: Homepage - Lazy load offscreen components (#915)

Co-authored-by: Alexander Devitsky <[email protected]>

* fix: make color swatch visible on mobile (#926)

M2-456

* fix: product wrong swipe icon direction (#927)

M2-513

* feat: homepage - changed slider to hero section (#928)

Co-authored-by: Alexander Devitsky <[email protected]>

* feat: Added preconnect link to site head for cloudinary (#929)

Co-authored-by: Alexander Devitsky <[email protected]>

* fix: product tab click should scroll to tab content (#931)

M2-514

before this commit, the behavior would scroll in a way that'd make the
tab's contents be cut off in the middle, rather than shown fully

I suspect this was happening because the process is like this:
1. tabs container has description open (default state)
2. click another tab (eg. "Read reviews" tab)
3. the tab container's DOM size did not update yet, but scrollIntoView({
block: "end" }) is called
4. the tab opens, but the view is scrolled to the end of the OLD size of
the tab block (when reviews was open)

You could probably do some Vue.$nextTick magic here but it's easier to
just scroll to top

* fix: various categoryTree bugs (#932)

* refactor: improve findActiveCategory typedefs

* fix: useTraverseCategory uses wrong findBy property

M2-552

* fix: looking for "gear/bags" shouldn't match "gear"

M2-552

* fix: mobile cat sidebar hide menu items that Magento wants hidden

* feat: header categories (#903)

* feat: header categories
- add multilevel categories navigation
- add unit tests for new components
- upgrade @testing-library/user-event @13.5 -> @14.1.1

M2-424

* refactor: fix CR issues

* fix: prevent content jump when variant is selected on PDP

M2-365

* fix: resolve CR issues

* feat: write docs and export useApi and its type from ~/composables (#930)

* refactor: move products related code to the module spaces

* refactor: customer module (#937)

* refactor: move remaining composables to the category module

M2-555

* refactor: use localeroute instead of string path (#940)

* test: CategoryEmptyResults component (#934)

* refactor: create wishlist module
M2-507

* feat: add skeleton loaders in category navbar

M2-450

* refactor: move checkout related scripts to the module space
- create checkout module
- move composables to the checkout module
- move getters to the checkout module

* docs: update vuepress and fix error during a build (#954)

* fix: add missing error state for coupon code

M2-559

refactored the whole component logic as it was too magical with the watch()

* refactor: category page
- move breadcrumbs logic to the breadcrumbs component
- rework useFacet composable

M2-430

* fix: invalid prices on grouped and configurable product
- fix issue with initial grouped product price resolving
- add configurable product price calculation

M2-361

* feat: replaced images from cdn.shopify by images from cloudinary

* refactor: using sf-image component to render cloudinary images

* docs: update `useAddresses` API reference (M2-553) (#935)

* fix: filter by category issue
- rework category filter resolving to always include root category id
M2-570

* perf: make mobile store banner lazy loaded on PDP
M2-521

* perf: make related and upsell products lazy loaded when visible
M2-517

* perf: make PDP instagram feed section loaded when visible
M2-520

* perf: make read reviews loaded on request
- change loading revies behavior, now will be loaden on explicit action

M2-519

* perf: prevent loading all main images on the mobile PDP gallery

M2-578

* fix: remove unwanted authorization errors in the console
- mute all graphql-authorization errors to avoid unwanted authorization errors in console

M2-542

* refactor: move myaccount to subroutes (#991)

* fix: sfcontentpages style missing on myaccount develop

* test: category-breadcrumbs component

* refactor: category-breadcrumbs test refactoring

* fix: entities on filters are not displayed properly
M2-574

* feat: updated order details totals section styling

* refactor: revert the previous logic for the order number

* fix: fixed errors during wishlist loading

* feat: show configurable option values in order history

M2-510

* feat: more order details in order history single order view

M2-509

* docs: add Asciinema component

* docs: refactor Creating a Store docs

* docs: add more sections to Creating a Store

* docs: update the 'Configuring Magento' and 'Configuring Vue Storefront' documents

* docs: remove unused images

* docs: update code example

* docs: improve landing page

* docs: remove Asciinema recordings

* docs: update installation guide based on PR feedback

* docs: fix typos in installation guides

* docs: update composables docs

* docs: update composable docs

* docs: update composable navigation

* fix: update type of the  property

* Revert "fix: update type of the  property"

This reverts commit 6158da3b7ad3fc11b7615b22ded9284f0619cf49.

* fix: wrong warning announcement on modal window to login
M2-563

* chore: fix ~240 eslint errors/warnings (#1005)

* chore: use order.number instead of deprecated order.order_number (#1000)

* fix: empty wishlist implementation

* refactor: improve typing of vue-outside-click

* refactor: fix eslint errors in cypress entrypoint

* chore: split cypress classes into 4 separate files

* chore: disable eslint rules that don't work well in cypress

* refactor: safely spread nullish coalescing

* chore: fix import order

* refactor: handle nullish coalescing case

* chore: do not use module

* chore: remove useless async

* chore: explicitly add bodyParser dependencies

* refactor: add integration properties types

* chore: remove unused cacheControl.js

* refactor: integrationPlugin types fix

* chore: fix unsafe arguments

* chore: disable prefer-module for pm2

* refactor: add specific type for htmlDecoder

* refactor: improve asyncLocalStorage typing

* fix: coupon code invalid error message
- rework coupon code component to handle GraphQL errors
M2-559

* fix: category page - equal mount of product for a row
M2-585

* chore: fix all remaining eslint errors (#1010)

* test: categorynavbar component

* refactor: move stores to related modules

* feat: add skeleton loaders/loading statue for addressedit and addressesdetails

M2-576
feat: add addressesdetails skeleton loader
feat: add address edit form loading state

The types here aren't very good - see M2-591

add button skeletons

* refactor: remove useless order getters (#1016)

* refactor: remove useless order getters

refactor: remove getItems aswell

* chore: set getPagination type

* refactor: pr fixes

* chore: implement overlooked additional tasks (#1023)

* chore: remove returns tab from order history

* chore: remove list view from my wishlist view

M2-549

chore: remove unused uiState

* chore: remove product counts from my wishlist

M2-549

This looks funny without the grid/list buttons

* fix: prevent SfSidebar disableBodyScroll triggering on desktop

M2-571

See https://github.com/vuestorefront/storefront-ui/pull/619

* refactor: create renderers for each product type
- split root product page into a separate components
- move styles to shared file
- reduce the amount of unused code in different component types
- add useGallery composable
- add useProductTabs composable
- add canAddToCart method on useCart composable

* fix: useProductGallery reactivity

* refactor: improve TopBar typing

* perf: remove top bar layout shift

M2-611

* fix: add html content purify for the selected filters
M2-574

* chore: fix .vue eslint errors

M2-327

* refactor: remove eslint errors from ResetPassword.vue

* refactor: fix eslint errors in Page.vue

* fix: detect "this." types in vue-meta head()

See https://github.com/nuxt/typescript/issues/426

* chore: fix all remaining .vue lang="ts" errors (#1043)

* fix: fetch new orders on each orders history visit

M2-600

* fix: move order information from table to a separate section

* test: added tests for cmscontent component

* fix: fixed order summary styles

* chore: updated graphql-request (#1058)

* fix: issue with displaying product price od PDP and PLP
M2-573

* fix: issue with displaying product price od PDP and PLP
- CR issue resolve

* chore: align develop branch with the main branch after rc.7 release (#1054)

* Fix useFacet(...) customQuery implemention (#413)

* chore: release 1.0.0-rc.5.3 (#437)

* chore: add gitflow actions (#379)

* chore: added base gitflow actions

* chore: added base gitflow actions

* chore: fixed versioning process

* docs: added roadmap to the docs (#380)

closes #323

* fix(theme): refactor and fix store switcher (#383)

- update nuxt.config.js to handle de translation
- fix issue with flag icon #362
- refactor store switcher component
- add store name next to the language icon flag
- add translation info in docs

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): fix preselection sort order when query param is available (#385)

Co-authored-by: Bartosz Herba <[email protected]>

* fix: broken cart after placing order as guest (#386)

* fix(theme): passing the email instead of the user-object for creating a guest-cart

* fix(composables): remove empty params in array, fails on Magento

* test(theme): updated test for attaching guest email address to cart

* Update packages/composables/src/composables/useShipping/index.ts

Co-authored-by: Heitor Ramon Ribeiro <[email protected]>

Co-authored-by: Marcin Kwiatkowski <[email protected]>
Co-authored-by: Heitor Ramon Ribeiro <[email protected]>

* fix(theme): fix flashing category page (#387)

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): fix flashing category page (#388)

Co-authored-by: Bartosz Herba <[email protected]>

* fix: default billing information does not appear on address (#382)

* fix(theme): added badge for default-shipping and default-sbilling address

* fix(composables): sort addresses, put default shipping and billing address to top

* fix(theme): default billing and shipping text can be translated

* chore(theme): added translations

* fix(composables): removed console.log

* chore: upgraded vsf core to 2.5.4 (#389)

* chore: updated VSF core version to 2.5.4

* build: updated test GH action

* fix(composables): update url resolver clearing patter to remove locale prefix (#390)

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): fix links to catch current locale (#391)

* fix(theme): M2-25 fix links to catch current locale

* Apply suggestions from code review

Co-authored-by: Heitor Ramon Ribeiro <[email protected]>

* test(test-utils): added localePath global mock to the test-utils

Co-authored-by: Bartosz Herba <[email protected]>
Co-authored-by: Heitor Ramon Ribeiro <[email protected]>
Co-authored-by: Marcin Kwiatkowski <[email protected]>

* style(theme): aligned titles in my account menu (#400)

* feat(middleware): added i18n route middleware (#408)

* feat(middleware): added i18n route middleware

closes #378

* refactor(middleware): i18n middleware: adjustements

* fix(theme): update localisation for all :link bindings (#416)

Co-authored-by: Bartosz Herba <[email protected]>

* docs(theme): update custom queries documentation to be more friendly and explicit (#418)

Co-authored-by: Bartosz Herba <[email protected]>

* chore(theme): removed html-validator (#414)

* refactor: update dependencies (#420)

* refactor(eslint): updated dependencies

- Updated `eslint-plugin-unicorn` to `40.0.0`

* refactor(eslint-import): updated dependencies

- Updated `eslint-plugin-import` to `2.25.4`

* refactor(eslint-jest): updated dependencies

- Updated `eslint-plugin-jest` to `25.3.4`

* refactor(eslint-typescript): updated dependencies

- Updated `@typescript-eslint/eslint-plugin` to `5.9.1`
- Updated `@typescript-eslint/parser` to `5.9.1`

* refactor(eslint-vue): updated dependencies

- Updated `eslint-plugin-vue` to `8.3.0`

* refactor(api-client): updated dependencies

- Updated `@apollo/client` to `3.5.7`
- Updated `dotenv` to `12.0.1`

* refactor(theme): updated dependencies

- Updated `@babel/core` to `7.16.7`
- Updated `babel-jest` to `27.4.6`
- Updated `cypress` to `9.2.1`
- Updated `dotenv` to `12.0.1`
- Updated `jest` to `27.4.7`
- Updated `jest-environment-jsdom` to `27.4.6`
- Updated `lint-staged` to `12.1.7`
- Updated `mocha` to `9.1.4`
- Updated `npm-check-updates` to `12.1.0`
- Updated `ts-jest` to `27.1.3`

* refactor: updated dependencies

- Updated `@babel/core` to `7.16.7`
- Updated `@babel/plugin-proposal-private-methods` to  `7.16.7`
- Updated `@commitlint/cli` to `16.0.2`
- Updated `@commitlint/config-conventional` to `16.0.0`
- Updated `@commitlint/config-lerna-scopes` to `16.0.0`
- Updated `@graphql-codegen/cli` to `2.3.1`
- Updated `@graphql-codegen/typescript` to `2.4.2`
- Updated `@graphql-codegen/typescript-operations` to  `2.2.2`
- Updated `@graphql-tools/utils` to `8.6.1`
- Updated `@rollup/plugin-node-resolve` to `13.1.3`
- Updated `@types/jest` to `27.4.0`
- Updated `@types/node` to `17.0.8`
- Updated `@typescript-eslint/parser` to `5.9.1`
- Updated `@vue/eslint-config-typescript` to `10.0.0`
- Updated `eslin` to `8.6.0`
- Updated `jest` to `27.4.7`
- Updated `lint-staged` to `12.1.7`
- Updated `npm-check-updates` to `12.1.0`
- Updated `rollup` to `2.64.0`
- Updated `shx` to `0.3.4`
- Updated `ts-jest` to `27.1.3```

* refactor(theme): enables currency switcher on TopBar.vue (#421)

* fix(theme): fix 404 issue when redirecting to address details page (#424)

Co-authored-by: Bartosz Herba <[email protected]>

* test: scaffold unit tests in composables and api client package (#419)

* test(composables): added jest config

* tests(composables): rewritten test + fix in productGetter

* tests(composables): updated configuration in jest.config.js

* tests(api-client): added tests for api-client + move general config to jest.base.config.js

* tests(api-client): added jest configuration + simple test

* chore: removed jest-environment-jsdom-sixteen

* tests(theme): reverted back and removed jest.base.config.json

* test(composables): reverted back and removed jest.base.config.json

* test(api-client): reverted back and removed jest.base.config.json

* chore: removed jest.base.config.json

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* fix(theme): fix disappearing category sidebar filter change (#423)

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): out of stock product will no longer break cart (#404)

* fix(theme): out of stock product will no longer break cart

* fix(theme): remove cart load from layout

* docs(theme): update tests for CartSidebar

Co-authored-by: Bartosz Herba <[email protected]>

* Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426)

This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402.

* refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425)

* refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues

* refactor: cR fixes for i18n

* refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431)

* refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues

* refactor: cR fixes for i18n

* refactor(composables): added `ConfigState` to export API

* chore: updated yarn.lock

* refactor(theme): updated i18n middleware to fix URL redirect

* docs: updated API-Extractor

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* fix(api-client): update default mutation error handling for apollo client (#429)

Co-authored-by: Bartosz Herba <[email protected]>

* fix: expired user token (#392)

* fix(theme): disabled checkbox on login-modal

* feat(theme): log customer out when customer-token is expired

* feat: added token expired notification, clear cart and customer token when customer is not logged in

* feat: logged out notification

* refactor: removed console log

* refactor: added improvements for token-expired plugin, added unit tests

* refactor: changed log out notification message

* test: fixed token-expired plugin test

* test: added cookies mock to test-utils

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* refactor(theme): enable the currency switcher on `TopBar.vue` (#430)

* refactor(theme): enables currency switcher on TopBar.vue

* refactor(theme): add safe checking on Currency Selector

* Fix useFacet(...) customQuery implemention (#413)

* chore: updated version number to rc.5.3, updated yarn.lock, fixed cloud action

* fix(theme): update localisation for all :link bindings (#449)

Co-authored-by: Bartosz Herba <[email protected]>

Co-authored-by: Heitor Ramon Ribeiro <[email protected]>
Co-authored-by: Bartosz Herba <[email protected]>
Co-authored-by: Bartosz Herba <[email protected]>
Co-authored-by: Kevin Gorjan <[email protected]>
Co-authored-by: Aliaaaam <[email protected]>

* chore: release/1.0.0-rc.5.4 (#530)

* chore: add gitflow actions (#379)

* chore: added base gitflow actions

* chore: added base gitflow actions

* chore: fixed versioning process

* docs: added roadmap to the docs (#380)

closes #323

* fix(theme): refactor and fix store switcher (#383)

- update nuxt.config.js to handle de translation
- fix issue with flag icon #362
- refactor store switcher component
- add store name next to the language icon flag
- add translation info in docs

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): fix preselection sort order when query param is available (#385)

Co-authored-by: Bartosz Herba <[email protected]>

* fix: broken cart after placing order as guest (#386)

* fix(theme): passing the email instead of the user-object for creating a guest-cart

* fix(composables): remove empty params in array, fails on Magento

* test(theme): updated test for attaching guest email address to cart

* Update packages/composables/src/composables/useShipping/index.ts

Co-authored-by: Heitor Ramon Ribeiro <[email protected]>

Co-authored-by: Marcin Kwiatkowski <[email protected]>
Co-authored-by: Heitor Ramon Ribeiro <[email protected]>

* fix(theme): fix flashing category page (#387)

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): fix flashing category page (#388)

Co-authored-by: Bartosz Herba <[email protected]>

* fix: default billing information does not appear on address (#382)

* fix(theme): added badge for default-shipping and default-sbilling address

* fix(composables): sort addresses, put default shipping and billing address to top

* fix(theme): default billing and shipping text can be translated

* chore(theme): added translations

* fix(composables): removed console.log

* chore: upgraded vsf core to 2.5.4 (#389)

* chore: updated VSF core version to 2.5.4

* build: updated test GH action

* fix(composables): update url resolver clearing patter to remove locale prefix (#390)

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): fix links to catch current locale (#391)

* fix(theme): M2-25 fix links to catch current locale

* Apply suggestions from code review

Co-authored-by: Heitor Ramon Ribeiro <[email protected]>

* test(test-utils): added localePath global mock to the test-utils

Co-authored-by: Bartosz Herba <[email protected]>
Co-authored-by: Heitor Ramon Ribeiro <[email protected]>
Co-authored-by: Marcin Kwiatkowski <[email protected]>

* style(theme): aligned titles in my account menu (#400)

* feat(middleware): added i18n route middleware (#408)

* feat(middleware): added i18n route middleware

closes #378

* refactor(middleware): i18n middleware: adjustements

* fix(theme): update localisation for all :link bindings (#416)

Co-authored-by: Bartosz Herba <[email protected]>

* docs(theme): update custom queries documentation to be more friendly and explicit (#418)

Co-authored-by: Bartosz Herba <[email protected]>

* chore(theme): removed html-validator (#414)

* refactor: update dependencies (#420)

* refactor(eslint): updated dependencies

- Updated `eslint-plugin-unicorn` to `40.0.0`

* refactor(eslint-import): updated dependencies

- Updated `eslint-plugin-import` to `2.25.4`

* refactor(eslint-jest): updated dependencies

- Updated `eslint-plugin-jest` to `25.3.4`

* refactor(eslint-typescript): updated dependencies

- Updated `@typescript-eslint/eslint-plugin` to `5.9.1`
- Updated `@typescript-eslint/parser` to `5.9.1`

* refactor(eslint-vue): updated dependencies

- Updated `eslint-plugin-vue` to `8.3.0`

* refactor(api-client): updated dependencies

- Updated `@apollo/client` to `3.5.7`
- Updated `dotenv` to `12.0.1`

* refactor(theme): updated dependencies

- Updated `@babel/core` to `7.16.7`
- Updated `babel-jest` to `27.4.6`
- Updated `cypress` to `9.2.1`
- Updated `dotenv` to `12.0.1`
- Updated `jest` to `27.4.7`
- Updated `jest-environment-jsdom` to `27.4.6`
- Updated `lint-staged` to `12.1.7`
- Updated `mocha` to `9.1.4`
- Updated `npm-check-updates` to `12.1.0`
- Updated `ts-jest` to `27.1.3`

* refactor: updated dependencies

- Updated `@babel/core` to `7.16.7`
- Updated `@babel/plugin-proposal-private-methods` to  `7.16.7`
- Updated `@commitlint/cli` to `16.0.2`
- Updated `@commitlint/config-conventional` to `16.0.0`
- Updated `@commitlint/config-lerna-scopes` to `16.0.0`
- Updated `@graphql-codegen/cli` to `2.3.1`
- Updated `@graphql-codegen/typescript` to `2.4.2`
- Updated `@graphql-codegen/typescript-operations` to  `2.2.2`
- Updated `@graphql-tools/utils` to `8.6.1`
- Updated `@rollup/plugin-node-resolve` to `13.1.3`
- Updated `@types/jest` to `27.4.0`
- Updated `@types/node` to `17.0.8`
- Updated `@typescript-eslint/parser` to `5.9.1`
- Updated `@vue/eslint-config-typescript` to `10.0.0`
- Updated `eslin` to `8.6.0`
- Updated `jest` to `27.4.7`
- Updated `lint-staged` to `12.1.7`
- Updated `npm-check-updates` to `12.1.0`
- Updated `rollup` to `2.64.0`
- Updated `shx` to `0.3.4`
- Updated `ts-jest` to `27.1.3```

* refactor(theme): enables currency switcher on TopBar.vue (#421)

* fix(theme): fix 404 issue when redirecting to address details page (#424)

Co-authored-by: Bartosz Herba <[email protected]>

* test: scaffold unit tests in composables and api client package (#419)

* test(composables): added jest config

* tests(composables): rewritten test + fix in productGetter

* tests(composables): updated configuration in jest.config.js

* tests(api-client): added tests for api-client + move general config to jest.base.config.js

* tests(api-client): added jest configuration + simple test

* chore: removed jest-environment-jsdom-sixteen

* tests(theme): reverted back and removed jest.base.config.json

* test(composables): reverted back and removed jest.base.config.json

* test(api-client): reverted back and removed jest.base.config.json

* chore: removed jest.base.config.json

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* fix(theme): fix disappearing category sidebar filter change (#423)

Co-authored-by: Bartosz Herba <[email protected]>

* fix(theme): out of stock product will no longer break cart (#404)

* fix(theme): out of stock product will no longer break cart

* fix(theme): remove cart load from layout

* docs(theme): update tests for CartSidebar

Co-authored-by: Bartosz Herba <[email protected]>

* Revert "refactor(theme): enables currency switcher on TopBar.vue (#421)" (#426)

This reverts commit fbb1598ae7d78ebe3319e0d9d3c1a8dacc2de402.

* refactor(i18n): changed i18n middleware to plugin and fix store switc… (#425)

* refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues

* refactor: cR fixes for i18n

* refactor(theme): changed i18n midl. to plugin & fix store switcher by url (#431)

* refactor(i18n): changed i18n middleware to plugin and fix store switcher by url issues

* refactor: cR fixes for i18n

* refactor(composables): added `ConfigState` to export API

* chore: updated yarn.lock

* refactor(theme): updated i18n middleware to fix URL redirect

* docs: updated API-Extractor

Co-authored-by: Marcin Kwiatkowski <[email protected]>

* fix(api-client): update default mutation error handling for apollo client (#429)

Co-authored-by: Bartosz Herba <[email protected]>

* fix: expired user token (#392)

* fix(theme): disabled checkbox on login-modal

* feat(theme): log customer out when customer-token is expired

* feat: added token expired notification, clear cart and customer token when customer is not logged in

* feat: logged out notification

* refactor: removed console log

* refactor: added improvements for token-expired plugin, added unit tests

* refactor: changed log out notification message

* test: fixed to…
  • Loading branch information
1 parent cbe357d commit b56508b
Show file tree
Hide file tree
Showing 346 changed files with 7,402 additions and 4,073 deletions.
8 changes: 6 additions & 2 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
**/node_modules/**/*
**/lib/*
packages/composables/nuxt/plugin.js
packages/api-client/types/GraphQL.ts
packages/api-client/src/types/GraphQL.ts
packages/api-client/server
packages/composables/lib
packages/api-client/lib
packages/theme/static/sw.js
.eslintrc.js
22 changes: 19 additions & 3 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ module.exports = {
parser: '@typescript-eslint/parser',
project: [
resolve(__dirname, './tsconfig.json'),
resolve(__dirname, './packages/api-client/tsconfig.json'),
resolve(__dirname, './packages/composables/tsconfig.json'),
resolve(__dirname, './packages/api-client/tsconfig.eslint.json'),
resolve(__dirname, './packages/composables/tsconfig.eslint.json'),
resolve(__dirname, './packages/theme/tsconfig.json'),
resolve(__dirname, './packages/theme/tests/e2e/tsconfig.json'),
],
Expand All @@ -39,6 +39,22 @@ module.exports = {
}
],
"no-plusplus": "off",
}
},
overrides: [
{
"files": ["packages/theme/tests/e2e/**/*"],
"rules": {
"jest/expect-expect": "off",
"promise/catch-or-return": "off", // conflicts with Cypress.Chainable
"promise/always-return": "off",
}
},
{
"files": ["internals/**/*"],
"rules": {
"unicorn/prefer-module": "off",
}
}
]
}

5 changes: 5 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,10 @@ jobs:
- name: Build packages
run: yarn build

# typescript-eslint needs all packages to be built
# to check type-related linting rules
- name: Check for linting errors
run: yarn lint

- name: Test theme
run: yarn test:theme
3 changes: 2 additions & 1 deletion commitlint.config.js
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
module.exports = {extends: ['@commitlint/config-conventional']}
// eslint-disable-next-line unicorn/prefer-module
module.exports = { extends: ['@commitlint/config-conventional'] };
14 changes: 11 additions & 3 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ module.exports = {
],
themeConfig: {
GTM_TAG,
sidebarDepth: 0,
repo: 'https://github.com/vuestorefront/magento2/',
editLinks: true,
docsDir: 'docs',
Expand All @@ -76,11 +77,18 @@ module.exports = {
],
},
{
title: 'Creating a Storefront',
title: 'Getting started',
collapsable: false,
children: [
['/guide/creating-a-store', 'Creating a Store'],
['/guide/configuration', 'Configuration'],
['/getting-started/configure-magento', 'Configuring Magento'],
['/getting-started/configure-integration', 'Configuring Vue Storefront'],
],
},
{
title: 'Guides',
collapsable: false,
children: [
['/guide/image-optimization', 'Image optimization'],
['/guide/override-queries', 'Override queries'],
['/guide/testing', 'Testing'],
['/guide/recaptcha', 'ReCaptcha'],
Expand Down
5 changes: 5 additions & 0 deletions docs/.vuepress/styles/index.styl
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,8 @@ a code {
color: $accentColor !important;
font-weight: bold;
}

div.theme-default-content:not(.custom) {
max-width: 1024px;
}

11 changes: 0 additions & 11 deletions docs/api-reference/magento-api.carttotalqty.md

This file was deleted.

11 changes: 0 additions & 11 deletions docs/api-reference/magento-api.wishlistitemscount.md

This file was deleted.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
85 changes: 85 additions & 0 deletions docs/getting-started/configure-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Configuring Vue Storefront for Magento 2

This guide explains the steps needed to install and set up Vue Storefront for Magento 2.

## Prerequisites

Before you can get started, you need the following:

- **Node.js 16** installed,
- Magento 2 server configured following the [Configuring Magento](/getting-started/configure-magento.html) guide.

To check the Node version you are using, run the following command:

```bash
node -v
```

## Creating the Vue Storefront for Magento 2

To install Vue Storefront, run the command below. It will ask you for the project name and the integration of your choice. Keep in mind that the project name will also be used as the folder name, and be sure to select the Magento 2 integration.

```sh
npx @vue-storefront/cli init
```

### 1. Configure environment variables

After installation, the first step is configuring the integration using the environment variables.

1. Go to the root folder of your project.
2. Make a copy of the `.env.example` file and rename it to `.env`. You can do it manually or use the following command:

```sh
cp .env.example .env
```

3. Update values in the `.env` file.

### 2. Setup store configuration

The `plugins/storeConfigPlugin.ts` plugin loads store configuration data from Magento and saves it into the Pinia store under the `$state.storeConfig` property. By default, the amount of data loaded from Magento is minimal to avoid over-fetching, but as your application grows, you might need to pull more data.

This plugin loads the store configuration data based on a query in the `plugins/query/StoreConfig.gql.ts` file. You can modify this file to change what data is loaded.

### 3. Configure multistore and localization

Each Magento store view needs a corresponding locale configuration object in the `i18n` object in the `nuxt.config.js` file.

#### 3.1 `i18n.locales`

The `i18n.locales` array contains all supported locales. Each item in this array is an object containing the following properties:

- `code` - unique identifier of the locale corresponding to Magento store view code.
- `file` - the name of the file containing translations for this locale in the `lang` folder.
- `iso` - corresponding ISO country code.

For other properties please follow official [nuxt-i18n documentation](https://i18n.nuxtjs.org/options-reference#locales).

In the example configuration below, you need to have two Magento store views with corresponding store codes: `default` and `german`.

```javascript
// nuxt.config.js
export default {
locales: [
{
code: 'default',
file: 'en.js',
iso: 'en_US',
},
{
code: 'german',
file: 'de.js',
iso: 'de_DE',
}
]
};
```

#### 3.2 Translations

When working with translation in your application, you need to:

1. Add translations in Magento for products and categories.
2. Update the `i18n.locales` array in the `nuxt.config.js` file and add translations to the corresponding files in the `lang` directory.
137 changes: 137 additions & 0 deletions docs/getting-started/configure-magento.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# Configuring Magento store

This guide explains the step needed to install and set up Magento 2 store for Vue Storefront.

## Prerequisites

Before you can get started, you need the following:

- **Docker Desktop** to setup Magento 2 locally,
- **Magento Marketplace account** to download Magento 2. To create it, visit [this page](https://account.magento.com/customer/account/create/).

## Creating the Magento 2 store

We're going to install Magento 2 inside the `server` folder. Run the following commands to create a `server` folder first:

```sh
mkdir server
cd server
```

### 1. Get Magento Marketplace access keys

Registry that stores Magento and other third-party packages require authentication. You'll need to generate access keys in the Magento Marketplace to install them.

Follow the [Get your authentication keys](https://devdocs.magento.com/guides/v2.4/install-gde/prereq/connect-auth.html) guide to generate new access keys.

![Access keys generated in Magento Marketplace](../assets/images/magento-marketplace-access-keys.jpg)

### 2. Install Magento 2 store

To simplify the setup, let's use the [`markshust/docker-magento`](https://github.com/markshust/docker-magento) script.

Run the command below to create the store. It will ask you for the Username and Password. Use your public access key as a username and your private access key as a password from the previous step.

```sh
curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/onelinesetup | bash -s -- magento.test 2.4.4
```

### 3. Setup authentication

In the Magento 2 folder, copy the `src/auth.json.sample` file and rename it to `src/auth.json`. You can do it manually or use the following command:

```sh
cp src/auth.json.sample src/auth.json
```

Update the username and password values with your Magento public and private keys.

```json
{
"http-basic": {
"repo.magento.com": {
"username": "a1c69cb…",
"password": "af041560…"
}
}
}
```

Finally, copy the file to the container by running the following command:

```sh
bin/copytocontainer auth.json
```

### 4. Increase default GraphQL query complexity

For security reasons, Magento 2, by default, allows maximum GraphQL query complexity of 300 and depth of 20. You need to change these values using the [GraphQL CustomConfig module](https://github.com/caravelx/module-graphql-config), which allows configuring these values in the admin panel.

To install the Magento 2 GraphQL Config module, run the following commands on your Magento installation:

```bash
composer require caravelx/module-graphql-config
php bin/magento module:enable Caravel_GraphQlConfig
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
```

Then go to the admin panel, find the configuration panel of the `GraphQL CustomConfig` module, and set:

- **complexity** to 1500,
- **depth** to 20.

For more information, see the [GraphQL security configuration](https://devdocs.magento.com/guides/v2.4/graphql/security-configuration.html) page.

### 5. Enable CORS

You may need to enable CORS origins in your Magento store to accept requests from other domains, e.g., `magento.dev`. In the Magento 2 folder, add the package `graycore/magento2-cors` by running the command below:

```sh
bin/composer require graycore/magento2-cors
```

Then, add the following configuration at the end of `src/app/etc/env.php`:

```php
'system' => [
'default' => [
'web' => [
'graphql' => [
'cors_max_age' => 86400,
'cors_allow_credentials' => 0,
'cors_allowed_methods' => 'POST, OPTIONS, GET',
'cors_allowed_headers' => 'Content-Currency, Store, X-Magento-Cache-Id, X-Captcha, Content-Type, Authorization, DNT, TE',
'cors_allowed_origins' => '*'
]
]
]
]
```

Enable the graycore cors.

```sh
bin/magento module:enable Graycore_Cors
```

Then update the configuration:

```sh
bin/magento setup:upgrade
```

### 6. Populate store with sample data (optional)

In the Magento 2 folder, execute the commands below to add sample data to your store.

```sh
bin/magento sampledata:deploy
```

Then update the configuration:

```sh
bin/magento setup:upgrade
```
5 changes: 3 additions & 2 deletions docs/guide/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

## Resources

- [Vue Storefront Documentation](https://docs.vuestorefront.io/v2/)
- [Magento 2 integration Documentation (WIP)](https://docs.vuestorefront.io/magento)
- [GitHub repository](https://github.com/vuestorefront/magento2/)
- [Vue Storefront website](https://www.vuestorefront.io/)
- [Core Documentation](https://docs.vuestorefront.io/v2/)
- [Community Chat](https://discord.vuestorefront.io)

## Support
Expand Down
Loading

0 comments on commit b56508b

Please sign in to comment.