zappar-xr / zappar-react-three-fiber

Our SDK for the 3D rendering platform React-Three-Fiber.
MIT License
60 stars 9 forks source link

None of the React Three Fiber examples are running locally. #44

Closed johnsontayler closed 2 years ago

johnsontayler commented 2 years ago

Describe the bug None of the React Three Fiber examples are running locally. This is the console error when starting the Instant Tracking Cube:

Screen Shot 2022-03-17 at 2 15 22 PM

And in VS Code, the terminal is stuck at this output: "Files successfully emitted, waiting for typecheck results..."

link to repo: https://github.com/johnsontayler/test-zappar-r3f

It builds without errors though...

To Reproduce Steps to reproduce the behavior:

  1. yarn install
  2. yarn start
  3. open local host and click to proceed to localhost (unsafe)
  4. See error in console

Screenshots

Screen Shot 2022-03-17 at 2 16 51 PM

Desktop (please complete the following information):

nyan-left commented 2 years ago

Hi @johnsontayler ,

Could you please confirm if this build runs for you: https://zappar-xr.github.io/react-three-example-instant-tracking-cube/ ?

It may be worth a try updating the dependencies to the following: three - 137 ( alongside typings for it) zappar-r3f - 1.0.11 r3f - 7.0.26

I'm off for the day, tomorrow morning shall investigate further and patch up the examples if needed :)

johnsontayler commented 2 years ago

hi @nyan-left

Correct that build for Instant Tracking Cube doesn't run for me: https://github.com/zappar-xr/react-three-example-instant-tracking-cube/

i get the same errors I mentioned above.

When I update the dependencies to the versions you have here, I get these same errors:

Screen Shot 2022-03-17 at 2 55 37 PM
johnsontayler commented 2 years ago

@nyan-left , for tomorrow!

I've updated the repo with a semi working tracking cube.

I changed to the below packages, which cleared most of those Three JS errors, and got the camera and cube displaying properly. "@react-three/drei": "8.16.7", "@react-three/fiber": "7.0.07", "three": "0.131.1", "@types/three": "0.131.1", "@zappar/zappar-react-three-fiber": "1.0.11",

However, there is still a compiling error:

Failed to compile.
./node_modules/three-stdlib/objects/Lensflare.js
Attempted import error: 'FramebufferTexture' is not exported from 'three'.

and console error:

Uncaught ReferenceError: process is not defined
    at Object.4043 (<anonymous>:2:13168)
    at r (<anonymous>:2:306599)
    at Object.8048 (<anonymous>:2:9496)
    at r (<anonymous>:2:306599)
    at Object.8641 (<anonymous>:2:1379)
    at r (<anonymous>:2:306599)
    at <anonymous>:2:315627
    at <anonymous>:2:324225
    at <anonymous>:2:324229
    at HTMLIFrameElement.e.onload (index.js:1:1)

The repo I'm working on is updated: https://github.com/johnsontayler/test-zappar-r3f

nyan-left commented 2 years ago

Thanks for the extra info @johnsontayler,

I've cloned a fresh copy of the repo you're having issues with, and it seems to be working without issues across multiple machines.

The project is building as expected on Github Actions/Pages as well. Action run: https://github.com/zappar-xr/react-three-example-instant-tracking-cube/runs/3793358937?check_suite_focus=true Hosted pages url: https://zappar-xr.github.io/react-three-example-instant-tracking-cube/

This is leading me to believe that this is an environmental issue.

I can confirm that your forked repository does indeed give me the same process issue though. I think that's just a mismatch between drei and three ( npm does warn about peer deps ).

Would you mind sharing some extra bits of info?

Node version:

$ node -v

Npm version:

$  npm -v

A list of globally installed modules:

$ npm list -g 
nyan-left commented 2 years ago

It may be worth a try running just vanilla r3f+cra to see if you get similar errors. Try either:

A fresh CRA project, integrated with r3f:

npx create-react-app my-app --template typescript
cd my-app
npm install three @react-three/fiber

Then follow the instructions on https://docs.pmnd.rs/react-three-fiber/getting-started/introduction to set up a "hello world" scene.

Alternatively, Clone a starter such as https://github.com/kevinomyonga/R3F-CRA-Starter , install and try to start it.

Hopefully, this narrows things down a little! :)

nyan-left commented 2 years ago

Update: Using yarn instead of npm I was able to produce a similar issue. Investigating now.

johnsontayler commented 2 years ago

hi @nyan-left ,

Thanks for getting back to me.

I don't have any issues when starting up a project using React + R3F + Three Js. It's when I sub in the Zappar elements that I get package problems.

More info from me!

Node version: v16.10.0

Npm version: 6.14.8

A list of globally installed modules:

