Coder Social home page Coder Social logo

bibliothecadao / realms-react Goto Github PK

View Code? Open in Web Editor NEW
26.0 4.0 16.0 408.14 MB

Atlas by Bibliotheca - The Map of the Lootverse

Home Page: https://atlas.bibliothecadao.xyz

License: MIT License

JavaScript 54.09% TypeScript 45.80% CSS 0.06% Shell 0.01% HTML 0.01% Prolog 0.03%
nextjs react web3 blockchain loot mapbox deck-gl tailwind

realms-react's Introduction

Containing the React Frontends powering the Bibliotheca DAO

build GitHub top language License

Project Overview

Bibliotheca DAO is a permissionless gaming ecosystem that lives in the Lootverse and is built on Starknet. Our primary focus is on Realms, a settling game lays the foundation for an ever expanding on-chain economy.

For a high level overview, visit the Realms Master Scroll (whitepaper).

Quick Links

Note: This repo houses the react frontends for each project listed below. If you're looking for Ethereum/Starknet contracts, visit realms-contracts

Repo Structure

Open in Gitpod

.
├── apps
│   ├── atlas   (nextjs, e2e playwright)
│   ├── briq-app   (nextjs, e2e playwright)
│   └── treasury_page    (CRA, e2e playwright)
├── packages
│   ├── core-lib
│   └── ui-lib     (emotion, storybook)
└── static

The repository is split into three main sections:

Apps

Apps are user-facing sites that typically house gameplay ui. These are the main way users interact with the game. Each App can contain a set of module (for example Atlas contains modules for Crypts and Caverns, Genesis Adventurers, etc).

Atlas + Desiege - Atlas is the Realms world map and primary way people interact with the Realms settling game. All Realms react code lives here. This app also contains Desiege - a standalone game where players choose a faction and collaborate to defend or attack a city's shields

  • README | Vercel | CHANGELOG
  • tech: SSR, tailwind v3, Three.js, Mapbox, Deck.gl, emotion, graphQL, rest, Web3 + StarkNet,

Briq App - A marketing page for the Realms + Briq Wonder building competition (now completed), linking a StarkNet address to a Google form

Treasury Page - A page showing the Bibliotheca DAO treasury assets, including token balances and NFTs (special thanks to @hari, @kalaiy & @neoTINS)

  • README | Vercel
  • tech: Create React AOo, tailwind v3, emotion, rest.

AMM (coming soon)

Marketplace (coming soon)

Apps should not depend on apps, they can depend on packages

Packages

Packages are common libraries that can be included in apps.

packages/core-lib: used by Atlas and Desiege, publishable.

packages/ui-lib: used by Atlas and Desiege, publishable.

Apps can depend on packages, packages can depend on each other.

Shared static assets

static - A dedicated folder at the root level for statuc asstets. If needed static resources like locales, images,... can be shared by using symlinks in the repo.

Folder overview

Detailed folder structure
.
├── apps
│   ├── atlas                 (NextJS SSG app)
│   │   ├── public/
│   │   │   └── shared-assets/   (symlink to global static/assets)
│   │   ├── src/
│   │   ├── CHANGELOG.md         (autogenerated with changesets)
│   │   ├── jest.config.js
│   │   ├── next.config.js
│   │   ├── package.json         (define package workspace:package deps)
│   │   └── tsconfig.json        (define path to packages)
│   │
│   └── desiege                  (NextJS app with api-routes)
│       ├── public/
│       │   ├── shared-assets/   (possible symlink to global assets)
│       │   └── shared-locales/  (possible symlink to global locales)
│       ├── src/
│       │   └── pages/api        (api routes)
│       ├── CHANGELOG.md
│       ├── jest.config.js
│       ├── next.config.js
│       ├── package.json         (define package workspace:package deps)
│       └── tsconfig.json        (define path to packages)
│
├── packages
│   ├── core-lib                 (basic ts libs)
│   │   ├── src/
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   └── tsconfig.json
│   │
│   └── ui-lib                  (basic design-system in react)
│       ├── src/
│       ├── CHANGELOG.md
│       ├── package.json
│       └── tsconfig.json
│
├── static                       (no code: images, json, locales,...)
│   ├── assets
│   └── locales
├── .yarnrc.yml
├── package.json                 (the workspace config)
└── tsconfig.base.json           (base typescript config)

