Skip to content

Commit

Permalink
[Extensibility 🤌🏻] Make create-app work with "extended templates" (#…
Browse files Browse the repository at this point in the history
…1205)

* merge conflict

* resolve merge conflict

* update spike project's engines / regen v3 lockfiles

* regenerate lock files

* add missing node engines

* add missing useToast (bad merge)

* updates from underlying template-retail-react-app

* drop unnecessary pages/product-detail override

* fix dupe useToast

* progress on making `charles-solution` work

* initial pass at migration to `resolver.getHook('resolve').tapAsync` working, TODO next... cleanup

* restore icons file and add extensible text to home

* add some comments and construct hashmap in new plugin

* working glob sync lookup??

* resolve lookup when there is no extension

* add component slot for testing

* fix some lookup errors

* migrate to new directory

* remove unnecessary directory nesting, remove unnecessary files for "minimum file project"

* add example of extending routes non-destructively, add example of quickly toggling some base constant values (e.g. categories shown on home page)

* Update example route

* add some demo examples of overrides

* cleanup

* commit package name change

* rewrite requests coming from underlying template

* cleanup

* rename plugin file

* remove unnecessary build files

* rename to overrides

* fix lookup errors

* fix some broken upstream changes, eslint fixes

* fix bad merge conflict

* Bring back the deleted package.json

* Install new eslint plugin

* No more relative imports in retail-react-app

* Create .prettierrc.yaml

* restore other deleted package lockfiles

* fix some eslint issues

* remove `^` imports and begin migrating logic away from previous API. TODO: get webpack to resolve `retail-react-app` base import path from within `template-retail-react-app`

* bring back deleted package lockfiles

* short circuit plugin temporarily, get webpack `alias` working for template to resolve self-referencing `retail-react-app` imports

* fix unreachable condition

* wow... freaking works 🚀

* cleanup, get `template-retail-react-app` working again

* cleanup

* Create .eslintrc.js

* fix routes.jsx which no longer pulled relative template

* make routes.jsx more concise

* update lockfiles

* add jsconfig.json for IDEs to have magic `retail-react-app` be discoverable

* more cleanup

* change package.json key from `mobify` => `ccExtensibility`

* cleanup

* Final cleanup, remove console.logs, make `extendable` dynamic for internal file resolution in `template-retail-react-app` (and future projects), remove some non-required files,

* fix straggler non-dynamic filepath

* cleanup

* remove code that shouldn't be in v3+

* sync package.json deps in extended example project

* cleanup / pr feedback

* pr feedback, great catch @kevinxh

* fix problem with bad copy from underlying template file

* pr feedback / cleanup

* cleanup

Co-authored-by: Kevin He <kevin.he@salesforce.com>

* Update package-lock.json

* WIP

* drop unneeded complexity

* lockfiles

* moving toward an array of `alias`es

* Refactor template extensibility functionality to use `resolve.alias` + greatly reduce code footprint + make leading slash optional in `ccExtensibility.overridesDir`

* add brand-logo with no clash for server side viewBox

* add `request-processor.js` (required for worker.js to load) and fix bad extensibility path loading in `build-dev-server.js`

* lint fix

* fix failing pwa-kit-react-sdk tests

* cleanup

* regen package lockfiles

* lint:fix

* fix failing tests in CI re: `TextDecoder is not defined`

* take 2 attempting to fix TextDecoder global in jest

* fix jest module mapper

* fix jest moduleMapper config

* REALLY fix jest moduleNameMapper config for new pathing + fix node `util` global TextDecoder is not defined in jest

* add brand-logo

* remove previously added `AbovePDP` Template Hook component

* replay #1128 from bad merge

* eslint:fix for `retail-react-app` base paths

* de-duplicate deps in bundle

* fix path defaulting, don't pass nullish value to path.resolve

* improve pathing for overridesDir in pwa-kit-dev webapack config + add missing worker/main.js

* fix pathing

* fix pathing issue that was mysteriously UNFIXED

* fix `worker.js` path

* fix app/static pathing in non-extensible builds

* Bump version to 3.0.0-dev.0

* Fixup dependencies in `template-retail-react-app`

* Create boostrap to replace `my-extended-retail-app`

* Update generator to support extensible projects (rough implementation)

* Create boostrap to replace `my-extended-retail-app`*

* Ensure that translations are chunked

* Remove `my-extended-retail-app` as it is not required

* Fix lint errors

* Fix lint errors

* Add Handlebars and update package.json files

* Fix bootstrap folder organization

* Make template public

* Fix default overrides folder

* Bump to 3.0.0-dev.0 to align with develop

* Initial generator refactor

* Fix version fetching

* Attempt to fix version fetching for extensibility

* Another attempt at fixing the version

