From 284d348577f1152992a8f68c8b39148f7e294a67 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Wed, 21 Feb 2024 15:05:07 +0100 Subject: [PATCH] Simplify project --- .editorconfig | 12 +- .github/workflows/update.yml | 22 +-- .prettierrc | 18 -- LICENSE => license | 2 +- package-lock.json | 361 +++++++++++++++++++++++++++++++++++ package.json | 24 +-- pnpm-lock.yaml | 221 --------------------- projects.json | 220 ++++++++++----------- README.md => readme.md | 211 +++++++++++++------- tsconfig.json | 41 ++-- updateList.ts | 80 -------- update_list.js | 122 ++++++++++++ 12 files changed, 789 insertions(+), 545 deletions(-) delete mode 100644 .prettierrc rename LICENSE => license (96%) create mode 100644 package-lock.json delete mode 100644 pnpm-lock.yaml rename README.md => readme.md (59%) delete mode 100644 updateList.ts create mode 100644 update_list.js diff --git a/.editorconfig b/.editorconfig index ef8b2d9..f0e43e8 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,8 +3,16 @@ root = true [*] indent_style = tab -indent_size = 2 +indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true -insert_final_newline = true \ No newline at end of file +insert_final_newline = true + +[*.{yml,yaml}] +indent_size = 2 +indent_style = space +tab_width = 2 + +[*.md] +indent_style = space diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 9de88cd..7ca2b26 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -1,33 +1,29 @@ -name: Format and Update Projects +name: Update Projects on: push: - branches: - - main + branches: [main] jobs: - format-and-update: + update-projects: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2.2.2 - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 + cache: npm - name: Install dependencies - run: pnpm install + run: npm install - name: Update Projects - run: pnpm run update-list - - - name: Format - run: pnpm run format + run: npm run update-list - name: Add, Commit and Push uses: stefanzweifel/git-auto-commit-action@v4 with: - commit_message: "Format and Update Projects" + commit_message: "Update Projects" diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index d1c20d7..0000000 --- a/.prettierrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "trailingComma": "all", - "tabWidth": 2, - "printWidth": 100, - "semi": false, - "singleQuote": false, - "useTabs": true, - "arrowParens": "avoid", - "bracketSpacing": true, - "overrides": [ - { - "files": "*.md", - "options": { - "useTabs": false - } - } - ] -} diff --git a/LICENSE b/license similarity index 96% rename from LICENSE rename to license index cba2578..f59fe4d 100644 --- a/LICENSE +++ b/license @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Damian Tarnawski +Copyright (c) 2022-2024 Damian Tarnawski Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3184ef3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,361 @@ +{ + "name": "made-in-solid", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "made-in-solid", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@types/node": "^20.11.19", + "link-preview-js": "^3.0.5", + "typescript": "^5.3.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@types/node": { + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.11", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", + "integrity": "sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/link-preview-js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/link-preview-js/-/link-preview-js-3.0.5.tgz", + "integrity": "sha512-tOPdmphcZPxhZJFpkXj1D9ANDmK+yC6VzHwfl/ypfi1ASJUvkWNVkf3ikGk6p8CWA5wg8XVWNl2G++BL1UlCPg==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "cheerio": "1.0.0-rc.11", + "cross-fetch": "3.1.5", + "url": "0.11.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } +} diff --git a/package.json b/package.json index 08f99bd..542d04c 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,19 @@ { "name": "made-in-solid", "version": "1.0.0", - "description": "Cool projects created using the SolidJS library.", - "repository": { - "type": "git", - "url": "git+https://github.com/thetarnav/made-in-solid.git" - }, "author": "Damian Tarnawski @thetarnav ", "license": "MIT", + "private": "true", + "type": "module", "scripts": { - "format": "prettier -w projects.json README.md updateList.ts", - "build": "lerna run build --concurrency 4", - "test": "lerna run test --concurrency 4", - "update-list": "jiti ./updateList.ts" + "update-list": "node ./update_list.js" }, "devDependencies": { - "@types/node": "^18.11.3", - "jiti": "^1.16.0", - "link-preview-js": "^2.1.19", - "prettier": "^2.7.1", - "typescript": "^4.8.4" + "@types/node": "^20.11.19", + "link-preview-js": "^3.0.5", + "typescript": "^5.3.3" }, - "packageManager": "pnpm@7.4.0" + "engines": { + "node": ">=20" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 330c5f8..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,221 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - '@types/node': ^18.11.3 - jiti: ^1.16.0 - link-preview-js: ^2.1.19 - prettier: ^2.7.1 - typescript: ^4.8.4 - -devDependencies: - '@types/node': 18.11.3 - jiti: 1.16.0 - link-preview-js: 2.1.19 - prettier: 2.7.1 - typescript: 4.8.4 - -packages: - - /@types/node/18.11.3: - resolution: {integrity: sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A==} - dev: true - - /abort-controller/3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: true - - /boolbase/1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - - /cheerio-select/2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.0.1 - dev: true - - /cheerio/1.0.0-rc.11: - resolution: {integrity: sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==} - engines: {node: '>= 6'} - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.0.1 - htmlparser2: 8.0.1 - parse5: 7.1.1 - parse5-htmlparser2-tree-adapter: 7.0.0 - tslib: 2.4.0 - dev: true - - /cross-fetch/3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} - dependencies: - node-fetch: 2.6.7 - transitivePeerDependencies: - - encoding - dev: true - - /css-select/5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.0.1 - nth-check: 2.1.1 - dev: true - - /css-what/6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /dom-serializer/2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.4.0 - dev: true - - /domelementtype/2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler/5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils/3.0.1: - resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - - /entities/4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} - engines: {node: '>=0.12'} - dev: true - - /event-target-shim/5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: true - - /htmlparser2/8.0.1: - resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.0.1 - entities: 4.4.0 - dev: true - - /jiti/1.16.0: - resolution: {integrity: sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==} - hasBin: true - dev: true - - /link-preview-js/2.1.19: - resolution: {integrity: sha512-ZXiacDuzpNLY/Xx7R3njpI07K2VWZqe/kANwc4RdRPTc+uAkBHW3hGHTeN7upnyrwV7hfwR79CjRXo0fvfGH5A==} - dependencies: - abort-controller: 3.0.0 - cheerio: 1.0.0-rc.11 - cross-fetch: 3.1.5 - url: 0.11.0 - transitivePeerDependencies: - - encoding - dev: true - - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /nth-check/2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - - /parse5-htmlparser2-tree-adapter/7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - dependencies: - domhandler: 5.0.3 - parse5: 7.1.1 - dev: true - - /parse5/7.1.1: - resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} - dependencies: - entities: 4.4.0 - dev: true - - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /punycode/1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: true - - /querystring/0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - dev: true - - /typescript/4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /url/0.11.0: - resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true diff --git a/projects.json b/projects.json index 96c0740..6dc848b 100644 --- a/projects.json +++ b/projects.json @@ -1,302 +1,302 @@ [ { "name": "CodeImage", - "description": "Create elegant screenshots of your source code", - "website": "https://codeimage.dev/", + "desc": "Create elegant screenshots of your source code", + "link": "https://codeimage.dev/", "repo": "https://github.com/riccardoperra/codeimage" }, { "name": "LUME", - "website": "https://lume.io/", + "link": "https://lume.io/", "repo": "https://github.com/lume/lume", - "description": "A toolkit that simplifies the creation of rich and interactive 2D or 3D}, experiences" + "desc": "A toolkit that simplifies the creation of rich and interactive 2D or 3D}, experiences" }, { "name": "BundleJS", - "website": "https://bundlejs.com", + "link": "https://bundlejs.com", "repo": "https://github.com/okikio/bundle", - "description": "An online tool to quickly bundle & minify your projects" + "desc": "An online tool to quickly bundle & minify your projects" }, { "name": "NordVPN.org", - "website": "https://nordvpn.org", - "description": "NordVPN is a virtual private network and security tool that protects your online data. It’s part of Nord Security, a leading online security provider." + "link": "https://nordvpn.org", + "desc": "NordVPN is a virtual private network and security tool that protects your online data. It’s part of Nord Security, a leading online security provider." }, { "name": "Post.news", - "website": "https://post.news", - "description": "A Social Platform for Real People, Real News, and Civil Conversations" + "link": "https://post.news", + "desc": "A Social Platform for Real People, Real News, and Civil Conversations" }, { "name": "Vrite", - "website": "https://vrite.io", + "link": "https://vrite.io", "repo": "https://github.com/vriteio/vrite", - "description": "Open-source headless Content Management System" + "desc": "Open-source headless Content Management System" }, { "name": "Nitropage", - "website": "https://nitropage.com", + "link": "https://nitropage.com", "repo": "https://git.lufrai.org/nitropage/nitropage", - "description": "Visual website editing for individualists" + "desc": "Visual website editing for individualists" }, { "name": "Zapp!", - "website": "https://zapp.run", - "description": "Zapp is a free online sandbox environment for building Flutter applications in the browser." + "link": "https://zapp.run", + "desc": "Zapp is a free online sandbox environment for building Flutter applications in the browser." }, { "name": "inlang website", - "website": "https://inlang.com", + "link": "https://inlang.com", "repo": "https://github.com/inlang/inlang/tree/main/source-code/website", - "description": "Developer-first localization infrastructure built on git" + "desc": "Developer-first localization infrastructure built on git" }, { "name": "Mochia", - "website": "https://mochia.net/", - "description": "Feed, play, train, and explore with your very own pets." + "link": "https://mochia.net/", + "desc": "Feed, play, train, and explore with your very own pets." }, { "name": "Aster App & Website", - "website": "https://aster.page/", - "description": "Aster is a Knowledge Management App for the Information Era." + "link": "https://aster.page/", + "desc": "Aster is a Knowledge Management App for the Information Era." }, { "name": "Calendrop landing page", - "website": "https://calendrop.co", + "link": "https://calendrop.co", "describtion": "Landing page of the Calendrop startup app." }, { "name": "AndAgain", - "website": "https://andagain.uk", - "description": "London Digital Agency." + "link": "https://andagain.uk", + "desc": "London Digital Agency." }, { "name": "MÁLÀ PROJECT Website", - "website": "https://www.malaproject.com", - "description": "Website of the MáLà Project - a restaurant brand founded with a mission to deliver joy through neo-Sichuanese cuisine." + "link": "https://www.malaproject.com", + "desc": "Website of the MáLà Project - a restaurant brand founded with a mission to deliver joy through neo-Sichuanese cuisine." }, { "name": "KusKus", - "website": "https://kuskus.app", - "description": "A fast todo app with AI" + "link": "https://kuskus.app", + "desc": "A fast todo app with AI" }, { "name": "Learn Anything", - "website": "https://learn-anything.xyz/", + "link": "https://learn-anything.xyz/", "repo": "https://github.com/learn-anything/learn-anything.xyz", - "description": "Organize world's knowledge, explore connections and curate learning paths" + "desc": "Organize world's knowledge, explore connections and curate learning paths" }, { "name": "AoE4 Explorer", - "website": "https://aoe4world.com/explorer", + "link": "https://aoe4world.com/explorer", "repo": "https://github.com/aoe4world/explorer", - "description": "AoE4 World Explorer providing a detailed breakdown on what specific upgrades, tecnologies and bonuses make units perform better." + "desc": "AoE4 World Explorer providing a detailed breakdown on what specific upgrades, tecnologies and bonuses make units perform better." }, { "name": "DegreeHub", - "website": "https://degreehub.com", - "description": "Find out which Canadian undergraduate programs could be a fit for you" + "link": "https://degreehub.com", + "desc": "Find out which Canadian undergraduate programs could be a fit for you" }, { "name": "Dimeadozen.ai website", - "website": "https://www.dimeadozen.ai", - "description": "Validate Your Business Idea In Seconds" + "link": "https://www.dimeadozen.ai", + "desc": "Validate Your Business Idea In Seconds" }, { "name": "RUSTMOMENT", - "website": "https://rustmoment.com/jackpot", - "description": "Rust gambling experience created in SolidJS" + "link": "https://rustmoment.com/jackpot", + "desc": "Rust gambling experience created in SolidJS" }, { "name": "lpadder.", - "website": "https://www.lpadder.ml", + "link": "https://www.lpadder.ml", "repo": "https://github.com/Vexcited/lpadder", - "description": "Offline application that allows you to play Launchpad covers from anywhere, directly from your web browser." + "desc": "Offline application that allows you to play Launchpad covers from anywhere, directly from your web browser." }, { "name": "Ambient", - "website": "https://ambient-rvx.web.app", + "link": "https://ambient-rvx.web.app", "repo": "https://github.com/kevintyj/ambient", - "description": "Color Checker Tool" + "desc": "Color Checker Tool" }, { "name": "LocatorJS (Runtime & Extension)", - "website": "https://www.locatorjs.com", + "link": "https://www.locatorjs.com", "repo": "https://github.com/infi-pc/locatorjs", - "description": "A React dev tool that lets you click on any component in the browser to open its code in your IDE." + "desc": "A React dev tool that lets you click on any component in the browser to open its code in your IDE." }, { "name": "Moonrepo Dashboard", - "website": "https://moonrepo.app", - "description": "A task runner and repo management tool for the web ecosystem, written in Rust." + "link": "https://moonrepo.app", + "desc": "A task runner and repo management tool for the web ecosystem, written in Rust." }, { "name": "Dropcode", - "website": "https://github.com/egoist/dropcode", + "link": "https://github.com/egoist/dropcode", "repo": "https://github.com/egoist/dropcode", - "description": "Dropcode is a simple and lightweight code snippet manager. It's built with Tauri and SolidJS" + "desc": "Dropcode is a simple and lightweight code snippet manager. It's built with Tauri and SolidJS" }, { "name": "HoloDevDao", - "website": "https://www.holodevdao.xyz/", + "link": "https://www.holodevdao.xyz/", "repo": "https://github.com/naomihauret/holodevdao", - "description": "An alternative viewer for DevDAO NFT" + "desc": "An alternative viewer for DevDAO NFT" }, { "name": "Solid Toast", - "website": "https://www.solid-toast.com", + "link": "https://www.solid-toast.com", "repo": "https://github.com/ardeora/solid-toast", - "description": "Customizable Toast Notifications for SolidJS" + "desc": "Customizable Toast Notifications for SolidJS" }, { "name": "MastoMetrics", - "website": "https://mastometrics.com", - "description": "Analytics for Mastodon. An app built with SolidStart." + "link": "https://mastometrics.com", + "desc": "Analytics for Mastodon. An app built with SolidStart." }, { "name": "Chikn World", - "website": "https://chikn.world", - "description": "Chikn World breaks down the metrics and tokenomics so you don't have to!" + "link": "https://chikn.world", + "desc": "Chikn World breaks down the metrics and tokenomics so you don't have to!" }, { "name": "Nook", - "website": "https://nook.glo.quebec", - "description": "Markdown-Powered Intelligent Knowledge Manager" + "link": "https://nook.glo.quebec", + "desc": "Markdown-Powered Intelligent Knowledge Manager" }, { "name": "Bauble", - "website": "https://bauble.studio", + "link": "https://bauble.studio", "repo": "https://github.com/ianthehenry/bauble", - "description": "A playground for making 3D art with lisp and math" + "desc": "A playground for making 3D art with lisp and math" }, { "name": "Globle: Capitals", - "website": "https://globle-capitals.com", + "link": "https://globle-capitals.com", "repo": "https://github.com/the-abe-train/globle-capitals", - "description": "Globle: Capitals is a daily guessing game. Use your geography skills to find the Mystery Capital City!" + "desc": "Globle: Capitals is a daily guessing game. Use your geography skills to find the Mystery Capital City!" }, { "name": "asciinema-player", - "website": "https://asciinema.org/", + "link": "https://asciinema.org/", "repo": "https://github.com/asciinema/asciinema-player", - "description": "Web player for terminal session recordings" + "desc": "Web player for terminal session recordings" }, { "name": "ThreadClient", - "website": "https://thread.pfg.pw", + "link": "https://thread.pfg.pw", "repo": "https://github.com/pfgithub/threadclient", - "description": "a client for reddit and mastodon. extensible so it can support multiple platforms" + "desc": "a client for reddit and mastodon. extensible so it can support multiple platforms" }, { "name": "RedditLattice", - "website": "https://redditlattice.netlify.app", + "link": "https://redditlattice.netlify.app", "repo": "https://github.com/vanillacode314/redditlattice", - "description": "A reddit viewer for image based subreddits. Lays out the images in a tight lattice." + "desc": "A reddit viewer for image based subreddits. Lays out the images in a tight lattice." }, { "name": "Räppli", - "website": "https://rappli.ch", + "link": "https://rappli.ch", "repo": "https://git.lufrai.com/rappli/rappli", - "description": "Räppli is a free web app for creating Swiss invoices including QR code." + "desc": "Räppli is a free web app for creating Swiss invoices including QR code." }, { "name": "AList frontend", - "website": "https://alist.pages.dev", - "description": "A file list program that supports multiple storage, powered by Gin and Solidjs", + "link": "https://alist.pages.dev", + "desc": "A file list program that supports multiple storage, powered by Gin and Solidjs", "repo": "https://github.com/alist-org/alist-web" }, + { + "name": "Nerimity", + "link": "https://nerimity.com", + "repo": "https://github.com/Nerimity/nerimity-web", + "desc": "A modern and sleek chat app." + }, { "name": "tahti", - "website": "https://tahti.studio", - "description": "a groovebox for the browser" + "link": "https://tahti.studio", + "desc": "a groovebox for the browser" }, { "name": "xkcd search", - "website": "https://xkcd-search.netlify.app/", - "description": "A search engine for XKCD comics!", + "link": "https://xkcd-search.netlify.app/", + "desc": "A search engine for XKCD comics!", "repo": "https://github.com/caizoryan/xkcd-better" }, { "name": "Krestianstvo", - "website": "https://play.krestianstvo.org", - "description": "Open Source implementation of the Croquet application architecture in Functional Reactive Paradigm", + "link": "https://play.krestianstvo.org", + "desc": "Open Source implementation of the Croquet application architecture in Functional Reactive Paradigm", "repo": "https://github.com/NikolaySuslov/krestianstvo" }, { "name": "clips", - "website": "https://kurtsmurf.github.io/clips/", + "link": "https://kurtsmurf.github.io/clips/", "repo": "https://github.com/kurtsmurf/clips", - "description": "drum pad for playing audio samples" + "desc": "drum pad for playing audio samples" }, { "name": "Yal", - "website": "https://github.com/srsholmes/yal", + "link": "https://github.com/srsholmes/yal", "repo": "https://github.com/srsholmes/yal", - "description": "Yet another launcher. A launcher app similar to Alfred, Raycast, ScriptKit etc." + "desc": "Yet another launcher. A launcher app similar to Alfred, Raycast, ScriptKit etc." }, { "name": "Is Market High?", - "website": "https://ismarkethigh.com", - "description": "ismarkethigh.com pictures performance of the entire market and its groups: 11 sectors and 149 industries." + "link": "https://ismarkethigh.com", + "desc": "ismarkethigh.com pictures performance of the entire market and its groups: 11 sectors and 149 industries." }, { "name": "Solid Website", - "description": "you already know", - "website": "https://www.solidjs.com", + "desc": "you already know", + "link": "https://www.solidjs.com", "repo": "https://github.com/solidjs/solid-site" }, { "name": "Solid Devtools Chrome Extension", - "description": "Devtools Chrome extension for visualizing SolidJS reactivity graph", - "website": "https://chrome.google.com/webstore/detail/solid-devtools/kmcfjchnmmaeeagadbhoofajiopoceel", + "desc": "Devtools Chrome extension for visualizing SolidJS reactivity graph", + "link": "https://chrome.google.com/webstore/detail/solid-devtools/kmcfjchnmmaeeagadbhoofajiopoceel", "repo": "https://github.com/thetarnav/solid-devtools" }, { "name": "Solid Movies", - "description": "Solid Start Demo App based on Nuxt Movies", - "website": "https://solid-movies.app", + "desc": "Solid Start Demo App based on Nuxt Movies", + "link": "https://solid-movies.app", "repo": "https://github.com/solidjs/solid-start/tree/movies/examples/movies" }, { "name": "Bloki", - "description": "an interactive block editor", - "website": "https://bloki.app/", + "desc": "an interactive block editor", + "link": "https://bloki.app/", "repo": "https://github.com/MrFoxPro/bloki" }, { "name": "HTML to SolidJSX", - "description": "An online HTML to Solid JSX converter", - "website": "https://solidjs-community.github.io/html-to-solidjsx/", + "desc": "An online HTML to Solid JSX converter", + "link": "https://solidjs-community.github.io/html-to-solidjsx/", "repo": "https://github.com/solidjs-community/html-to-solidjsx" }, { "name": "HopeUI", - "website": "https://hope-ui.com/", + "link": "https://hope-ui.com/", "repo": "https://github.com/hope-ui/hope-ui", - "description": "the component library you've hoped for" + "desc": "the component library you've hoped for" }, { "name": "Solid Primitives", - "website": "https://primitives.solidjs.community", + "link": "https://primitives.solidjs.community", "repo": "https://github.com/solidjs-community/solid-primitives", - "description": "A library of high-quality primitives that extend SolidJS reactivity." + "desc": "A library of high-quality primitives that extend SolidJS reactivity." }, { "name": "Modular Forms", - "website": "https://modularforms.dev", + "link": "https://modularforms.dev", "repo": "https://github.com/fabian-hiller/modular-forms", - "description": "Modular Forms is a JavaScript library that is build on top of SolidJS to validate and handle various types of forms." + "desc": "Modular Forms is a JavaScript library that is build on top of SolidJS to validate and handle various types of forms." }, { "name": "Devs Playing Poker", - "website": "https://devsplayingpoker.com", + "link": "https://devsplayingpoker.com", "repo": "https://github.com/lvl-mattwells/DevsPlayingPoker", - "description": "A simple and fast tool to help your scrum team effort tickets as quickly as possible." - }, - { - "name": "Nerimity", - "website": "https://nerimity.com", - "repo": "https://github.com/Nerimity/nerimity-web", - "description": "A modern and sleek chat app." + "desc": "A simple and fast tool to help your scrum team effort tickets as quickly as possible." } -] +] \ No newline at end of file diff --git a/README.md b/readme.md similarity index 59% rename from README.md rename to readme.md index 8d2ebb4..de3df70 100644 --- a/README.md +++ b/readme.md @@ -14,6 +14,7 @@ Have you made something awesome with Solid? It can be both open-source or closed ## + ### CodeImage @@ -26,6 +27,8 @@ CodeImage is the newest tool to help developers to manage their snippets and cre --- + + ### LUME A toolkit that simplifies the creation of rich and interactive 2D or 3D}, experiences @@ -36,11 +39,11 @@ A toolkit that simplifies the creation of rich and interactive 2D or 3D}, experi --- - + ### BundleJS -A quick and easy way to bundle, minify, and compress (gzip and brotli) your ts, js, jsx and npm projects all online, with the bundle file size. +An online tool to quickly bundle & minify your projects **Website:** [https://bundlejs.com](https://bundlejs.com) @@ -48,7 +51,7 @@ A quick and easy way to bundle, minify, and compress (gzip and brotli) your ts, --- - + ### NordVPN.org @@ -56,6 +59,8 @@ We want to see the internet free from crime, censorship, and surveillance. We co **Website:** [https://nordvpn.org](https://nordvpn.org) + + --- @@ -66,6 +71,8 @@ Access journalism from premium publishers without subscriptions or ads. Discover **Website:** [https://post.news](https://post.news) + + --- @@ -80,7 +87,7 @@ Open-Source, collaborative developer content platform for documentation, technic --- - + ### Nitropage @@ -100,9 +107,11 @@ A free online sandbox for building Dart & Flutter applications in the browser. **Website:** [https://zapp.run](https://zapp.run) + + --- - + ### inlang website @@ -122,6 +131,8 @@ Explore the world of Mochia! **Website:** [https://mochia.net/](https://mochia.net/) + + --- @@ -132,47 +143,63 @@ An all-in-one visual tool for individuals and small teams that want to build fas **Website:** [https://aster.page/](https://aster.page/) + + --- + + ### Calendrop landing page + + **Website:** [https://calendrop.co](https://calendrop.co) + + --- - + ### AndAgain -Bringing together strategy, creativity and technology to build digital products and campaigns for global clients. Specialists in engaging and immersive digital projects across luxury, fashion, retail, entertainment and business. Based in London + Liverpool, with global reach. +London Digital Agency. **Website:** [https://andagain.uk](https://andagain.uk) + + --- - + ### MÁLÀ PROJECT Website -MáLà Project is a Chinese restaurant founded by four friends with a mission to deliver joy through the flavors of Sichuan cuisine. Michelin Bib recommend since its first year open, it’s a place to gather round with friends and family. +Website of the MáLà Project - a restaurant brand founded with a mission to deliver joy through neo-Sichuanese cuisine. **Website:** [https://www.malaproject.com](https://www.malaproject.com) + + --- + + ### KusKus A fast todo app with AI **Website:** [https://kuskus.app](https://kuskus.app) + + --- - + ### Learn Anything -Organize world's knowledge, explore connections and curate learning paths - GitHub - learn-anything/learn-anything.xyz: Organize world's knowledge, explore connections and curate learning paths +Organize world's knowledge, explore connections and curate learning paths **Website:** [https://learn-anything.xyz/](https://learn-anything.xyz/) @@ -180,11 +207,11 @@ Organize world's knowledge, explore connections and curate learning paths - GitH --- - + ### AoE4 Explorer -AoE4 World is website with Age of Empires 4 news, stats, tools, and much more. +AoE4 World Explorer providing a detailed breakdown on what specific upgrades, tecnologies and bonuses make units perform better. **Website:** [https://aoe4world.com/explorer](https://aoe4world.com/explorer) @@ -192,34 +219,44 @@ AoE4 World is website with Age of Empires 4 news, stats, tools, and much more. --- - + ### DegreeHub -Degree Hub helps prospective students get matched with universities and programs they’ll love. +Find out which Canadian undergraduate programs could be a fit for you **Website:** [https://degreehub.com](https://degreehub.com) + + --- - + ### Dimeadozen.ai website -Validate your business idea with AI. DimeADozen.ai offers AI-powered business validation services for entrepreneurs and startups. Leverage artificial intelligence to validate your startup idea today. +Validate Your Business Idea In Seconds **Website:** [https://www.dimeadozen.ai](https://www.dimeadozen.ai) + + --- + + ### RUSTMOMENT Rust gambling experience created in SolidJS **Website:** [https://rustmoment.com/jackpot](https://rustmoment.com/jackpot) + + --- + + ### lpadder. Offline application that allows you to play Launchpad covers from anywhere, directly from your web browser. @@ -230,11 +267,11 @@ Offline application that allows you to play Launchpad covers from anywhere, dire --- - + ### Ambient -Create color shades just from primary colors that are APCA contrast safe, all done without the thinking. +Color Checker Tool **Website:** [https://ambient-rvx.web.app](https://ambient-rvx.web.app) @@ -242,11 +279,11 @@ Create color shades just from primary colors that are APCA contrast safe, all do --- - + ### LocatorJS (Runtime & Extension) -Click on any component and go from your app to component's code. +A React dev tool that lets you click on any component in the browser to open its code in your IDE. **Website:** [https://www.locatorjs.com](https://www.locatorjs.com) @@ -254,19 +291,23 @@ Click on any component and go from your app to component's code. --- + + ### Moonrepo Dashboard A task runner and repo management tool for the web ecosystem, written in Rust. **Website:** [https://moonrepo.app](https://moonrepo.app) + + --- - + ### Dropcode -A simple and lightweight code snippet manager. Contribute to egoist/dropcode development by creating an account on GitHub. +Dropcode is a simple and lightweight code snippet manager. It's built with Tauri and SolidJS **Website:** [https://github.com/egoist/dropcode](https://github.com/egoist/dropcode) @@ -274,11 +315,11 @@ A simple and lightweight code snippet manager. Contribute to egoist/dropcode dev --- - + ### HoloDevDao -Holographic Developer DAO is an alternative UI viewer for Developer DAO NFTs. +An alternative viewer for DevDAO NFT **Website:** [https://www.holodevdao.xyz/](https://www.holodevdao.xyz/) @@ -286,11 +327,11 @@ Holographic Developer DAO is an alternative UI viewer for Developer DAO NFTs. --- - + ### Solid Toast -Create beautiful, customizable toasts with Solid JS +Customizable Toast Notifications for SolidJS **Website:** [https://www.solid-toast.com](https://www.solid-toast.com) @@ -298,42 +339,47 @@ Create beautiful, customizable toasts with Solid JS --- - + ### MastoMetrics -Track the growth of your Mastodon Account +Analytics for Mastodon. An app built with SolidStart. **Website:** [https://mastometrics.com](https://mastometrics.com) + + --- - + ### Chikn World Chikn World breaks down the metrics and tokenomics so you don't have to! -Get all the info you need for all Chikn eggosystem tokens; EGG, FEED, FERT & More! **Website:** [https://chikn.world](https://chikn.world) + + --- - + ### Nook -Nook, the Markdown-Powered Intelligent Knowledge Manager +Markdown-Powered Intelligent Knowledge Manager **Website:** [https://nook.glo.quebec](https://nook.glo.quebec) + + --- - + ### Bauble -a playground for making 3D art with lisp and math. Contribute to ianthehenry/bauble.studio development by creating an account on GitHub. +A playground for making 3D art with lisp and math **Website:** [https://bauble.studio](https://bauble.studio) @@ -341,7 +387,7 @@ a playground for making 3D art with lisp and math. Contribute to ianthehenry/bau --- - + ### Globle: Capitals @@ -353,7 +399,7 @@ Globle: Capitals is a daily guessing game. Use your geography skills to find the --- - + ### asciinema-player @@ -365,11 +411,11 @@ Web player for terminal session recordings --- - + ### ThreadClient -a client for reddit and mastodon. extensible so it can support multiple platforms - GitHub - pfgithub/threadclient: a client for reddit and mastodon. extensible so it can support multiple platforms +a client for reddit and mastodon. extensible so it can support multiple platforms **Website:** [https://thread.pfg.pw](https://thread.pfg.pw) @@ -377,11 +423,11 @@ a client for reddit and mastodon. extensible so it can support multiple platform --- - + ### RedditLattice -A reddit viewer for image based subreddits. Lays out the images in a tight lattice. - GitHub - vanillacode314/redditlattice: A reddit viewer for image based subreddits. Lays out the images in a tight lattice. +A reddit viewer for image based subreddits. Lays out the images in a tight lattice. **Website:** [https://redditlattice.netlify.app](https://redditlattice.netlify.app) @@ -389,11 +435,11 @@ A reddit viewer for image based subreddits. Lays out the images in a tight latti --- - + ### Räppli -Räppli ist eine freie Web App zur Erstellung von Schweizerischen Rechnungen inklusive QR-Code. Erfasse deine Rechnungspositionen und erhalte unmittelbar eine druckbare Rechnung. +Räppli is a free web app for creating Swiss invoices including QR code. **Website:** [https://rappli.ch](https://rappli.ch) @@ -401,11 +447,11 @@ Räppli ist eine freie Web App zur Erstellung von Schweizerischen Rechnungen ink --- - + ### AList frontend -🗂️ The front end of Alist V3 (A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs) - GitHub - alist-org/alist-web: 🗂️ The front end of Alist V3 (A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs) +A file list program that supports multiple storage, powered by Gin and Solidjs **Website:** [https://alist.pages.dev](https://alist.pages.dev) @@ -413,19 +459,35 @@ Räppli ist eine freie Web App zur Erstellung von Schweizerischen Rechnungen ink --- + + +### Nerimity + +A modern and sleek chat app. + +**Website:** [https://nerimity.com](https://nerimity.com) + +**Repository:** [https://github.com/Nerimity/nerimity-web](https://github.com/Nerimity/nerimity-web) + +--- + + + ### tahti a groovebox for the browser **Website:** [https://tahti.studio](https://tahti.studio) + + --- - + ### xkcd search -Contribute to caizoryan/xkcd-better development by creating an account on GitHub. +A search engine for XKCD comics! **Website:** [https://xkcd-search.netlify.app/](https://xkcd-search.netlify.app/) @@ -433,11 +495,11 @@ Contribute to caizoryan/xkcd-better development by creating an account on GitHub --- - + ### Krestianstvo -Krestianstvo SDK 4 is the OSS implementation of Croquet architecture in functional reactive paradigm using Solid JS. For developing serverless collaborative and multiplayer applications. - GitHub - NikolaySuslov/krestianstvo: Krestianstvo SDK 4 is the OSS implementation of Croquet architecture in functional reactive paradigm using Solid JS. For developing serverless collaborative and multiplayer applications. +Open Source implementation of the Croquet application architecture in Functional Reactive Paradigm **Website:** [https://play.krestianstvo.org](https://play.krestianstvo.org) @@ -445,11 +507,11 @@ Krestianstvo SDK 4 is the OSS implementation of Croquet architecture in function --- - + ### clips -Contribute to kurtsmurf/clips development by creating an account on GitHub. +drum pad for playing audio samples **Website:** [https://kurtsmurf.github.io/clips/](https://kurtsmurf.github.io/clips/) @@ -457,11 +519,11 @@ Contribute to kurtsmurf/clips development by creating an account on GitHub. --- - + ### Yal -Yet Another Launcher. Contribute to srsholmes/yal development by creating an account on GitHub. +Yet another launcher. A launcher app similar to Alfred, Raycast, ScriptKit etc. **Website:** [https://github.com/srsholmes/yal](https://github.com/srsholmes/yal) @@ -469,19 +531,23 @@ Yet Another Launcher. Contribute to srsholmes/yal development by creating an acc --- + + ### Is Market High? ismarkethigh.com pictures performance of the entire market and its groups: 11 sectors and 149 industries. **Website:** [https://ismarkethigh.com](https://ismarkethigh.com) + + --- - + ### Solid Website -Code that powers the SolidJS.com platform. Contribute to solidjs/solid-site development by creating an account on GitHub. +you already know **Website:** [https://www.solidjs.com](https://www.solidjs.com) @@ -489,11 +555,11 @@ Code that powers the SolidJS.com platform. Contribute to solidjs/solid-site deve --- - + ### Solid Devtools Chrome Extension -Chrome Developer Tools extension for debugging SolidJS applications. +Devtools Chrome extension for visualizing SolidJS reactivity graph **Website:** [https://chrome.google.com/webstore/detail/solid-devtools/kmcfjchnmmaeeagadbhoofajiopoceel](https://chrome.google.com/webstore/detail/solid-devtools/kmcfjchnmmaeeagadbhoofajiopoceel) @@ -501,7 +567,7 @@ Chrome Developer Tools extension for debugging SolidJS applications. --- - + ### Solid Movies @@ -513,6 +579,8 @@ Solid Start Demo App based on Nuxt Movies --- + + ### Bloki an interactive block editor @@ -523,11 +591,11 @@ an interactive block editor --- - + ### HTML to SolidJSX -Convert your HTML to Solid JSX template +An online HTML to Solid JSX converter **Website:** [https://solidjs-community.github.io/html-to-solidjsx/](https://solidjs-community.github.io/html-to-solidjsx/) @@ -535,6 +603,8 @@ Convert your HTML to Solid JSX template --- + + ### HopeUI the component library you've hoped for @@ -545,6 +615,8 @@ the component library you've hoped for --- + + ### Solid Primitives A library of high-quality primitives that extend SolidJS reactivity. @@ -555,6 +627,8 @@ A library of high-quality primitives that extend SolidJS reactivity. --- + + ### Modular Forms Modular Forms is a JavaScript library that is build on top of SolidJS to validate and handle various types of forms. @@ -565,6 +639,8 @@ Modular Forms is a JavaScript library that is build on top of SolidJS to validat --- + + ### Devs Playing Poker A simple and fast tool to help your scrum team effort tickets as quickly as possible. @@ -572,22 +648,11 @@ A simple and fast tool to help your scrum team effort tickets as quickly as poss **Website:** [https://devsplayingpoker.com](https://devsplayingpoker.com) **Repository:** [https://github.com/lvl-mattwells/DevsPlayingPoker](https://github.com/lvl-mattwells/DevsPlayingPoker) - ---- - -### Nerimity - -A modern and sleek chat app. - -**Website:** [https://nerimity.com](https://nerimity.com) - -**Repository:** [https://github.com/Nerimity/nerimity-web](https://github.com/Nerimity/nerimity-web) - ## Looking for more project examples? Checkout these collections of sample projects made with solid: -- [**solidjs-community/solid-examples**](https://github.com/solidjs-community/solid-examples) -- [**solid/documentation/resources/examples.md**](https://github.com/solidjs/solid/blob/main/documentation/resources/examples.md) +- [**solidjs-community/solid-examples**](https://github.com/solidjs-community/solid-examples) +- [**solid/documentation/resources/examples.md**](https://github.com/solidjs/solid/blob/main/documentation/resources/examples.md) diff --git a/tsconfig.json b/tsconfig.json index 94cefe1..b9b7763 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,31 @@ { - "compilerOptions": { - "module": "ESNext", - "target": "ESNext", - "newLine": "LF", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "strict": true, - "strictNullChecks": true, - "resolveJsonModule": true, - "types": ["node"] - }, - "exclude": ["node_modules"] + "compilerOptions": { + "target": "ESNext", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ESNext"], + "newLine": "LF", + "types": ["node"], + + /* JS */ + /* + Solves "Cannot write file '.../.js' because it would overwrite input file." + */ + "outDir": "types", + "allowJs": true, + "checkJs": true, + "skipLibCheck": false, + "maxNodeModuleJsDepth": 1, + + /* Linting */ + "strict": true, + "isolatedModules": true, + "moduleDetection": "force", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "noPropertyAccessFromIndexSignature": true, + "noFallthroughCasesInSwitch": true, + "verbatimModuleSyntax": true, + }, + "exclude": ["node_modules", "/types"], } diff --git a/updateList.ts b/updateList.ts deleted file mode 100644 index aa8df38..0000000 --- a/updateList.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { readFile, writeFile } from "fs/promises" -import { join } from "path" -import { getLinkPreview } from "link-preview-js" -import data from "./projects.json" - -const GET_LINK_PREVIEW_OPTIONS = { - followRedirects: "follow", -} as const - -// UTILS - -const pathTo = (...path: string[]) => join(__dirname, ...path) - -const getCommentText = (text: string, marker: "START" | "END") => `` - -function insertTextBetweenComments(file: string, text: string, comment: string): string { - const startComment = getCommentText(comment, "START") - const endComment = getCommentText(comment, "END") - const lines = file.split("\n") - const start = lines.findIndex(line => line.includes(startComment)) - const end = lines.findIndex(line => line.includes(endComment), start + 1) - if (start === -1 || end === -1) throw `Could not find ${comment} in ${file}` - lines.splice(start + 1, end - start - 1, ...text.split("\n")) - return lines.join("\n") -} - -async function fetchPreviewImage( - website: string, - repo: string | undefined, -): Promise<{ image: string | undefined; description: string | undefined }> { - try { - let preview = await getLinkPreview(website, GET_LINK_PREVIEW_OPTIONS) - let description: string | undefined - - if ("images" in preview && preview.images.length) - return { image: preview.images[0], description: preview.description } - - if ("description" in preview && preview.description) description = preview.description - if (repo) { - preview = await getLinkPreview(repo, GET_LINK_PREVIEW_OPTIONS) - if ("description" in preview && preview.description) description = preview.description - if ("images" in preview && preview.images.length) - return { - image: preview.images[0], - description, - } - } - return { image: undefined, description } - } catch (error) { - console.error({ error, website, repo }) - return { image: undefined, description: undefined } - } -} - -// PROGRAM - -;(async () => { - const readmePath = pathTo("./README.md") - let readme = await readFile(readmePath, "utf8") - - const projects = data.map(async ({ name, description, website, repo }, i) => { - const { image, description: previewDesc } = await fetchPreviewImage(website, repo) - return `${i > 0 ? "---" : ""} - -${image ? `` : ""} - -### ${name} - -${previewDesc ?? description ?? ""} - -**Website:** [${website}](${website}) - -${repo ? `**Repository:** [${repo}](${repo})` : ""}` - }) - const projectsText = (await Promise.all(projects)).join("\n\n") - - readme = insertTextBetweenComments(readme, projectsText, "INSERT-PROJECTS") - - await writeFile(readmePath, readme) -})() diff --git a/update_list.js b/update_list.js new file mode 100644 index 0000000..acd5c79 --- /dev/null +++ b/update_list.js @@ -0,0 +1,122 @@ +import * as fsp from "node:fs/promises" +import * as path from "node:path" +import * as url from "node:url" +import * as link_preview from "link-preview-js" + + +/** + * @typedef {object} ImagePreview + * @property {string | undefined} image + * @property {string | undefined} desc + * + * @typedef {object} Project + * @property {string } name + * @property {string } desc + * @property {string } link + * @property {string | undefined} repo + */ + +const dirname = path.dirname(url.fileURLToPath(import.meta.url)) +const readme_path = path.join(dirname, "./readme.md") +const data_path = path.join(dirname, "./projects.json") + + +async function main() { + const readme_promise = fsp.readFile(readme_path, "utf8") + const raw_data_promise = fsp.readFile(data_path, "utf8") + + let [readme, raw_data] = await Promise.all([readme_promise, raw_data_promise]) + /** @type {Project[]} */ + const projects = JSON.parse(raw_data) + + const previews_promise = projects.map((project) => fetchPreviewImage(project.link, project.repo)) + const previews = await Promise.all(previews_promise) + + let projects_txt = "" + for (let i = 0; i < projects.length; i++) { + const project = projects[i] + const preview = previews[i] + + projects_txt += `${i > 0 ? "---" : ""} + +${preview.image ? `` : ""} + +### ${project.name} + +${preview.desc ?? project.desc ?? ""} + +**Website:** [${project.link}](${project.link}) + +${project.repo ? `**Repository:** [${project.repo}](${project.repo})` : ""}` + + if (i < projects.length - 1) projects_txt += "\n\n" + } + + readme = insertTextBetweenComments(readme, projects_txt, "INSERT-PROJECTS") + + fsp.writeFile(readme_path, readme) + + /* Write back to projects.json to format it */ + fsp.writeFile(data_path, JSON.stringify(projects, null, "\t")) +} + +/** + * @param {string } text + * @param {"START" | "END"} marker + * @returns {string } */ +function getCommentText (text, marker) { + return `` +} + +/** + * @param {string} file + * @param {string} text + * @param {string} comment + * @returns {string} */ +function insertTextBetweenComments(file, text, comment) { + const startComment = getCommentText(comment, "START") + const endComment = getCommentText(comment, "END") + const lines = file.split("\n") + const start = lines.findIndex(line => line.includes(startComment)) + const end = lines.findIndex(line => line.includes(endComment), start + 1) + if (start === -1 || end === -1) throw `Could not find ${comment} in ${file}` + lines.splice(start + 1, end - start - 1, ...text.split("\n")) + return lines.join("\n") +} + +const GET_LINK_PREVIEW_OPTIONS = /** @type {const} */({followRedirects: "follow"}) + +/** + * @param {string } website + * @param {string | undefined } repo + * @returns {Promise} */ +async function fetchPreviewImage(website, repo) { + try { + let preview = await link_preview.getLinkPreview(website, GET_LINK_PREVIEW_OPTIONS) + /** @type {string | undefined} */ + let description + + if ("images" in preview && preview.images.length) + return {image: preview.images[0], desc: preview.description} + + if ("description" in preview && preview.description) { + description = preview.description + } + if (repo) { + preview = await link_preview.getLinkPreview(repo, GET_LINK_PREVIEW_OPTIONS) + if ("description" in preview && preview.description) description = preview.description + if ("images" in preview && preview.images.length) + return { + image: preview.images[0], + desc: description, + } + } + return {image: undefined, desc: description} + } catch (error) { + console.error({ error, website, repo }) + return {image: undefined, desc: undefined} + } +} + + +main()