Howto

1. Enable workspace support

Root package.json with workspace directories
{
  "name": "realms-react",
  // Set the directories where your apps, packages will be placed
  "workspaces": ["apps/*", "packages/*"],
  //...
}

The package manager will scan those directories and look for children package.json. Their content is used to define the workspace topology (apps, libs, dependencies...).

2. Create a new package

Create a folder in ./packages/ directory with the name of your package.

Create the package folder
mkdir packages/magnificent-poney
mkdir packages/magnificent-poney/src
cd packages/magnificent-poney

Initialize a package.json with the name of your package.

Rather than typing yarn init, prefer to take the ./packages/ui-lib/package.json as a working example and edit its values.

Example of package.json
{
  "name": "@bibliotheca-dao/magnificent-poney",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "clean": "rimraf --no-glob ./tsconfig.tsbuildinfo",
    "lint": "eslint . --ext .ts,.tsx,.js,.jsx",
    "typecheck": "tsc --project ./tsconfig.json --noEmit",
    "test": "run-s 'test:*'",
    "test:unit": "echo \"No tests yet\"",
    "fix:staged-files": "lint-staged --allow-empty",
    "fix:all-files": "eslint . --ext .ts,.tsx,.js,.jsx --fix",
  },
  "devDependencies": {
    "@testing-library/jest-dom": "5.14.1",
    "@testing-library/react": "12.0.0",
    "@testing-library/react-hooks": "7.0.1",
    "@types/node": "16.4.10",
    "@types/react": "17.0.15",
    "@types/react-dom": "17.0.9",
    "@typescript-eslint/eslint-plugin": "4.29.0",
    "@typescript-eslint/parser": "4.29.0",
    "camelcase": "6.2.0",
    "eslint": "7.32.0",
    "eslint-config-prettier": "8.3.0",
    "eslint-plugin-import": "2.23.4",
    "eslint-plugin-jest": "24.4.0",
    "eslint-plugin-jest-formatting": "3.0.0",
    "eslint-plugin-jsx-a11y": "6.4.1",
    "eslint-plugin-prettier": "3.4.0",
    "eslint-plugin-react": "7.24.0",
    "eslint-plugin-react-hooks": "4.2.0",
    "eslint-plugin-testing-library": "4.10.1",
    "jest": "27.0.6",
    "npm-run-all": "4.1.5",
    "prettier": "2.3.2",
    "react": "17.0.2",
    "react-dom": "17.0.2",
    "rimraf": "3.0.2",
    "shell-quote": "1.7.2",
    "ts-jest": "27.0.4",
    "typescript": "4.3.5",
  },
  "peerDependencies": {
    "react": "^16.14.0 || ^17.0.2",
    "react-dom": "^16.14.0 || ^17.0.2",
  },
}

Note that as we want to be strict with dependencies, the best is to define all you need (eslint, ...) per package. And not in the monorepo root. That might seem weird, but on the long run it's much safer.

3. Using the package in app

Step 3.1: package.json

First add the package to the app package.json. The recommended way is to use the workspace protocol supported by yarn and pnpm.

cd apps/my-app
yarn add @bibliotheca-dao/magnificent-poney@'workspace:*'

Inspiration can be found in apps/atlas/package.json.

package.json
{
  "name": "my-app",
  "dependencies": {
    "@bibliotheca-dao/magnificient-poney": "workspace:*",
  },
}

Step 3.2: In tsconfig.json

Then add a typescript path alias in the app tsconfig.json. This will allow you to import it directly (no build needed)

Inspiration can be found in apps/atlas/tsconfig.json.

