on master help sign in
devex: polyfill process and buffer for browser
7634ae3tomholford
index.html+5
@@ -51,6 +51,11 @@
51 border: 0;
51 border: 0;
52 }
52 }
53 </style>
53 </style>
54+ <script type="module">
55+ import { Buffer } from "buffer";
56+ window.global = window;
57+ window.Buffer = Buffer;
58+ </script>
54 </head>
59 </head>
55 <body>
60 <body>
56 <div id="root"></div>
61 <div id="root"></div>
package-lock.json+108−3
@@ -86,6 +86,7 @@
86 },
86 },
87 "devDependencies": {
87 "devDependencies": {
88 "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
88 "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
89+ "@rollup/plugin-inject": "^5.0.2",
89 "@testing-library/jest-dom": "^5.14.1",
90 "@testing-library/jest-dom": "^5.14.1",
90 "@testing-library/react": "^12.0.0",
91 "@testing-library/react": "^12.0.0",
91 "@types/async-retry": "^1.4.3",
92 "@types/async-retry": "^1.4.3",
@@ -1938,6 +1939,62 @@
1938 "version": "2.3.1",
1939 "version": "2.3.1",
1939 "license": "0BSD"
1940 "license": "0BSD"
1940 },
1941 },
1942+ "node_modules/@rollup/plugin-inject": {
1943+ "version": "5.0.2",
1944+ "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.2.tgz",
1945+ "integrity": "sha512-zRthPC/sZ2OaQwPh2LvFn0A+3SyMAZR1Vqsp89mWkIuGXKswT8ty1JWj1pf7xdZvft4gHZaCuhdopuiCwjclWg==",
1946+ "dev": true,
1947+ "dependencies": {
1948+ "@rollup/pluginutils": "^5.0.1",
1949+ "estree-walker": "^2.0.2",
1950+ "magic-string": "^0.26.4"
1951+ },
1952+ "engines": {
1953+ "node": ">=14.0.0"
1954+ },
1955+ "peerDependencies": {
1956+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
1957+ },
1958+ "peerDependenciesMeta": {
1959+ "rollup": {
1960+ "optional": true
1961+ }
1962+ }
1963+ },
1964+ "node_modules/@rollup/plugin-inject/node_modules/@rollup/pluginutils": {
1965+ "version": "5.0.2",
1966+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
1967+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
1968+ "dev": true,
1969+ "dependencies": {
1970+ "@types/estree": "^1.0.0",
1971+ "estree-walker": "^2.0.2",
1972+ "picomatch": "^2.3.1"
1973+ },
1974+ "engines": {
1975+ "node": ">=14.0.0"
1976+ },
1977+ "peerDependencies": {
1978+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
1979+ },
1980+ "peerDependenciesMeta": {
1981+ "rollup": {
1982+ "optional": true
1983+ }
1984+ }
1985+ },
1986+ "node_modules/@rollup/plugin-inject/node_modules/magic-string": {
1987+ "version": "0.26.7",
1988+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
1989+ "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
1990+ "dev": true,
1991+ "dependencies": {
1992+ "sourcemap-codec": "^1.4.8"
1993+ },
1994+ "engines": {
1995+ "node": ">=12"
1996+ }
1997+ },
1941 "node_modules/@rollup/pluginutils": {
1998 "node_modules/@rollup/pluginutils": {
1942 "version": "4.2.1",
1999 "version": "4.2.1",
1943 "dev": true,
2000 "dev": true,
@@ -2645,6 +2702,12 @@
2645 "@types/chai": "*"
2702 "@types/chai": "*"
2646 }
2703 }
2647 },
2704 },
2705+ "node_modules/@types/estree": {
2706+ "version": "1.0.0",
2707+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
2708+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
2709+ "dev": true
2710+ },
2648 "node_modules/@types/file-saver": {
2711 "node_modules/@types/file-saver": {
2649 "version": "2.0.4",
2712 "version": "2.0.4",
2650 "dev": true,
2713 "dev": true,
@@ -9905,8 +9968,9 @@
9905 "license": "ISC"
9968 "license": "ISC"
9906 },
9969 },
9907 "node_modules/picomatch": {
9970 "node_modules/picomatch": {
9908− "version": "2.3.0",
9971+ "version": "2.3.1",
9909− "license": "MIT",
9972+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
9973+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
9910 "engines": {
9974 "engines": {
9911 "node": ">=8.6"
9975 "node": ">=8.6"
9912 },
9976 },
@@ -14775,6 +14839,39 @@
14775 }
14839 }
14776 }
14840 }
14777 },
14841 },
14842+ "@rollup/plugin-inject": {
14843+ "version": "5.0.2",
14844+ "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.2.tgz",
14845+ "integrity": "sha512-zRthPC/sZ2OaQwPh2LvFn0A+3SyMAZR1Vqsp89mWkIuGXKswT8ty1JWj1pf7xdZvft4gHZaCuhdopuiCwjclWg==",
14846+ "dev": true,
14847+ "requires": {
14848+ "@rollup/pluginutils": "^5.0.1",
14849+ "estree-walker": "^2.0.2",
14850+ "magic-string": "^0.26.4"
14851+ },
14852+ "dependencies": {
14853+ "@rollup/pluginutils": {
14854+ "version": "5.0.2",
14855+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
14856+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
14857+ "dev": true,
14858+ "requires": {
14859+ "@types/estree": "^1.0.0",
14860+ "estree-walker": "^2.0.2",
14861+ "picomatch": "^2.3.1"
14862+ }
14863+ },
14864+ "magic-string": {
14865+ "version": "0.26.7",
14866+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
14867+ "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
14868+ "dev": true,
14869+ "requires": {
14870+ "sourcemap-codec": "^1.4.8"
14871+ }
14872+ }
14873+ }
14874+ },
14778 "@rollup/pluginutils": {
14875 "@rollup/pluginutils": {
14779 "version": "4.2.1",
14876 "version": "4.2.1",
14780 "dev": true,
14877 "dev": true,
@@ -15214,6 +15311,12 @@
15214 "@types/chai": "*"
15311 "@types/chai": "*"
15215 }
15312 }
15216 },
15313 },
15314+ "@types/estree": {
15315+ "version": "1.0.0",
15316+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
15317+ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
15318+ "dev": true
15319+ },
15217 "@types/file-saver": {
15320 "@types/file-saver": {
15218 "version": "2.0.4",
15321 "version": "2.0.4",
15219 "dev": true
15322 "dev": true
@@ -20307,7 +20410,9 @@
20307 "dev": true
20410 "dev": true
20308 },
20411 },
20309 "picomatch": {
20412 "picomatch": {
20310− "version": "2.3.0"
20413+ "version": "2.3.1",
20414+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
20415+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
20311 },
20416 },
20312 "pidtree": {
20417 "pidtree": {
20313 "version": "0.3.1",
20418 "version": "0.3.1",
package.json+1
@@ -92,6 +92,7 @@
92 },
92 },
93 "devDependencies": {
93 "devDependencies": {
94 "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
94 "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
95+ "@rollup/plugin-inject": "^5.0.2",
95 "@testing-library/jest-dom": "^5.14.1",
96 "@testing-library/jest-dom": "^5.14.1",
96 "@testing-library/react": "^12.0.0",
97 "@testing-library/react": "^12.0.0",
97 "@types/async-retry": "^1.4.3",
98 "@types/async-retry": "^1.4.3",
vite.config.ts+59−48
@@ -1,5 +1,6 @@
1import { defineConfig } from 'vite'
1import { defineConfig } from 'vite'
2import GlobalPolyFill from "@esbuild-plugins/node-globals-polyfill";
2import GlobalPolyFill from "@esbuild-plugins/node-globals-polyfill";
3+import inject from '@rollup/plugin-inject'
3import react from '@vitejs/plugin-react'
4import react from '@vitejs/plugin-react'
4import svgr from 'vite-plugin-svgr';
5import svgr from 'vite-plugin-svgr';
5import { comlink } from 'vite-plugin-comlink'
6import { comlink } from 'vite-plugin-comlink'
@@ -7,55 +8,65 @@ import { resolve } from 'path';
7import basicSsl from '@vitejs/plugin-basic-ssl'
8import basicSsl from '@vitejs/plugin-basic-ssl'
8
9
9// https://vitejs.dev/config/
10// https://vitejs.dev/config/
10−export default defineConfig({
11+export default defineConfig(({ mode }) => {
12+ return {
11− server: {
13+ server: {
12− port: 3000,
14+ port: 3000,
13− https: true,
15+ https: true,
14− },
16+ },
15− plugins: [basicSsl(), comlink(), svgr(), react(),],
17+ plugins: [basicSsl(), comlink(), svgr(), react(),],
16− build: {
18+ resolve: {
19+ alias: [
20+ { find: 'buffer', replacement: 'buffer' },
21+ { find: 'process', replacement: 'process/browser' },
22+ { find: 'stream', replacement: 'stream-browserify' },
23+ { find: 'https', replacement: 'agent-base' },
24+ ...[
25+ 'assets',
26+ 'components',
27+ 'form',
28+ 'indigo-react',
29+ 'lib',
30+ 'store',
31+ 'style',
32+ 'views',
33+ 'worker',
34+ ].map(a => ({ find: a, replacement: resolve(__dirname, `src/${a}`)})),
35+ ],
36+ },
37+ worker: {
38+ plugins: [
39+ comlink()
40+ ]
41+ },
42+ build: Object.assign({
17− outDir: 'build',
43+ outDir: 'build',
44+ },
45+ mode === 'development' ? { global: {} } : {}
18− },
46+ ),
19− optimizeDeps: {
47+ optimizeDeps: {
20− esbuildOptions: {
48+ esbuildOptions: {
21 define: {
49 define: {
22− global: "globalThis",
50+ global: 'globalThis',
23 },
51 },
24 plugins: [
52 plugins: [
25− GlobalPolyFill({
53+ GlobalPolyFill({
26− process: true,
54+ process: true,
27− buffer: true,
55+ buffer: true,
28− }),
56+ }),
29− ],
57+ ],
58+ },
59+ },
60+ define: Object.assign({
61+ // https://github.com/origamitower/folktale/issues/229
62+ "process.env.FOLKTALE_DOCS": false,
63+ "process.env.FOLKTALE_ASSERTIONS": false,
30 },
64 },
31− },
65+ mode === 'production' ? {
32− resolve: {
66+ rollupOptions: {
33− alias: [
67+ plugins: [inject({ Buffer: ['buffer', 'Buffer'] })],
34− { find: 'buffer', replacement: 'buffer' },
35− { find: 'process', replacement: 'process/browser' },
36− { find: 'stream', replacement: 'stream-browserify' },
37− { find: 'https', replacement: 'agent-base' },
38− ...[
39− 'assets',
40− 'components',
41− 'form',
42− 'indigo-react',
43− 'lib',
44− 'store',
45− 'style',
46− 'views',
47− 'worker',
48− ].map(a => ({ find: a, replacement: resolve(__dirname, `src/${a}`)})),
49− ],
50− },
51− worker: {
52− plugins: [
53− comlink()
54− ]
55− },
68+ },
56− define: {
69+ } : {}
57− // https://github.com/origamitower/folktale/issues/229
70+ )
58− "process.env.FOLKTALE_DOCS": false,
59− "process.env.FOLKTALE_ASSERTIONS": false,
60− },
71+ };
61−})
72+});
window.d.ts+1−1
@@ -2,7 +2,7 @@ import Buffer from 'buffer';
2
2
3declare global {
3declare global {
4 interface Window {
4 interface Window {
5− buffer: Buffer
5+ Buffer: Buffer
6 }
6 }
7}
7}
8
8