/usr/local/Cellar/node/16.10.0/lib
├─┬ @zappar/zapworks-cli@1.0.0
│ ├─┬ @zappar/imagetraining@2.0.0
│ │ └─┬ jimp@0.16.1
│ │   ├─┬ @babel/runtime@7.17.7
│ │   │ └── regenerator-runtime@0.13.9 deduped
│ │   ├─┬ @jimp/custom@0.16.1
│ │   │ ├── @babel/runtime@7.17.7 deduped
│ │   │ └─┬ @jimp/core@0.16.1
│ │   │   ├── @babel/runtime@7.17.7 deduped
│ │   │   ├─┬ @jimp/utils@0.16.1
│ │   │   │ ├── @babel/runtime@7.17.7 deduped
│ │   │   │ └── regenerator-runtime@0.13.9 deduped
│ │   │   ├── any-base@1.1.0
│ │   │   ├── buffer@5.7.1 deduped
│ │   │   ├── exif-parser@0.1.12
│ │   │   ├── file-type@9.0.0
│ │   │   ├─┬ load-bmfont@1.4.1
│ │   │   │ ├── buffer-equal@0.0.1
│ │   │   │ ├── mime@1.6.0
│ │   │   │ ├── parse-bmfont-ascii@1.0.6
│ │   │   │ ├── parse-bmfont-binary@1.0.6
│ │   │   │ ├─┬ parse-bmfont-xml@1.1.4
│ │   │   │ │ ├── xml-parse-from-string@1.0.1
│ │   │   │ │ └─┬ xml2js@0.4.23
│ │   │   │ │   ├── sax@1.2.4
│ │   │   │ │   └── xmlbuilder@11.0.1
│ │   │   │ ├── phin@2.9.3 deduped
│ │   │   │ ├─┬ xhr@2.6.0
│ │   │   │ │ ├─┬ global@4.4.0
│ │   │   │ │ │ ├─┬ min-document@2.19.0
│ │   │   │ │ │ │ └── dom-walk@0.1.2
│ │   │   │ │ │ └── process@0.11.10
│ │   │   │ │ ├── is-function@1.0.2
│ │   │   │ │ ├── parse-headers@2.0.5
│ │   │   │ │ └── xtend@4.0.2 deduped
│ │   │   │ └── xtend@4.0.2
│ │   │   ├─┬ mkdirp@0.5.5
│ │   │   │ └── minimist@1.2.5
│ │   │   ├── phin@2.9.3
│ │   │   ├─┬ pixelmatch@4.0.2
│ │   │   │ └── pngjs@3.4.0 deduped
│ │   │   └── tinycolor2@1.4.2
│ │   ├─┬ @jimp/plugins@0.16.1
│ │   │ ├── @babel/runtime@7.17.7 deduped
│ │   │ ├─┬ @jimp/plugin-blit@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-blur@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-circle@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-color@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ ├── @jimp/utils@0.16.1 deduped
│ │   │ │ └── tinycolor2@1.4.2 deduped
│ │   │ ├─┬ @jimp/plugin-contain@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-cover@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-crop@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-displace@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-dither@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-fisheye@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-flip@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-gaussian@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-invert@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-mask@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-normalize@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-print@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ ├── @jimp/utils@0.16.1 deduped
│ │   │ │ └── load-bmfont@1.4.1 deduped
│ │   │ ├─┬ @jimp/plugin-resize@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-rotate@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-scale@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-shadow@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ ├─┬ @jimp/plugin-threshold@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └── @jimp/utils@0.16.1 deduped
│ │   │ └── timm@1.7.1
│ │   ├─┬ @jimp/types@0.16.1
│ │   │ ├── @babel/runtime@7.17.7 deduped
│ │   │ ├─┬ @jimp/bmp@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ ├── @jimp/utils@0.16.1 deduped
│ │   │ │ └── bmp-js@0.1.0
│ │   │ ├─┬ @jimp/gif@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ ├── @jimp/utils@0.16.1 deduped
│ │   │ │ ├─┬ gifwrap@0.9.3
│ │   │ │ │ ├── image-q@1.1.1
│ │   │ │ │ └── omggif@1.0.10 deduped
│ │   │ │ └── omggif@1.0.10
│ │   │ ├─┬ @jimp/jpeg@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ ├── @jimp/utils@0.16.1 deduped
│ │   │ │ └── jpeg-js@0.4.2
│ │   │ ├─┬ @jimp/png@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ ├── @jimp/utils@0.16.1 deduped
│ │   │ │ └── pngjs@3.4.0
│ │   │ ├─┬ @jimp/tiff@0.16.1
│ │   │ │ ├── @babel/runtime@7.17.7 deduped
│ │   │ │ └─┬ utif@2.0.1
│ │   │ │   └── pako@1.0.11 deduped
│ │   │ └── timm@1.7.1 deduped
│ │   └── regenerator-runtime@0.13.9
│ ├─┬ @zappar/zw-api-client@1.0.2
│ │ ├─┬ @openid/appauth@1.3.1
│ │ │ ├── @types/base64-js@1.3.0
│ │ │ ├─┬ @types/jquery@3.5.14
│ │ │ │ └── @types/sizzle@2.3.3
│ │ │ ├── base64-js@1.5.1
│ │ │ ├── follow-redirects@1.14.9
│ │ │ ├─┬ form-data@4.0.0
│ │ │ │ ├── asynckit@0.4.0 deduped
│ │ │ │ ├── combined-stream@1.0.8 deduped
│ │ │ │ └── mime-types@2.1.35 deduped
│ │ │ └── opener@1.5.2
│ │ ├─┬ form-data@3.0.1
│ │ │ ├── asynckit@0.4.0
│ │ │ ├─┬ combined-stream@1.0.8
│ │ │ │ └── delayed-stream@1.0.0
│ │ │ └─┬ mime-types@2.1.35
│ │ │   └── mime-db@1.52.0
│ │ ├─┬ got@11.8.3
│ │ │ ├── @sindresorhus/is@4.6.0
│ │ │ ├─┬ @szmarczak/http-timer@4.0.6
│ │ │ │ └── defer-to-connect@2.0.1
│ │ │ ├─┬ @types/cacheable-request@6.0.2
│ │ │ │ ├── @types/http-cache-semantics@4.0.1
│ │ │ │ ├─┬ @types/keyv@3.1.3
│ │ │ │ │ └── @types/node@17.0.21 deduped
│ │ │ │ ├── @types/node@17.0.21 deduped
│ │ │ │ └── @types/responselike@1.0.0 deduped
│ │ │ ├─┬ @types/responselike@1.0.0
│ │ │ │ └── @types/node@17.0.21 deduped
│ │ │ ├── cacheable-lookup@5.0.4
│ │ │ ├─┬ cacheable-request@7.0.2
│ │ │ │ ├─┬ clone-response@1.0.2
│ │ │ │ │ └── mimic-response@1.0.1
│ │ │ │ ├── get-stream@5.2.0 deduped
│ │ │ │ ├── http-cache-semantics@4.1.0
│ │ │ │ ├─┬ keyv@4.1.1
│ │ │ │ │ └── json-buffer@3.0.1
│ │ │ │ ├── lowercase-keys@2.0.0 deduped
│ │ │ │ ├── normalize-url@6.1.0
│ │ │ │ └── responselike@2.0.0 deduped
│ │ │ ├─┬ decompress-response@6.0.0
│ │ │ │ └── mimic-response@3.1.0
│ │ │ ├─┬ http2-wrapper@1.0.3
│ │ │ │ ├── quick-lru@5.1.1
│ │ │ │ └── resolve-alpn@1.2.1
│ │ │ ├── lowercase-keys@2.0.0
│ │ │ ├── p-cancelable@2.1.1
│ │ │ └─┬ responselike@2.0.0
│ │ │   └── lowercase-keys@2.0.0 deduped
│ │ └── node-fetch@2.6.7 deduped
│ ├─┬ archiver@5.3.0
│ │ ├─┬ archiver-utils@2.1.0
│ │ │ ├─┬ glob@7.2.0
│ │ │ │ ├── fs.realpath@1.0.0
│ │ │ │ ├─┬ inflight@1.0.6
│ │ │ │ │ ├── once@1.4.0 deduped
│ │ │ │ │ └── wrappy@1.0.2
│ │ │ │ ├── inherits@2.0.4 deduped
│ │ │ │ ├── minimatch@3.1.2 deduped
│ │ │ │ ├─┬ once@1.4.0
│ │ │ │ │ └── wrappy@1.0.2 deduped
│ │ │ │ └── path-is-absolute@1.0.1
│ │ │ ├── graceful-fs@4.2.9 deduped
│ │ │ ├─┬ lazystream@1.0.1
│ │ │ │ └─┬ readable-stream@2.3.7
│ │ │ │   ├── core-util-is@1.0.3 deduped
│ │ │ │   ├── inherits@2.0.4 deduped
│ │ │ │   ├── isarray@1.0.0 deduped
│ │ │ │   ├── process-nextick-args@2.0.1 deduped
│ │ │ │   ├── safe-buffer@5.1.2 deduped
│ │ │ │   ├── string_decoder@1.1.1 deduped
│ │ │ │   └── util-deprecate@1.0.2 deduped
│ │ │ ├── lodash.defaults@4.2.0
│ │ │ ├── lodash.difference@4.5.0
│ │ │ ├── lodash.flatten@4.4.0
│ │ │ ├── lodash.isplainobject@4.0.6
│ │ │ ├── lodash.union@4.6.0
│ │ │ ├── normalize-path@3.0.0
│ │ │ └─┬ readable-stream@2.3.7
│ │ │   ├── core-util-is@1.0.3 deduped
│ │ │   ├── inherits@2.0.4 deduped
│ │ │   ├── isarray@1.0.0 deduped
│ │ │   ├── process-nextick-args@2.0.1 deduped
│ │ │   ├── safe-buffer@5.1.2 deduped
│ │ │   ├── string_decoder@1.1.1 deduped
│ │ │   └── util-deprecate@1.0.2 deduped
│ │ ├── async@3.2.3
│ │ ├── buffer-crc32@0.2.13
│ │ ├─┬ readable-stream@3.6.0
│ │ │ ├── inherits@2.0.4
│ │ │ ├─┬ string_decoder@1.1.1
│ │ │ │ └── safe-buffer@5.1.2 deduped
│ │ │ └── util-deprecate@1.0.2
│ │ ├─┬ readdir-glob@1.1.1
│ │ │ └─┬ minimatch@3.1.2
│ │ │   └─┬ brace-expansion@1.1.11
│ │ │     ├── balanced-match@1.0.2
│ │ │     └── concat-map@0.0.1
│ │ ├─┬ tar-stream@2.2.0
│ │ │ ├─┬ bl@4.1.0
│ │ │ │ ├─┬ buffer@5.7.1
│ │ │ │ │ ├── base64-js@1.5.1 deduped
│ │ │ │ │ └── ieee754@1.2.1
│ │ │ │ ├── inherits@2.0.4 deduped
│ │ │ │ └── readable-stream@3.6.0 deduped
│ │ │ ├─┬ end-of-stream@1.4.4
│ │ │ │ └── once@1.4.0 deduped
│ │ │ ├── fs-constants@1.0.0
│ │ │ ├── inherits@2.0.4 deduped
│ │ │ └── readable-stream@3.6.0 deduped
│ │ └─┬ zip-stream@4.1.0
│ │   ├── archiver-utils@2.1.0 deduped
│ │   ├─┬ compress-commons@4.1.1
│ │   │ ├── buffer-crc32@0.2.13 deduped
│ │   │ ├─┬ crc32-stream@4.0.2
│ │   │ │ ├─┬ crc-32@1.2.1
│ │   │ │ │ ├── exit-on-epipe@1.0.1
│ │   │ │ │ └── printj@1.3.1
│ │   │ │ └── readable-stream@3.6.0 deduped
│ │   │ ├── normalize-path@3.0.0 deduped
│ │   │ └── readable-stream@3.6.0 deduped
│ │   └── readable-stream@3.6.0 deduped
│ ├── arg@5.0.1
│ ├─┬ chalk@4.1.2
│ │ ├─┬ ansi-styles@4.3.0
│ │ │ └─┬ color-convert@2.0.1
│ │ │   └── color-name@1.1.4
│ │ └─┬ supports-color@7.2.0
│ │   └── has-flag@4.0.0
│ ├─┬ cli-progress@3.10.0
│ │ └─┬ string-width@4.2.3
│ │   ├── emoji-regex@8.0.0
│ │   ├── is-fullwidth-code-point@3.0.0
│ │   └── strip-ansi@6.0.1 deduped
│ ├─┬ configstore@5.0.1
│ │ ├─┬ dot-prop@5.3.0
│ │ │ └── is-obj@2.0.0
│ │ ├── graceful-fs@4.2.9
│ │ ├─┬ make-dir@3.1.0
│ │ │ └── semver@6.3.0
│ │ ├─┬ unique-string@2.0.0
│ │ │ └── crypto-random-string@2.0.0
│ │ ├─┬ write-file-atomic@3.0.3
│ │ │ ├── imurmurhash@0.1.4
│ │ │ ├── is-typedarray@1.0.0
│ │ │ ├── signal-exit@3.0.7
│ │ │ └─┬ typedarray-to-buffer@3.1.5
│ │ │   └── is-typedarray@1.0.0 deduped
│ │ └── xdg-basedir@4.0.0
│ ├─┬ debug@4.3.3
│ │ └── ms@2.1.2
│ ├─┬ del@6.0.0
│ │ ├─┬ globby@11.1.0
│ │ │ ├── array-union@2.1.0
│ │ │ ├─┬ dir-glob@3.0.1
│ │ │ │ └── path-type@4.0.0
│ │ │ ├─┬ fast-glob@3.2.11
│ │ │ │ ├── @nodelib/fs.stat@2.0.5
│ │ │ │ ├─┬ @nodelib/fs.walk@1.2.8
│ │ │ │ │ ├─┬ @nodelib/fs.scandir@2.1.5
│ │ │ │ │ │ ├── @nodelib/fs.stat@2.0.5 deduped
│ │ │ │ │ │ └─┬ run-parallel@1.2.0
│ │ │ │ │ │   └── queue-microtask@1.2.3
│ │ │ │ │ └─┬ fastq@1.13.0
│ │ │ │ │   └── reusify@1.0.4
│ │ │ │ ├─┬ glob-parent@5.1.2
│ │ │ │ │ └── is-glob@4.0.3 deduped
│ │ │ │ ├── merge2@1.4.1 deduped
│ │ │ │ └─┬ micromatch@4.0.4
│ │ │ │   ├─┬ braces@3.0.2
│ │ │ │   │ └─┬ fill-range@7.0.1
│ │ │ │   │   └─┬ to-regex-range@5.0.1
│ │ │ │   │     └── is-number@7.0.0
│ │ │ │   └── picomatch@2.3.1
│ │ │ ├── ignore@5.2.0
│ │ │ ├── merge2@1.4.1
│ │ │ └── slash@3.0.0 deduped
│ │ ├── graceful-fs@4.2.9 deduped
│ │ ├─┬ is-glob@4.0.3
│ │ │ └── is-extglob@2.1.1
│ │ ├── is-path-cwd@2.2.0
│ │ ├── is-path-inside@3.0.3
│ │ ├─┬ p-map@4.0.0
│ │ │ └─┬ aggregate-error@3.1.0
│ │ │   ├── clean-stack@2.2.0
│ │ │   └── indent-string@4.0.0
│ │ ├─┬ rimraf@3.0.2
│ │ │ └── glob@7.2.0 deduped
│ │ └── slash@3.0.0
│ ├── events@3.3.0
│ ├─┬ extract-zip@2.0.1
│ │ ├─┬ @types/yauzl@2.9.2
│ │ │ └── @types/node@17.0.21
│ │ ├── debug@4.3.3 deduped
│ │ ├─┬ get-stream@5.2.0
│ │ │ └─┬ pump@3.0.0
│ │ │   ├── end-of-stream@1.4.4 deduped
│ │ │   └── once@1.4.0 deduped
│ │ └─┬ yauzl@2.10.0
│ │   ├── buffer-crc32@0.2.13 deduped
│ │   └─┬ fd-slicer@1.1.0
│ │     └── pend@1.2.0
│ ├─┬ fs-extra@10.0.1
│ │ ├── graceful-fs@4.2.9 deduped
│ │ ├─┬ jsonfile@6.1.0
│ │ │ ├── graceful-fs@4.2.9 deduped
│ │ │ └── universalify@2.0.0 deduped
│ │ └── universalify@2.0.0
│ ├─┬ inquirer@7.3.3
│ │ ├─┬ ansi-escapes@4.3.2
│ │ │ └── type-fest@0.21.3
│ │ ├── chalk@4.1.2 deduped
│ │ ├─┬ cli-cursor@3.1.0
│ │ │ └─┬ restore-cursor@3.1.0
│ │ │   ├─┬ onetime@5.1.2
│ │ │   │ └── mimic-fn@2.1.0
│ │ │   └── signal-exit@3.0.7 deduped
│ │ ├── cli-width@3.0.0
│ │ ├─┬ external-editor@3.1.0
│ │ │ ├── chardet@0.7.0
│ │ │ ├─┬ iconv-lite@0.4.24
│ │ │ │ └── safer-buffer@2.1.2
│ │ │ └─┬ tmp@0.0.33
│ │ │   └── os-tmpdir@1.0.2
│ │ ├─┬ figures@3.2.0
│ │ │ └── escape-string-regexp@1.0.5
│ │ ├── lodash@4.17.21
│ │ ├── mute-stream@0.0.8
│ │ ├── run-async@2.4.1
│ │ ├─┬ rxjs@6.6.7
│ │ │ └── tslib@1.14.1
│ │ ├── string-width@4.2.3 deduped
│ │ ├─┬ strip-ansi@6.0.1
│ │ │ └── ansi-regex@5.0.1
│ │ └── through@2.3.8
│ ├── is-directory@0.3.1
│ ├─┬ jszip@3.7.1
│ │ ├─┬ lie@3.3.0
│ │ │ └── immediate@3.0.6
│ │ ├── pako@1.0.11
│ │ ├─┬ readable-stream@2.3.7
│ │ │ ├── core-util-is@1.0.3
│ │ │ ├── inherits@2.0.4 deduped
│ │ │ ├── isarray@1.0.0
│ │ │ ├── process-nextick-args@2.0.1
│ │ │ ├── safe-buffer@5.1.2
│ │ │ ├── string_decoder@1.1.1 deduped
│ │ │ └── util-deprecate@1.0.2 deduped
│ │ └── set-immediate-shim@1.0.1
│ ├─┬ local-web-server@4.2.1
│ │ ├─┬ lws@3.1.0
│ │ │ ├─┬ ansi-escape-sequences@5.1.2
│ │ │ │ └── array-back@4.0.2 deduped
│ │ │ ├── array-back@4.0.2
│ │ │ ├── byte-size@6.2.0
│ │ │ ├─┬ command-line-args@5.2.1
│ │ │ │ ├── array-back@3.1.0
│ │ │ │ ├─┬ find-replace@3.0.0
│ │ │ │ │ └── array-back@3.1.0
│ │ │ │ ├── lodash.camelcase@4.3.0
│ │ │ │ └── typical@4.0.0
│ │ │ ├─┬ command-line-usage@6.1.1
│ │ │ │ ├── array-back@4.0.2 deduped
│ │ │ │ ├─┬ chalk@2.4.2
│ │ │ │ │ ├─┬ ansi-styles@3.2.1
│ │ │ │ │ │ └─┬ color-convert@1.9.3
│ │ │ │ │ │   └── color-name@1.1.3
│ │ │ │ │ ├── escape-string-regexp@1.0.5 deduped
│ │ │ │ │ └─┬ supports-color@5.5.0
│ │ │ │ │   └── has-flag@3.0.0
│ │ │ │ ├─┬ table-layout@1.0.2
│ │ │ │ │ ├── array-back@4.0.2 deduped
│ │ │ │ │ ├── deep-extend@0.6.0
│ │ │ │ │ ├── typical@5.2.0
│ │ │ │ │ └─┬ wordwrapjs@4.0.1
│ │ │ │ │   ├── reduce-flatten@2.0.0
│ │ │ │ │   └── typical@5.2.0
│ │ │ │ └── typical@5.2.0
│ │ │ ├── create-mixin@3.0.0
│ │ │ ├─┬ koa@2.13.4
│ │ │ │ ├─┬ accepts@1.3.8
│ │ │ │ │ ├── mime-types@2.1.35 deduped
│ │ │ │ │ └── negotiator@0.6.3
│ │ │ │ ├─┬ cache-content-type@1.0.1
│ │ │ │ │ ├── mime-types@2.1.35 deduped
│ │ │ │ │ └── ylru@1.3.2
│ │ │ │ ├─┬ content-disposition@0.5.4
│ │ │ │ │ └── safe-buffer@5.2.1
│ │ │ │ ├── content-type@1.0.4
│ │ │ │ ├─┬ cookies@0.8.0
│ │ │ │ │ ├── depd@2.0.0 deduped
│ │ │ │ │ └─┬ keygrip@1.1.0
│ │ │ │ │   └── tsscmp@1.0.6
│ │ │ │ ├── debug@4.3.3 deduped
│ │ │ │ ├── delegates@1.0.0
│ │ │ │ ├── depd@2.0.0
│ │ │ │ ├── destroy@1.1.1
│ │ │ │ ├── encodeurl@1.0.2
│ │ │ │ ├── escape-html@1.0.3
│ │ │ │ ├── fresh@0.5.2
│ │ │ │ ├─┬ http-assert@1.5.0
│ │ │ │ │ ├── deep-equal@1.0.1
│ │ │ │ │ └── http-errors@1.8.1 deduped
│ │ │ │ ├─┬ http-errors@1.8.1
│ │ │ │ │ ├── depd@1.1.2
│ │ │ │ │ ├── inherits@2.0.4 deduped
│ │ │ │ │ ├── setprototypeof@1.2.0
│ │ │ │ │ ├── statuses@1.5.0 deduped
│ │ │ │ │ └── toidentifier@1.0.1
│ │ │ │ ├─┬ is-generator-function@1.0.10
│ │ │ │ │ └─┬ has-tostringtag@1.0.0
│ │ │ │ │   └── has-symbols@1.0.3
│ │ │ │ ├── koa-compose@4.1.0
│ │ │ │ ├─┬ koa-convert@2.0.0
│ │ │ │ │ ├── co@4.6.0
│ │ │ │ │ └── koa-compose@4.1.0 deduped
│ │ │ │ ├─┬ on-finished@2.4.1
│ │ │ │ │ └── ee-first@1.1.1
│ │ │ │ ├── only@0.0.2
│ │ │ │ ├── parseurl@1.3.3
│ │ │ │ ├── statuses@1.5.0
│ │ │ │ ├─┬ type-is@1.6.18
│ │ │ │ │ ├── media-typer@0.3.0
│ │ │ │ │ └── mime-types@2.1.35 deduped
│ │ │ │ └── vary@1.1.2
│ │ │ ├─┬ load-module@3.0.0
│ │ │ │ └── array-back@4.0.2 deduped
│ │ │ ├── lodash.assignwith@4.2.0
│ │ │ ├── node-version-matches@2.0.1 deduped
│ │ │ ├─┬ open@7.4.2
│ │ │ │ ├── is-docker@2.2.1
│ │ │ │ └─┬ is-wsl@2.2.0
│ │ │ │   └── is-docker@2.2.1 deduped
│ │ │ ├── qrcode-terminal@0.12.0 deduped
│ │ │ ├── reduce-flatten@3.0.1
│ │ │ ├── typical@6.0.1
│ │ │ └── walk-back@4.0.0
│ │ ├─┬ lws-basic-auth@2.0.0
│ │ │ └─┬ basic-auth@2.0.1
│ │ │   └── safe-buffer@5.1.2 deduped
│ │ ├─┬ lws-blacklist@3.0.0
│ │ │ ├── array-back@4.0.2 deduped
│ │ │ └── path-to-regexp@6.2.0
│ │ ├─┬ lws-body-parser@2.0.0
│ │ │ └─┬ koa-bodyparser@4.3.0
│ │ │   ├─┬ co-body@6.1.0
│ │ │   │ ├── inflation@2.0.0
│ │ │   │ ├─┬ qs@6.10.3
│ │ │   │ │ └─┬ side-channel@1.0.4
│ │ │   │ │   ├─┬ call-bind@1.0.2
│ │ │   │ │   │ ├── function-bind@1.1.1
│ │ │   │ │   │ └── get-intrinsic@1.1.1 deduped
│ │ │   │ │   ├─┬ get-intrinsic@1.1.1
│ │ │   │ │   │ ├── function-bind@1.1.1 deduped
│ │ │   │ │   │ ├─┬ has@1.0.3
│ │ │   │ │   │ │ └── function-bind@1.1.1 deduped
│ │ │   │ │   │ └── has-symbols@1.0.3 deduped
│ │ │   │ │   └── object-inspect@1.12.0
│ │ │   │ ├─┬ raw-body@2.5.1
│ │ │   │ │ ├── bytes@3.1.2 deduped
│ │ │   │ │ ├─┬ http-errors@2.0.0
│ │ │   │ │ │ ├── depd@2.0.0 deduped
│ │ │   │ │ │ ├── inherits@2.0.4 deduped
│ │ │   │ │ │ ├── setprototypeof@1.2.0 deduped
│ │ │   │ │ │ ├── statuses@2.0.1
│ │ │   │ │ │ └── toidentifier@1.0.1 deduped
│ │ │   │ │ ├── iconv-lite@0.4.24 deduped
│ │ │   │ │ └── unpipe@1.0.0
│ │ │   │ └── type-is@1.6.18 deduped
│ │ │   └── copy-to@2.0.1
│ │ ├─┬ lws-compress@2.0.0
│ │ │ └─┬ koa-compress@3.1.0
│ │ │   ├── bytes@3.1.2
│ │ │   ├─┬ compressible@2.0.18
│ │ │   │ └── mime-db@1.52.0 deduped
│ │ │   ├── koa-is-json@1.0.0
│ │ │   └── statuses@1.5.0 deduped
│ │ ├─┬ lws-conditional-get@2.0.0
│ │ │ ├── koa-conditional-get@2.0.0
│ │ │ └─┬ koa-etag@3.0.0
│ │ │   ├── etag@1.8.1
│ │ │   └─┬ mz@2.7.0
│ │ │     ├── any-promise@1.3.0
│ │ │     ├── object-assign@4.1.1
│ │ │     └─┬ thenify-all@1.6.0
│ │ │       └─┬ thenify@3.3.1
│ │ │         └── any-promise@1.3.0 deduped
│ │ ├─┬ lws-cors@3.1.1
│ │ │ └─┬ @koa/cors@3.2.0
│ │ │   └── vary@1.1.2 deduped
│ │ ├─┬ lws-index@2.0.0
│ │ │ └─┬ serve-index-75lb@2.0.1
│ │ │   ├── accepts@1.3.8 deduped
│ │ │   ├── batch@0.6.1
│ │ │   ├─┬ debug@2.6.9
│ │ │   │ └── ms@2.0.0
│ │ │   ├── escape-html@1.0.3 deduped
│ │ │   ├─┬ http-errors@1.6.3
│ │ │   │ ├── depd@1.1.2
│ │ │   │ ├── inherits@2.0.3
│ │ │   │ ├── setprototypeof@1.1.0
│ │ │   │ └── statuses@1.5.0 deduped
│ │ │   ├── mime-types@2.1.35 deduped
│ │ │   └── parseurl@1.3.3 deduped
│ │ ├─┬ lws-json@2.0.0
│ │ │ └─┬ koa-json@2.0.2
│ │ │   ├── koa-is-json@1.0.0 deduped
│ │ │   └─┬ streaming-json-stringify@3.1.0
│ │ │     ├── json-stringify-safe@5.0.1
│ │ │     └─┬ readable-stream@2.3.7
│ │ │       ├── core-util-is@1.0.3 deduped
│ │ │       ├── inherits@2.0.4 deduped
│ │ │       ├── isarray@1.0.0 deduped
│ │ │       ├── process-nextick-args@2.0.1 deduped
│ │ │       ├── safe-buffer@5.1.2 deduped
│ │ │       ├── string_decoder@1.1.1 deduped
│ │ │       └── util-deprecate@1.0.2 deduped
│ │ ├─┬ lws-log@2.0.0
│ │ │ ├─┬ koa-morgan@1.0.1
│ │ │ │ └─┬ morgan@1.10.0
│ │ │ │   ├── basic-auth@2.0.1 deduped
│ │ │ │   ├─┬ debug@2.6.9
│ │ │ │   │ └── ms@2.0.0
│ │ │ │   ├── depd@2.0.0 deduped
│ │ │ │   ├─┬ on-finished@2.3.0
│ │ │ │   │ └── ee-first@1.1.1 deduped
│ │ │ │   └── on-headers@1.0.2
│ │ │ └─┬ stream-log-stats@3.0.2
│ │ │   ├── ansi-escape-sequences@5.1.2 deduped
│ │ │   ├── byte-size@6.2.0 deduped
│ │ │   ├── common-log-format@1.0.0
│ │ │   ├─┬ JSONStream@1.3.5
│ │ │   │ ├── jsonparse@1.3.1
│ │ │   │ └── through@2.3.8 deduped
│ │ │   ├── lodash.throttle@4.1.1
│ │ │   ├── stream-via@1.0.4
│ │ │   └── table-layout@1.0.2 deduped
│ │ ├── lws-mime@2.0.0
│ │ ├─┬ lws-range@3.0.0
│ │ │ └─┬ koa-range@0.3.0
│ │ │   └── stream-slice@0.1.2
│ │ ├─┬ lws-request-monitor@2.0.0
│ │ │ └── byte-size@6.2.0 deduped
│ │ ├─┬ lws-rewrite@3.1.1
│ │ │ ├── array-back@4.0.2 deduped
│ │ │ ├─┬ http-proxy-agent@4.0.1
│ │ │ │ ├── @tootallnate/once@1.1.2
│ │ │ │ ├─┬ agent-base@6.0.2
│ │ │ │ │ └── debug@4.3.3 deduped
│ │ │ │ └── debug@4.3.3 deduped
│ │ │ ├─┬ https-proxy-agent@5.0.0
│ │ │ │ ├── agent-base@6.0.2 deduped
│ │ │ │ └── debug@4.3.3 deduped
│ │ │ ├─┬ koa-route@3.2.0
│ │ │ │ ├── debug@4.3.3 deduped
│ │ │ │ ├── methods@1.1.2
│ │ │ │ └─┬ path-to-regexp@1.8.0
│ │ │ │   └── isarray@0.0.1
│ │ │ └── path-to-regexp@6.2.0 deduped
│ │ ├─┬ lws-spa@3.0.0
│ │ │ └─┬ koa-send@5.0.1
│ │ │   ├── debug@4.3.3 deduped
│ │ │   ├── http-errors@1.8.1 deduped
│ │ │   └─┬ resolve-path@1.4.0
│ │ │     ├─┬ http-errors@1.6.3
│ │ │     │ ├── depd@1.1.2
│ │ │     │ ├── inherits@2.0.3
│ │ │     │ ├── setprototypeof@1.1.0
│ │ │     │ └── statuses@1.5.0 deduped
│ │ │     └── path-is-absolute@1.0.1 deduped
│ │ ├─┬ lws-static@2.0.0
│ │ │ └─┬ koa-static@5.0.0
│ │ │   ├─┬ debug@3.2.7
│ │ │   │ └── ms@2.1.2 deduped
│ │ │   └── koa-send@5.0.1 deduped
│ │ └─┬ node-version-matches@2.0.1
│ │   └── semver@6.3.0 deduped
│ ├─┬ node-fetch@2.6.7
│ │ └─┬ whatwg-url@5.0.0
│ │   ├── tr46@0.0.3
│ │   └── webidl-conversions@3.0.1
│ ├─┬ promise-fs@2.1.1
│ │ └── @octetstream/promisify@2.0.2
│ ├── qrcode-terminal@0.12.0
│ ├─┬ selfsigned@1.10.14
│ │ └── node-forge@0.10.0
│ ├─┬ tmp@0.2.1
│ │ └── rimraf@3.0.2 deduped
│ ├─┬ unused-filename@2.1.0
│ │ ├── modify-filename@1.1.0
│ │ └── path-exists@4.0.0
│ └─┬ update-notifier@5.1.0
│   ├─┬ boxen@5.1.2
│   │ ├─┬ ansi-align@3.0.1
│   │ │ └── string-width@4.2.3 deduped
│   │ ├── camelcase@6.3.0
│   │ ├── chalk@4.1.2 deduped
│   │ ├── cli-boxes@2.2.1
│   │ ├── string-width@4.2.3 deduped
│   │ ├── type-fest@0.20.2
│   │ ├─┬ widest-line@3.1.0
│   │ │ └── string-width@4.2.3 deduped
│   │ └─┬ wrap-ansi@7.0.0
│   │   ├── ansi-styles@4.3.0 deduped
│   │   ├── string-width@4.2.3 deduped
│   │   └── strip-ansi@6.0.1 deduped
│   ├── chalk@4.1.2 deduped
│   ├── configstore@5.0.1 deduped
│   ├── has-yarn@2.1.0
│   ├── import-lazy@2.1.0
│   ├─┬ is-ci@2.0.0
│   │ └── ci-info@2.0.0
│   ├─┬ is-installed-globally@0.4.0
│   │ ├─┬ global-dirs@3.0.0
│   │ │ └── ini@2.0.0
│   │ └── is-path-inside@3.0.3 deduped
│   ├── is-npm@5.0.0
│   ├── is-yarn-global@0.3.0
│   ├─┬ latest-version@5.1.0
│   │ └─┬ package-json@6.5.0
│   │   ├─┬ got@9.6.0
│   │   │ ├── @sindresorhus/is@0.14.0
│   │   │ ├─┬ @szmarczak/http-timer@1.1.2
│   │   │ │ └── defer-to-connect@1.1.3
│   │   │ ├─┬ cacheable-request@6.1.0
│   │   │ │ ├── clone-response@1.0.2 deduped
│   │   │ │ ├─┬ get-stream@5.2.0
│   │   │ │ │ └── pump@3.0.0 deduped
│   │   │ │ ├── http-cache-semantics@4.1.0 deduped
│   │   │ │ ├─┬ keyv@3.1.0
│   │   │ │ │ └── json-buffer@3.0.0
│   │   │ │ ├── lowercase-keys@2.0.0
│   │   │ │ ├── normalize-url@4.5.1
│   │   │ │ └─┬ responselike@1.0.2
│   │   │ │   └── lowercase-keys@1.0.1 deduped
│   │   │ ├─┬ decompress-response@3.3.0
│   │   │ │ └── mimic-response@1.0.1 deduped
│   │   │ ├── duplexer3@0.1.4
│   │   │ ├─┬ get-stream@4.1.0
│   │   │ │ └── pump@3.0.0 deduped
│   │   │ ├── lowercase-keys@1.0.1
│   │   │ ├── mimic-response@1.0.1 deduped
│   │   │ ├── p-cancelable@1.1.0
│   │   │ ├── to-readable-stream@1.0.0
│   │   │ └─┬ url-parse-lax@3.0.0
│   │   │   └── prepend-http@2.0.0
│   │   ├─┬ registry-auth-token@4.2.1
│   │   │ └─┬ rc@1.2.8
│   │   │   ├── deep-extend@0.6.0 deduped
│   │   │   ├── ini@1.3.8
│   │   │   ├── minimist@1.2.5 deduped
│   │   │   └── strip-json-comments@2.0.1
│   │   ├─┬ registry-url@5.1.0
│   │   │ └── rc@1.2.8 deduped
│   │   └── semver@6.3.0 deduped
│   ├─┬ pupa@2.1.1
│   │ └── escape-goat@2.1.1
│   ├─┬ semver@7.3.5
│   │ └─┬ lru-cache@6.0.0
│   │   └── yallist@4.0.0
│   ├─┬ semver-diff@3.1.1
│   │ └── semver@6.3.0 deduped
│   └── xdg-basedir@4.0.0 deduped
└─┬ browser-sync@2.27.5
  ├─┬ browser-sync-client@2.27.5
  │ ├── etag@1.8.1 deduped
  │ ├── fresh@0.5.2 deduped
  │ ├── mitt@1.2.0
  │ └─┬ rxjs@5.5.12
  │   └── symbol-observable@1.0.1
  ├─┬ browser-sync-ui@2.27.5
  │ ├── async-each-series@0.1.1
  │ ├── connect-history-api-fallback@1.6.0 deduped
  │ ├── immutable@3.8.2 deduped
  │ ├── server-destroy@1.0.1 deduped
  │ ├─┬ socket.io-client@2.4.0
  │ │ ├── backo2@1.0.2
  │ │ ├── component-bind@1.0.0
  │ │ ├── component-emitter@1.3.0
  │ │ ├─┬ debug@3.1.0
  │ │ │ └── ms@2.0.0 deduped
  │ │ ├─┬ engine.io-client@3.5.2
  │ │ │ ├── component-emitter@1.3.0 deduped
  │ │ │ ├── component-inherit@0.0.3
  │ │ │ ├── debug@3.1.0 deduped
  │ │ │ ├── engine.io-parser@2.2.1 deduped
  │ │ │ ├── has-cors@1.1.0
  │ │ │ ├── indexof@0.0.1 deduped
  │ │ │ ├── parseqs@0.0.6 deduped
  │ │ │ ├── parseuri@0.0.6 deduped
  │ │ │ ├── ws@7.4.6 deduped
  │ │ │ ├── xmlhttprequest-ssl@1.6.3
  │ │ │ └── yeast@0.1.2
  │ │ ├── has-binary2@1.0.3 deduped
  │ │ ├── indexof@0.0.1
  │ │ ├── parseqs@0.0.6
  │ │ ├── parseuri@0.0.6
  │ │ ├─┬ socket.io-parser@3.3.2
  │ │ │ ├── component-emitter@1.3.0 deduped
  │ │ │ ├── debug@3.1.0 deduped
  │ │ │ └── isarray@2.0.1 deduped
  │ │ └── to-array@0.1.4
  │ └─┬ stream-throttle@0.1.3
  │   ├── commander@2.20.3
  │   └── limiter@1.1.5
  ├── bs-recipes@1.3.4
  ├── bs-snippet-injector@2.0.1
  ├─┬ chokidar@3.5.2
  │ ├─┬ anymatch@3.1.2
  │ │ ├── normalize-path@3.0.0 deduped
  │ │ └── picomatch@2.3.0 deduped
  │ ├─┬ braces@3.0.2
  │ │ └─┬ fill-range@7.0.1
  │ │   └─┬ to-regex-range@5.0.1
  │ │     └── is-number@7.0.0
  │ ├── fsevents@2.3.2
  │ ├─┬ glob-parent@5.1.2
  │ │ └── is-glob@4.0.3 deduped
  │ ├─┬ is-binary-path@2.1.0
  │ │ └── binary-extensions@2.2.0
  │ ├─┬ is-glob@4.0.3
  │ │ └── is-extglob@2.1.1
  │ ├── normalize-path@3.0.0
  │ └─┬ readdirp@3.6.0
  │   └── picomatch@2.3.0 deduped
  ├─┬ connect@3.6.6
  │ ├─┬ debug@2.6.9
  │ │ └── ms@2.0.0 deduped
  │ ├─┬ finalhandler@1.1.0
  │ │ ├─┬ debug@2.6.9
  │ │ │ └── ms@2.0.0 deduped
  │ │ ├── encodeurl@1.0.2 deduped
  │ │ ├── escape-html@1.0.3 deduped
  │ │ ├── on-finished@2.3.0 deduped
  │ │ ├── parseurl@1.3.3 deduped
  │ │ ├── statuses@1.3.1
  │ │ └── unpipe@1.0.0 deduped
  │ ├── parseurl@1.3.3
  │ └── utils-merge@1.0.1
  ├── connect-history-api-fallback@1.6.0
  ├── dev-ip@1.0.1
  ├─┬ easy-extender@2.3.4
  │ └── lodash@4.17.21
  ├─┬ eazy-logger@3.1.0
  │ └─┬ tfunk@4.0.0
  │   ├─┬ chalk@1.1.3
  │   │ ├── ansi-styles@2.2.1
  │   │ ├── escape-string-regexp@1.0.5
  │   │ ├─┬ has-ansi@2.0.0
  │   │ │ └── ansi-regex@2.1.1
  │   │ ├─┬ strip-ansi@3.0.1
  │   │ │ └── ansi-regex@2.1.1 deduped
  │   │ └── supports-color@2.0.0
  │   └── dlv@1.1.3
  ├── etag@1.8.1
  ├── fresh@0.5.2
  ├─┬ fs-extra@3.0.1
  │ ├── graceful-fs@4.2.8
  │ ├─┬ jsonfile@3.0.1
  │ │ └── graceful-fs@4.2.8 deduped
  │ └── universalify@0.1.2
  ├─┬ http-proxy@1.18.1
  │ ├── eventemitter3@4.0.7
  │ ├── follow-redirects@1.14.4
  │ └── requires-port@1.0.0
  ├── immutable@3.8.2
  ├─┬ localtunnel@2.0.2
  │ ├─┬ axios@0.21.4
  │ │ └── follow-redirects@1.14.4 deduped
  │ ├─┬ debug@4.3.2
  │ │ └── ms@2.1.2
  │ ├── openurl@1.1.1
  │ └─┬ yargs@17.1.1
  │   ├─┬ cliui@7.0.4
  │   │ ├── string-width@4.2.3 deduped
  │   │ ├─┬ strip-ansi@6.0.1
  │   │ │ └── ansi-regex@5.0.1
  │   │ └─┬ wrap-ansi@7.0.0
  │   │   ├─┬ ansi-styles@4.3.0
  │   │   │ └── color-convert@2.0.1 deduped
  │   │   ├── string-width@4.2.3 deduped
  │   │   └─┬ strip-ansi@6.0.1
  │   │     └── ansi-regex@5.0.1
  │   ├── escalade@3.1.1
  │   ├── get-caller-file@2.0.5 deduped
  │   ├── require-directory@2.1.1 deduped
  │   ├── string-width@4.2.3 deduped
  │   ├── y18n@5.0.8
  │   └── yargs-parser@20.2.9
  ├─┬ micromatch@4.0.4
  │ ├── braces@3.0.2 deduped
  │ └── picomatch@2.3.0
  ├─┬ opn@5.3.0
  │ └── is-wsl@1.1.0
  ├─┬ portscanner@2.1.1
  │ ├── async@1.5.2
  │ └─┬ is-number-like@1.0.8
  │   └── lodash.isfinite@3.3.2
  ├── qs@6.2.3
  ├─┬ raw-body@2.4.1
  │ ├── bytes@3.1.0
  │ ├─┬ http-errors@1.7.3
  │ │ ├── depd@1.1.2 deduped
  │ │ ├── inherits@2.0.4
  │ │ ├── setprototypeof@1.1.1
  │ │ ├── statuses@1.5.0
  │ │ └── toidentifier@1.0.0
  │ ├─┬ iconv-lite@0.4.24
  │ │ └── safer-buffer@2.1.2
  │ └── unpipe@1.0.0
  ├─┬ resp-modifier@6.0.2
  │ ├─┬ debug@2.6.9
  │ │ └── ms@2.0.0 deduped
  │ └─┬ minimatch@3.0.4
  │   └─┬ brace-expansion@1.1.11
  │     ├── balanced-match@1.0.2
  │     └── concat-map@0.0.1
  ├── rx@4.1.0
  ├─┬ send@0.16.2
  │ ├─┬ debug@2.6.9
  │ │ └── ms@2.0.0 deduped
  │ ├── depd@1.1.2
  │ ├── destroy@1.0.4
  │ ├── encodeurl@1.0.2
  │ ├── escape-html@1.0.3
  │ ├── etag@1.8.1 deduped
  │ ├── fresh@0.5.2 deduped
  │ ├─┬ http-errors@1.6.3
  │ │ ├── depd@1.1.2 deduped
  │ │ ├── inherits@2.0.3
  │ │ ├── setprototypeof@1.1.0
  │ │ └── statuses@1.4.0 deduped
  │ ├── mime@1.4.1
  │ ├── ms@2.0.0
  │ ├─┬ on-finished@2.3.0
  │ │ └── ee-first@1.1.1
  │ ├── range-parser@1.2.1
  │ └── statuses@1.4.0
  ├─┬ serve-index@1.9.1
  │ ├─┬ accepts@1.3.7
  │ │ ├── mime-types@2.1.33 deduped
  │ │ └── negotiator@0.6.2
  │ ├── batch@0.6.1
  │ ├─┬ debug@2.6.9
  │ │ └── ms@2.0.0 deduped
  │ ├── escape-html@1.0.3 deduped
  │ ├─┬ http-errors@1.6.3
  │ │ ├── depd@1.1.2 deduped
  │ │ ├── inherits@2.0.3
  │ │ ├── setprototypeof@1.1.0
  │ │ └── statuses@1.5.0
  │ ├─┬ mime-types@2.1.33
  │ │ └── mime-db@1.50.0
  │ └── parseurl@1.3.3 deduped
  ├─┬ serve-static@1.13.2
  │ ├── encodeurl@1.0.2 deduped
  │ ├── escape-html@1.0.3 deduped
  │ ├── parseurl@1.3.3 deduped
  │ └── send@0.16.2 deduped
  ├── server-destroy@1.0.1
  ├─┬ socket.io@2.4.0
  │ ├─┬ debug@4.1.1
  │ │ └── ms@2.1.3
  │ ├─┬ engine.io@3.5.0
  │ │ ├── accepts@1.3.7 deduped
  │ │ ├── base64id@2.0.0
  │ │ ├── cookie@0.4.1
  │ │ ├─┬ debug@4.1.1
  │ │ │ └── ms@2.1.3
  │ │ ├─┬ engine.io-parser@2.2.1
  │ │ │ ├── after@0.8.2
  │ │ │ ├── arraybuffer.slice@0.0.7
  │ │ │ ├── base64-arraybuffer@0.1.4
  │ │ │ ├── blob@0.0.5
  │ │ │ └── has-binary2@1.0.3 deduped
  │ │ └── ws@7.4.6
  │ ├─┬ has-binary2@1.0.3
  │ │ └── isarray@2.0.1
  │ ├── socket.io-adapter@1.1.2
  │ ├── socket.io-client@2.4.0 deduped
  │ └─┬ socket.io-parser@3.4.1
  │   ├── component-emitter@1.2.1
  │   ├── debug@4.1.1 deduped
  │   └── isarray@2.0.1 deduped
  ├── ua-parser-js@0.7.28
  └─┬ yargs@15.4.1
    ├─┬ cliui@6.0.0
    │ ├── string-width@4.2.3 deduped
    │ ├─┬ strip-ansi@6.0.1
    │ │ └── ansi-regex@5.0.1
    │ └─┬ wrap-ansi@6.2.0
    │   ├─┬ ansi-styles@4.3.0
    │   │ └─┬ color-convert@2.0.1
    │   │   └── color-name@1.1.4
    │   ├── string-width@4.2.3 deduped
    │   └── strip-ansi@6.0.1 deduped
    ├── decamelize@1.2.0
    ├─┬ find-up@4.1.0
    │ ├─┬ locate-path@5.0.0
    │ │ └─┬ p-locate@4.1.0
    │ │   └─┬ p-limit@2.3.0
    │ │     └── p-try@2.2.0
    │ └── path-exists@4.0.0
    ├── get-caller-file@2.0.5
    ├── require-directory@2.1.1
    ├── require-main-filename@2.0.0
    ├── set-blocking@2.0.0
    ├─┬ string-width@4.2.3
    │ ├── emoji-regex@8.0.0
    │ ├── is-fullwidth-code-point@3.0.0
    │ └─┬ strip-ansi@6.0.1
    │   └── ansi-regex@5.0.1
    ├── which-module@2.0.0
    ├── y18n@4.0.3
    └─┬ yargs-parser@18.1.3
      ├── camelcase@5.3.1
      └── decamelize@1.2.0 deduped
