From acab516e4b69a080d8383971200da9475ce19818 Mon Sep 17 00:00:00 2001 From: Dillon Mulroy Date: Tue, 5 Mar 2024 11:14:32 -0500 Subject: [PATCH] [main] Upgrade project + templates to melange v3 (#89) * add ocaml_install lib structure (#71) * add ocaml_install lib structure * change directory to snake case --------- Co-authored-by: Johann * From create-melange-app to cma_configuration (#76) * From create-melange-app to cma_configuration * Added components library to theapp is react * merge dev with main (#1) * From create-melange-app to cma_configuration * Added components library to theapp is react * Comment avout open re added * Comment about 'open' re-added * add ; * remove uneeded open --------- Co-authored-by: Dillon Mulroy * Contributing guide (#78) * Contributing guide * latent addition * bump cli version (#79) 1.0.8 * updates * update ocamlformat * update ocamlformat * add ocaml-install command (#81) * add ocaml-install command * add \n --------- Co-authored-by: Dillon Mulroy * disable ocaml-install * update deps, melange apis, templates * finish updating to melange v3 --------- Co-authored-by: Johann <47913920+2xrJohann@users.noreply.github.com> Co-authored-by: Johann Co-authored-by: JoaoAlexNunes <57943137+JoaoAlexNunes@users.noreply.github.com> Co-authored-by: metame --- create_melange_app.opam | 10 +- dune-project | 12 +- package-lock.json | 1093 ++++------------- package.json | 6 +- src/app.re | 4 +- src/bindings/commander/argument.ml | 2 +- src/bindings/commander/command.ml | 6 +- src/bindings/handlebars/handlebars.ml | 90 +- src/bindings/handlebars/options.ml | 20 +- src/bindings/ink/hooks.ml | 4 +- src/bindings/ink/ink.ml | 12 +- src/bindings/ink/instance.ml | 2 +- src/bindings/ink/key.ml | 28 +- src/bindings/nodejs/child_process.ml | 2 +- src/core/dune.ml | 10 +- src/core/fs.ml | 4 +- src/core/validation.ml | 4 +- src/init/component.re | 6 +- src/init/scaffold.re | 76 -- src/ocaml_install/component.re | 2 +- src/ocaml_install/ocaml_install.re | 20 + src/templates/base/dune-project.tmpl | 2 +- .../extensions/app/app_ml/app.ml.tmpl | 2 +- .../extensions/app/app_re/app.re.tmpl | 2 +- .../extensions/app/react_ml/App.re.tmpl | 9 +- .../extensions/app/react_re/App.re.tmpl | 7 +- 26 files changed, 372 insertions(+), 1063 deletions(-) diff --git a/create_melange_app.opam b/create_melange_app.opam index f36ac6d..5b7ec43 100644 --- a/create_melange_app.opam +++ b/create_melange_app.opam @@ -10,12 +10,12 @@ homepage: "https://github.com/dmmulroy/create-melange-app" doc: "https://github.com/dmmulroy/create-melange-app" bug-reports: "https://github.com/dmmulroy/create-melange-app/issues" depends: [ - "ocaml" {>= "5.1.0"} - "dune" {>= "3.11" & >= "3.11"} - "melange" {>= "2.1.0"} + "ocaml" {>= "5.1.1"} + "dune" {>= "3.14" & >= "3.14"} + "melange" {= "3.0.0-51"} "opam-check-npm-deps" - "reason" {>= "3.10.0"} - "reason-react" {>= "0.13.0"} + "reason" {>= "3.11.0"} + "reason-react" {>= "0.14.0"} "reason-react-ppx" "ppx_deriving" "odoc" {with-doc} diff --git a/dune-project b/dune-project index 8de6f90..2e04f56 100644 --- a/dune-project +++ b/dune-project @@ -1,4 +1,4 @@ -(lang dune 3.11) +(lang dune 3.14) (using melange 0.1) @@ -26,16 +26,16 @@ (allow_empty) (depends (ocaml - (>= 5.1.0)) + (>= 5.1.1)) (dune - (>= 3.11)) + (>= 3.14)) (melange - (>= 2.1.0)) + (= 3.0.0-51)) opam-check-npm-deps (reason - (>= 3.10.0)) + (>= 3.11.0)) (reason-react - (>= 0.13.0)) + (>= 0.14.0)) reason-react-ppx ppx_deriving) (tags diff --git a/package-lock.json b/package-lock.json index 2cb33d9..191f5c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "create-melange-app", "version": "1.0.8", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -25,7 +25,8 @@ }, "node_modules/@alcalzone/ansi-tokenize": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz", + "integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^4.0.0" @@ -34,19 +35,10 @@ "node": ">=14.13.1" } }, - "node_modules/@alcalzone/ansi-tokenize/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@inkjs/ui": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@inkjs/ui/-/ui-1.0.0.tgz", + "integrity": "sha512-JAVX5ntXG3QokXsGelobIc1ORkTQiJU4XiemUoMUzVaZkBpwzOD7NkMm0qzKvysDyrE1nD6keFHRhwsRvhVamw==", "dependencies": { "chalk": "^5.2.0", "cli-spinners": "^2.9.0", @@ -60,30 +52,23 @@ "ink": "^4.2.0" } }, - "node_modules/@inkjs/ui/node_modules/chalk": { - "version": "5.3.0", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@types/gradient-string": { "version": "1.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/gradient-string/-/gradient-string-1.1.5.tgz", + "integrity": "sha512-Z2VPQ0q+IhrAO7XjJSjpDsoPc+CsCshRNah1IE9LCo/NzHMHylssvx73i0BAKzuaGj9cdhmgq9rLaietpYAbKQ==", "dependencies": { "@types/tinycolor2": "*" } }, "node_modules/@types/tinycolor2": { "version": "1.4.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", + "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==" }, "node_modules/ansi-escapes": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", "dependencies": { "type-fest": "^3.0.0" }, @@ -96,7 +81,8 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "3.13.1", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "engines": { "node": ">=14.16" }, @@ -104,9 +90,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/auto-bind": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", + "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -130,7 +139,8 @@ }, "node_modules/cfonts": { "version": "3.2.0", - "license": "GPL-3.0-or-later", + "resolved": "https://registry.npmjs.org/cfonts/-/cfonts-3.2.0.tgz", + "integrity": "sha512-CFGxRY6aBuOgK85bceCpmMMhuyO6IwcAyyeapB//DtRzm7NbAEsDuuZzBoQxVonz+C2BmZ3swqB/YgcmW+rh3A==", "dependencies": { "supports-color": "^8", "window-size": "^1.1.1" @@ -142,22 +152,35 @@ "node": ">=10" } }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/ci-info": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cli-boxes": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "engines": { "node": ">=10" }, @@ -167,7 +190,8 @@ }, "node_modules/cli-cursor": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dependencies": { "restore-cursor": "^4.0.0" }, @@ -180,7 +204,8 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "engines": { "node": ">=6" }, @@ -190,7 +215,8 @@ }, "node_modules/cli-truncate": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^5.0.0" @@ -204,7 +230,8 @@ }, "node_modules/cli-truncate/node_modules/slice-ansi": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -216,19 +243,10 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/cli-truncate/node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/code-excerpt": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", "dependencies": { "convert-to-spaces": "^2.0.1" }, @@ -238,7 +256,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -248,25 +267,29 @@ }, "node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/commander": { "version": "11.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "engines": { "node": ">=16" } }, "node_modules/convert-to-spaces": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/deepmerge": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } @@ -310,7 +333,8 @@ }, "node_modules/define-property": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dependencies": { "is-descriptor": "^1.0.0" }, @@ -320,15 +344,18 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/emoji-regex": { "version": "9.2.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/escape-string-regexp": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { "node": ">=12" }, @@ -338,7 +365,8 @@ }, "node_modules/figures": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", "dependencies": { "escape-string-regexp": "^5.0.0", "is-unicode-supported": "^1.2.0" @@ -352,7 +380,8 @@ }, "node_modules/fs-extra": { "version": "11.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -364,18 +393,21 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/gradient-string": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gradient-string/-/gradient-string-2.0.2.tgz", + "integrity": "sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==", "dependencies": { "chalk": "^4.1.2", "tinygradient": "^1.1.5" @@ -384,36 +416,39 @@ "node": ">=10" } }, - "node_modules/gradient-string/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "node_modules/gradient-string/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/gradient-string/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/gradient-string/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/gradient-string/node_modules/chalk/node_modules/supports-color": { + "node_modules/gradient-string/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -423,7 +458,8 @@ }, "node_modules/handlebars": { "version": "4.7.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -442,14 +478,16 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/hasown": { - "version": "2.0.0", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dependencies": { "function-bind": "^1.1.2" }, @@ -459,7 +497,8 @@ }, "node_modules/indent-string": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "engines": { "node": ">=12" }, @@ -469,7 +508,8 @@ }, "node_modules/ink": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ink/-/ink-4.3.1.tgz", + "integrity": "sha512-XlH5AiZRLIC4cF+eMgZLsB/feHCDT7lUtHXK4pe8ULGrC6mNosrYidzJr8CRY0P+hK7UmZ1rLO+ufdox53+NQg==", "dependencies": { "@alcalzone/ansi-tokenize": "^0.1.2", "ansi-escapes": "^6.0.0", @@ -516,7 +556,8 @@ }, "node_modules/ink-big-text": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ink-big-text/-/ink-big-text-2.0.0.tgz", + "integrity": "sha512-Juzqv+rIOLGuhMJiE50VtS6dg6olWfzFdL7wsU/EARSL5Eaa5JNXMogMBm9AkjgzO2Y3UwWCOh87jbhSn8aNdw==", "dependencies": { "cfonts": "^3.1.1", "prop-types": "^15.8.1" @@ -534,7 +575,8 @@ }, "node_modules/ink-gradient": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ink-gradient/-/ink-gradient-3.0.0.tgz", + "integrity": "sha512-OVyPBovBxE1tFcBhSamb+P1puqDP6pG3xFe2W9NiLgwUZd9RbcjBeR7twLbliUT9navrUstEf1ZcPKKvx71BsQ==", "dependencies": { "@types/gradient-string": "^1.1.2", "gradient-string": "^2.0.2", @@ -551,29 +593,6 @@ "ink": ">=4" } }, - "node_modules/ink-gradient/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/ink-gradient/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/ink-link": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ink-link/-/ink-link-3.0.0.tgz", @@ -592,19 +611,10 @@ "ink": ">=4" } }, - "node_modules/ink/node_modules/chalk": { - "version": "5.3.0", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/is-accessor-descriptor": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { "hasown": "^2.0.0" }, @@ -614,11 +624,13 @@ }, "node_modules/is-buffer": { "version": "1.1.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "node_modules/is-ci": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dependencies": { "ci-info": "^3.2.0" }, @@ -628,7 +640,8 @@ }, "node_modules/is-data-descriptor": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { "hasown": "^2.0.0" }, @@ -638,7 +651,8 @@ }, "node_modules/is-descriptor": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" @@ -663,7 +677,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "engines": { "node": ">=12" }, @@ -690,14 +705,16 @@ }, "node_modules/is-lower-case": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/is-number": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dependencies": { "kind-of": "^3.0.2" }, @@ -707,7 +724,8 @@ }, "node_modules/is-unicode-supported": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "engines": { "node": ">=12" }, @@ -717,7 +735,8 @@ }, "node_modules/is-upper-case": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", "dependencies": { "tslib": "^2.0.3" } @@ -738,11 +757,13 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/jsonfile": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { "universalify": "^2.0.0" }, @@ -752,7 +773,8 @@ }, "node_modules/kind-of": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dependencies": { "is-buffer": "^1.1.5" }, @@ -762,11 +784,13 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -776,32 +800,37 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { "node": ">=6" } }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/neo-async": { "version": "2.6.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/onetime": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -813,9 +842,9 @@ } }, "node_modules/open": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/open/-/open-10.0.2.tgz", - "integrity": "sha512-GnYLdE+E3K8NeSE23N0g67/9q9AXRph5oTUbz6IbIgElPigEnQ2aHuqRge3y0JUr67qoc84xME5kF03fDc3fcA==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-10.0.4.tgz", + "integrity": "sha512-oujJ/FFr7ra6/7gJuQ4ZJJ8Gf2VHM0J3J/W7IvH++zaqEzacWVxzK++NiVY5NLHTTj7u/jNH5H3Ei9biL31Lng==", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -831,14 +860,16 @@ }, "node_modules/patch-console": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", + "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/prop-types": { "version": "15.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -847,7 +878,8 @@ }, "node_modules/react": { "version": "18.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -858,11 +890,13 @@ }, "node_modules/react-is": { "version": "16.13.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-reconciler": { "version": "0.29.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -876,7 +910,8 @@ }, "node_modules/restore-cursor": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -901,18 +936,21 @@ }, "node_modules/scheduler": { "version": "0.23.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/signal-exit": { "version": "3.0.7", - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/slice-ansi": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-6.0.0.tgz", + "integrity": "sha512-6bn4hRfkTvDfUoEQYkERg0BVF1D0vrX9HEkMl08uDiNWvVvjylLHvZFZWkDo6wjT8tUctbYl1nCOuE66ZTaUtA==", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^4.0.0" @@ -924,26 +962,18 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } }, "node_modules/stack-utils": { "version": "2.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -953,14 +983,16 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "engines": { "node": ">=8" } }, "node_modules/string-width": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -973,9 +1005,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width/node_modules/strip-ansi": { + "node_modules/strip-ansi": { "version": "7.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -986,19 +1019,10 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, @@ -1074,11 +1098,13 @@ }, "node_modules/tinycolor2": { "version": "1.6.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, "node_modules/tinygradient": { "version": "1.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tinygradient/-/tinygradient-1.1.5.tgz", + "integrity": "sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==", "dependencies": { "@types/tinycolor2": "^1.4.0", "tinycolor2": "^1.0.0" @@ -1086,11 +1112,13 @@ }, "node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-fest": { "version": "0.12.0", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", "engines": { "node": ">=10" }, @@ -1100,7 +1128,8 @@ }, "node_modules/uglify-js": { "version": "3.17.4", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -1111,14 +1140,16 @@ }, "node_modules/universalify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } }, "node_modules/widest-line": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dependencies": { "string-width": "^5.0.1" }, @@ -1131,7 +1162,8 @@ }, "node_modules/window-size": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.1.tgz", + "integrity": "sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==", "dependencies": { "define-property": "^1.0.0", "is-number": "^3.0.0" @@ -1145,11 +1177,13 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, "node_modules/wrap-ansi": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1162,42 +1196,10 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/ws": { - "version": "8.14.2", - "license": "MIT", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, @@ -1216,655 +1218,8 @@ }, "node_modules/yoga-wasm-web": { "version": "0.3.3", - "license": "MIT" - } - }, - "dependencies": { - "@alcalzone/ansi-tokenize": { - "version": "0.1.3", - "requires": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1" - } - } - }, - "@inkjs/ui": { - "version": "1.0.0", - "requires": { - "chalk": "^5.2.0", - "cli-spinners": "^2.9.0", - "deepmerge": "^4.3.1", - "figures": "^5.0.0" - }, - "dependencies": { - "chalk": { - "version": "5.3.0" - } - } - }, - "@types/gradient-string": { - "version": "1.1.5", - "requires": { - "@types/tinycolor2": "*" - } - }, - "@types/tinycolor2": { - "version": "1.4.6" - }, - "ansi-escapes": { - "version": "6.2.0", - "requires": { - "type-fest": "^3.0.0" - }, - "dependencies": { - "type-fest": { - "version": "3.13.1" - } - } - }, - "auto-bind": { - "version": "5.0.1" - }, - "bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "requires": { - "run-applescript": "^7.0.0" - } - }, - "cfonts": { - "version": "3.2.0", - "requires": { - "supports-color": "^8", - "window-size": "^1.1.1" - } - }, - "ci-info": { - "version": "3.9.0" - }, - "cli-boxes": { - "version": "3.0.0" - }, - "cli-cursor": { - "version": "4.0.0", - "requires": { - "restore-cursor": "^4.0.0" - } - }, - "cli-spinners": { - "version": "2.9.2" - }, - "cli-truncate": { - "version": "3.1.0", - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "dependencies": { - "slice-ansi": { - "version": "5.0.0", - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1" - } - } - } - } - }, - "code-excerpt": { - "version": "4.0.0", - "requires": { - "convert-to-spaces": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4" - }, - "commander": { - "version": "11.1.0" - }, - "convert-to-spaces": { - "version": "2.0.1" - }, - "deepmerge": { - "version": "4.3.1" - }, - "default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "requires": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - } - }, - "default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==" - }, - "define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" - }, - "define-property": { - "version": "1.0.0", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "eastasianwidth": { - "version": "0.2.0" - }, - "emoji-regex": { - "version": "9.2.2" - }, - "escape-string-regexp": { - "version": "5.0.0" - }, - "figures": { - "version": "5.0.0", - "requires": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - } - }, - "fs-extra": { - "version": "11.2.0", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "function-bind": { - "version": "1.1.2" - }, - "graceful-fs": { - "version": "4.2.11" - }, - "gradient-string": { - "version": "2.0.2", - "requires": { - "chalk": "^4.1.2", - "tinygradient": "^1.1.5" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - } - } - } - } - }, - "handlebars": { - "version": "4.7.8", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0" - }, - "hasown": { - "version": "2.0.0", - "requires": { - "function-bind": "^1.1.2" - } - }, - "indent-string": { - "version": "5.0.0" - }, - "ink": { - "version": "4.3.1", - "requires": { - "@alcalzone/ansi-tokenize": "^0.1.2", - "ansi-escapes": "^6.0.0", - "auto-bind": "^5.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "cli-cursor": "^4.0.0", - "cli-truncate": "^3.1.0", - "code-excerpt": "^4.0.0", - "indent-string": "^5.0.0", - "is-ci": "^3.0.1", - "is-lower-case": "^2.0.2", - "is-upper-case": "^2.0.2", - "lodash": "^4.17.21", - "patch-console": "^2.0.0", - "react-reconciler": "^0.29.0", - "scheduler": "^0.23.0", - "signal-exit": "^3.0.7", - "slice-ansi": "^6.0.0", - "stack-utils": "^2.0.6", - "string-width": "^5.1.2", - "type-fest": "^0.12.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0", - "ws": "^8.12.0", - "yoga-wasm-web": "~0.3.3" - }, - "dependencies": { - "chalk": { - "version": "5.3.0" - } - } - }, - "ink-big-text": { - "version": "2.0.0", - "requires": { - "cfonts": "^3.1.1", - "prop-types": "^15.8.1" - } - }, - "ink-gradient": { - "version": "3.0.0", - "requires": { - "@types/gradient-string": "^1.1.2", - "gradient-string": "^2.0.2", - "prop-types": "^15.8.1", - "strip-ansi": "^7.1.0" - }, - "dependencies": { - "strip-ansi": { - "version": "7.1.0", - "requires": { - "ansi-regex": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1" - } - } - } - } - }, - "ink-link": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ink-link/-/ink-link-3.0.0.tgz", - "integrity": "sha512-S8jbyJQhYluCYn+O2dZ9I+Ts0OfpuXmRVJ3qNU+L4XCQEE2k4Vb0dO1Wu/QsArEXabQK7Q/DLtZ1ozLVBNGypQ==", - "requires": { - "prop-types": "^15.8.1", - "terminal-link": "^3.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.1", - "requires": { - "hasown": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6" - }, - "is-ci": { - "version": "3.0.1", - "requires": { - "ci-info": "^3.2.0" - } - }, - "is-data-descriptor": { - "version": "1.0.1", - "requires": { - "hasown": "^2.0.0" - } - }, - "is-descriptor": { - "version": "1.0.3", - "requires": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - } - }, - "is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==" - }, - "is-fullwidth-code-point": { - "version": "4.0.0" - }, - "is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "requires": { - "is-docker": "^3.0.0" - } - }, - "is-lower-case": { - "version": "2.0.2", - "requires": { - "tslib": "^2.0.3" - } - }, - "is-number": { - "version": "3.0.0", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-unicode-supported": { - "version": "1.3.0" - }, - "is-upper-case": { - "version": "2.0.2", - "requires": { - "tslib": "^2.0.3" - } - }, - "is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "requires": { - "is-inside-container": "^1.0.0" - } - }, - "js-tokens": { - "version": "4.0.0" - }, - "jsonfile": { - "version": "6.1.0", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lodash": { - "version": "4.17.21" - }, - "loose-envify": { - "version": "1.4.0", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0" - }, - "minimist": { - "version": "1.2.8" - }, - "neo-async": { - "version": "2.6.2" - }, - "object-assign": { - "version": "4.1.1" - }, - "onetime": { - "version": "5.1.2", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/open/-/open-10.0.2.tgz", - "integrity": "sha512-GnYLdE+E3K8NeSE23N0g67/9q9AXRph5oTUbz6IbIgElPigEnQ2aHuqRge3y0JUr67qoc84xME5kF03fDc3fcA==", - "requires": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - } - }, - "patch-console": { - "version": "2.0.0" - }, - "prop-types": { - "version": "15.8.1", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "react": { - "version": "18.2.0", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-is": { - "version": "16.13.1" - }, - "react-reconciler": { - "version": "0.29.0", - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, - "restore-cursor": { - "version": "4.0.0", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==" - }, - "scheduler": { - "version": "0.23.0", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "signal-exit": { - "version": "3.0.7" - }, - "slice-ansi": { - "version": "6.0.0", - "requires": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1" - } - } - }, - "source-map": { - "version": "0.6.1" - }, - "stack-utils": { - "version": "2.0.6", - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0" - } - } - }, - "string-width": { - "version": "5.1.2", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "7.1.0", - "requires": { - "ansi-regex": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1" - } - } - } - } - }, - "supports-color": { - "version": "8.1.1", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "terminal-link": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-3.0.0.tgz", - "integrity": "sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==", - "requires": { - "ansi-escapes": "^5.0.0", - "supports-hyperlinks": "^2.2.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "requires": { - "type-fest": "^1.0.2" - } - }, - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" - } - } - }, - "tinycolor2": { - "version": "1.6.0" - }, - "tinygradient": { - "version": "1.1.5", - "requires": { - "@types/tinycolor2": "^1.4.0", - "tinycolor2": "^1.0.0" - } - }, - "tslib": { - "version": "2.6.2" - }, - "type-fest": { - "version": "0.12.0" - }, - "uglify-js": { - "version": "3.17.4", - "optional": true - }, - "universalify": { - "version": "2.0.1" - }, - "widest-line": { - "version": "4.0.1", - "requires": { - "string-width": "^5.0.1" - } - }, - "window-size": { - "version": "1.1.1", - "requires": { - "define-property": "^1.0.0", - "is-number": "^3.0.0" - } - }, - "wordwrap": { - "version": "1.0.0" - }, - "wrap-ansi": { - "version": "8.1.0", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1" - }, - "strip-ansi": { - "version": "7.1.0", - "requires": { - "ansi-regex": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1" - } - } - } - } - }, - "ws": { - "version": "8.14.2", - "requires": {} - }, - "yoga-wasm-web": { - "version": "0.3.3" + "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", + "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==" } } } diff --git a/package.json b/package.json index 36865d1..60da3f5 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,11 @@ "bin": { "create-melange-app": "./build/src/cli.mjs" }, - "scripts": {}, + "scripts": { + "publish-patch": "npm version patch && npm publish", + "publish-minor": "npm version minor && npm publish", + "publish-major": "npm version major && npm publish" + }, "dependencies": { "@inkjs/ui": "^1.0.0", "commander": "^11.1.0", diff --git a/src/app.re b/src/app.re index 762f8b6..ba027fc 100644 --- a/src/app.re +++ b/src/app.re @@ -5,7 +5,7 @@ let run = () => { program |> Command.set_name("create-melange-app") |> Command.set_description("A CLI for creating applications with Melange") - |> Command.set_version("1.0.8", ~flags="-v") + |> Command.set_version("1.1.0", ~flags="-v") |> Command.argument( ~name="[dir]", ~description= @@ -17,6 +17,8 @@ let run = () => { |> (exit_promise => `Promise_void(exit_promise)) }) |> Command.add_command(Env_check.command) + // We'll uncomment this when caml-install is ready + // |> Command.add_command(Ocaml_install.command) |> Command.parse |> ignore; }; diff --git a/src/bindings/commander/argument.ml b/src/bindings/commander/argument.ml index 54acc50..d7d3631 100644 --- a/src/bindings/commander/argument.ml +++ b/src/bindings/commander/argument.ml @@ -6,7 +6,7 @@ type t = { variadic : bool; default_value : value option; [@mel.as "defaultValue"] default_value_description : string option; [@mel.as "defaultValueDescription"] - arg_choices : string array option; [@optional] [@mel.as "argChoices"] + arg_choices : string array option; [@mel.optional] [@mel.as "argChoices"] } [@@deriving abstract] diff --git a/src/bindings/commander/command.ml b/src/bindings/commander/command.ml index 41805d7..10c720e 100644 --- a/src/bindings/commander/command.ml +++ b/src/bindings/commander/command.ml @@ -1,9 +1,9 @@ type dynamic = Dynamic : 'a -> dynamic [@@unboxed] type command_option = { - hidden : bool option; [@optional] - is_default : bool option; [@optional] [@mel.as "isDefault"] - executable_file : string option; [@optional] [@mel.as "executableFile"] + hidden : bool option; [@mel.optional] + is_default : bool option; [@mel.optional] [@mel.as "isDefault"] + executable_file : string option; [@mel.optional] [@mel.as "executableFile"] } [@@deriving abstract] diff --git a/src/bindings/handlebars/handlebars.ml b/src/bindings/handlebars/handlebars.ml index 9010659..c133f8b 100644 --- a/src/bindings/handlebars/handlebars.ml +++ b/src/bindings/handlebars/handlebars.ml @@ -16,38 +16,39 @@ module rec Options : sig type known_helpers = Builtin of builtin_helpers | Custom of custom_helpers type t = { - data : bool option; [@optional] - compat : bool option; [@optional] - known_helpers : known_helpers option; [@optional] - known_helpers_only : bool option; [@optional] - no_escape : bool option; [@optional] - strict : bool option; [@optional] - assume_objects : bool option; [@optional] - prevent_indent : bool option; [@optional] - ignore_standalone : bool option; [@optional] - explicit_partial_context : bool option; [@optional] + data : bool option; [@mel.optional] + compat : bool option; [@mel.optional] + known_helpers : known_helpers option; [@mel.optional] + known_helpers_only : bool option; [@mel.optional] + no_escape : bool option; [@mel.optional] + strict : bool option; [@mel.optional] + assume_objects : bool option; [@mel.optional] + prevent_indent : bool option; [@mel.optional] + ignore_standalone : bool option; [@mel.optional] + explicit_partial_context : bool option; [@mel.optional] } [@@deriving abstract] module Runtime : sig type 'a t = { - partial : bool option; [@optional] - depths : dynamic array option; [@optional] - helpers : dynamic Js.Dict.t option; [@optional] - partials : dynamic Template.t Js.Dict.t option; [@optional] - decorators : dynamic Js.Dict.t option; [@optional] - data : dynamic option; [@optional] - block_params : dynamic array option; [@optional] [@mel.as "blockParams"] + partial : bool option; [@mel.optional] + depths : dynamic array option; [@mel.optional] + helpers : dynamic Js.Dict.t option; [@mel.optional] + partials : dynamic Template.t Js.Dict.t option; [@mel.optional] + decorators : dynamic Js.Dict.t option; [@mel.optional] + data : dynamic option; [@mel.optional] + block_params : dynamic array option; + [@mel.optional] [@mel.as "blockParams"] allow_calls_to_helper_missing : bool option; - [@optional] [@mel.as "allowCallsToHelperMissing"] + [@mel.optional] [@mel.as "allowCallsToHelperMissing"] allowed_proto_properties : bool Js.Dict.t option; - [@optional] [@mel.as "allowedProtoProperties"] + [@mel.optional] [@mel.as "allowedProtoProperties"] allowed_proto_methods : bool Js.Dict.t option; - [@optional] [@mel.as "allowedProtoMethods"] + [@mel.optional] [@mel.as "allowedProtoMethods"] allow_proto_properties_by_default : bool option; - [@optional] [@mel.as "allowProtoPropertiesByDefault"] + [@mel.optional] [@mel.as "allowProtoPropertiesByDefault"] allow_proto_methods_by_default : bool option; - [@optional] [@mel.as "allowProtoMethodsByDefault"] + [@mel.optional] [@mel.as "allowProtoMethodsByDefault"] } [@@deriving abstract] end @@ -67,38 +68,39 @@ end = struct type known_helpers = Builtin of builtin_helpers | Custom of custom_helpers type t = { - data : bool option; [@optional] - compat : bool option; [@optional] - known_helpers : known_helpers option; [@optional] - known_helpers_only : bool option; [@optional] - no_escape : bool option; [@optional] - strict : bool option; [@optional] - assume_objects : bool option; [@optional] - prevent_indent : bool option; [@optional] - ignore_standalone : bool option; [@optional] - explicit_partial_context : bool option; [@optional] + data : bool option; [@mel.optional] + compat : bool option; [@mel.optional] + known_helpers : known_helpers option; [@mel.optional] + known_helpers_only : bool option; [@mel.optional] + no_escape : bool option; [@mel.optional] + strict : bool option; [@mel.optional] + assume_objects : bool option; [@mel.optional] + prevent_indent : bool option; [@mel.optional] + ignore_standalone : bool option; [@mel.optional] + explicit_partial_context : bool option; [@mel.optional] } [@@deriving abstract] module Runtime = struct type 'a t = { - partial : bool option; [@optional] - depths : dynamic array option; [@optional] - helpers : dynamic Js.Dict.t option; [@optional] - partials : dynamic Template.t Js.Dict.t option; [@optional] - decorators : dynamic Js.Dict.t option; [@optional] - data : dynamic option; [@optional] - block_params : dynamic array option; [@optional] [@mel.as "blockParams"] + partial : bool option; [@mel.optional] + depths : dynamic array option; [@mel.optional] + helpers : dynamic Js.Dict.t option; [@mel.optional] + partials : dynamic Template.t Js.Dict.t option; [@mel.optional] + decorators : dynamic Js.Dict.t option; [@mel.optional] + data : dynamic option; [@mel.optional] + block_params : dynamic array option; + [@mel.optional] [@mel.as "blockParams"] allow_calls_to_helper_missing : bool option; - [@optional] [@mel.as "allowCallsToHelperMissing"] + [@mel.optional] [@mel.as "allowCallsToHelperMissing"] allowed_proto_properties : bool Js.Dict.t option; - [@optional] [@mel.as "allowedProtoProperties"] + [@mel.optional] [@mel.as "allowedProtoProperties"] allowed_proto_methods : bool Js.Dict.t option; - [@optional] [@mel.as "allowedProtoMethods"] + [@mel.optional] [@mel.as "allowedProtoMethods"] allow_proto_properties_by_default : bool option; - [@optional] [@mel.as "allowProtoPropertiesByDefault"] + [@mel.optional] [@mel.as "allowProtoPropertiesByDefault"] allow_proto_methods_by_default : bool option; - [@optional] [@mel.as "allowProtoMethodsByDefault"] + [@mel.optional] [@mel.as "allowProtoMethodsByDefault"] } [@@deriving abstract] end diff --git a/src/bindings/handlebars/options.ml b/src/bindings/handlebars/options.ml index c7b3a20..5508026 100644 --- a/src/bindings/handlebars/options.ml +++ b/src/bindings/handlebars/options.ml @@ -15,15 +15,15 @@ type custom_helpers = bool Js.Dict.t type known_helpers = Builtin of builtin_helpers | Custom of custom_helpers type t = { - data : bool option; [@optional] - compat : bool option; [@optional] - known_helpers : known_helpers option; [@optional] - known_helpers_only : bool option; [@optional] - no_escape : bool option; [@optional] - strict : bool option; [@optional] - assume_objects : bool option; [@optional] - prevent_indent : bool option; [@optional] - ignore_standalone : bool option; [@optional] - explicit_partial_context : bool option; [@optional] + data : bool option; [@mel.optional] + compat : bool option; [@mel.optional] + known_helpers : known_helpers option; [@mel.optional] + known_helpers_only : bool option; [@mel.optional] + no_escape : bool option; [@mel.optional] + strict : bool option; [@mel.optional] + assume_objects : bool option; [@mel.optional] + prevent_indent : bool option; [@mel.optional] + ignore_standalone : bool option; [@mel.optional] + explicit_partial_context : bool option; [@mel.optional] } [@@deriving abstract] diff --git a/src/bindings/ink/hooks.ml b/src/bindings/ink/hooks.ml index 992b160..535c44a 100644 --- a/src/bindings/ink/hooks.ml +++ b/src/bindings/ink/hooks.ml @@ -1,5 +1,5 @@ type use_input_options = { - is_active : bool option; [@optional] [@mel.as "isActive"] + is_active : bool option; [@mel.optional] [@mel.as "isActive"] } [@@deriving abstract] @@ -33,7 +33,7 @@ external use_stderr : unit -> use_stderr_return = "useStderr" type use_focus_options = { auto_focus : bool; [@mel.as "autoFocus"] is_active : bool; [@mel.as "isActive"] - id : string option; [@optional] + id : string option; [@mel.optional] } [@@deriving abstract] diff --git a/src/bindings/ink/ink.ml b/src/bindings/ink/ink.ml index c5bcadb..a301513 100644 --- a/src/bindings/ink/ink.ml +++ b/src/bindings/ink/ink.ml @@ -15,12 +15,12 @@ module Transform = Transform module Ui = Ui type render_options = { - stdout : Stream.write option; [@optional] - stdin : Stream.read option; [@optional] - stderr : Stream.write option; [@optional] - debug : bool option; [@optional] - exit_on_ctrl_c : bool option; [@optional] - patch_console : bool option; [@optional] + stdout : Stream.write option; [@mel.optional] + stdin : Stream.read option; [@mel.optional] + stderr : Stream.write option; [@mel.optional] + debug : bool option; [@mel.optional] + exit_on_ctrl_c : bool option; [@mel.optional] + patch_console : bool option; [@mel.optional] } [@@deriving abstract] diff --git a/src/bindings/ink/instance.ml b/src/bindings/ink/instance.ml index 1f7cd3d..8b94d28 100644 --- a/src/bindings/ink/instance.ml +++ b/src/bindings/ink/instance.ml @@ -9,7 +9,7 @@ external wait_until_exit : unit Js.Promise.t = "waitUntilExit" (* TODO: Hide via mli *) external unmount' : - ([ `Error of Error.t | `Int of int | `Null of 'null Js.null_undefined ] + ([ `Error of Error.t | `Int of int | `Null of 'null Js.nullable ] [@mel.unwrap]) -> unit = "unmount" [@@mel.send.pipe: t] diff --git a/src/bindings/ink/key.ml b/src/bindings/ink/key.ml index 9d4b5e1..e40ed75 100644 --- a/src/bindings/ink/key.ml +++ b/src/bindings/ink/key.ml @@ -1,17 +1,17 @@ type t = { - left_arrow : bool option; [@optional] [@mel.as "leftArrow"] - right_arrow : bool option; [@optional] [@mel.as "rightArrow"] - up_arrow : bool option; [@optional] [@mel.as "upArrow"] - down_arrow : bool option; [@optional] [@mel.as "downArrow"] - return : bool option; [@optional] - escape : bool option; [@optional] - ctrl : bool option; [@optional] - shift : bool option; [@optional] - tab : bool option; [@optional] - backspace : bool option; [@optional] - delete : bool option; [@optional] - page_up : bool option; [@optional] [@mel.as "pageUp"] - page_down : bool option; [@optional] [@mel.as "pageDown"] - meta : bool option; [@optional] + left_arrow : bool option; [@mel.optional] [@mel.as "leftArrow"] + right_arrow : bool option; [@mel.optional] [@mel.as "rightArrow"] + up_arrow : bool option; [@mel.optional] [@mel.as "upArrow"] + down_arrow : bool option; [@mel.optional] [@mel.as "downArrow"] + return : bool option; [@mel.optional] + escape : bool option; [@mel.optional] + ctrl : bool option; [@mel.optional] + shift : bool option; [@mel.optional] + tab : bool option; [@mel.optional] + backspace : bool option; [@mel.optional] + delete : bool option; [@mel.optional] + page_up : bool option; [@mel.optional] [@mel.as "pageUp"] + page_down : bool option; [@mel.optional] [@mel.as "pageDown"] + meta : bool option; [@mel.optional] } [@@deriving abstract] diff --git a/src/bindings/nodejs/child_process.ml b/src/bindings/nodejs/child_process.ml index 04c1a05..7178d19 100644 --- a/src/bindings/nodejs/child_process.ml +++ b/src/bindings/nodejs/child_process.ml @@ -11,7 +11,7 @@ external exec : let async_exec string child_process_option = Js.Promise.make (fun ~resolve ~reject -> exec string child_process_option (fun ~error ~stdout ~stderr:_ -> - match Js.Null_undefined.toOption error with + match Js.Nullable.toOption error with | Some e -> reject e [@u] | None -> resolve stdout [@u])) ;; diff --git a/src/core/dune.ml b/src/core/dune.ml index 3571d47..dd3f0ce 100644 --- a/src/core/dune.ml +++ b/src/core/dune.ml @@ -1,4 +1,4 @@ -[@@@ocaml.warning "-32"] +[@@@warning "-32"] open Bindings @@ -100,10 +100,10 @@ module Dune_project = struct let default_dependencies = [ - Dependency.make ~version:">= 5.1.0" "ocaml"; - Dependency.make ~version:">= 3.11" "dune"; - Dependency.make ~version:">= 2.1.0" "melange"; - Dependency.make ~version:">= 3.10.0" "reason"; + Dependency.make ~version:">= 5.1.1" "ocaml"; + Dependency.make ~version:">= 3.14" "dune"; + Dependency.make ~version:">= 3.0.0-51" "melange"; + Dependency.make ~version:">= 3.11.0" "reason"; Dependency.make "opam-check-npm-deps"; Dependency.make "ppx_deriving"; ] diff --git a/src/core/fs.ml b/src/core/fs.ml index 6c9a2c0..9bcb830 100644 --- a/src/core/fs.ml +++ b/src/core/fs.ml @@ -1,5 +1,3 @@ -[@@@ocaml.warning "-32"] - open Bindings let ensureDir path = @@ -159,7 +157,7 @@ let create_dir ?(overwrite : [> `Clear | `Overwrite ] option) dir = let get_template_file_names dir = Fs_extra.readdirSync dir |> Array.to_list |> List.filter_map (fun file_name -> - if Js.String.endsWith ".tmpl" file_name then + if Js.String.endsWith ~suffix:".tmpl" file_name then Some (Node.Path.join [| dir; file_name |]) else None) ;; diff --git a/src/core/validation.ml b/src/core/validation.ml index 125d6d1..ed56ae6 100644 --- a/src/core/validation.ml +++ b/src/core/validation.ml @@ -16,9 +16,9 @@ module Project_name : S with type input = string = struct ^ Name must be lowercase and only contain letters, numbers, or _ *) let validate name = - let test = Js.Re.test_ [%re "/^[a-z_0-9.]+$/"] in + let test = Js.Re.test [%re "/^[a-z_0-9.]+$/"] in if is_empty name then Error (`Msg "Name cannot be empty") - else if test name == false then + else if test ~str:name == false then Error (`Msg (Format.sprintf diff --git a/src/init/component.re b/src/init/component.re index 99aa33b..d00fccd 100644 --- a/src/init/component.re +++ b/src/init/component.re @@ -97,7 +97,7 @@ let make = (~name as initial_name) => { switch (result) { | `Pass(results) => Js.Global.setTimeout( - () => set_env_check_result(_ => Some(`Pass)), + ~f=() => set_env_check_result(_ => Some(`Pass)), 850, ) |> ignore; @@ -125,7 +125,7 @@ let make = (~name as initial_name) => { let on_complete_wizard = React.useCallback0(configuration => { Js.Global.setTimeout( - () => set_configuration(_ => Some(configuration)), + ~f=() => set_configuration(_ => Some(configuration)), 850, ) |> ignore @@ -134,7 +134,7 @@ let make = (~name as initial_name) => { let on_complete_scaffold = React.useCallback0(scaffold_result => { Js.Global.setTimeout( - () => set_scaffold_result(_ => Some(scaffold_result)), + ~f=() => set_scaffold_result(_ => Some(scaffold_result)), 850, ) |> ignore diff --git a/src/init/scaffold.re b/src/init/scaffold.re index 46d8575..f477d83 100644 --- a/src/init/scaffold.re +++ b/src/init/scaffold.re @@ -195,16 +195,12 @@ module Bundler = { module Copy_files = { [@react.component] let make = (~state, ~onComplete, ~onError) => { - // let (copy_complete, set_copy_complete) = React.useState(() => false); let handleOnComplete = () => { - // set_copy_complete(_ => true); onComplete(); }; let is_active = state.step == Bundler_copy_files; - /* let is_visible = - step_to_int(state.step) >= step_to_int(Bundler_copy_files); */ React.useEffect1( () => { @@ -227,25 +223,6 @@ module Bundler = { [|is_active|], ); - /* let bundler_name = - state.configuration.bundler - |> Bundler.to_string - |> String.capitalize_ascii; */ - - /* if (!is_visible) { - React.null; - } else { - - {copy_complete - ? - {React.string("Complete")} - - {React.string("Copying " ++ bundler_name ++ " files")} - - - : } - ; - }; */ React.null; }; }; @@ -309,16 +286,12 @@ module App_files = { // open Ui; [@react.component] let make = (~state, ~onComplete, ~onError) => { - // let (copy_complete, set_copy_complete) = React.useState(() => false); let handleOnComplete = () => { - // set_copy_complete(_ => true); onComplete(); }; let is_active = state.step == App_copy_files; - /* let is_visible = - step_to_int(state.step) >= step_to_int(App_copy_files); */ React.useEffect1( () => { @@ -341,18 +314,6 @@ module App_files = { [|is_active|], ); - /* if (!is_visible) { - React.null; - } else { - - {copy_complete - ? - {React.string("Complete")} - {React.string("Copying application files")} - - : } - ; - }; */ React.null; }; }; @@ -374,7 +335,6 @@ module App_files = { |> Engine.extend_package_json_with_app_settings( ~is_react_app=state.configuration.is_react_app, ); - // set_complete(_ => true); onComplete({...state, pkg_json: updated_pkg_json}); }; @@ -383,22 +343,6 @@ module App_files = { [|is_active|], ); - /* if (!is_visible) { - React.null; - } else { - - {complete - ? - {React.string("Complete")} - - {React.string( - "Extending package.json with app dependencies", - )} - - - : } - ; - }; */ React.null; }; }; @@ -678,7 +622,6 @@ module Compile = { React.useEffect1( () => { if (is_active) { - // TODO state.readme |> Engine.compile |> Promise_result.perform(result => @@ -778,14 +721,10 @@ module Git = { // open Ui; [@react.component] let make = (~state, ~onComplete, ~onError) => { - // let (copy_complete, set_copy_complete) = React.useState(() => false); let is_active = state.step == Git_copy_ignore_file && state.configuration.initialize_git; - /* let is_visible = - state.configuration.initialize_git - && step_to_int(state.step) >= step_to_int(Git_copy_ignore_file); */ React.useEffect1( () => { @@ -795,7 +734,6 @@ module Git = { |> Promise_result.perform(result => switch (result) { | Ok(_) => - // set_copy_complete(_ => true); onComplete() | Error(err) => onError(err) } @@ -807,20 +745,6 @@ module Git = { }, [|is_active|], ); - - /* if (!is_visible) { - React.null; - } else { - - {copy_complete - ? - // {React.string("Complete")} - - {React.string("Copying .gitignore file")} - - : } - ; - }; */ React.null; }; }; diff --git a/src/ocaml_install/component.re b/src/ocaml_install/component.re index 590f906..665cc47 100644 --- a/src/ocaml_install/component.re +++ b/src/ocaml_install/component.re @@ -1,4 +1,4 @@ [@react.component] -let make = () => { +let make = (~_package: String.t) => { <> ; }; diff --git a/src/ocaml_install/ocaml_install.re b/src/ocaml_install/ocaml_install.re index 8b13789..32fb468 100644 --- a/src/ocaml_install/ocaml_install.re +++ b/src/ocaml_install/ocaml_install.re @@ -1 +1,21 @@ +open Bindings; +module Component = Component; +let command = { + Commander.( + create_command("ocaml-install") + |> Command.set_description( + "Adds OCaml and ReasonML dependencies to your projects via opam, OCaml's package manager. This command will add the dependency to your `dune-project` file, regenerate your projects .opam file, and install the dependencies.", + ) + |> Command.argument( + ~name="", + ~description= + "The name of the package to install", + ) + |> Command.add_action1((package: string, _this) => { + Ink.render() + |> Ink.Instance.wait_until_exit + |> (exit_promise => `Promise_void(exit_promise)) + }) + ); +}; diff --git a/src/templates/base/dune-project.tmpl b/src/templates/base/dune-project.tmpl index 1d157e5..2495168 100644 --- a/src/templates/base/dune-project.tmpl +++ b/src/templates/base/dune-project.tmpl @@ -1,4 +1,4 @@ -(lang dune 3.11) +(lang dune 3.14) ; The above stanza specifies the Dune language version being used. diff --git a/src/templates/extensions/app/app_ml/app.ml.tmpl b/src/templates/extensions/app/app_ml/app.ml.tmpl index 2bbf1c8..2b6eed9 100644 --- a/src/templates/extensions/app/app_ml/app.ml.tmpl +++ b/src/templates/extensions/app/app_ml/app.ml.tmpl @@ -115,7 +115,7 @@ let main () = | Some inner -> let _ = Js.Global.setTimeout - (fun () -> + ~f=(fun () -> let configuration_html = render_configuration_html configuration in diff --git a/src/templates/extensions/app/app_re/app.re.tmpl b/src/templates/extensions/app/app_re/app.re.tmpl index 7281d95..d0388a5 100644 --- a/src/templates/extensions/app/app_re/app.re.tmpl +++ b/src/templates/extensions/app/app_re/app.re.tmpl @@ -122,7 +122,7 @@ let main = () => { | Some(inner) => let _ = Js.Global.setTimeout( - () => { + ~f=() => { let configuration_html = render_configuration_html(configuration); Browser.set_inner_html(inner, configuration_html); }, diff --git a/src/templates/extensions/app/react_ml/App.re.tmpl b/src/templates/extensions/app/react_ml/App.re.tmpl index dad37d0..343ed76 100644 --- a/src/templates/extensions/app/react_ml/App.re.tmpl +++ b/src/templates/extensions/app/react_ml/App.re.tmpl @@ -64,7 +64,7 @@ */ React.useEffect0(() => { let timeout_id = - Js.Global.setTimeout(() => setShow_configuration(_ => true), 1000); + Js.Global.setTimeout(~f=() => setShow_configuration(_ => true), 1000); // Return a cleanup function to cancel the timeout // If we didn't need a cleanup function, we would return `None` instead of @@ -101,11 +101,12 @@ ReactDOM.querySelector("#root") ->( fun - | Some(root) => ReactDOM.render(, root) + | Some(root_elem) => { + let root = ReactDOM.Client.createRoot(root_elem); + ReactDOM.Client.render(root, ); + } | None => Js.Console.error( "Failed to start React: couldn't find the #root element", ) ); - - diff --git a/src/templates/extensions/app/react_re/App.re.tmpl b/src/templates/extensions/app/react_re/App.re.tmpl index 731ee72..cd4a14a 100644 --- a/src/templates/extensions/app/react_re/App.re.tmpl +++ b/src/templates/extensions/app/react_re/App.re.tmpl @@ -64,7 +64,7 @@ */ React.useEffect0(() => { let timeout_id = - Js.Global.setTimeout(() => setShow_configuration(_ => true), 1000); + Js.Global.setTimeout(~f=() => setShow_configuration(_ => true), 1000); // Return a cleanup function to cancel the timeout // If we didn't need a cleanup function, we would return `None` instead of @@ -101,7 +101,10 @@ ReactDOM.querySelector("#root") ->( fun - | Some(root) => ReactDOM.render(, root) + | Some(root_elem) => { + let root = ReactDOM.Client.createRoot(root_elem); + ReactDOM.Client.render(root, ); + } | None => Js.Console.error( "Failed to start React: couldn't find the #root element",