Hack in a package.yaml instead of package.json
json is just incredibly tedious to use for this, especially because of lack of comments. Upstream has been informed of this many times apparently, npm won't change it. Just hack it downstream. npm will never get better, will it...
This commit is contained in:
		
							parent
							
								
									f9bd128a02
								
							
						
					
					
						commit
						594e9bcbfd
					
				
					 10 changed files with 446 additions and 108 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -3,3 +3,4 @@
 | 
			
		|||
/dist/
 | 
			
		||||
/node_modules
 | 
			
		||||
/result
 | 
			
		||||
/package.json
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -4,12 +4,15 @@ Website templates bundled with parcel.
 | 
			
		|||
 | 
			
		||||
## Updating
 | 
			
		||||
 | 
			
		||||
When adding/removing packages from `package.json`, the corresponding
 | 
			
		||||
`package-lock.json` needs to be updated. Use `nix/update-lockfile` for
 | 
			
		||||
this.
 | 
			
		||||
When adding/removing packages from `package.yaml`, the corresponding
 | 
			
		||||
`package.json` and `package-lock.json` need to be updated. Use:
 | 
			
		||||
 | 
			
		||||
```console
 | 
			
		||||
nix run .#update-lockfile
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
When ignoring semver is desired, use:
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
npm-check-updates -u
 | 
			
		||||
```console
 | 
			
		||||
nix run .#update-lockfile -- --ignore-semver
 | 
			
		||||