* Eek another attempt

* Bad code completion suggestion

* Fix some template keys

* Fix version number

* Update create-mobify-app.js

* Fix template keys in override assets

* Update create-mobify-app.js

* [Extensibility] Remove Einstein proxy and send Einstein events directly from app (#1202)

* Remove Einstein proxy and send Einstein events directly from app

* Update ssrParameters

* Add context

* Fix template key

* Update package.json.hbs

* Add handlebars json helper

* Disabled html encoding for json objects in templates

* Fix formatting in scripts

* Allow demo to use extensibility

* Slugify name

* Move boostrap folder

* Setting up for bootstrap file reuse

* debugging

* Update create-mobify-app.js

* Testing with postGenerate hook

* debugging

* Simplify template sources

* Fix template keys yet again

* Replace ExtendsCircularImportsPlugin with OverridesResolverPlugin (#1211)

* Replace ExtendsCircularImportsPlugin with OverridesResolverPlugin

* fix filepath problem

---------

Co-authored-by: Brian Feister <bfeister@salesforce.com>

* Update routes.jsx.hbs

* Update create-mobify-app.js

* Fix things

* Fix filter

* Fix preset validation

* Update create-mobify-app.js

* Update create-mobify-app.js

* Clean up

* remove irrelevant bundlesize check to pass CI

* Fix `vendor.js` inclusion of `retail-react-app` files (#1198)

* fix duplicate lilbs in bundle

* fix app/static pathing for non-extensible builds

* oof, fix extensible app/static filepaths

* Resolve conflicting npm deps via `resolve.alias`

* add missing worker/main.js

* cleanup unused imports

* WIP, add list of original overridable deps

* prevent template extensibility vendor.js from treating baseline route files as deps in vendor.js

* fix irrelevant bundlesize declaration to pass CI

* drop test:max-file-size test from my-extended-retail-app

* replace relative with absolute path fetchTranslations (#1215)

Co-authored-by: Brian Feister <47546998+bfeister@users.noreply.github.com>

* More refactoring

* Update create-mobify-app.js

* Add template level file assets

* debugging

* Update create-mobify-app.js

* Fix templates

* Fix manifest template keys

* Rearrange deps

* Better handling of objects in hbs templates

* Remove hbs json helper

* Fix missing comma

* More handlebars fixes

* Escape scripts

* make tempalte scripts work with handlebars escaping

* Delete my-exended-template after merging

* Refactor for unit testing, fix pathing issue from old version of file parsing algoritihim

* More clean up

* Remove console log

* preset changes

* Linting, and change test-project name

* Function renames etc

* debugging

* Update create-mobify-app.js

* Fix project answers merge

* Fix CI test 🤞🏻

* Update deps in attempt to fix tests on CI

* Lint

* More dep shuffling

* Remove debugger

* More dep wrangling

* Don't use peer deps like I was

* Another iteration of dep organization

* Clean up hbs templates

* Update licences

* remove demo extensible app in light of soon-to-be-merged PR from @bendvc

* lockfiles from reaact18 / chakra2

* fix merge conflict resolution

* remove template extensible demo in prep for @bendvc's pr for generator work

* regen lockfiles for react 18 changes

* fix linting

* update package-lock files

* Fix imports

* Add missing deps

* Feature/template extensibility (#1162)

* initial work on moving code to use resolver

* fix getoverridepath and break on ^ imports

* add todos and comments

* rewrite requestcontext.request for path with caret

* perform overrideshashmap lookup for relative import

* progress

* progress

* regenerate lock files

* fix dupe useToast

* progress on making `charles-solution` work

* initial pass at migration to `resolver.getHook('resolve').tapAsync` working, TODO next... cleanup

* restore icons file and add extensible text to home

* add some comments and construct hashmap in new plugin

* working glob sync lookup??

* resolve lookup when there is no extension

* add component slot for testing

* fix some lookup errors

* cleanup

* rewrite requests coming from underlying template

* cleanup

* rename plugin file

* remove unnecessary build files

* rename to overrides

* fix lookup errors

* fix some broken upstream changes, eslint fixes

* Bring back the deleted package.json

* Install new eslint plugin

* No more relative imports in retail-react-app

* Create .prettierrc.yaml

* restore other deleted package lockfiles

* fix some eslint issues

* remove `^` imports and begin migrating logic away from previous API. TODO: get webpack to resolve `retail-react-app` base import path from within `template-retail-react-app`

* short circuit plugin temporarily, get webpack `alias` working for template to resolve self-referencing `retail-react-app` imports

* fix unreachable condition

* wow... freaking works 🚀

* cleanup, get `template-retail-react-app` working again

* cleanup

* Create .eslintrc.js

* fix routes.jsx which no longer pulled relative template

* make routes.jsx more concise

* update lockfiles

* add jsconfig.json for IDEs to have magic `retail-react-app` be discoverable

* more cleanup

* change package.json key from `mobify` => `ccExtensibility`

* cleanup

* Final cleanup, remove console.logs, make `extendable` dynamic for internal file resolution in `template-retail-react-app` (and future projects), remove some non-required files,

* fix straggler non-dynamic filepath

* cleanup

* remove code that shouldn't be in v3+

* sync package.json deps in extended example project

* cleanup / pr feedback

* pr feedback, great catch @kevinxh

* fix problem with bad copy from underlying template file

* pr feedback / cleanup

* cleanup

Co-authored-by: Kevin He <kevin.he@salesforce.com>

* Update package-lock.json

* WIP

* drop unneeded complexity

* lockfiles

* moving toward an array of `alias`es

* Refactor template extensibility functionality to use `resolve.alias` + greatly reduce code footprint + make leading slash optional in `ccExtensibility.overridesDir`

* add brand-logo with no clash for server side viewBox

* add `request-processor.js` (required for worker.js to load) and fix bad extensibility path loading in `build-dev-server.js`

* lint fix

* fix failing pwa-kit-react-sdk tests

* cleanup

* lint:fix

* fix failing tests in CI re: `TextDecoder is not defined`

* take 2 attempting to fix TextDecoder global in jest

* fix jest module mapper

* fix jest moduleMapper config

* REALLY fix jest moduleNameMapper config for new pathing + fix node `util` global TextDecoder is not defined in jest

* add brand-logo

* remove previously added `AbovePDP` Template Hook component

* replay #1128 from bad merge

* eslint:fix for `retail-react-app` base paths

* de-duplicate deps in bundle

* fix path defaulting, don't pass nullish value to path.resolve

* improve pathing for overridesDir in pwa-kit-dev webapack config + add missing worker/main.js

* fix pathing

* fix pathing issue that was mysteriously UNFIXED

* fix `worker.js` path

* fix app/static pathing in non-extensible builds

* [Extensibility] Remove Einstein proxy and send Einstein events directly from app (#1202)

* Remove Einstein proxy and send Einstein events directly from app

* Update ssrParameters

* Replace ExtendsCircularImportsPlugin with OverridesResolverPlugin (#1211)

* Replace ExtendsCircularImportsPlugin with OverridesResolverPlugin

* fix filepath problem

---------

Co-authored-by: Brian Feister <bfeister@salesforce.com>

* remove irrelevant bundlesize check to pass CI

* Fix `vendor.js` inclusion of `retail-react-app` files (#1198)

* fix duplicate lilbs in bundle

* fix app/static pathing for non-extensible builds

* oof, fix extensible app/static filepaths

* Resolve conflicting npm deps via `resolve.alias`

* add missing worker/main.js

* cleanup unused imports

* WIP, add list of original overridable deps

* prevent template extensibility vendor.js from treating baseline route files as deps in vendor.js

* fix irrelevant bundlesize declaration to pass CI

* drop test:max-file-size test from my-extended-retail-app

* replace relative with absolute path fetchTranslations (#1215)

Co-authored-by: Brian Feister <47546998+bfeister@users.noreply.github.com>

* Refactor for unit testing, fix pathing issue from old version of file parsing algoritihim

* fix merge conflict resolution

* remove template extensible demo in prep for @bendvc's pr for generator work

* regen lockfiles for react 18 changes

* fix linting

---------

Co-authored-by: yunakim714 <yunakim@salesforce.com>
Co-authored-by: Vincent Marta <vmarta@salesforce.com>
Co-authored-by: Kevin He <kevin.he@salesforce.com>
Co-authored-by: vcua-mobify <vcua@salesforce.com>
Co-authored-by: vcua-mobify <47404250+vcua-mobify@users.noreply.github.com>
Co-authored-by: Alex Vuong <52219283+alexvuong@users.noreply.github.com>
Co-authored-by: Alex Vuong <alex.vuong@salesforce.com>

* Update packages/pwa-kit-create-app/scripts/create-mobify-app.js

Co-authored-by: Vincent Marta <vmarta@salesforce.com>

* Fix CI workflow project reference

* Update config.js

* support windows file paths

* Lint

* Fix issue with failed tests because of react query dev tools

* Extract default messages script (#1216)

* create extract default messages script to work on both base and overrides projects

---------

Co-authored-by: Brian Feister <bfeister@salesforce.com>
Co-authored-by: Brian Feister <47546998+bfeister@users.noreply.github.com>

* Add typescript extensions (#1223)

* add typescript extensions

* fix failing tests

* Update `extract-default-translations` script for extensibility

* debugging

* Update create-mobify-app.js

* Fix regex

* First pass copying translations

* Update create-mobify-app.js

* Update create-mobify-app.js

* Update create-mobify-app.js

* Update create-mobify-app.js

* Refactor copy assets work

* Remove debugger directive

* Regenerate package-lock files

* Fix lint errors on generated projects

* Update create-mobify-app.js

* Fix some dep versions

* Update create-mobify-app.js

* Update package.json

* Fix lint script so it works with windows

* Regenerate package-lock files and remove my-generated-app again

* Lint

* mv doesnt work the same on windows as unix

* Same

* Revert suggested change.

* Add basic eslintignore

* Update bundle size limits

* Missing dep.

---------

Co-authored-by: Brian Feister <bfeister@salesforce.com>
Co-authored-by: yunakim714 <yunakim@salesforce.com>
Co-authored-by: Vincent Marta <vmarta@salesforce.com>
Co-authored-by: Brian Feister <47546998+bfeister@users.noreply.github.com>
Co-authored-by: Kevin He <kevin.he@salesforce.com>
Co-authored-by: vcua-mobify <vcua@salesforce.com>
Co-authored-by: vcua-mobify <47404250+vcua-mobify@users.noreply.github.com>
Co-authored-by: Alex Vuong <52219283+alexvuong@users.noreply.github.com>
Co-authored-by: Alex Vuong <alex.vuong@salesforce.com>
  • Loading branch information
10 people authored May 26, 2023
1 parent ee9dfac commit 0a22c15
Show file tree
Hide file tree
Showing 82 changed files with 8,725 additions and 21,969 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,10 @@ jobs:
strategy:
fail-fast: false
matrix:
template: [test-project, retail-react-app-demo, express-minimal-test-project, typescript-minimal-test-project]
template: [retail-react-app-test-project, retail-react-app-demo, express-minimal-test-project, typescript-minimal-test-project]
runs-on: ubuntu-latest
env:
IS_TEMPLATE_FROM_RETAIL_REACT_APP: ${{ matrix.template == 'test-project' || matrix.template == 'retail-react-app-demo' }}
IS_TEMPLATE_FROM_RETAIL_REACT_APP: ${{ matrix.template == 'retail-react-app-test-project' || matrix.template == 'retail-react-app-demo' }}
PROJECT_DIR: generated-${{ matrix.template }}
steps:
- name: Checkout
Expand Down Expand Up @@ -232,7 +232,7 @@ jobs:
mobify_api_key: ${{ secrets.MOBIFY_CLIENT_API_KEY }}

- name: Push Bundle to MRT
if: env.IS_NOT_FORK == 'true' && env.DEVELOP == 'true' && matrix.template == 'test-project'
if: env.IS_NOT_FORK == 'true' && env.DEVELOP == 'true' && matrix.template == 'retail-react-app-test-project'
uses: "./.github/actions/push_to_mrt"
with:
CWD: ${{ env.PROJECT_DIR }}
Expand All @@ -253,10 +253,10 @@ jobs:
strategy:
fail-fast: false
matrix:
template: [test-project, retail-react-app-demo, express-minimal-test-project, typescript-minimal-test-project]
template: [retail-react-app-test-project, retail-react-app-demo, express-minimal-test-project, typescript-minimal-test-project]
runs-on: windows-latest
env:
IS_TEMPLATE_FROM_RETAIL_REACT_APP: ${{ matrix.template == 'test-project' || matrix.template == 'retail-react-app-demo' }}
IS_TEMPLATE_FROM_RETAIL_REACT_APP: ${{ matrix.template == 'retail-react-app-test-project' || matrix.template == 'retail-react-app-demo' }}
PROJECT_DIR: generated-${{ matrix.template }}
steps:
- name: Checkout
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@
"node": "^16.11.0 || ^18.0.0",
"npm": "^8.0.0 || ^9.0.0"
}
}
}
2 changes: 2 additions & 0 deletions packages/commerce-sdk-react/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
## v3.0.0-dev (May 12, 2023)

- Add missing cache invalidation for contexts/customers/login/order [#1073](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/1073)

- Upgrade React 18, React DOM 18, @types/react@18, @types/react-dom@v18 Testing library 14 [#1166](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/1166)

## v2.7.1 (May 11, 2023)
Expand Down
3 changes: 0 additions & 3 deletions packages/my-extended-retail-app/README.md

This file was deleted.

64 changes: 0 additions & 64 deletions packages/my-extended-retail-app/config/default.js

This file was deleted.

78 changes: 0 additions & 78 deletions packages/my-extended-retail-app/config/sites.js

This file was deleted.

Loading

0 comments on commit 0a22c15

Please sign in to comment.