AndrewJSchoen commented 2 years ago

I can confirm that when trying to run the examples locally I also receive the following compile error:

Attempted import error: 'FramebufferTexture' is not exported from 'three' (imported as 'FramebufferTexture').

My steps were:

  1. npx create-react-app uar-app --template @zappar/r3f-instant-tracking
  2. cd uar-app
  3. npm start
johnsontayler commented 2 years ago

yes that's compiling error...is there a fix?

johnsontayler commented 2 years ago

here's another example of error when adding zappar/three-fiber https://codesandbox.io/s/elegant-swanson-307hxp?file=/src/App.js:306-422

it's using:

    "@react-three/drei": "8.10.3",
    "@react-three/fiber": "7.0.26",
    "three": "0.137.5"
    "@zappar/zappar-react-three-fiber": "1.0.11",

and an error only occurs when I import zappar into the App.js file:

ModuleNotFoundError
Could not find module in path: 'loader-utils/lib/getOptions' relative to '/node_modules/loader-utils/lib/index.js'

to recreate issue:

1. Go to Code Sandbox link above
2. Go to App.js and uncomment out line 6, importing Zappar
johnsontayler commented 2 years ago

I need to be able to use the most updated versions of R3F (7.0.26) and Drei, which don't seem to be compatible with Zappar-R3F at the moment