Example of tsonfig.json
{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      // regular app aliases
      "@/components/*": ["./components/*"],
      // packages aliases, relative to app_directory/baseUrl
      "@bibliotheca-dao/magnificent-poney/*": [
        "../../../packages/magnificent-poney/src/*",
      ],
      "@bibliotheca-dao/magnificent-poney": [
        "../../../packages/magnificent-poney/src/index",
      ],
    },
  },
}

PS:

  • Don't try to set aliases in the global tsonfig.base.json to keep strict with graph dependencies.
  • The star in @bibliotheca-dao/magnificent-poney/* allows you to import subfolders. If you use a barrel file (index.ts), the alias with star can be removed.

Step 3.3: Next config

Edit your next.config.js and enable the experimental.externalDir option. Feedbacks here.

const nextConfig = {
  experimental: {
    externalDir: true,
  },
};
export default nextConfig;
Using a NextJs version prior to 10.2.0 ?

If you're using an older NextJs version and don't have the experimental flag, you can simply override your webpack config.

const nextConfig = {
  webpack: (config, { defaultLoaders }) => {
    // Will allow transpilation of shared packages through tsonfig paths
    // @link https://github.com/vercel/next.js/pull/13542
    const resolvedBaseUrl = path.resolve(config.context, "../../");
    config.module.rules = [
      ...config.module.rules,
      {
        test: /\.(tsx|ts|js|jsx|json)$/,
        include: [resolvedBaseUrl],
        use: defaultLoaders.babel,
        exclude: (excludePath) => {
          return /node_modules/.test(excludePath);
        },
      },
    ];
    return config;
  },
};

PS: If your shared package make use of scss bundler... A custom webpack configuration will be necessary or use next-transpile-modules, see FAQ below.

Step 3.4: Using the package

The packages are now linked to your app, just import them like regular packages: import { poney } from '@bibliotheca-dao/magnificent-poney'.

4. Publishing

Optional

If you need to share some packages outside of the monorepo, you can publish them to npm or private repositories. An example based on microbundle is present in each package. Versioning and publishing can be done with atlassian/changeset, and it's simple as typing:

$ yarn g:changeset

Follow the instructions... and commit the changeset file. A "Version Packages" P/R will appear after CI checks. When merging it, a github action will publish the packages with resulting semver version and generate CHANGELOGS for you.

PS:

  • Even if you don't need to publish, changeset can maintain an automated changelog for your apps. Nice !
  • To disable automatic publishing of some packages, just set "private": "true" in their package.json.
  • Want to tune the behaviour, see .changeset/config.json.

4. Monorepo essentials

Monorepo scripts

Some convenience scripts can be run in any folder of this repo and will call their counterparts defined in packages and apps.

Name Description
yarn g:changeset Add a changeset
yarn g:typecheck Run typechecks in all apps & packages
yarn g:lint Display linter issues in all apps & packages
yarn g:lint --fix Attempt to run linter auto-fix in all apps & packages
yarn g:lint-styles Display css stylelint issues in all apps & packages
yarn g:lint-styles --fix Attempt to run stylelint auto-fix issues in all apps & packages
yarn g:test Run tests in all apps & packages
yarn g:test-unit Run unit tests in all apps & packages
yarn g:test-e2e Run unit tests in all apps & packages
yarn g:build Clean every caches and dist folders in all apps & packages
yarn g:clean Add a changeset
yarn g:check-dist Ensure build dist files passes es2017 (run g:build first).
yarn deps:check --dep dev Will print what packages can be upgraded globally (see also .ncurc.yml)
yarn deps:update --dep dev Apply possible updates (run yarn install && yarn dedupe after)
yarn check:install Verify if there's no dependency missing in packages
yarn install:playwright Install playwright for e2e
yarn dedupe Built-in yarn deduplication of the lock file

Why using : to prefix scripts names ? It's convenient in yarn 3+, we can call those scripts from any folder in the monorepo. g: is a shortcut for global:. See the complete list in root package.json.

Maintaining deps updated

The global commands yarn deps:check and yarn deps:update will help to maintain the same versions across the entire monorepo. They are based on the excellent npm-check-updates (see options, i.e: yarn check:deps -t minor).

After running yarn deps:update, a yarn install is required. To prevent having duplicates in the yarn.lock, you can run yarn dedupe --check and yarn dedupe to apply deduplication. The duplicate check is enforced in the example github actions.

5. Quality

5.1 Linters

An example of base eslint configuration can be found in ./.eslint.base.js, apps and packages extends it in their own root folder, as an example see ./apps/atlas/.eslintrc.js. Prettier is included in eslint configuration as well as eslint-config-next for nextjs apps.

For code complexity and deeper code analysis sonarjs plugin is activated.

5.2 Hooks / Lint-staged

Check the .husky folder content to see what hooks are enabled. Lint-staged is used to guarantee that lint and prettier are applied automatically on commit and/or pushes.

5.3 Tests

Tests relies on ts-jest with support for typescript path aliases. React-testing-library is enabled whenever react is involved. Configuration lives in the root folder of each apps/packages. As an example see ./apps/atlas/jest.config.js.

5.4 CI

You'll find some example workflows for github action in .github/workflows. By default, they will ensure that

  • You don't have package duplicates.
  • You don't have typecheck errors.
  • You don't have linter / code-style errors.
  • Your test suite is successful.
  • Your apps (nextjs) or packages can be successfully built.
  • Basic size-limit example in atlas.

Each of those steps can be opted-out.

To ensure decent performance, those features are present in the example actions:

  • Caching of packages (node_modules...) - install around 25s

  • Caching of nextjs previous build - built around 20s

  • Triggered when changed using actions paths, ie:

     paths:
       - "apps/atlas/**"
       - "packages/**"
       - "package.json"
       - "tsconfig.base.json"
       - "yarn.lock"
       - ".yarnrc.yml"
       - ".github/workflows/**"
       - ".eslintrc.base.json"
       - ".eslintignore"
    

6. Editor support

6.1 VSCode

The ESLint plugin requires that the eslint.workingDirectories setting is set:

"eslint.workingDirectories": [
    {
        "pattern": "./apps/*/"
    },
    {
        "pattern": "./packages/*/"
    }
],

