diff --git a/.github/workflows/check-deps.yml b/.github/workflows/check-deps.yml new file mode 100644 index 0000000..3348cdf --- /dev/null +++ b/.github/workflows/check-deps.yml @@ -0,0 +1,33 @@ +name: Check dependencies versions + +on: + # Run whenever a pull request is updated + pull_request: + branches: + - main +jobs: + syncpack: + runs-on: ubuntu-latest + name: Check dependencies + steps: + # Check out the branch so we can read/write its files + - uses: actions/checkout@v3 + # Use Node.js as syncpack is written in that + - uses: actions/setup-node@v3 + with: + node-version: 18 + - uses: JamieMason/syncpack-github-action@0.2.2 + continue-on-error: true + with: + package-manager: "pnpm" + bot-username: "Syncpack Bot" + commit-message: "format and sync package.json files" + # The workflow will only list mismatched dependencies, and the assignee has to manually fix them. + # version-mismatches: list mismatches in a comment + version-mismatches: "lint" + # semver-range-mismatches: don't align dependency version format + semver-range-mismatches: "ignore" + # lockfile-mismatches: don't update lockfiles when mismatches detected + lockfile-mismatches: "ignore" + # format-mismatches: don't update package.json when inconsistent formatting detected + format-mismatches: "ignore" diff --git a/.syncpackrc b/.syncpackrc new file mode 100644 index 0000000..8b279e2 --- /dev/null +++ b/.syncpackrc @@ -0,0 +1,31 @@ +{ + "filter": ".", + "indent": " ", + "semverGroups": [], + "semverRange": "", + "dependencyTypes": [ + "dev", + "overrides", + "peer", + "prod", + "resolutions", + "workspace" + ], + "sortAz": [ + "contributors", + "dependencies", + "devDependencies", + "keywords", + "peerDependencies", + "resolutions", + "scripts" + ], + "sortFirst": [ + "name", + "description", + "version", + "author" + ], + "source": [], + "versionGroups": [] +} diff --git a/package.json b/package.json index 05f0bbd..29bd05d 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "format": "prettier --write \"**/*.{ts,tsx,md}\"", "generate": "turbo run generate", "prepare": "husky install", - "github:release": "pnpm changeset tag && git push --follow-tags" + "github:release": "pnpm changeset tag && git push --follow-tags", + "check-deps": "syncpack fix-mismatches --source \"apps/*/package.json\" --source \"packages/*/package.json\" --filter \"@saleor/app-sdk|@saleor/macaw-ui\"" }, "devDependencies": { "@changesets/cli": "^2.26.0", @@ -35,5 +36,8 @@ "lint-staged": { "*.{js,ts,tsx}": "eslint --cache --fix", "*.{ts,tsx,md}": "prettier --write" + }, + "dependencies": { + "syncpack": "^10.1.0" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 574e3e3..edc0b0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,6 +3,10 @@ lockfileVersion: '6.0' importers: .: + dependencies: + syncpack: + specifier: ^10.1.0 + version: 10.1.0 devDependencies: '@changesets/cli': specifier: ^2.26.0 @@ -12593,6 +12597,11 @@ packages: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -12802,6 +12811,16 @@ packages: path-type: 4.0.0 dev: true + /cosmiconfig@8.1.3: + resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: false + /crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -15212,7 +15231,6 @@ packages: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -16733,7 +16751,6 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 - dev: true /jsonify@0.0.1: resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} @@ -17710,6 +17727,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@6.2.0: + resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -19915,6 +19939,14 @@ packages: pify: 4.0.1 strip-bom: 3.0.0 + /read-yaml-file@2.1.0: + resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} + engines: {node: '>=10.13'} + dependencies: + js-yaml: 4.1.0 + strip-bom: 4.0.0 + dev: false + /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -20409,6 +20441,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + /semver@7.5.1: resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} @@ -20938,6 +20978,11 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: false + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -21056,6 +21101,23 @@ packages: '@pkgr/utils': 2.3.1 tslib: 2.5.0 + /syncpack@10.1.0: + resolution: {integrity: sha512-3SMPf49tpxw170ZokyurKuJc7G45xZLtzgH6W87+7OsbRQLc+oc9UfoelVf1CuYglZsMwFott4zEShCY8o+R1Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + chalk: 4.1.2 + commander: 10.0.1 + cosmiconfig: 8.1.3 + fs-extra: 11.1.1 + glob: 8.1.0 + minimatch: 6.2.0 + read-yaml-file: 2.1.0 + semver: 7.5.0 + tightrope: 0.1.0 + ts-toolbelt: 9.6.0 + dev: false + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -21202,6 +21264,11 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /tightrope@0.1.0: + resolution: {integrity: sha512-HHHNYdCAIYwl1jOslQBT455zQpdeSo8/A346xpIb/uuqhSg+tCvYNsP5f11QW+z9VZ3vSX8YIfzTApjjuGH63w==} + engines: {node: '>=14'} + dev: false + /time-zone@1.0.0: resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} engines: {node: '>=4'} @@ -21372,6 +21439,10 @@ packages: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true + /ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + dev: false + /tsconfig-paths@3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: @@ -21785,7 +21856,6 @@ packages: /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true /unixify@1.0.0: resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==}