diff --git a/.github/workflows/ghcjs.yml b/.github/workflows/ghcjs.yml
index 12369d05c..9bdf67935 100644
--- a/.github/workflows/ghcjs.yml
+++ b/.github/workflows/ghcjs.yml
@@ -75,7 +75,7 @@ jobs:
- name: 🔨 Build Playground
env:
- BASEPATH: /${{ github.event.repository.name }}/${{ github.ref_name }}/playground
+ ASSET_URL: /${{ github.event.repository.name }}/${{ github.ref_name }}/playground
run: |
nix run .#release-rzk-playground
diff --git a/CITATION.cff b/CITATION.cff
index 3518f0999..2b8940092 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -1,8 +1,8 @@
cff-version: 1.2.0
authors:
-- family-names: Kudasov
- given-names: Nikolai
- orcid: "https://orcid.org/0000-0001-6572-7292"
+ - family-names: Kudasov
+ given-names: Nikolai
+ orcid: "https://orcid.org/0000-0001-6572-7292"
title: "Rzk: a proof assistant for synthetic $\\infty$-categories"
-version: 0.6.6
+version: 0.6.7
url: "https://github.com/rzk-lang/rzk"
diff --git a/README.md b/README.md
index 5a0ce5a32..40623508a 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
[![MkDocs](https://shields.io/badge/MkDocs-documentation-informational)](https://rzk-lang.github.io/rzk/)
[![Haddock](https://shields.io/badge/Haddock-documentation-informational)](https://rzk-lang.github.io/rzk/haddock/index.html)
[![GHCJS build](https://github.com/rzk-lang/rzk/actions/workflows/ghcjs.yml/badge.svg?branch=main)](https://github.com/rzk-lang/rzk/actions/workflows/ghcjs.yml)
+[![Rzk Zulip chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://rzk-lang.zulipchat.com)
An experimental proof assistant for synthetic ∞-categories.
@@ -19,6 +20,11 @@ An important part of `rzk` is a tope layer solver, which is essentially a theore
See the list of contributors at [docs/docs/CONTRIBUTORS.md](docs/docs/CONTRIBUTORS.md).
+## Discussing Rzk and getting help
+
+A Zulip chat is available for all to join and chat about Rzk, including formalization projects, development of Rzk, and related projects:
+
+
## How to use `rzk`
For relatively small single-file formalisations, you can use the online playground at
@@ -28,6 +34,7 @@ However, for larger and multi-file formalisations you should install a version o
- You can install the latest "stable" version of `rzk` from Hackage:
```sh
+ cabal update
cabal install rzk
```
diff --git a/docs/docs/CHANGELOG.md b/docs/docs/CHANGELOG.md
index 39a65be92..58a024af4 100644
--- a/docs/docs/CHANGELOG.md
+++ b/docs/docs/CHANGELOG.md
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to the
[Haskell Package Versioning Policy](https://pvp.haskell.org/).
+## v0.6.7 — 2023-10-07
+
+- Fix build on some systems (fix `BNFC:bnfc` executable dependency, see [#125](https://github.com/rzk-lang/rzk/pull/125))
+- Improve Rzk Playground (see [#124](https://github.com/rzk-lang/rzk/pull/124) by @deemp):
+ - Add `snippet_url` parameter
+ - Migrated from NextJS to Vite
+ - Use `setText` on `params` attribute
+- Slightly improve documentation:
+ - Add links to Rzk Zulip (see [#131](https://github.com/rzk-lang/rzk/pull/131))
+ - Add `cabal update` to instructions (see [`3aa8fd3`](https://github.com/rzk-lang/rzk/commit/3aa8fd38902fc8cbb29f86122410d24398a15b0b))
+
## v0.6.6 — 2023-10-02
- Fix builds on Windows (and macOS) (see [#121](https://github.com/rzk-lang/rzk/pull/121))
diff --git a/docs/docs/community.md b/docs/docs/community.md
new file mode 100644
index 000000000..46ab96599
--- /dev/null
+++ b/docs/docs/community.md
@@ -0,0 +1,7 @@
+# Rzk Community
+
+## Chat
+
+A Zulip chat is available for all to join and chat about Rzk, including formalization projects, development of Rzk, and related projects:
+
+[Join Rzk Zulip](https://rzk-lang.zulipchat.com/register/){ .md-button .md-button--primary }
diff --git a/docs/docs/getting-started/install.md b/docs/docs/getting-started/install.md
index 11fa583c7..2f0276ab2 100644
--- a/docs/docs/getting-started/install.md
+++ b/docs/docs/getting-started/install.md
@@ -7,26 +7,26 @@ These instructions will walk you through setting up Rzk using the "basic" setup
1. Install [VS Code](https://code.visualstudio.com/).
2. Launch VS Code and install the [`rzk` extension](https://marketplace.visualstudio.com/items?itemName=NikolaiKudasovfizruk.rzk-1-experimental-highlighting).
3. Create a new file using "File > New Text File" (Ctrl+N). Click the `Select a language` prompt, type in `rzk`, and select "Literate Rzk Markdown".
- ![VS Code rzk language selector.](../../assets/images/vscode-rzk-select-language.png)
+ ![VS Code rzk language selector.](../../assets/images/vscode-rzk-select-language.png)
4. You should see the following popup:
- ![VS Code rzk install prompt.](../../assets/images/vscode-rzk-install-prompt.png)
+ ![VS Code rzk install prompt.](../../assets/images/vscode-rzk-install-prompt.png)
5. Click "Yes" button.
6. While it is installing, you can paste the following literate Rzk program into the new file:
- ````markdown
- # Sample literate Rzk markdown
+ ````markdown
+ # Sample literate Rzk markdown
- ```rzk
- #lang rzk-1
-
- #define id (A : U)
- : A -> A
- := \ x -> x
- ```
- ````
+ ```rzk
+ #lang rzk-1
+
+ #define id (A : U)
+ : A -> A
+ := \ x -> x
+ ```
+ ````
7. When the installation is done you should see the following popup:
- ![VS Code rzk reload prompt.](../../assets/images/vscode-rzk-install-success-reload-prompt.png)
+ ![VS Code rzk reload prompt.](../../assets/images/vscode-rzk-install-success-reload-prompt.png)
8. Click "Reload button".
9. Save your file as `example.rzk.md`.
10. Open local Terminal (Ctrl+`).
@@ -84,6 +84,7 @@ stack build && stack install
To build and install with `cabal-install` from Hackage:
```sh
+cabal v2-update
cabal v2-install rzk
```
@@ -99,4 +100,5 @@ cabal v2-build && cabal v2-install
### Nix
!!! warning "Work-in-progress"
+
To be done.
diff --git a/docs/docs/index.md b/docs/docs/index.md
index a6a8b1340..0ec6e3a0b 100644
--- a/docs/docs/index.md
+++ b/docs/docs/index.md
@@ -15,3 +15,9 @@ Using such representation is motivated by automatic handling of binders and easi
An important part of `rzk` is a tope layer solver, which is essentially a theorem prover for a part of the type theory. A related project, dedicated just to that part is available at . `simple-topes` supports used-defined cubes, topes, and tope layer axioms. Once stable, `simple-topes` will be merged into `rzk`, expanding the proof assistant to the type theory with shapes, allowing formalisations for (variants of) cubical, globular, and other geometric versions of HoTT.
See the list of contributors at [CONTRIBUTORS.md](CONTRIBUTORS.md).
+
+## Discussing Rzk and getting help
+
+A Zulip chat is available for all to join and chat about Rzk, including formalization projects, development of Rzk, and related projects:
+
+[Join Rzk Zulip](https://rzk-lang.zulipchat.com/register/){ .md-button .md-button--primary }
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 0860dfe4a..2792c41d2 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -33,6 +33,7 @@ nav:
- Rendering Diagrams: reference/render.rzk.md
- Examples:
- Weak tope disjunction elimination: examples/recId.rzk.md
+ - Community: community.md
- Tools:
- Syntax Highlighting: tools/highlight.md
- IDE support: tools/ide.md
diff --git a/nix/scripts.nix b/nix/scripts.nix
index 8687cd2a4..a4248f020 100644
--- a/nix/scripts.nix
+++ b/nix/scripts.nix
@@ -49,14 +49,11 @@ let scripts =
release-rzk-playground = pkgs.writeShellApplication {
name = "release-rzk-playground";
- runtimeInputs = [ pkgs.nodejs_18 packages.build-rzk-js ];
+ runtimeInputs = [ pkgs.nodejs_18 ];
text =
let
playground = "rzk-playground";
playground-rzk-js = "${playground}/public/rzk.js";
- config = "next.config.js";
- configTmp = "${config}.tmp";
- configBackup = "${config}.bk";
release = "rzk-playground-release";
in
''
@@ -67,26 +64,11 @@ let scripts =
(
cd ${playground}
npm i
-
- # empty string by default
-
- : "''${BASEPATH:=""}"
-
- # substitute basepath in config
-
- < ${config} sed "s|'''|'$BASEPATH'|" > ${configTmp}
- mv ${config} ${configBackup}
- mv ${configTmp} ${config}
-
- # restore backup anyway
-
- npm run build || true
- mv ${configBackup} ${config}
)
rm -rf ${release}
mkdir ${release}
- cp -r ${playground}/out/* ${release}
+ cp -r ${playground}/dist/* ${release}
printf "Wrote release files to '${release}'\n"
'';
diff --git a/rzk-playground/.eslintrc.cjs b/rzk-playground/.eslintrc.cjs
new file mode 100644
index 000000000..d6c953795
--- /dev/null
+++ b/rzk-playground/.eslintrc.cjs
@@ -0,0 +1,18 @@
+module.exports = {
+ root: true,
+ env: { browser: true, es2020: true },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:react-hooks/recommended',
+ ],
+ ignorePatterns: ['dist', '.eslintrc.cjs'],
+ parser: '@typescript-eslint/parser',
+ plugins: ['react-refresh'],
+ rules: {
+ 'react-refresh/only-export-components': [
+ 'warn',
+ { allowConstantExport: true },
+ ],
+ },
+}
diff --git a/rzk-playground/.eslintrc.json b/rzk-playground/.eslintrc.json
deleted file mode 100644
index 73601b742..000000000
--- a/rzk-playground/.eslintrc.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": [
- "next"
- ]
-}
\ No newline at end of file
diff --git a/rzk-playground/app/layout.tsx b/rzk-playground/app/layout.tsx
deleted file mode 100644
index 3df54bf87..000000000
--- a/rzk-playground/app/layout.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import './globals.css'
-import type { Metadata } from 'next'
-import { Inter } from 'next/font/google'
-
-const inter = Inter({ subsets: ['latin'] })
-
-export const metadata: Metadata = {
- title: 'Try Rzk proof assistant!'
-}
-
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode
-}) {
- return (
-
- {children}
-
- )
-}
diff --git a/rzk-playground/app/page.tsx b/rzk-playground/app/page.tsx
deleted file mode 100644
index ef07d4f6f..000000000
--- a/rzk-playground/app/page.tsx
+++ /dev/null
@@ -1,136 +0,0 @@
-'use client';
-
-import { useCallback, useEffect, useState } from 'react';
-import Editor from '../components/editor/Editor';
-import Script from 'next/script';
-import { Resizable } from 're-resizable';
-import React from 'react';
-import * as rzk from '../src/rzk';
-import { KeyBindProvider, ShortcutType } from 'react-keybinds';
-import dynamic from 'next/dynamic';
-
-var typecheckedOnStart = false
-
-declare var window: Window & typeof globalThis;
-
-function HomeNoSSR() {
- const [message, setMessage] = useState("Starting...");
-
- const [windowHeight, setWindowHeight] = useState(window.innerHeight)
- const [needTypecheck, setNeedTypecheck] = useState(false)
-
- useEffect(() => {
- const handleWindowResize = () => {
- setWindowHeight(window.innerHeight)
- };
-
- window.addEventListener('resize', handleWindowResize);
-
- return () => {
- window.removeEventListener('resize', handleWindowResize);
- };
- }, []);
-
- const [text, setText] = useState("")
-
- const typecheck = useCallback(() => {
- const result = rzk.typecheck(text)
- if (result.status == 'ok') {
- setMessage(`Everything is OK!`)
- } else {
- setMessage(result.result)
- }
- }, [text])
-
- useEffect(() => {
- function checkFlag() {
- if ((!((window as any).rzkTypecheck_) || (text === "")) && !typecheckedOnStart) {
- console.warn("something bad")
- console.warn((window as any).rzkTypecheck_)
- window.setTimeout(checkFlag, 100); /* this checks the flag every 100 milliseconds*/
- } else if (!typecheckedOnStart) {
- typecheck()
- typecheckedOnStart = true
- }
- }
-
- if (!typecheckedOnStart) {
- checkFlag();
- }
- }, [typecheck, text])
-
- useEffect(() => {
- if (needTypecheck) {
- typecheck()
- setNeedTypecheck(false)
- }
- }, [setNeedTypecheck, needTypecheck, typecheck])
-
- const KEYBINDINGS: ShortcutType[] =
- [
- {
- keys: {
- Mac: ['Shift', 'Enter'],
- Windows: ['Shift', 'Enter'],
- Linux: ['Shift', 'Enter'],
- },
- label: 'Test command',
- callback: () => {
- setNeedTypecheck(true)
- },
- },
- ]
- ;
-
- const [outputHeight, setOutputHeight] = useState(windowHeight * 30 / 100)
- const [editorHeight, setEditorHeight] = useState(windowHeight * 70 / 100)
-
- return (
-
-
-
-
-
-
-
-
-
{
- setOutputHeight(outputHeight + d.height)
- }}
- onResize={(_e, _direction, _ref, d) => {
- setEditorHeight(window.innerHeight - (outputHeight + d.height))
- }}
- style={{ padding: '20px' }}
- >
-
- {message}
-
-
-
-
- )
-}
-
-const Home = dynamic(() => Promise.resolve(HomeNoSSR), {
- ssr: false,
-})
-
-export default Home
\ No newline at end of file
diff --git a/rzk-playground/index.html b/rzk-playground/index.html
new file mode 100644
index 000000000..821c2c85b
--- /dev/null
+++ b/rzk-playground/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ Try Rzk proof assistant!
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rzk-playground/next.config.js b/rzk-playground/next.config.js
deleted file mode 100644
index ba0d39df6..000000000
--- a/rzk-playground/next.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {
- output: 'export',
- basePath: ''
-}
-
-module.exports = nextConfig
diff --git a/rzk-playground/package-lock.json b/rzk-playground/package-lock.json
index a36eadfdb..b1e36441c 100644
--- a/rzk-playground/package-lock.json
+++ b/rzk-playground/package-lock.json
@@ -8,11 +8,7 @@
"name": "rzk-playground",
"version": "0.1.0",
"dependencies": {
- "@types/node": "^20.6.3",
- "@types/react": "^18.2.22",
- "@types/react-dom": "^18.2.7",
"@uiw/react-codemirror": "^4.21.18",
- "next": "^13.5.2",
"re-resizable": "^6.9.11",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -21,11 +17,20 @@
"rzk-lezer": "./rzk-lezer"
},
"devDependencies": {
+ "@types/node": "^20.6.3",
+ "@types/react": "^18.2.22",
+ "@types/react-dom": "^18.2.7",
"@types/react-resizable": "^3.0.4",
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
+ "@typescript-eslint/parser": "^6.0.0",
+ "@vitejs/plugin-react-swc": "^3.3.2",
"eslint": "^8.49.0",
"eslint-config-next": "^13.5.2",
"eslint-config-prettier": "^9.0.0",
- "typescript": "^5.2.2"
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.3",
+ "typescript": "^5.2.2",
+ "vite": "^4.4.5"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -621,11 +626,6 @@
"@lezer/common": "^1.0.0"
}
},
- "node_modules/@next/env": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.2.tgz",
- "integrity": "sha512-dUseBIQVax+XtdJPzhwww4GetTjlkRSsXeQnisIJWBaHsnxYcN2RGzsPHi58D6qnkATjnhuAtQTJmR1hKYQQPg=="
- },
"node_modules/@next/eslint-plugin-next": {
"version": "13.5.2",
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.2.tgz",
@@ -635,190 +635,274 @@
"glob": "7.1.7"
}
},
- "node_modules/@next/swc-darwin-arm64": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.2.tgz",
- "integrity": "sha512-7eAyunAWq6yFwdSQliWMmGhObPpHTesiKxMw4DWVxhm5yLotBj8FCR4PXGkpRP2tf8QhaWuVba+/fyAYggqfQg==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.4.0.tgz",
+ "integrity": "sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==",
+ "dev": true
+ },
+ "node_modules/@swc/core": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.91.tgz",
+ "integrity": "sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@swc/counter": "^0.1.1",
+ "@swc/types": "^0.1.5"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/swc"
+ },
+ "optionalDependencies": {
+ "@swc/core-darwin-arm64": "1.3.91",
+ "@swc/core-darwin-x64": "1.3.91",
+ "@swc/core-linux-arm-gnueabihf": "1.3.91",
+ "@swc/core-linux-arm64-gnu": "1.3.91",
+ "@swc/core-linux-arm64-musl": "1.3.91",
+ "@swc/core-linux-x64-gnu": "1.3.91",
+ "@swc/core-linux-x64-musl": "1.3.91",
+ "@swc/core-win32-arm64-msvc": "1.3.91",
+ "@swc/core-win32-ia32-msvc": "1.3.91",
+ "@swc/core-win32-x64-msvc": "1.3.91"
+ },
+ "peerDependencies": {
+ "@swc/helpers": "^0.5.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/helpers": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@swc/core-darwin-arm64": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz",
+ "integrity": "sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-darwin-x64": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.2.tgz",
- "integrity": "sha512-WxXYWE7zF1ch8rrNh5xbIWzhMVas6Vbw+9BCSyZvu7gZC5EEiyZNJsafsC89qlaSA7BnmsDXVWQmc+s1feSYbQ==",
+ "node_modules/@swc/core-darwin-x64": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz",
+ "integrity": "sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-linux-arm64-gnu": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.2.tgz",
- "integrity": "sha512-URSwhRYrbj/4MSBjLlefPTK3/tvg95TTm6mRaiZWBB6Za3hpHKi8vSdnCMw5D2aP6k0sQQIEG6Pzcfwm+C5vrg==",
+ "node_modules/@swc/core-linux-arm-gnueabihf": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz",
+ "integrity": "sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-gnu": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz",
+ "integrity": "sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-linux-arm64-musl": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.2.tgz",
- "integrity": "sha512-HefiwAdIygFyNmyVsQeiJp+j8vPKpIRYDlmTlF9/tLdcd3qEL/UEBswa1M7cvO8nHcr27ZTKXz5m7dkd56/Esg==",
+ "node_modules/@swc/core-linux-arm64-musl": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz",
+ "integrity": "sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-linux-x64-gnu": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.2.tgz",
- "integrity": "sha512-htGVVroW0tdHgMYwKWkxWvVoG2RlAdDXRO1RQxYDvOBQsaV0nZsgKkw0EJJJ3urTYnwKskn/MXm305cOgRxD2w==",
+ "node_modules/@swc/core-linux-x64-gnu": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz",
+ "integrity": "sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-linux-x64-musl": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.2.tgz",
- "integrity": "sha512-UBD333GxbHVGi7VDJPPDD1bKnx30gn2clifNJbla7vo5nmBV+x5adyARg05RiT9amIpda6yzAEEUu+s774ldkw==",
+ "node_modules/@swc/core-linux-x64-musl": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz",
+ "integrity": "sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-win32-arm64-msvc": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.2.tgz",
- "integrity": "sha512-Em9ApaSFIQnWXRT3K6iFnr9uBXymixLc65Xw4eNt7glgH0eiXpg+QhjmgI2BFyc7k4ZIjglfukt9saNpEyolWA==",
+ "node_modules/@swc/core-win32-arm64-msvc": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz",
+ "integrity": "sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-win32-ia32-msvc": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.2.tgz",
- "integrity": "sha512-TBACBvvNYU+87X0yklSuAseqdpua8m/P79P0SG1fWUvWDDA14jASIg7kr86AuY5qix47nZLEJ5WWS0L20jAUNw==",
+ "node_modules/@swc/core-win32-ia32-msvc": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz",
+ "integrity": "sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ==",
"cpu": [
"ia32"
],
+ "dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">= 10"
+ "node": ">=10"
}
},
- "node_modules/@next/swc-win32-x64-msvc": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.2.tgz",
- "integrity": "sha512-LfTHt+hTL8w7F9hnB3H4nRasCzLD/fP+h4/GUVBTxrkMJOnh/7OZ0XbYDKO/uuWwryJS9kZjhxcruBiYwc5UDw==",
+ "node_modules/@swc/core-win32-x64-msvc": {
+ "version": "1.3.91",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz",
+ "integrity": "sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
+ "node": ">=10"
}
},
- "node_modules/@rushstack/eslint-patch": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.4.0.tgz",
- "integrity": "sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==",
+ "node_modules/@swc/counter": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz",
+ "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==",
"dev": true
},
"node_modules/@swc/helpers": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
"integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+ "dev": true,
+ "optional": true,
+ "peer": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
+ "node_modules/@swc/types": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz",
+ "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==",
+ "dev": true
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz",
+ "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==",
+ "dev": true
+ },
"node_modules/@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -828,17 +912,20 @@
"node_modules/@types/node": {
"version": "20.6.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.3.tgz",
- "integrity": "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA=="
+ "integrity": "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==",
+ "dev": true
},
"node_modules/@types/prop-types": {
"version": "15.7.6",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.6.tgz",
- "integrity": "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg=="
+ "integrity": "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==",
+ "dev": true
},
"node_modules/@types/react": {
"version": "18.2.22",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz",
"integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==",
+ "dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -849,6 +936,7 @@
"version": "18.2.7",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz",
"integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==",
+ "dev": true,
"dependencies": {
"@types/react": "*"
}
@@ -865,7 +953,96 @@
"node_modules/@types/scheduler": {
"version": "0.16.3",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
- "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
+ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz",
+ "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.7.3",
+ "@typescript-eslint/type-utils": "6.7.3",
+ "@typescript-eslint/utils": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz",
+ "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz",
+ "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz",
+ "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
},
"node_modules/@typescript-eslint/parser": {
"version": "6.7.2",
@@ -912,6 +1089,90 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz",
+ "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.7.3",
+ "@typescript-eslint/utils": "6.7.3",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz",
+ "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz",
+ "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz",
+ "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@typescript-eslint/types": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz",
@@ -952,6 +1213,105 @@
}
}
},
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz",
+ "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.7.3",
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/typescript-estree": "6.7.3",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz",
+ "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz",
+ "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz",
+ "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz",
+ "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@typescript-eslint/visitor-keys": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz",
@@ -1014,6 +1374,18 @@
"react-dom": ">=16.8.0"
}
},
+ "node_modules/@vitejs/plugin-react-swc": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.4.0.tgz",
+ "integrity": "sha512-m7UaA4Uvz82N/0EOVpZL4XsFIakRqrFKeSNxa1FBLSXGvWrWRBwmZb4qxk+ZIVAZcW3c3dn5YosomDgx62XWcQ==",
+ "dev": true,
+ "dependencies": {
+ "@swc/core": "^1.3.85"
+ },
+ "peerDependencies": {
+ "vite": "^4"
+ }
+ },
"node_modules/acorn": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
@@ -1299,17 +1671,6 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
- "node_modules/busboy": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
- "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
- "dependencies": {
- "streamsearch": "^1.1.0"
- },
- "engines": {
- "node": ">=10.16.0"
- }
- },
"node_modules/call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -1332,25 +1693,6 @@
"node": ">=6"
}
},
- "node_modules/caniuse-lite": {
- "version": "1.0.30001538",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz",
- "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ]
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1367,11 +1709,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/client-only": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
- "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
- },
"node_modules/clsx": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
@@ -1440,7 +1777,8 @@
"node_modules/csstype": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
- "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "dev": true
},
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
@@ -2023,6 +2361,15 @@
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
}
},
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz",
+ "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=7"
+ }
+ },
"node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
@@ -2400,11 +2747,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
- },
"node_modules/globals": {
"version": "13.22.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz",
@@ -2470,7 +2812,8 @@
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
},
"node_modules/graphemer": {
"version": "1.4.0",
@@ -3158,6 +3501,7 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -3177,52 +3521,6 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
- "node_modules/next": {
- "version": "13.5.2",
- "resolved": "https://registry.npmjs.org/next/-/next-13.5.2.tgz",
- "integrity": "sha512-vog4UhUaMYAzeqfiAAmgB/QWLW7p01/sg+2vn6bqc/CxHFYizMzLv6gjxKzl31EVFkfl/F+GbxlKizlkTE9RdA==",
- "dependencies": {
- "@next/env": "13.5.2",
- "@swc/helpers": "0.5.2",
- "busboy": "1.6.0",
- "caniuse-lite": "^1.0.30001406",
- "postcss": "8.4.14",
- "styled-jsx": "5.1.1",
- "watchpack": "2.4.0",
- "zod": "3.21.4"
- },
- "bin": {
- "next": "dist/bin/next"
- },
- "engines": {
- "node": ">=16.14.0"
- },
- "optionalDependencies": {
- "@next/swc-darwin-arm64": "13.5.2",
- "@next/swc-darwin-x64": "13.5.2",
- "@next/swc-linux-arm64-gnu": "13.5.2",
- "@next/swc-linux-arm64-musl": "13.5.2",
- "@next/swc-linux-x64-gnu": "13.5.2",
- "@next/swc-linux-x64-musl": "13.5.2",
- "@next/swc-win32-arm64-msvc": "13.5.2",
- "@next/swc-win32-ia32-msvc": "13.5.2",
- "@next/swc-win32-x64-msvc": "13.5.2"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.1.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "sass": "^1.3.0"
- },
- "peerDependenciesMeta": {
- "@opentelemetry/api": {
- "optional": true
- },
- "sass": {
- "optional": true
- }
- }
- },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -3453,7 +3751,8 @@
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -3467,29 +3766,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/postcss": {
- "version": "8.4.14",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
- "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -3716,6 +3992,22 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rollup": {
+ "version": "3.29.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -3869,6 +4161,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -3883,14 +4176,6 @@
"source-map": "^0.6.0"
}
},
- "node_modules/streamsearch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
- "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
- "engines": {
- "node": ">=10.0.0"
- }
- },
"node_modules/string.prototype.matchall": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
@@ -3994,28 +4279,6 @@
"resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz",
"integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA=="
},
- "node_modules/styled-jsx": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
- "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
- "dependencies": {
- "client-only": "0.0.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "peerDependencies": {
- "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "babel-plugin-macros": {
- "optional": true
- }
- }
- },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -4094,7 +4357,10 @@
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/tsx": {
"version": "3.13.0",
@@ -4250,23 +4516,94 @@
"react": ">=16.8.0"
}
},
- "node_modules/w3c-keyname": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
- "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+ "node_modules/vite": {
+ "version": "4.4.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
+ "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.18.10",
+ "postcss": "^8.4.27",
+ "rollup": "^3.27.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
},
- "node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "node_modules/vite/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
},
"engines": {
- "node": ">=10.13.0"
+ "node": "^10 || ^12 || >=14"
}
},
+ "node_modules/w3c-keyname": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -4382,14 +4719,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/zod": {
- "version": "3.21.4",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz",
- "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==",
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
- },
"rzk-lezer": {
"version": "0.1.0",
"dependencies": {
diff --git a/rzk-playground/package.json b/rzk-playground/package.json
index 8f15166e0..755c2ba35 100644
--- a/rzk-playground/package.json
+++ b/rzk-playground/package.json
@@ -3,17 +3,14 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "next lint"
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
+ "preview": "vite preview",
+ "prepare": "tsc && vite build"
},
"dependencies": {
- "@types/node": "^20.6.3",
- "@types/react": "^18.2.22",
- "@types/react-dom": "^18.2.7",
"@uiw/react-codemirror": "^4.21.18",
- "next": "^13.5.2",
"re-resizable": "^6.9.11",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -22,6 +19,15 @@
"rzk-lezer": "./rzk-lezer"
},
"devDependencies": {
+ "@types/node": "^20.6.3",
+ "@types/react": "^18.2.22",
+ "@types/react-dom": "^18.2.7",
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
+ "@typescript-eslint/parser": "^6.0.0",
+ "@vitejs/plugin-react-swc": "^3.3.2",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.3",
+ "vite": "^4.4.5",
"eslint": "^8.49.0",
"eslint-config-next": "^13.5.2",
"typescript": "^5.2.2",
diff --git a/rzk-playground/src/App.tsx b/rzk-playground/src/App.tsx
new file mode 100644
index 000000000..c52d3d88d
--- /dev/null
+++ b/rzk-playground/src/App.tsx
@@ -0,0 +1,160 @@
+import { useCallback, useEffect, useState } from 'react';
+import { Editor } from './editor/Editor';
+import { Resizable } from 're-resizable';
+import * as rzk from './rzk';
+import { KeyBindProvider, ShortcutType } from 'react-keybinds';
+
+declare let window: Window & typeof globalThis & {
+ rzkTypecheck_: (input: { input: string }) => void
+};
+
+function Root({ typecheckedOnStartState }:
+ {
+ typecheckedOnStartState: [boolean, React.Dispatch>]
+ }) {
+ const [typecheckedOnStart, setTypecheckedOnStart] = typecheckedOnStartState
+ const [windowHeight, setWindowHeight] = useState(window.innerHeight)
+
+ useEffect(() => {
+ const handleWindowResize = () => {
+ setWindowHeight(window.innerHeight)
+ };
+
+ window.addEventListener('resize', handleWindowResize);
+
+ return () => {
+ window.removeEventListener('resize', handleWindowResize);
+ };
+ }, []);
+
+ const [text, setText] = useState("")
+
+ const [output, setOutput] = useState("Starting...");
+
+ const typecheck = useCallback(() => {
+ const result = rzk.typecheck(text)
+ if (result.status == 'ok') {
+ setOutput(`Everything is OK!`)
+ } else {
+ setOutput(result.result)
+ }
+ }, [text])
+
+ const [rzkTypeCheckAvailable, setRzkTypeCheckAvailable] = useState(false)
+
+ useEffect(() => {
+ function checkRzkTypecheckAvailable() {
+ if (!window.rzkTypecheck_) {
+ window.setTimeout(checkRzkTypecheckAvailable, 100)
+ } else {
+ setRzkTypeCheckAvailable(true)
+ }
+ }
+
+ checkRzkTypecheckAvailable()
+ }, [text])
+
+ // Typecheck when function and text are ready
+ useEffect(() => {
+ function checkFlag() {
+ if (!typecheckedOnStart && (!rzkTypeCheckAvailable || text === '')) {
+ console.warn("Can't typecheck!")
+ } else if (!typecheckedOnStart) {
+ typecheck()
+ setTypecheckedOnStart(true)
+ }
+ }
+
+ if (!typecheckedOnStart) {
+ checkFlag();
+ }
+ }, [typecheck, rzkTypeCheckAvailable, text, setTypecheckedOnStart, typecheckedOnStart])
+
+ const [needTypecheck, setNeedTypecheck] = useState(false)
+
+ useEffect(() => {
+ if (needTypecheck) {
+ typecheck()
+ setNeedTypecheck(false)
+ }
+ }, [setNeedTypecheck, needTypecheck, typecheck])
+
+ const KEYBINDINGS: ShortcutType[] =
+ [
+ {
+ keys: {
+ Mac: ['Shift', 'Enter'],
+ Windows: ['Shift', 'Enter'],
+ Linux: ['Shift', 'Enter'],
+ },
+ label: 'Test command',
+ callback: () => {
+ setNeedTypecheck(true)
+ },
+ },
+ ]
+ ;
+
+
+ // height of the output panel
+ const [outputPanelHeight, setOutputHeight] = useState(windowHeight * 30 / 100)
+
+ // visible height of the editor
+ const [editorHeight, setEditorHeight] = useState(windowHeight * 70 / 100)
+
+ const
+ minHeight = 100,
+ maxHeight = windowHeight - 100,
+ width = '100vw',
+ height = '100vh',
+ backgroundColor = '#202028'
+
+ return (
+
+
+
+
+
+
+
+
{
+ setOutputHeight(outputPanelHeight + delta.height)
+ }}
+ onResize={(_event, _direction, _elementRef, delta) => {
+ setEditorHeight(window.innerHeight - (outputPanelHeight + delta.height))
+ }}
+ style={{ padding: '20px' }}
+ >
+
+ {output}
+
+
+
+
+ )
+}
+
+
+function App() {
+ return
+}
+
+export default App
\ No newline at end of file
diff --git a/rzk-playground/components/editor/Editor.tsx b/rzk-playground/src/editor/Editor.tsx
similarity index 66%
rename from rzk-playground/components/editor/Editor.tsx
rename to rzk-playground/src/editor/Editor.tsx
index 4a797983d..c3c78783d 100644
--- a/rzk-playground/components/editor/Editor.tsx
+++ b/rzk-playground/src/editor/Editor.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import CodeMirror from '@uiw/react-codemirror';
import { EditorView, keymap } from '@codemirror/view'
import { scrollPastEnd } from '@codemirror/view';
@@ -9,35 +7,56 @@ import { Dispatch, SetStateAction, useState } from 'react';
import { centerCursor } from './cursor-height';
import { language } from './parser';
-export default function Editor({
- setText,
+async function setInitialText(setText: Dispatch>) {
+ const params = new URLSearchParams(window.location.search);
+ if (params.has("snippet")) {
+ setText(params.get("snippet")!);
+ } else if (params.has("code")) {
+ setText(params.get("code")!);
+ } else if (params.has("snippet_url")) {
+ const url = params.get("snippet_url")!;
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: {
+ Accept: 'text/plain;charset=UTF-8'
+ }
+ })
+
+ if (!response.ok) {
+ console.error(`Could not get code from ${url}`)
+ }
+
+ setText(await response.text())
+ }
+ else {
+ setText(example)
+ }
+}
+
+export function Editor({
+ textState,
setNeedTypecheck,
editorHeight
}: {
- setText: Dispatch>,
+ textState: [string, Dispatch>],
setNeedTypecheck: React.Dispatch>,
editorHeight: number
}) {
const [existsSelection, setExistsSelection] = useState(false)
- const params = new URLSearchParams(window.location.search);
+ const [text, setText] = textState
- var snippet = example
- if (params.has("snippet")) {
- snippet = params.get("snippet")!;
- } else if (params.has("code")) {
- snippet = params.get("code")!;
- }
return {
- setText(snippet)
+ onCreateEditor={async (view) => {
+ await setInitialText(setText)
+
view.dispatch({ effects: EditorView.scrollIntoView(0) })
}}
onUpdate={(update) => {
if (update.selectionSet) {
- let ranges = update.state.selection.ranges.filter(v => { return v.from != v.to })
+ const ranges = update.state.selection.ranges.filter(v => { return v.from != v.to })
setExistsSelection(ranges.length > 0)
}
}}
diff --git a/rzk-playground/components/editor/cursor-height.ts b/rzk-playground/src/editor/cursor-height.ts
similarity index 84%
rename from rzk-playground/components/editor/cursor-height.ts
rename to rzk-playground/src/editor/cursor-height.ts
index a61641b5d..d0743446a 100644
--- a/rzk-playground/components/editor/cursor-height.ts
+++ b/rzk-playground/src/editor/cursor-height.ts
@@ -5,7 +5,7 @@ import { ViewPlugin, ViewUpdate } from "@uiw/react-codemirror"
export const centerCursor = (editorHeight: number) => ViewPlugin.fromClass(class {
update(update: ViewUpdate) {
if (update.transactions.some(tr => tr.scrollIntoView)) {
- let view = update.view
+ const view = update.view
// (Sync with other DOM read/write phases for efficiency)
view.requestMeasure({
read() {
@@ -15,8 +15,8 @@ export const centerCursor = (editorHeight: number) => ViewPlugin.fromClass(class
},
write({ cursor }) {
if (cursor) {
- let cursorHeight = cursor.bottom - cursor.top
- let outputTop = editorHeight
+ const cursorHeight = cursor.bottom - cursor.top
+ const outputTop = editorHeight
if (cursor.bottom + cursorHeight + 5 > outputTop)
view.scrollDOM.scrollTop += ((cursor.bottom + 5) - outputTop)
}
diff --git a/rzk-playground/components/editor/example.ts b/rzk-playground/src/editor/example.ts
similarity index 100%
rename from rzk-playground/components/editor/example.ts
rename to rzk-playground/src/editor/example.ts
diff --git a/rzk-playground/components/editor/parser.ts b/rzk-playground/src/editor/parser.ts
similarity index 96%
rename from rzk-playground/components/editor/parser.ts
rename to rzk-playground/src/editor/parser.ts
index e3fca9984..ed0aa622a 100644
--- a/rzk-playground/components/editor/parser.ts
+++ b/rzk-playground/src/editor/parser.ts
@@ -2,7 +2,7 @@ import { parser } from 'rzk-lezer/src/parser'
import { styleTags, tags as t } from '@lezer/highlight'
import { LRLanguage } from '@codemirror/language'
-let parserWithMetadata = parser.configure({
+const parserWithMetadata = parser.configure({
props: [
styleTags({
"LineComment!": t.lineComment,
diff --git a/rzk-playground/components/editor/theme.ts b/rzk-playground/src/editor/theme.ts
similarity index 100%
rename from rzk-playground/components/editor/theme.ts
rename to rzk-playground/src/editor/theme.ts
diff --git a/rzk-playground/app/globals.css b/rzk-playground/src/index.css
similarity index 98%
rename from rzk-playground/app/globals.css
rename to rzk-playground/src/index.css
index 681e443e2..4b28f4e5b 100644
--- a/rzk-playground/app/globals.css
+++ b/rzk-playground/src/index.css
@@ -80,12 +80,12 @@ body {
background: #A46BF5;
}
-#message {
+#output {
background-color: #1e1f1c;
color: #ffffff;
overflow: scroll;
}
-#message pre {
+#output pre {
font-family: Inconsolata, monospace;
}
\ No newline at end of file
diff --git a/rzk-playground/src/main.tsx b/rzk-playground/src/main.tsx
new file mode 100644
index 000000000..3d7150da8
--- /dev/null
+++ b/rzk-playground/src/main.tsx
@@ -0,0 +1,10 @@
+import React from 'react'
+import ReactDOM from 'react-dom/client'
+import App from './App.tsx'
+import './index.css'
+
+ReactDOM.createRoot(document.getElementById('root')!).render(
+
+
+ ,
+)
diff --git a/rzk-playground/src/rzk-wrapper.js b/rzk-playground/src/rzk-wrapper.js
deleted file mode 100644
index f0e692711..000000000
--- a/rzk-playground/src/rzk-wrapper.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export function rzkTypecheck(input) {
- var tmp = { input }
- rzkTypecheck_(tmp)
- return tmp
-}
\ No newline at end of file
diff --git a/rzk-playground/src/rzk.ts b/rzk-playground/src/rzk.ts
index 809afc6da..6c34cb772 100644
--- a/rzk-playground/src/rzk.ts
+++ b/rzk-playground/src/rzk.ts
@@ -1,8 +1,10 @@
-import * as wrapper from "./rzk-wrapper"
-
export type Result = { status: string, result: string }
+declare function rzkTypecheck_(tmp: { input: string }): void;
+
export function typecheck(input: string) {
- let result: Result = wrapper.rzkTypecheck(input) as any
+ const tmp = { input }
+ rzkTypecheck_(tmp)
+ const result: Result = tmp as unknown as Result
return result
}
\ No newline at end of file
diff --git a/rzk-playground/tsconfig.json b/rzk-playground/tsconfig.json
index e59724b28..aa29fe5ef 100644
--- a/rzk-playground/tsconfig.json
+++ b/rzk-playground/tsconfig.json
@@ -1,27 +1,25 @@
{
"compilerOptions": {
- "target": "es5",
- "lib": ["dom", "dom.iterable", "esnext"],
- "allowJs": true,
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
"skipLibCheck": true,
- "strict": true,
- "noEmit": true,
- "esModuleInterop": true,
- "module": "esnext",
+
+ /* Bundler mode */
"moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve",
- "incremental": true,
- "plugins": [
- {
- "name": "next"
- }
- ],
- "paths": {
- "@/*": ["./src/*"]
- }
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
+ "include": ["src", "public/rzk.js"],
+ "references": [{ "path": "./tsconfig.node.json" }]
}
diff --git a/rzk-playground/tsconfig.node.json b/rzk-playground/tsconfig.node.json
new file mode 100644
index 000000000..42872c59f
--- /dev/null
+++ b/rzk-playground/tsconfig.node.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/rzk-playground/vite.config.ts b/rzk-playground/vite.config.ts
new file mode 100644
index 000000000..8e22e98e3
--- /dev/null
+++ b/rzk-playground/vite.config.ts
@@ -0,0 +1,10 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react-swc'
+
+const ASSET_URL = process.env.ASSET_URL || '/';
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+ base: ASSET_URL
+})
diff --git a/rzk/ChangeLog.md b/rzk/ChangeLog.md
index 39a65be92..58a024af4 100644
--- a/rzk/ChangeLog.md
+++ b/rzk/ChangeLog.md
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to the
[Haskell Package Versioning Policy](https://pvp.haskell.org/).
+## v0.6.7 — 2023-10-07
+
+- Fix build on some systems (fix `BNFC:bnfc` executable dependency, see [#125](https://github.com/rzk-lang/rzk/pull/125))
+- Improve Rzk Playground (see [#124](https://github.com/rzk-lang/rzk/pull/124) by @deemp):
+ - Add `snippet_url` parameter
+ - Migrated from NextJS to Vite
+ - Use `setText` on `params` attribute
+- Slightly improve documentation:
+ - Add links to Rzk Zulip (see [#131](https://github.com/rzk-lang/rzk/pull/131))
+ - Add `cabal update` to instructions (see [`3aa8fd3`](https://github.com/rzk-lang/rzk/commit/3aa8fd38902fc8cbb29f86122410d24398a15b0b))
+
## v0.6.6 — 2023-10-02
- Fix builds on Windows (and macOS) (see [#121](https://github.com/rzk-lang/rzk/pull/121))
diff --git a/rzk/package.yaml b/rzk/package.yaml
index a76e7f9f2..1a92ad2a3 100644
--- a/rzk/package.yaml
+++ b/rzk/package.yaml
@@ -1,10 +1,10 @@
name: rzk
-version: 0.6.6
-github: 'rzk-lang/rzk'
+version: 0.6.7
+github: "rzk-lang/rzk"
license: BSD3
-author: 'Nikolai Kudasov'
-maintainer: 'nickolay.kudasov@gmail.com'
-copyright: '2023 Nikolai Kudasov'
+author: "Nikolai Kudasov"
+maintainer: "nickolay.kudasov@gmail.com"
+copyright: "2023 Nikolai Kudasov"
extra-source-files:
- README.md
@@ -28,14 +28,14 @@ flags:
custom-setup:
dependencies:
- base: ">= 4.11.0.0 && < 5.0"
- Cabal: ">= 2.4.0.1 && < 4.0"
+ base: ">= 4.11.0.0 && < 5.0"
+ Cabal: ">= 2.4.0.1 && < 4.0"
process: ">= 1.6.3.0"
build-tools:
- alex: ">= 3.2.4"
- happy: ">= 1.19.9"
- BNFC: ">= 2.9.4.1"
+ alex: ">= 3.2.4"
+ happy: ">= 1.19.9"
+ BNFC:bnfc: ">= 2.9.4.1"
dependencies:
array: ">= 0.5.3.0"
diff --git a/rzk/rzk.cabal b/rzk/rzk.cabal
index 7a39c812c..e5a48f94f 100644
--- a/rzk/rzk.cabal
+++ b/rzk/rzk.cabal
@@ -5,7 +5,7 @@ cabal-version: 1.24
-- see: https://github.com/sol/hpack
name: rzk
-version: 0.6.6
+version: 0.6.7
synopsis: An experimental proof assistant for synthetic ∞-categories
description: Please see the README on GitHub at
category: Dependent Types
@@ -61,7 +61,7 @@ library
alex >=3.2.4
, happy >=1.19.9
build-tool-depends:
- BNFC:BNFC >=2.9.4.1
+ BNFC:bnfc >=2.9.4.1
build-depends:
Glob >=0.9.3
, array >=0.5.3.0
@@ -104,7 +104,7 @@ executable rzk
alex >=3.2.4
, happy >=1.19.9
build-tool-depends:
- BNFC:BNFC >=2.9.4.1
+ BNFC:bnfc >=2.9.4.1
build-depends:
Glob >=0.9.3
, array >=0.5.3.0
@@ -133,7 +133,7 @@ test-suite doctests
alex >=3.2.4
, happy >=1.19.9
build-tool-depends:
- BNFC:BNFC >=2.9.4.1
+ BNFC:bnfc >=2.9.4.1
build-depends:
Glob
, QuickCheck
@@ -162,7 +162,7 @@ test-suite rzk-test
alex >=3.2.4
, happy >=1.19.9
build-tool-depends:
- BNFC:BNFC >=2.9.4.1
+ BNFC:bnfc >=2.9.4.1
build-depends:
Glob >=0.9.3
, array >=0.5.3.0