johnsontayler commented 2 years ago

@nyan-left here is the error in more detail when pairing zappar with the most updated react-three-fiber package (forked from the codepen example above)

ERROR in ./node_modules/@zappar/zappar-react-three-fiber/node_modules/@react-three/drei/core/Stats.js 3:0-57
Module not found: Error: Package path ./examples/js/libs/stats.min is not exported from package /Users/taylerjohnson/code/r3f-shoe/node_modules/three (see exports field in /Users/taylerjohnson/code/r3f-shoe/node_modules/three/package.json)
 @ ./node_modules/@zappar/zappar-react-three-fiber/node_modules/@react-three/drei/index.js 37:0-40 37:0-40
 @ ./node_modules/@zappar/zappar-react-three-fiber/lib/Components/util/PlacementUI.js 45:13-41
 @ ./node_modules/@zappar/zappar-react-three-fiber/lib/Components/trackers/InstantTrackerGroup.js 68:36-66
 @ ./node_modules/@zappar/zappar-react-three-fiber/lib/index.js 91:28-80
 @ ./src/App.js 14:0-116
 @ ./src/index.js 7:0-24 9:38-41

package dependencies:

  "dependencies": {
    "@react-three/drei": "8.10.3",
    "@react-three/fiber": "7.0.26",
    "@zappar/zappar-react-three-fiber": "1.0.11",
    "three": "0.137.5",

to recreate:

  1. clone this repo: https://github.com/johnsontayler/r3f-shoe
  2. yarn install
  3. yarn start

** if you remove zappar import in App.js line 6, the error goes away.

nyan-left commented 2 years ago

Thanks for the info, I shall update the issue once a fix is released 🙂

johnsontayler commented 2 years ago

Thank you @nyan-left -- do you have a general timeline of when that could be? I'm looking to use Zappar for project but this is a roadblock... any estimate would be so very helpful!

nyan-left commented 2 years ago

Apologies for the delay, I'm currently OOO untill Wednesday, shall provide an estimate once back in.

In the meantime, could you perhaps try one of the "bootstrap" projects we have on GitHub?

johnsontayler commented 2 years ago

@nyan-left same issues on all the R3F bootstrap projects on Github.

Okay re OOO...

These are the warnings when downloading packages.

warning " > @react-three/fiber@7.0.26" has incorrect peer dependency "three@>=0.133".
warning " > @zappar/zappar-react-three-fiber@1.0.11" has incorrect peer dependency "@react-three/fiber@6.0.10 - 7.0.7".
warning "@zappar/zappar-react-three-fiber > @react-three/drei > three-stdlib@2.8.8" has incorrect peer dependency "three@>=0.137.0".
warning "@zappar/zappar-react-three-fiber > @zappar/zappar-threejs > @zappar/zappar > @zappar/zappar-cv > worker-loader@3.0.5" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".

And these are the errors when compiling

Attempted import error: 'FramebufferTexture' is not exported from 'three' (imported as 'FramebufferTexture').

ERROR in ./node_modules/three-stdlib/objects/Lensflare.js 16:24-42
export 'FramebufferTexture' (imported as 'FramebufferTexture') was not found in 'three' 
ketz commented 2 years ago

Hey @johnsontayler. Thanks for the info. In Deim’s absence I’ve escalated this internally to try and get you an answer as soon as possible.

Stay tuned!

johnsontayler commented 2 years ago

Thank you @ketz!

cgauld commented 2 years ago

Hi! I'm CTO here at Zappar - thought I'd just give you a quick update in @nyan-left's absence. We're working hard to support the latest version of @react-three/fiber but we're delayed by a regression with the latest three.js on iOS 15.4. We're looking for ways to work around the issue so should hopefully be able to fix this soon.

johnsontayler commented 2 years ago

Thank you for the update @cgauld !

CodyJasonBennett commented 2 years ago

R3F isn't tied to a specific threejs version, you can stay on older versions if you cannot upgrade.

three-stdlib is a dependency of Drei with a peer-dependency on three which is no good here since three doesn't use semver.

You can try overriding the installed version to something before the DataTexture => FrameBufferTexture refactor:

// package.json
{
  "overrides": {
    "three-stdlib": "2.8.0"
  }
}
nyan-left commented 2 years ago

This should now be fixed with the latest release of @zappar/zappar-react-three. The example/bootstrap projects have been updated alongside this release :)

Apologies for the wait!

cgauld commented 2 years ago

Nice - thanks @nyan-left. And thank you @CodyJasonBennett! We've submitted a bug report to the three-stdlib project over here https://github.com/pmndrs/three-stdlib/issues/143. It looks like they've major-version-bumped for changes in peer dependencies in the past so it was maybe an oversight in this case. Unfortunately I'm not sure it's possible for them to retroactively address it but your overrides suggestion is a great workaround :-)