More info here

7. Deploy

Vercel

Vercel support natively monorepos, see the vercel-monorepo-deploy document.

FAQ

Exact vs semver dependencies

Apps dependencies and devDependencies are pinned to exact versions. Packages deps will use semver compatible ones. For more info about this change see reasoning here and our renovabot.json5 configuration file.

To help keeping deps up-to-date, see the yarn deps:check && yarn deps:update scripts and / or use the renovatebot.

When adding a dep through yarn cli (i.e.: yarn add something), it's possible to set the save-exact behaviour automatically by setting defaultSemverRangePrefix: "" in yarnrc.yml. But this would make the default for packages/* as well. Better to handle yarn add something --exact on per-case basis.

About next-transpile-modules

And why this repo example doesn't use it to support package sharing.

next-transpile-modules is one of the most installed packages for nextjs. It basically allows you to transpile some 3rd party packages present in your node_modules folder. This can be helpful for transpiling packages for legacy browser support (ie11), esm packages (till it lands in nextjs) and handle shared packages.

In this repo, we use next-transpile-modules only for ie11 and esm. The monorepo management is done through tsconfig path. It will work best when external tooling is involved (ts-jest...), but comes with some limitations if your shared package use an scss compiler for example. Note that future version of NextJs might improve monorepo support through experimental.externalDir option.

See here a quick comparison:

Support matrix tsconfig paths next-transpile-module
Typescript
Javascript
NextJs Fast refresh
CSS custom webpack cfg
SCSS custom webpack cfg
CSS-in-JS
ts-jest custom aliases
Vercel monorepo
Yarn 2 PNP
Webpack5
Publishable (npm) ❌ (ntm relies on "main")

See also

realms-react's People

Contributors

kalaiy21 avatar lordabrax avatar micksabox avatar ponderingdemocritus avatar r0man1337 avatar redbeardeth avatar rvorias avatar tenoxious avatar threepwave avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

realms-react's Issues

Page Route Map to Component States

Implement a routing strategy so that hyperlinks work correctly for all user stories.

For example:

/desiege?tab=controls to start with the Shield / Attack modal visible
/deisege/?tab=boost to start on the Boost schedule timeline page
/desiege/?tab=settings to start with a settings and config page

User Stories:

For clans, want to make it very easy to join the next game.

/desiege/?tab=mint&token=light

For players, want to make it easy to share current shield status to coordinate via social media
/desiege/stats=health+shield

Lore: Divine Eclipse

Questions that will be nice to have a lore answer. The LDK could be used to structure the answer.

  • Why does the boost effect occur?
  • Why does it grow in magnitude as time moves forward?
  • Why is there a time limit?

All could have on-brand lore responses.

The formula for the boost is: b = (1/n) / 2 where n is the number of hours in a game. Towards the end of the game the boost is at maximum (50%) before the game ends.

This lore would be displayed on a dedicated settings page or page explaining the boost

Search All Realms & Crypts

Feature to search all Realms by Rarity.

Suggestion:

  • Slide down the bar like my empire page, but it is a query for all the Realms (not just yours)
  • Ability to Search by features (resources, orders, rarity)

Loot Bags Scattered on the Map

We need the Loot Bags Scattered throughout the world for people to explore.

  • Insert into mapbox
  • Add scatterplot layer in deck.gl

Readme

An informative is required for new users

Bugs found during testing

  • Fly to button (top right) doesn't work. Clicking it doesn't take me to the selected Realm, only pops up the side menu of Realm no. 1
  • Also using the Fly to button from the Realms menu doesn't seem to work properly. Takes me to a seemingly random place on the map.
  • Elements on the map are not interactive. When clicking on an icon, I'd expect the side menu to show me the details of the object. Right now, nothing happens.
  • Details button in Crypts menu doesn't do anything.

Events and indexing

Emit events so that an indexer can calculate sum total of all attack or shield amounts, and other metrics for display

add query selectors for POI

Implement query selectors for POI

eg:

?realm=1

This query would fly you directly to the POI.

Could be a simple useEffect filter function

Close and refresh state after mint

Currently the player is asked to refresh the page, but this is unreliable and if the player simply closes the modal, the state will not make sense.

Add Crypts filter on My Empire Page

We are missing the ability to search crypts by their features on the My Empire page.

Suggestion:

  • Implement filter search (like the Realms one)

To note:

  • The graph and the functions already exist to enable this, just the UI and some types need to be added.

Desiege Rewards

https://github.com/BibliothecaForAdventurers/realms-contracts/blob/feature/minigame/contracts/l2/minigame/01_TowerDefence.cairo#L311

  • Review rewards claim functionality in contract. Currently the contract returns back the tokens of the opposite side to the user that is claiming. But in order to be fully agnostic about the rewards, it's better to remove this altogether. This was implemented before the concept of non-reusable element tokens between games was implemented. The rewards mechanism can be re-implemented in a future contract upgrade.
  • Therefore, the only specification about the rewards is that: the amount of damage (dark) or shield (light) a player contributes is their allocation percentage, and that allocation percentage is going to determine the amounts of some later game reward (TBD).

Modal Minting Bug

Model has the last tab autoselected when popup happens. IF the user is not logged in to metamask, the minting button does not work.

Suggestion:

  • useEffect calls back to most complete tab on modal load

Storybook Webpack build failing

The webpack build for the Storybook started failing after the merge with the map repo.

I've noticed a few things to start the investigation:

  • the babel-plugin-glsl package was added here but I can't see where it's being used in any build stage or config
  • the next.config.js sets module.exports multiple times, not sure if related

Might need a webpack wizard to take a look at this since I believe Storybook uses webpack to build the UI. Sometimes when I attempt to install the required babel plugins the webpack build process will freeze and do nothing.

