on master help sign in
devex: polyfill process and buffer for browser
commit7634ae30637bdae1f5795423321c65d141d3b932 authortomholford <tomholford@users.noreply.github.com> dateMon 24 Oct 2022, 14:56 (4 years ago) parent3791b8a
5 files changed+174−52
index.html+5 package-lock.json+108−3 package.json+1 vite.config.ts+59−48 window.d.ts+1−1
index.html+5
@@ -51,6 +51,11 @@
5151 border: 0;
5252 }
5353 </style>
54+ <script type="module">
55+ import { Buffer } from "buffer";
56+ window.global = window;
57+ window.Buffer = Buffer;
58+ </script>
5459 </head>
5560 <body>
5661 <div id="root"></div>
package-lock.json+108−3
@@ -86,6 +86,7 @@
8686 },
8787 "devDependencies": {
8888 "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
89+ "@rollup/plugin-inject": "^5.0.2",
8990 "@testing-library/jest-dom": "^5.14.1",
9091 "@testing-library/react": "^12.0.0",
9192 "@types/async-retry": "^1.4.3",
@@ -1938,6 +1939,62 @@
19381939 "version": "2.3.1",
19391940 "license": "0BSD"
19401941 },
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+ },
19411998 "node_modules/@rollup/pluginutils": {
19421999 "version": "4.2.1",
19432000 "dev": true,
@@ -2645,6 +2702,12 @@
26452702 "@types/chai": "*"
26462703 }
26472704 },
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+ },
26482711 "node_modules/@types/file-saver": {
26492712 "version": "2.0.4",
26502713 "dev": true,
@@ -9905,8 +9968,9 @@
99059968 "license": "ISC"
99069969 },
99079970 "node_modules/picomatch": {
9908− "version": "2.3.0",
9909− "license": "MIT",
9971+ "version": "2.3.1",
9972+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
9973+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
99109974 "engines": {
99119975 "node": ">=8.6"
99129976 },
@@ -14775,6 +14839,39 @@
1477514839 }
1477614840 }
1477714841 },
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+ },
1477814875 "@rollup/pluginutils": {
1477914876 "version": "4.2.1",
1478014877 "dev": true,
@@ -15214,6 +15311,12 @@
1521415311 "@types/chai": "*"
1521515312 }
1521615313 },
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+ },
1521715320 "@types/file-saver": {
1521815321 "version": "2.0.4",
1521915322 "dev": true
@@ -20307,7 +20410,9 @@
2030720410 "dev": true
2030820411 },
2030920412 "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=="
2031120416 },
2031220417 "pidtree": {
2031320418 "version": "0.3.1",
package.json+1
@@ -92,6 +92,7 @@
9292 },
9393 "devDependencies": {
9494 "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
95+ "@rollup/plugin-inject": "^5.0.2",
9596 "@testing-library/jest-dom": "^5.14.1",
9697 "@testing-library/react": "^12.0.0",
9798 "@types/async-retry": "^1.4.3",
vite.config.ts+59−48
@@ -1,5 +1,6 @@
11import { defineConfig } from 'vite'
22import GlobalPolyFill from "@esbuild-plugins/node-globals-polyfill";
3+import inject from '@rollup/plugin-inject'
34import react from '@vitejs/plugin-react'
45import svgr from 'vite-plugin-svgr';
56import { comlink } from 'vite-plugin-comlink'
@@ -7,55 +8,65 @@ import { resolve } from 'path';
78import basicSsl from '@vitejs/plugin-basic-ssl'
89
910// https://vitejs.dev/config/
10−export default defineConfig({
11− server: {
12− port: 3000,
13− https: true,
14− },
15− plugins: [basicSsl(), comlink(), svgr(), react(),],
16− build: {
17− outDir: 'build',
18− },
19− optimizeDeps: {
20− esbuildOptions: {
11+export default defineConfig(({ mode }) => {
12+ return {
13+ server: {
14+ port: 3000,
15+ https: true,
16+ },
17+ plugins: [basicSsl(), comlink(), svgr(), react(),],
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({
43+ outDir: 'build',
44+ },
45+ mode === 'development' ? { global: {} } : {}
46+ ),
47+ optimizeDeps: {
48+ esbuildOptions: {
2149 define: {
22− global: "globalThis",
50+ global: 'globalThis',
2351 },
2452 plugins: [
25− GlobalPolyFill({
26− process: true,
27− buffer: true,
28− }),
29− ],
53+ GlobalPolyFill({
54+ process: true,
55+ buffer: true,
56+ }),
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,
3064 },
31− },
32− resolve: {
33− alias: [
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− },
56− define: {
57− // https://github.com/origamitower/folktale/issues/229
58− "process.env.FOLKTALE_DOCS": false,
59− "process.env.FOLKTALE_ASSERTIONS": false,
60− },
61−})
65+ mode === 'production' ? {
66+ rollupOptions: {
67+ plugins: [inject({ Buffer: ['buffer', 'Buffer'] })],
68+ },
69+ } : {}
70+ )
71+ };
72+});
window.d.ts+1−1
@@ -2,7 +2,7 @@ import Buffer from 'buffer';
22
33declare global {
44 interface Window {
5− buffer: Buffer
5+ Buffer: Buffer
66 }
77}
88