```
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,8 @@
 | 
			
		|||
      nix-filter = nix-filter.lib;
 | 
			
		||||
    };
 | 
			
		||||
  in {
 | 
			
		||||
    apps.${system} = import ./nix/utilities {inherit pkgs;};
 | 
			
		||||
 | 
			
		||||
    packages.${system} = rec {
 | 
			
		||||
      tlaternet-templates = package.package;
 | 
			
		||||
      default = tlaternet-templates;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,21 @@
 | 
			
		|||
}: let
 | 
			
		||||
  inherit (pkgs.lib) cleanSource;
 | 
			
		||||
 | 
			
		||||
  packageJson =
 | 
			
		||||
    pkgs.runCommand "package.json" {
 | 
			
		||||
      nativeBuildInputs = with pkgs; [yj];
 | 
			
		||||
      src = "";
 | 
			
		||||
    } ''
 | 
			
		||||
      cat ${self}/package.yaml | yj > $out
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
  prePatch = ''
 | 
			
		||||
    ln -s ${packageJson} package.json;
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  node_modules_attrs = {
 | 
			
		||||
    packageJson = "${packageJson}";
 | 
			
		||||
 | 
			
		||||
    # Dependencies that should be available in the node build
 | 
			
		||||
    buildInputs = with pkgs; [
 | 
			
		||||
      pkg-config
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +35,7 @@
 | 
			
		|||
  ];
 | 
			
		||||
in {
 | 
			
		||||
  package = pkgs.npmlock2nix.build {
 | 
			
		||||
    inherit buildInputs node_modules_attrs;
 | 
			
		||||
    inherit buildInputs prePatch node_modules_attrs;
 | 
			
		||||
 | 
			
		||||
    src = cleanSource self;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,14 +47,22 @@ in {
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  shell = pkgs.npmlock2nix.shell {
 | 
			
		||||
    inherit buildInputs node_modules_attrs;
 | 
			
		||||
    inherit buildInputs prePatch node_modules_attrs;
 | 
			
		||||
 | 
			
		||||
    src = nix-filter {
 | 
			
		||||
      root = self;
 | 
			
		||||
      include = [
 | 
			
		||||
        "package.json"
 | 
			
		||||
        "package.yaml"
 | 
			
		||||
        "package-lock.json"
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    shellHook = ''
 | 
			
		||||
      if [ -e package.json ]; then
 | 
			
		||||
        unlink package.json
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      ln -s ${packageJson} package.json
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,17 +0,0 @@
 | 
			
		|||
#!/usr/bin/env -S nix run 'github:clhodapp/nix-runner/32a984cfa14e740a34d14fad16fc479dec72bf07'
 | 
			
		||||
#!pure
 | 
			
		||||
#!package nixpkgs#bash
 | 
			
		||||
#!package nixpkgs#coreutils
 | 
			
		||||
#!package nixpkgs#direnv
 | 
			
		||||
#!package nixpkgs#git
 | 
			
		||||
#!package nixpkgs#nodejs-14_x
 | 
			
		||||
#!command bash
 | 
			
		||||
# shellcheck shell=bash
 | 
			
		||||
 | 
			
		||||
set -eu
 | 
			
		||||
 | 
			
		||||
cd "$(git rev-parse --show-toplevel)"
 | 
			
		||||
unlink node_modules
 | 
			
		||||
npm install --package-lock-only
 | 
			
		||||
rm -rf node_modules
 | 
			
		||||
direnv reload
 | 
			
		||||
							
								
								
									
										20
									
								
								nix/utilities/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								nix/utilities/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
{pkgs}: let
 | 
			
		||||
  inherit (builtins) readFile;
 | 
			
		||||
 | 
			
		||||
  update-lockfile = pkgs.writeShellApplication {
 | 
			
		||||
    name = "update-lockfile";
 | 
			
		||||
    runtimeInputs = with pkgs; [
 | 
			
		||||
      git
 | 
			
		||||
      yj
 | 
			
		||||
      nodejs-14_x
 | 
			
		||||
      direnv
 | 
			
		||||
      nodePackages.npm-check-updates
 | 
			
		||||
    ];
 | 
			
		||||
    text = readFile ./update-lockfile;
 | 
			
		||||
  };
 | 
			
		||||
in {
 | 
			
		||||
  update-lockfile = {
 | 
			
		||||
    type = "app";
 | 
			
		||||
    program = "${update-lockfile}/bin/update-lockfile";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								nix/utilities/update-lockfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nix/utilities/update-lockfile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
set -eu
 | 
			
		||||
 | 
			
		||||
cd "$(git rev-parse --show-toplevel)"
 | 
			
		||||
 | 
			
		||||
if [ -L node_modules ]; then
 | 
			
		||||
    unlink node_modules
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -L package.json ]; then
 | 
			
		||||
    unlink package.json
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
yj < package.yaml > package.json
 | 
			
		||||
 | 
			
		||||
if [ "${1}" == "--ignore-semver" ]; then
 | 
			
		||||
   npm-check-updates -u
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
npm install --package-lock-only
 | 
			
		||||
rm -rf node_modules
 | 
			
		||||
rm package.json
 | 
			
		||||
 | 
			
		||||
direnv reload
 | 
			
		||||
							
								
								
									
										312
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										312
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -1049,6 +1049,23 @@
 | 
			
		|||
        "to-fast-properties": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@choojs/findup": {
 | 
			
		||||
      "version": "0.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz",
 | 
			
		||||
      "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "commander": "^2.15.1"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "commander": {
 | 
			
		||||
          "version": "2.20.3",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
 | 
			
		||||
          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
 | 
			
		||||
          "dev": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@eslint/eslintrc": {
 | 
			
		||||
      "version": "1.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2540,6 +2557,17 @@
 | 
			
		|||
        "nullthrows": "^1.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@parcel/transformer-glsl": {
 | 
			
		||||
      "version": "2.6.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@parcel/transformer-glsl/-/transformer-glsl-2.6.2.tgz",
 | 
			
		||||
      "integrity": "sha512-s9XhYqBupDwPYN3FwJilFvmg4UmmdCa4Ai5tsOaDW7f1kQGOF7KRbMZNpRO+tl4ADcFc/WKlY0XaA1tkItycfQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@parcel/plugin": "2.6.2",
 | 
			
		||||
        "glslify-bundle": "^5.1.1",
 | 
			
		||||
        "glslify-deps": "^1.3.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@parcel/transformer-html": {
 | 
			
		||||
      "version": "2.6.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.6.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2838,6 +2866,17 @@
 | 
			
		|||
        "config-chain": "^1.1.11"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@reduxjs/toolkit": {
 | 
			
		||||
      "version": "1.8.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.3.tgz",
 | 
			
		||||
      "integrity": "sha512-lU/LDIfORmjBbyDLaqFN2JB9YmAT1BElET9y0ZszwhSBa5Ef3t6o5CrHupw5J1iOXwd+o92QfQZ8OJpwXvsssg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "immer": "^9.0.7",
 | 
			
		||||
        "redux": "^4.1.2",
 | 
			
		||||
        "redux-thunk": "^2.4.1",
 | 
			
		||||
        "reselect": "^4.1.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@sindresorhus/is": {
 | 
			
		||||
      "version": "5.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2958,6 +2997,18 @@
 | 
			
		|||
        "@types/react": "*"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@types/react-redux": {
 | 
			
		||||
      "version": "7.1.24",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz",
 | 
			
		||||
      "integrity": "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@types/hoist-non-react-statics": "^3.3.0",
 | 
			
		||||
        "@types/react": "*",
 | 
			
		||||
        "hoist-non-react-statics": "^3.3.0",
 | 
			
		||||
        "redux": "^4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@types/responselike": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -2972,26 +3023,11 @@
 | 
			
		|||
      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
 | 
			
		||||
      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
 | 
			
		||||
    },
 | 
			
		||||
    "@types/three": {
 | 
			
		||||
      "version": "0.141.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/three/-/three-0.141.0.tgz",
 | 
			
		||||
      "integrity": "sha512-OJdKDgTPVBUgc+s74DYoy4aLznbFFC38Xm4ElmU1YwGNgR7GGFVvFCX7lpVgOsT6S1zSJtGdajTsOYE8/xY9nA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@types/webxr": "*"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@types/use-sync-external-store": {
 | 
			
		||||
      "version": "0.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
 | 
			
		||||
    },
 | 
			
		||||
    "@types/webxr": {
 | 
			
		||||
      "version": "0.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-LQvrACV3Pj17GpkwHwXuTd733gfY+D7b9mKdrTmLdO7vo7P/o6209Qqtk63y/FCv/lspdmi0pWz6Qe/ull9kQg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": {
 | 
			
		||||
      "version": "5.32.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.32.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -4677,6 +4713,12 @@
 | 
			
		|||
      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "events": {
 | 
			
		||||
      "version": "3.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "exif-parser": {
 | 
			
		||||
      "version": "0.1.12",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -4973,6 +5015,11 @@
 | 
			
		|||
      "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "gl-matrix": {
 | 
			
		||||
      "version": "3.4.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz",
 | 
			
		||||
      "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="
 | 
			
		||||
    },
 | 
			
		||||
    "glob": {
 | 
			
		||||
      "version": "7.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5043,6 +5090,183 @@
 | 
			
		|||
        "slash": "^3.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-inject-defines": {
 | 
			
		||||
      "version": "1.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "glsl-token-inject-block": "^1.0.0",
 | 
			
		||||
        "glsl-token-string": "^1.0.1",
 | 
			
		||||
        "glsl-tokenizer": "^2.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-resolve": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "resolve": "^0.6.1",
 | 
			
		||||
        "xtend": "^2.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "resolve": {
 | 
			
		||||
          "version": "0.6.3",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz",
 | 
			
		||||
          "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==",
 | 
			
		||||
          "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "xtend": {
 | 
			
		||||
          "version": "2.2.0",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz",
 | 
			
		||||
          "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==",
 | 
			
		||||
          "dev": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-assignments": {
 | 
			
		||||
      "version": "2.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-defines": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "glsl-tokenizer": "^2.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-depth": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-descope": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "glsl-token-assignments": "^2.0.0",
 | 
			
		||||
        "glsl-token-depth": "^1.1.0",
 | 
			
		||||
        "glsl-token-properties": "^1.0.0",
 | 
			
		||||
        "glsl-token-scope": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-inject-block": {
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-properties": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-scope": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz",
 | 
			
		||||
      "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-string": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-token-whitespace-trim": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "glsl-tokenizer": {
 | 
			
		||||
      "version": "2.1.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz",
 | 
			
		||||
      "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "through2": "^0.6.3"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "isarray": {
 | 
			
		||||
          "version": "0.0.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
 | 
			
		||||
          "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "readable-stream": {
 | 
			
		||||
          "version": "1.0.34",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
 | 
			
		||||
          "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
 | 
			
		||||
          "dev": true,
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "core-util-is": "~1.0.0",
 | 
			
		||||
            "inherits": "~2.0.1",
 | 
			
		||||
            "isarray": "0.0.1",
 | 
			
		||||
            "string_decoder": "~0.10.x"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "string_decoder": {
 | 
			
		||||
          "version": "0.10.31",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
 | 
			
		||||
          "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "through2": {
 | 
			
		||||
          "version": "0.6.5",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
 | 
			
		||||
          "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
 | 
			
		||||
          "dev": true,
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "readable-stream": ">=1.0.33-1 <1.1.0-0",
 | 
			
		||||
            "xtend": ">=4.0.0 <4.1.0-0"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glslify-bundle": {
 | 
			
		||||
      "version": "5.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "glsl-inject-defines": "^1.0.1",
 | 
			
		||||
        "glsl-token-defines": "^1.0.0",
 | 
			
		||||
        "glsl-token-depth": "^1.1.1",
 | 
			
		||||
        "glsl-token-descope": "^1.0.2",
 | 
			
		||||
        "glsl-token-scope": "^1.1.1",
 | 
			
		||||
        "glsl-token-string": "^1.0.1",
 | 
			
		||||
        "glsl-token-whitespace-trim": "^1.0.0",
 | 
			
		||||
        "glsl-tokenizer": "^2.0.2",
 | 
			
		||||
        "murmurhash-js": "^1.0.0",
 | 
			
		||||
        "shallow-copy": "0.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "glslify-deps": {
 | 
			
		||||
      "version": "1.3.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz",
 | 
			
		||||
      "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@choojs/findup": "^0.2.0",
 | 
			
		||||
        "events": "^3.2.0",
 | 
			
		||||
        "glsl-resolve": "0.0.1",
 | 
			
		||||
        "glsl-tokenizer": "^2.0.0",
 | 
			
		||||
        "graceful-fs": "^4.1.2",
 | 
			
		||||
        "inherits": "^2.0.1",
 | 
			
		||||
        "map-limit": "0.0.1",
 | 
			
		||||
        "resolve": "^1.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "got": {
 | 
			
		||||
      "version": "12.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/got/-/got-12.3.0.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -5345,10 +5569,10 @@
 | 
			
		|||
        "queue": "6.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "immutability-helper": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ=="
 | 
			
		||||
    "immer": {
 | 
			
		||||
      "version": "9.0.15",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
 | 
			
		||||
      "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "immutable": {
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -5905,6 +6129,26 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "map-limit": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "once": "~1.3.0"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "once": {
 | 
			
		||||
          "version": "1.3.3",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
 | 
			
		||||
          "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
 | 
			
		||||
          "dev": true,
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "wrappy": "1"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "markdown-it": {
 | 
			
		||||
      "version": "12.3.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -6123,6 +6367,12 @@
 | 
			
		|||
        "node-gyp-build-optional-packages": "5.0.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "murmurhash-js": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "napi-build-utils": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -7663,10 +7913,10 @@
 | 
			
		|||
        "@babel/runtime": "^7.9.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "redux-act": {
 | 
			
		||||
      "version": "1.8.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/redux-act/-/redux-act-1.8.0.tgz",
 | 
			
		||||
      "integrity": "sha512-xW3FIco/VwJGMW3eCD3JGAxyozNC4k35qrWM5lEQf9T2pfv3leDC+3vQ8WdHZjcrol/jjWAeJ+ULqrscuDqlKg=="
 | 
			
		||||
    "redux-thunk": {
 | 
			
		||||
      "version": "2.4.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz",
 | 
			
		||||
      "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q=="
 | 
			
		||||
    },
 | 
			
		||||
    "regenerate": {
 | 
			
		||||
      "version": "1.4.2",
 | 
			
		||||
| 
						 | 
				
			
			@ -7822,6 +8072,11 @@
 | 
			
		|||
      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "reselect": {
 | 
			
		||||
      "version": "4.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "resize-img": {
 | 
			
		||||
      "version": "1.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/resize-img/-/resize-img-1.1.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -8064,6 +8319,12 @@
 | 
			
		|||
      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "shallow-copy": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "sharp": {
 | 
			
		||||
      "version": "0.28.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.3.tgz",
 | 
			
		||||
| 
						 | 
				
			
			@ -8484,11 +8745,6 @@
 | 
			
		|||
      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "three": {
 | 
			
		||||
      "version": "0.142.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/three/-/three-0.142.0.tgz",
 | 
			
		||||
      "integrity": "sha512-ESjPO+3geFr+ZUfVMpMnF/eVU2uJPOh0e2ZpMFqjNca1wApS9lJb7E4MjwGIczgt9iuKd8PEm6Pfgp2bJ92Xtg=="
 | 
			
		||||
    },
 | 
			
		||||
    "through2": {
 | 
			
		||||
      "version": "4.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										55
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										55
									
								
								package.json
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,55 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  "name": "tlaternet",
 | 
			
		||||
  "version": "1.0.0",
 | 
			
		||||
  "description": "tlaternet web interface",
 | 
			
		||||
  "author": "Tristan Maat <tm@tlater.net>",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@fontsource/arimo": "^4.5.8",
 | 
			
		||||
    "@fontsource/nunito": "^4.5.9",
 | 
			
		||||
    "@fortawesome/fontawesome-free": "^6.1.1",
 | 
			
		||||
    "bulma": "^0.9.4",
 | 
			
		||||
    "hack-font": "^3.3.0",
 | 
			
		||||
    "three": "^0.142.0",
 | 
			
		||||
    "react": "^18.2.0",
 | 
			
		||||
    "react-dom": "^18.2.0",
 | 
			
		||||
    "react-redux": "^8.0.2",
 | 
			
		||||
    "classnames": "^2.3.1",
 | 
			
		||||
    "redux-act": "^1.8.0",
 | 
			
		||||
    "redux": "4.2.0",
 | 
			
		||||
    "immutability-helper": "3.1.1"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@babel/preset-env": "^7.18.6",
 | 
			
		||||
    "@parcel/transformer-sass": "^2.6.2",
 | 
			
		||||
    "@types/react-dom": "^18.0.6",
 | 
			
		||||
    "@types/three": "^0.141.0",
 | 
			
		||||
    "@typescript-eslint/parser": "^5.32.0",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^5.32.0",
 | 
			
		||||
    "eslint": "^8.21.0",
 | 
			
		||||
    "prettier": "^2.7.1",
 | 
			
		||||
    "parcel": "^2.6.2",
 | 
			
		||||
    "posthtml-extend": "^0.6.3",
 | 
			
		||||
    "posthtml-favicons": "^1.4.0",
 | 
			
		||||
    "posthtml-include": "^1.7.4",
 | 
			
		||||
    "posthtml-markdownit": "^1.3.0",
 | 
			
		||||
    "sass": "^1.53.0",
 | 
			
		||||
    "typescript": "^4.7.4",
 | 
			
		||||
    "typescript-language-server": "^0.11.2",
 | 
			
		||||
    "typescript-eslint-language-service": "^5.0.0",
 | 
			
		||||
    "vscode-langservers-extracted": "^4.2.1",
 | 
			
		||||
    "npm-check-updates": "^16.0.5"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "parcel build --no-autoinstall",
 | 
			
		||||
    "serve": "parcel serve --no-autoinstall",
 | 
			
		||||
    "watch": "parcel watch --no-autoinstall",
 | 
			
		||||
    "build-dist": "parcel build --no-cache --no-autoinstall && rename '.html' '.html.hbs' dist/*.html",
 | 
			
		||||
    "check": "tsc --noEmit",
 | 
			
		||||
    "style": "prettier --check src",
 | 
			
		||||
    "lint": "eslint --format unix src"
 | 
			
		||||
  },
 | 
			
		||||
  "source": "src/index.html",
 | 
			
		||||
  "browserslist": "> 1%, not dead"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										81
									
								
								package.yaml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								package.yaml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,81 @@
 | 
			
		|||
name: tlaternet
 | 
			
		||||
version: 1.0.0
 | 
			
		||||
description: tlaternet web interface
 | 
			
		||||
author: Tristan Maat <tm@tlater.net>
 | 
			
		||||
license: MIT
 | 
			
		||||
private: true
 | 
			
		||||
 | 
			
		||||
dependencies:
 | 
			
		||||
  # Libraries
 | 
			
		||||
  gl-matrix: ^3.4.3   # To help with 3D math in WebGL code
 | 
			
		||||
  classnames: ^2.3.1  # To manage CSS class names in react code
 | 
			
		||||
 | 
			
		||||
  # Fonts
 | 
			
		||||
  hack-font: ^3.3.0
 | 
			
		||||
  '@fontsource/arimo': ^4.5.8
 | 
			
		||||
  '@fontsource/nunito': ^4.5.9
 | 
			
		||||
  '@fortawesome/fontawesome-free': ^6.1.1
 | 
			
		||||
 | 
			
		||||
  # Frameworks for static content
 | 
			
		||||
  bulma: ^0.9.4
 | 
			
		||||
 | 
			
		||||
  # React-redux stuff
 | 
			
		||||
  react: ^18.2.0
 | 
			
		||||
  react-dom: ^18.2.0
 | 
			
		||||
  redux: ^4.2.0
 | 
			
		||||
  '@reduxjs/toolkit': ^1.8.3
 | 
			
		||||
  react-redux: ^8.0.2
 | 
			
		||||
 | 
			
		||||
devDependencies:
 | 
			
		||||
  # Parcel & plugins
 | 
			
		||||
  parcel: ^2.6.2
 | 
			
		||||
  '@parcel/transformer-sass': ^2.6.2
 | 
			
		||||
  '@parcel/transformer-glsl': 2.6.2
 | 
			
		||||
 | 
			
		||||
  # Build tools
 | 
			
		||||
  typescript: ^4.7.4
 | 
			
		||||
 | 
			
		||||
  sass: ^1.53.0
 | 
			
		||||
 | 
			
		||||
  posthtml-extend: ^0.6.3
 | 
			
		||||
  posthtml-favicons: ^1.4.0
 | 
			
		||||
  posthtml-include: ^1.7.4
 | 
			
		||||
  posthtml-markdownit: ^1.3.0
 | 
			
		||||
 | 
			
		||||
  '@babel/preset-env': ^7.18.6
 | 
			
		||||
 | 
			
		||||
  # Type shims
 | 
			
		||||
  '@types/react-dom': ^18.0.6
 | 
			
		||||
  '@types/react-redux': ^7.1.24
 | 
			
		||||
 | 
			
		||||
  # Dev tools
 | 
			
		||||
  npm-check-updates: ^16.0.5
 | 
			
		||||
 | 
			
		||||
  prettier: ^2.7.1
 | 
			
		||||
 | 
			
		||||
  typescript-language-server: ^0.11.2
 | 
			
		||||
  typescript-eslint-language-service: ^5.0.0
 | 
			
		||||
 | 
			
		||||
  eslint: ^8.21.0
 | 
			
		||||
  '@typescript-eslint/parser': ^5.32.0
 | 
			
		||||
  '@typescript-eslint/eslint-plugin': ^5.32.0
 | 
			
		||||
 | 
			
		||||
  vscode-langservers-extracted: ^4.2.1
 | 
			
		||||
 | 
			
		||||
scripts:
 | 
			
		||||
  # Dev workflow
 | 
			
		||||
  build: parcel build --no-autoinstall
 | 
			
		||||
  serve: parcel serve --no-autoinstall
 | 
			
		||||
  watch: parcel watch --no-autoinstall
 | 
			
		||||
 | 
			
		||||
  # Production build
 | 
			
		||||
  build-dist: parcel build --no-cache --no-autoinstall && rename '.html' '.html.hbs' dist/*.html
 | 
			
		||||
 | 
			
		||||
  # Checks
 | 
			
		||||
  check: tsc --noEmit
 | 
			
		||||
  style: prettier --check src
 | 
			
		||||
  lint: eslint --format unix src
 | 
			
		||||
 | 
			
		||||
# Parcel config
 | 
			
		||||
source: src/index.html
 | 
			
		||||
browserslist: '> 1%, not dead'
 | 
			
		||||
		Reference in a new issue