yarn run v1.22.10
$ start-storybook -p 6006
info @storybook/react v6.4.9
info 
info => Loading presets
info => Serving static files from /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/public at /
info => Using PostCSS preset with [email protected]
info => Using default Webpack5 setup
<i> [webpack-dev-middleware] wait until bundle finished
10% building 0/1 entries 0/0 dependencies 0/0 modules
info => Ignoring cached manager due to change in manager config
<i> [webpack-dev-middleware] wait until bundle finished
23% building 4/16 entries 5108/5108 dependencies 1161/1197 modulesassets by chunk 4.86 MiB (id hint: vendors)
  assets by status 4.51 MiB [big]
    asset 148.manager.bundle.js 4.15 MiB [emitted] [big] (id hint: vendors)
    asset 331.manager.bundle.js 371 KiB [emitted] [big] (id hint: vendors)
  asset 278.manager.bundle.js 189 KiB [emitted] (id hint: vendors)
  asset 574.manager.bundle.js 113 KiB [emitted] (id hint: vendors)
  asset 881.manager.bundle.js 40.2 KiB [emitted] (id hint: vendors)
  asset 459.manager.bundle.js 15.3 KiB [emitted] (id hint: vendors)
asset runtime~main.manager.bundle.js 14.1 KiB [emitted] (name: runtime~main)
asset index.html 3.67 KiB [emitted]
asset 295.manager.bundle.js 1.21 KiB [emitted]
asset main.manager.bundle.js 824 bytes [emitted] (name: main)
Entrypoint main [big] 4.16 MiB = runtime~main.manager.bundle.js 14.1 KiB 148.manager.bundle.js 4.15 MiB main.manager.bundle.js 824 bytes
orphan modules 1.51 MiB [orphan] 320 modules
runtime modules 8.69 KiB 14 modules
javascript modules 4.47 MiB 829 modules
json modules 1.52 KiB
  ./node_modules/character-entities-legacy/index.json 1.24 KiB [built] [code generated]
  ./node_modules/character-reference-invalid/index.json 289 bytes [built] [code generated]

ERROR in ./node_modules/color-convert/index.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: [BABEL]: Cannot find module '@babel/plugin-syntax-class-properties'
Require stack:
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-common/node_modules/@babel/preset-env/lib/available-plugins.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-common/node_modules/@babel/preset-env/lib/filter-items.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-common/node_modules/@babel/preset-env/lib/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@babel/core/lib/config/files/module-types.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@babel/core/lib/config/files/configuration.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@babel/core/lib/config/files/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@babel/core/lib/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/babel-loader/lib/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/webpack/lib/ProgressPlugin.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/webpack/lib/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/builder-webpack5/dist/cjs/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-server/dist/cjs/utils/get-preview-builder.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-server/dist/cjs/build-static.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-server/dist/cjs/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/react/node_modules/@storybook/core/dist/cjs/server.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/react/node_modules/@storybook/core/server.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/react/dist/cjs/server/index.js
- /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/react/bin/index.js (While processing: /Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-common/node_modules/@babel/preset-env/lib/index.js)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-common/node_modules/@babel/preset-env/lib/available-plugins.js:10:36)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/Users/michaelnolivos/Documents/Sovilon_Software_Inc/Projects/realms/realms-react/node_modules/@storybook/core-common/node_modules/@babel/preset-env/lib/filter-items.js:11:25)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
 @ ./node_modules/@storybook/components/dist/esm/controls/Color.js 48:0-36 195:16-31 204:15-34 206:218-233 219:16-31 228:15-34 230:223-238 234:12-31 234:42-57 235:12-27 243:6-25 252:13-32 263:24-43
 @ ./node_modules/@storybook/components/dist/esm/controls/index.js
 @ ./node_modules/@storybook/components/dist/esm/index.js 37:0-27 37:0-27
 @ ./node_modules/@storybook/addon-controls/dist/esm/register.js 5:0-51 29:46-56

manager (webpack 5.65.0) compiled with 1 error in 4331 ms

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.