diff --git a/.ci/chromatic.sh b/.ci/chromatic.sh index 68d8b623..6b74f1c0 100755 --- a/.ci/chromatic.sh +++ b/.ci/chromatic.sh @@ -47,3 +47,80 @@ yarn dlx chromatic \ && exit 0 exit 1 +# the end. remainder of file is for debugging and notes + +# When debugging, you probably just want to run a build, so uncomment this: +# yarn run storybook-build \ +# --output-dir out-storybook \ +# && exit 0 + +# NOTE +# TEMPORARY WORKAROUND for upstream bugs amidst the ecosystem migration to webpack 5 +# [Commenting here since this is the file that could have a CI failure due to this.] +# +# The relevant code is actually in `splitgraph.com/package.json`, but I can't +# leave comments in JS files, and this deserves an explanation... +# +# "@storybook/react/webpack": "5.51.1" +# +# We are telling @storybook/react to resolve webpack to 5.51.1, which means it +# will _provide_ webpack@5.51.1 as a peerDependency to the buggy package +# below it, `react-docgen-typescript-plugin`, which we want to force to +# accept webpack 5 instead of webpack 4 while both are within its range of >= 4. +# +# -- PROBLEM: +# Problem is `react-docgen-typescript-plugin` peerDependency webpack @ >= 4 +# We're using webpack 5 for storybook compilation, but it's experimental, and +# Storybook still uses webpack 4 for its "manager interface." So we need to +# keep a copy of both webpack 4 and webpack 5. +# +# webpack 5 is _not_ hoisted (it's in docs) +# webpack 4 _is_ hoisted (it goes to root) +# +# There is a bug (IMO) in `react-docgen-typescript-plugin`, where it tries to +# import directly from the resolved location of webpack 4, even though it's +# attempting to import files that only exist in webpack 5. The maintainer is +# not going to drop webpack 4 until the next major release. +# +# n.b: This problem will only reproduce when `splitgraph/splitgraph.com` repo +# is running in "isolation", i.e. during CI or by a developer outside the monorepo. +# +# To reproduce locally, you can use ACT or just clone the repo to a temp dir. +# For details on using ACT, see README.md +# +# -- FIX: +# yarn resolutions to the rescue! We want to force `react-docgen-typescript-plugin` +# to resolve webpack 4 to webpack 5, but _without_ overriding resolutions of other +# packages that depend on webpack 4 (like this alleged manager code). +# +# But since it's a peer dependency, the package has no say in what version satisfies +# its range of >= 4. So setting a resolution for that package wouldn't do anything. +# +# Instead, we want to tell the _parent_ of the buggy package to _provide_ it with +# webpack 5 as a peerDependency to satisfy the range of `webpack >= 4`. +# +# In this case, the parent is `@storybook/react`, and it's _providing_ `webpack` +# so we need to use `@storybook/react/webpack` as the key in the `resolutions` field. + +# Note: This will likely also change the version of webpack provided to any other +# direct dependencies of `@storybook/react` that have a webpack peer dependency +# of any version. This hasn't caused problems yet. +# +#[More targeted approach would be to `yarn patch` that buggy +# repository and change its peerDependencies to 5. ] +# +# DEBUGGING / INVESTIGATING IF HACK IS STILL NECESSARY +# +# Eventually this bug will be fixed and this hack will be unnecessary. +# Here are some helpful commands for investigating (but first, reproduce the error) +# +# # find the relevant peer-requirement. Need 5 digit pHash, e.g. p387a7 +# yarn explain peer-requirements | grep webpack | grep docgen +# +# # explain that specific ID +# yarn explain peer-requirements p387a7 +# +# # set the resolution for webpack to pin at 5.51.1 +# # (we will want 5.51.1 to match whatever version of webpack is installed) +# yarn set resolution @storybook/react-docgen-typescript-plugin@*/webpack 5.51.1 +# diff --git a/.github/workflows/build_and_deploy_preview.yml b/.github/workflows/build_and_deploy_preview.yml index 32286e94..25b7d242 100644 --- a/.github/workflows/build_and_deploy_preview.yml +++ b/.github/workflows/build_and_deploy_preview.yml @@ -54,7 +54,7 @@ jobs: # Typecheck - uses: actions/cache@v1 with: - path: ${github.workspace} + path: ${github.workspace}/dist key: typecache - name: Typecheck id: typecheck diff --git a/docs/.storybook/main.js b/docs/.storybook/main.js index ed3e60c8..3efa1727 100644 --- a/docs/.storybook/main.js +++ b/docs/.storybook/main.js @@ -1,7 +1,30 @@ +const TSCONFIG_PATH = require("path").join( + __dirname, + "..", + process.env.TSCONFIG_PATH ?? `tsconfig.json` +); + +console.log("TSCONFIG_PATH:", TSCONFIG_PATH); + module.exports = { core: { builder: "webpack5", }, + // https://storybook.js.org/docs/react/configure/typescript + typescript: { + check: false, + checkOptions: {}, + reactDocgen: "react-docgen-typescript", + + // https://github.com/hipstersmoothie/react-docgen-typescript-plugin + // https://github.com/styleguidist/react-docgen-typescript#parseroptions + // https://github.com/hipstersmoothie/react-docgen-typescript-plugin#debugging + reactDocgenTypescriptOptions: { + shouldExtractLiteralValuesFromEnum: true, + propFilter: (prop) => + prop.parent ? !/node_modules/.test(prop.parent.fileName) : true, + }, + }, reactOptions: { fastRefresh: true, }, diff --git a/docs/package.json b/docs/package.json index 6373dd4b..323172ab 100644 --- a/docs/package.json +++ b/docs/package.json @@ -76,7 +76,7 @@ "@types/styled-system": "5.1.10", "babel-loader": "8.2.2", "now": "18.0.0", - "webpack": "5.28.0" + "webpack": "5.51.1" }, "peerDependencies": { "@emotion/react": "*", diff --git a/package.json b/package.json index 645269f8..741ee780 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,9 @@ "templaters", "lib" ], + "resolutions": { + "@storybook/react/webpack": "5.51.1" + }, "scripts": { "typecheck-and-build": "yarn run typecheck && yarn run build", "build": "yarn workspace @splitgraph/docs run build", diff --git a/yarn-public-workspace.lock b/yarn-public-workspace.lock index ad22353b..c19c915a 100644 --- a/yarn-public-workspace.lock +++ b/yarn-public-workspace.lock @@ -2648,7 +2648,7 @@ __metadata: serve: 11.3.2 storybook-addon-designs: 6.0.1 unist-util-find: 1.0.2 - webpack: 5.28.0 + webpack: 5.51.1 peerDependencies: "@emotion/react": "*" "@emotion/styled": "*" @@ -4141,13 +4141,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^0.0.46": - version: 0.0.46 - resolution: "@types/estree@npm:0.0.46" - checksum: 69fcf647706f5b6a475ec2f9aacf73b40866f577eef6c6f33de95cc3b4897381c2a8257646f13cd5d91fffc5debfe6289b6864ba29ad349ae68703f8b993c9f6 - languageName: node - linkType: hard - "@types/glob@npm:*, @types/glob@npm:^7.1.1": version: 7.1.4 resolution: "@types/glob@npm:7.1.4" @@ -4506,16 +4499,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/ast@npm:1.11.0" - dependencies: - "@webassemblyjs/helper-numbers": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - checksum: fc26bf2c831c472535eb45b21931c2118d3037cd132b4837accf41a3a2e3501a5a894389b79fd80106af936c574be164a1af42219e66237de96a617690aecfcf - languageName: node - linkType: hard - "@webassemblyjs/ast@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/ast@npm:1.11.1" @@ -4537,13 +4520,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.0" - checksum: ae591c9e961f14510ea599c6aa08b9a728cc23e7ba19bd8383bf23b695035c5bbeb5f25dba34ad2fba441eb39beebe0d1aa6e83ead4a19a78120449ab3a56ef0 - languageName: node - linkType: hard - "@webassemblyjs/floating-point-hex-parser@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" @@ -4558,13 +4534,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.0" - checksum: 6a2c533780e63d79df33a2f455d0bcfbbbd0543da4f5e845eb6f7f7d68debf124a6e3c5d50888cc2eb4c251d90f77e6203498fff3177e8eb03e5175bae37a956 - languageName: node - linkType: hard - "@webassemblyjs/helper-api-error@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" @@ -4579,13 +4548,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.0" - checksum: 9303e0eaa4a1ab63fa1c8be95b6777499440946c4213846672cca4bb4657674d6c4a05cdfdfc8c0b22e885c830abdbcd9132ca1b869f3f41c244aacec3a4013e - languageName: node - linkType: hard - "@webassemblyjs/helper-buffer@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" @@ -4625,17 +4587,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.0" - dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.0 - "@webassemblyjs/helper-api-error": 1.11.0 - "@xtuc/long": 4.2.2 - checksum: 58c29d37f9d6c5eaa1feb6af7ab7282cb35d1c9eaa95406c64942507ac11de1a975082fc825556e73b9ed5cdecb8aa22020559028ae45d5b3d42a7f2a6773881 - languageName: node - linkType: hard - "@webassemblyjs/helper-numbers@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" @@ -4647,13 +4598,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.0" - checksum: 5bcd67b430c6b39a25fe8904cc2f832ebfef7e2da17a84326553e2b69dde7aa6bc486380f4fa0d01f17f966fff93ac3b6523ffad79e4b8661eb6ddf7f9182e88 - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" @@ -4668,18 +4612,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.0" - dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - checksum: ad4dd37c2b88ad2f7b53e5e9c04a1ce75eace4fd05b117a5459ebf9b8bd4f417ec6837c8b448481da95cad14d48413b937072146fee79796d1c86ec0cc32339d - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-section@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" @@ -4704,15 +4636,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/ieee754@npm:1.11.0" - dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 7f282b7ab0754d89ad42f224de34622309e67a4869fc016b51fc8931ce0443a7bab289d5a59c683a9197fdaa60849e26cd68d2b36492af28b9d89139fda3c6c3 - languageName: node - linkType: hard - "@webassemblyjs/ieee754@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/ieee754@npm:1.11.1" @@ -4731,15 +4654,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/leb128@npm:1.11.0" - dependencies: - "@xtuc/long": 4.2.2 - checksum: d101b817361498a92697ddf9432bcde12bb52924d2494fad8bddd79ce6386f0c81275f014905b0342edd61d3b2a5b97e044b91f023fab9b44b0e00f8f794b888 - languageName: node - linkType: hard - "@webassemblyjs/leb128@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/leb128@npm:1.11.1" @@ -4758,13 +4672,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/utf8@npm:1.11.0" - checksum: 772caa33fe900043a0dcf1cb4a6cc82a3359460a9de1df7dd9aaf736fcade80e678d939ca8e23063eccd17e44c0184769899874fe8d8f787e56318d462dcb83e - languageName: node - linkType: hard - "@webassemblyjs/utf8@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/utf8@npm:1.11.1" @@ -4779,22 +4686,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.0" - dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/helper-wasm-section": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - "@webassemblyjs/wasm-opt": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - "@webassemblyjs/wast-printer": 1.11.0 - checksum: 3d83a925a54270fbc443a9606375b63469fc938e8af0ddd2516c98c2dd52d3113345a9ce1c8c42b524ee1301c45124685377a6dd764b56628cf5563e484fee0f - languageName: node - linkType: hard - "@webassemblyjs/wasm-edit@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" @@ -4827,19 +4718,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.0" - dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/ieee754": 1.11.0 - "@webassemblyjs/leb128": 1.11.0 - "@webassemblyjs/utf8": 1.11.0 - checksum: 3886702e589f8c19a34b7778837e2928da730291d1b19bae4fe2954dd8bf28ae5e1574880346762b788445a096c3b6a94c244d38ef66823a76c8f7a8d989c8e1 - languageName: node - linkType: hard - "@webassemblyjs/wasm-gen@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" @@ -4866,18 +4744,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.0" - dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-buffer": 1.11.0 - "@webassemblyjs/wasm-gen": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - checksum: 8e2757994c07c4534f5f747da54919a37777ec0f97bc6a9a53739d87408346fa1464e1932f66d671091c51e3a983977e31be464568ad6e06762ec2c052eeda0c - languageName: node - linkType: hard - "@webassemblyjs/wasm-opt@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" @@ -4902,20 +4768,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.0" - dependencies: - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/helper-api-error": 1.11.0 - "@webassemblyjs/helper-wasm-bytecode": 1.11.0 - "@webassemblyjs/ieee754": 1.11.0 - "@webassemblyjs/leb128": 1.11.0 - "@webassemblyjs/utf8": 1.11.0 - checksum: 12bfbb25b96630a1e44570cb71db33c368d0b86ccb56d2f80951217f7e072da894eef4512302e2f4155793acd2cf510d36af2b71aac672e94c64752d96cd3e97 - languageName: node - linkType: hard - "@webassemblyjs/wasm-parser@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" @@ -4958,16 +4810,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.11.0": - version: 1.11.0 - resolution: "@webassemblyjs/wast-printer@npm:1.11.0" - dependencies: - "@webassemblyjs/ast": 1.11.0 - "@xtuc/long": 4.2.2 - checksum: 06eafb92cb347400f3a025102ad8f605fab706c8a89b4ecabedfe6d06854370e7f38304fd5b345bafa1c9c5de988318eb69b2252e9c67edacea8709d2e966dca - languageName: node - linkType: hard - "@webassemblyjs/wast-printer@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/wast-printer@npm:1.11.1" @@ -8182,13 +8024,6 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^0.4.0": - version: 0.4.1 - resolution: "es-module-lexer@npm:0.4.1" - checksum: 0c634ce62d3a77b04aa56b9ca2af2b58ff73a834afc76ac6747b25173e97d9050a28451b6ed39b54b84b8498d887ac8bd5bcf2c9aa9ba948ca0aee0acd613618 - languageName: node - linkType: hard - "es-module-lexer@npm:^0.7.1": version: 0.7.1 resolution: "es-module-lexer@npm:0.7.1" @@ -8282,7 +8117,7 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -15512,7 +15347,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": +"source-list-map@npm:^2.0.0": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" checksum: d8d45f29987d00d995ccda308dcc78b710031a9958fdb5d26674d32220c952eb7a8562062638d91896628ae4eef30e1cd112a6a547563dfda0b013024c2a9bf7 @@ -16345,7 +16180,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.0.3, terser-webpack-plugin@npm:^5.1.1, terser-webpack-plugin@npm:^5.1.3": +"terser-webpack-plugin@npm:^5.0.3, terser-webpack-plugin@npm:^5.1.3": version: 5.1.4 resolution: "terser-webpack-plugin@npm:5.1.4" dependencies: @@ -17496,7 +17331,7 @@ typescript@4.2.4: languageName: node linkType: hard -"watchpack@npm:^2.0.0, watchpack@npm:^2.2.0": +"watchpack@npm:^2.2.0": version: 2.2.0 resolution: "watchpack@npm:2.2.0" dependencies: @@ -17611,16 +17446,6 @@ typescript@4.2.4: languageName: node linkType: hard -"webpack-sources@npm:^2.1.1": - version: 2.2.0 - resolution: "webpack-sources@npm:2.2.0" - dependencies: - source-list-map: ^2.0.1 - source-map: ^0.6.1 - checksum: 7c4b797fa90d310872b70469dc04254e35571fb34530280a47b93edbe9cd6b0ffb79cf2b7565f4a18ff5b70315ff245d465ad35f952366cfd93c55d6445e2378 - languageName: node - linkType: hard - "webpack-sources@npm:^3.2.0": version: 3.2.0 resolution: "webpack-sources@npm:3.2.0" @@ -17682,43 +17507,7 @@ typescript@4.2.4: languageName: node linkType: hard -"webpack@npm:5.28.0": - version: 5.28.0 - resolution: "webpack@npm:5.28.0" - dependencies: - "@types/eslint-scope": ^3.7.0 - "@types/estree": ^0.0.46 - "@webassemblyjs/ast": 1.11.0 - "@webassemblyjs/wasm-edit": 1.11.0 - "@webassemblyjs/wasm-parser": 1.11.0 - acorn: ^8.0.4 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.7.0 - es-module-lexer: ^0.4.0 - eslint-scope: ^5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.4 - json-parse-better-errors: ^1.0.2 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.0.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.1.1 - watchpack: ^2.0.0 - webpack-sources: ^2.1.1 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: bb1948e6a2039499284f231b1b71e69414e673cd086e55db118f112a18c4a7979c93b607bea4429fc63034babf2b2d21d2f4ba1ee620f1dda614e485848972e3 - languageName: node - linkType: hard - -"webpack@npm:^5.9.0": +"webpack@npm:5.51.1, webpack@npm:^5.9.0": version: 5.51.1 resolution: "webpack@npm:5.51.1" dependencies: