From 1ff2343b2b5bde218741d9a8ec5babbe07a13986 Mon Sep 17 00:00:00 2001 From: ashik-75 Date: Sun, 24 Sep 2023 14:37:25 +0600 Subject: [PATCH 1/4] add npm packages --- .github/workflows/packages.yml | 44 + api/news.json | 1 - api/newsfeed/README.md | 1 - api/newsfeed/index.js | 5 +- automation-scripts/News/.gitignore | 3 + automation-scripts/README.md | 1 - automation-scripts/npm-packages/.gitignore | 15 + automation-scripts/npm-packages/.yarnrc.yml | 1 + automation-scripts/npm-packages/README.md | 17 +- automation-scripts/npm-packages/package.json | 21 + automation-scripts/npm-packages/src/index.ts | 98 ++ automation-scripts/npm-packages/tsconfig.json | 9 + automation-scripts/npm-packages/yarn.lock | 1518 +++++++++++++++++ .../Layouts/Menu/utils/constants.ts | 6 + .../Npmpackages/Npmpackages.module.scss | 13 + .../Npmpackages/components/PackageList.tsx | 40 + .../pages/Information/Npmpackages/index.tsx | 26 + .../Information/Npmpackages/utils/types.ts | 11 + ui/src/pages/Routes/utils/constant.tsx | 8 + ui/src/pages/Routes/utils/types.ts | 1 + ui/src/pages/Tools/Diffchecker/index.tsx | 77 +- ui/src/pages/pages.ts | 2 + 22 files changed, 1886 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/packages.yml delete mode 100644 api/news.json delete mode 100644 api/newsfeed/README.md delete mode 100644 automation-scripts/README.md create mode 100644 automation-scripts/npm-packages/.gitignore create mode 100644 automation-scripts/npm-packages/.yarnrc.yml create mode 100644 automation-scripts/npm-packages/package.json create mode 100644 automation-scripts/npm-packages/src/index.ts create mode 100644 automation-scripts/npm-packages/tsconfig.json create mode 100644 automation-scripts/npm-packages/yarn.lock create mode 100644 ui/src/pages/Information/Npmpackages/Npmpackages.module.scss create mode 100644 ui/src/pages/Information/Npmpackages/components/PackageList.tsx create mode 100644 ui/src/pages/Information/Npmpackages/index.tsx create mode 100644 ui/src/pages/Information/Npmpackages/utils/types.ts diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml new file mode 100644 index 00000000..6dadbc06 --- /dev/null +++ b/.github/workflows/packages.yml @@ -0,0 +1,44 @@ +name: Fetch Latest packages + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + fetch-news: + runs-on: ubuntu-latest + defaults: + run: + shell: bash + working-directory: automation-scripts/npm-packages + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: "18.16.1" + + - name: Install Yarn + run: | + corepack enable + corepack prepare yarn@stable --activate + + - name: Install dependencies + run: yarn install --immutable + + - name: Run + run: yarn start + + - name: Move packages.json + run: |- + git add news.json + git mv -f news.json ../../api/packages.json + + - name: Commit and push if changed + run: |- + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git commit -m "Update packages.json" || true + git push diff --git a/api/news.json b/api/news.json deleted file mode 100644 index c24b351c..00000000 --- a/api/news.json +++ /dev/null @@ -1 +0,0 @@ -{"status":"ok","totalResults":4852,"articles":[{"source":{"id":null,"name":"ReadWrite"},"author":"Tanesh Kumar","title":"5 Ways to Use JavaScript to Add Interactivity to Your Website","description":"Greetings from the web development industry! Making a website involves more than simply putting content online—it also gives visitors a […]\nThe post 5 Ways to Use JavaScript to Add Interactivity to Your Website appeared first on ReadWrite.","url":"https://readwrite.com/5-ways-to-use-javascript-to-add-interactivity-to-your-website/","urlToImage":"https://readwrite.com/wp-content/uploads/2023/07/JavaScript-to-Add-Interactivity.jpg","publishedAt":"2023-09-08T23:00:46Z","content":"Greetings from the web development industry! Making a website involves more than simply putting content onlineit also gives visitors a memorable experience. Now, let’s enter the fascinating ways to u… [+6101 chars]"},{"source":{"id":null,"name":"Github.com"},"author":"Hexagon","title":"Croner – Cron for JavaScript and TypeScript","description":"Trigger functions or evaluate cron expressions in JavaScript or TypeScript. No dependencies. Most features. Node. Deno. Bun. Browser. - GitHub - Hexagon/croner: Trigger functions or evaluate cron e...","url":"https://github.com/Hexagon/croner","urlToImage":"https://opengraph.githubassets.com/8a9d6fa0d248ef047f5c682d1aa4cb645cd51de82cf7989584aa9417ebb89713/Hexagon/croner","publishedAt":"2023-08-31T04:26:40Z","content":"Trigger functions or evaluate cron expressions in JavaScript or TypeScript. No dependencies. All features. Node. Deno. Bun. Browser. \r\nTry it live on jsfiddle, and check out the full documentation on… [+15918 chars]"},{"source":{"id":null,"name":"Akashhamirwasia.com"},"author":null,"title":"Internals of Async / Await in JavaScript","description":"If you have ever used JavaScript in the past, there is a high chance you have encountered the async / await syntax. async…","url":"https://akashhamirwasia.com/blog/internals-of-async-await-in-javascript/","urlToImage":"https://a.storyblok.com/f/102754/1387x816/c2d0b0957f/internals-of-async-await-in-javascript.jpg","publishedAt":"2023-09-01T22:42:01Z","content":"If you have ever used JavaScript in the past, there is a high chance you have encountered the async / await syntax. async / await makes it easy to define asynchronous logic in a synchronous way that … [+12400 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Max Bold","title":"heise+ | Datenaustausch zwischen PHP und JavaScript realisieren","description":"Für die Übergabe von Daten aus PHP-Programmen an JavaScript gibt es verschiedene Varianten. Wir erklären, welche es gibt und wie man sie umsetzt.","url":"https://www.heise.de/ratgeber/Datenaustausch-zwischen-PHP-und-JavaScript-realisieren-9306537.html?wt_mc=rss.red.ho.ho.atom.beitrag_plus.beitrag_plus","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/3/0/3/4/8/3/shutterstock_1463449130-502f827aa20c6722.jpg","publishedAt":"2023-09-21T09:00:00Z","content":"Inhaltsverzeichnis\r\nBei der Programmierung von Webanwendungen kommt es oft zur Vermischung von verschiedenen Programmiersprachen wie beispielsweise PHP, JavaScript, HTML und CSS.\r\nIn dieser Konstella… [+1207 chars]"},{"source":{"id":null,"name":"Os-js.org"},"author":"","title":"Os.js – open-source JavaScript web desktop platform with a window manager","description":"JavaScript Cloud/Web Desktop Platform","url":"https://www.os-js.org/","urlToImage":"https://os-js.org/images/social-logo.png","publishedAt":"2023-08-25T02:27:12Z","content":"Copyright © 2009-present Anders Evenrud"},{"source":{"id":null,"name":"Csvbase.com"},"author":"Cal Paterson","title":"I didn't write any JavaScript, and other shortcuts","description":"Getting it done by not doing a lot of it","url":"https://csvbase.com/blog/4","urlToImage":"https://csvbase.com/blog-static/bird.jpeg","publishedAt":"2023-08-23T02:53:21Z","content":"One slightly unusual thing about csvbase is that, when I wrote it, I didn't\r\nwrite any Javascript.\r\nMost of the Javascript-I-did-not-write falls into a few categories:\r\nI didn't write any frontend fo… [+8740 chars]"},{"source":{"id":null,"name":"Thedailywtf.com"},"author":"Remy Porter","title":"CodeSOD: Threading in JavaScript","description":"The easiest way to write programs that support concurrency is to not. JavaScript in the browser is famously single-threaded, unless you add web-workers, which have a very specific way of interacting with your main script that avoids most of the pitfalls of co…","url":"https://thedailywtf.com/articles/threading-in-javascript","urlToImage":"https://thedailywtf.com/images/remy/Remy203-300x300.png","publishedAt":"2023-09-07T06:30:00Z","content":"The easiest way to write programs that support concurrency is to not. JavaScript in the browser is famously single-threaded, unless you add web-workers, which have a very specific way of interacting … [+1096 chars]"},{"source":{"id":null,"name":"Paularmstrong.dev"},"author":"","title":"We use TypeScript not based on preference, but because we want to make money","description":"A short recounting of the thing that changed my mind forever on strict type checking for JavaScript.","url":"https://paularmstrong.dev/blog/2023/09/14/we-use-type-safety-not-on-preference-but-because-we-want-to-make-money/","urlToImage":"https://paularmstrong.dev/img/og_image_small.jpg","publishedAt":"2023-09-15T21:32:57Z","content":"Before TypeScript was a viable option for most existing projects, there was flow (there still is flow, its just not widely used outside of Meta these days). And before flow, there was just plain Java… [+5052 chars]"},{"source":{"id":null,"name":"Webdesignerdepot.com"},"author":"","title":"13 JavaScript Animation Libraries for Designers","description":"Animation is a good web designer’s secret weapon. To animate means to bring to life, and a few little animated touches can liven up even the dullest content.","url":"https://www.webdesignerdepot.com/13-javascript-animation-libraries-for-designers/","urlToImage":"https://www.webdesignerdepot.com/assets/posts/featured/_1200x630_crop_center-center_82_none/02-scrollreveal.jpg?mtime=1692723382","publishedAt":"2023-08-22T12:30:00Z","content":"Creating a site or a page with animation doesnt have to mean building the whole thing in some big, complicated animation app or framework. Even something as simple as animating a link hover effect wi… [+10739 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Madeleine Domogalla","title":"heise-Angebot: JavaScript: Das Programm des Advanced Angular Day steht fest","description":"Das Programm der eintägigen Online-Konferenz steht. Am 30. November können sich Interessierte in sechs Vorträgen über das JavaScript-Framework informieren.","url":"https://www.heise.de/news/JavaScript-Das-Programm-des-Advanced-Angular-Day-steht-fest-9297617.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/9/8/7/0/2/Screenshot_2023-09-07_124527-54fcc9008c90389c.png","publishedAt":"2023-09-09T10:00:00Z","content":"Inhaltsverzeichnis\r\nDie Veranstalter dpunkt.verlag und heise haben in Kooperation mit Angular-Experte Rainer Hahnekamp das Programm für den Advanced Angular Day 2023 fertiggestellt. Die eintägige Onl… [+2694 chars]"},{"source":{"id":null,"name":"Npmjs.com"},"author":null,"title":"React Sees a dip in NPM downloads this week","description":"React is a JavaScript library for building user interfaces.. Latest version: 18.2.0, last published: a year ago. Start using react in your project by running `npm i react`. There are 113160 other projects in the npm registry using react.","url":"https://www.npmjs.com/package/react","urlToImage":"https://static-production.npmjs.com/338e4905a2684ca96e08c7780fc68412.png","publishedAt":"2023-09-20T17:23:00Z","content":"React is a JavaScript library for creating user interfaces.\r\nThe react package contains only the functionality necessary to define React components. It is typically used together with a React rendere… [+809 chars]"},{"source":{"id":null,"name":"MacRumors"},"author":"Juli Clover","title":"Apple Releases Safari Technology Preview 177 With Bug Fixes and Performance Improvements","description":"Apple today released a new update for Safari Technology Preview, the experimental browser Apple first introduced in March 2016. Apple designed the ‌Safari Technology Preview‌ to test features that may be introduced into future release versions of Safari.\n\n\n\n\n…","url":"https://www.macrumors.com/2023/08/22/apple-releases-safari-technology-preview-177/","urlToImage":"https://images.macrumors.com/t/jHD1aGfXq86Ln_kfzTyWIF68vOo=/2368x/article-new/2021/02/Safari-Technology-Preview-Feature.jpg","publishedAt":"2023-08-22T21:22:54Z","content":"Apple today released a new update for Safari Technology Preview, the experimental browser Apple first introduced in March 2016. Apple designed the ‌Safari Technology Preview‌ to test features that ma… [+1516 chars]"},{"source":{"id":"the-verge","name":"The Verge"},"author":"Alex Heath","title":"Snapchat is jumping on the AI selfie train with ‘Dreams’","description":"Snapchat’s latest generative AI feature, called Dreams, creates packs of selfies based on specific themes. Snap is charging for use of multiple packs via in-app purchase.","url":"https://www.theverge.com/2023/8/29/23849611/snapchat-releases-ai-selfie-feature-dreams","urlToImage":"https://cdn.vox-cdn.com/thumbor/Ck7D4igRM9N2vcqK7CB6v0TMB24=/0x0:3240x2160/1200x628/filters:focal(1620x1080:1621x1081)/cdn.vox-cdn.com/uploads/chorus_asset/file/24880917/Untitled_1.jpg","publishedAt":"2023-08-29T13:00:00Z","content":"Snapchat users will soon able to create their own Dreams in the Memories section of the app. | Image: Snap\r\n\n \n\n After releasing its My AI chatbot earlier this year, Snapchat is now jumping on the AI… [+4490 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"David Jaja","title":"Mastering Unary, Binary, and Ternary Operators in JavaScript","description":"You’ve probably used these operators in your programs already, but the devil is in the detail. Get to the bottom of operators and how they differ.","url":"https://www.makeuseof.com/javascript-operators-unary-binary-ternary/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/09/codes-on-ide-seen-through-eyeglasses.jpg","publishedAt":"2023-09-19T18:30:43Z","content":"Operators are symbols that let you perform various operations on data. You’ll be familiar with them from basic math, as characters like the + sign, but they work slightly differently in programming.\r… [+3646 chars]"},{"source":{"id":null,"name":"Slashdot.org"},"author":"EditorDavid","title":"WebAssembly 2023 Survey Finds Enthusiasm - and Some Challenges","description":"An anonymous reader shared this report from InfoWorld:\nThe uses of WebAssembly, aka Wasm, have grown far beyond its initial target of web applications, according to The State of WebAssembly 2023 report. But some developers remain skeptical.\n\nReleased Septembe…","url":"https://developers.slashdot.org/story/23/09/10/0653235/webassembly-2023-survey-finds-enthusiasm---and-some-challenges","urlToImage":"https://a.fsdn.com/sd/topics/programming_64.png","publishedAt":"2023-09-10T15:34:00Z","content":"The uses of WebAssembly, aka Wasm, have grown far beyond its initial target of web applications, according to The State of WebAssembly 2023 report. But some developers remain skeptical.\r\nReleased Sep… [+1434 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"Ask HN: Best books to learn web development?","description":"Comments","url":"https://news.ycombinator.com/item?id=37325594","urlToImage":null,"publishedAt":"2023-08-30T17:24:29Z","content":"A textbook which gives a good introduction to Web Development is:1) Fundamentals of Web Development (Randy Connolly and Ricardo Hoar).\r\nI have the 2nd Ed but the 3rd Ed is out and is more contemporar… [+367 chars]"},{"source":{"id":"the-next-web","name":"The Next Web"},"author":".cult","title":"Thinking of moving to Spain? Here’s what you need to know about developer salaries","description":"This article was originally published on .cult by Melina Zacharia and Luis Minvielle. .cult is a Berlin-based community platform for developers. We write about all things career-related, make original documentaries, and share heaps of other untold developer s…","url":"https://thenextweb.com/news/thinking-of-moving-to-spain-heres-what-you-need-to-know-about-developer-salaries","urlToImage":"https://img-cdn.tnwcdn.com/image/tnw-blurple?filter_last=1&fit=1280%2C640&url=https%3A%2F%2Fcdn0.tnwcdn.com%2Fwp-content%2Fblogs.dir%2F1%2Ffiles%2F2023%2F08%2FAdd-a-heading-1.jpg&signature=0e326bdaf45a9a7c0f6b040760c7cac9","publishedAt":"2023-08-31T14:51:31Z","content":"This article was originally published on .cult by Melina Zacharia and Luis Minvielle. .cult is a Berlin-based community platform for developers. We write about all things career-related, make origina… [+8101 chars]"},{"source":{"id":null,"name":"Htmx.org"},"author":null,"title":"Why Htmx Does Not Have a Build Step","description":"Comments","url":"https://htmx.org/essays/no-build-step/","urlToImage":null,"publishedAt":"2023-08-25T18:08:55Z","content":"Why htmx Does Not Have a Build Step\r\nAlexander Petros\r\nAugust 19, 2023A recurring question from some htmx contributors is why htmx isnt written in TypeScript, or, for that matter, why htmx lacks any … [+11443 chars]"},{"source":{"id":null,"name":"Theregister.com"},"author":"Steven J. Vaughan-Nichols","title":"From browser brat to backend boss: Will WASM win the web wars?","description":"WebAssembly is getting a lot of hype, but is it the game-changer some think it is?\nOpinion Beginning in 1995 and for decades after, JavaScript was the only game worth playing when it came to web-based scripting. While incredibly versatile, JavaScript had its …","url":"https://www.theregister.com/2023/09/01/wasm_column/","urlToImage":"https://regmedia.co.uk/2023/09/01/shutterstock_wasm.jpg","publishedAt":"2023-09-01T10:35:07Z","content":"Opinion Beginning in 1995 and for decades after, JavaScript was the only game worth playing when it came to web-based scripting. While incredibly versatile, JavaScript had its limitations, especially… [+5036 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"David Uzondu","title":"How to Create a Typewriter Effect With CSS","description":"You don't need JavaScript to create the classic typewriter effect. Learn how to do it with just CSS using the steps() function.","url":"https://www.makeuseof.com/typewriter-effect-css/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/05/coding.jpg","publishedAt":"2023-09-01T21:01:36Z","content":"Cascading Style Sheets (CSS) has come a long way since its inception. There are things that are possible with just CSS that you may not know about, thanks to the continuous evolution and enhancement … [+6688 chars]"},{"source":{"id":null,"name":"Hackaday"},"author":"Bryan Cockfield","title":"Streaming Video From an ESP32","description":"The ESP32, while first thought to be little more than a way of adding wireless capabilities to other microcontrollers, has quickly replaced many of them with its ability to be programmed as its own…","url":"https://hackaday.com/2023/09/05/streaming-video-from-an-esp32/","urlToImage":"https://hackaday.com/wp-content/uploads/2023/09/esp32-stream-main.jpg","publishedAt":"2023-09-06T05:00:23Z","content":"The ESP32, while first thought to be little more than a way of adding wireless capabilities to other microcontrollers, has quickly replaced many of them with its ability to be programmed as its own p… [+1204 chars]"},{"source":{"id":null,"name":"N8n.io"},"author":null,"title":"n8n.io - A powerful workflow automation tool","description":"n8n is a free and source-available workflow automation tool","url":"https://n8n.io","urlToImage":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/og_image_website_3_afd66761a9.png","publishedAt":"2023-08-26T16:06:42Z","content":"Workflow automation for technical people\r\nYour days spent slogging through a spaghetti of scripts are over. Use JavaScript when you need flexibility and UI for everything else."},{"source":{"id":null,"name":"Xataka.com"},"author":"Javier Pastor","title":"Python es el rey de los lenguajes de programación. Pero los viejos rockeros (Fortran, COBOL) siguen dando guerra","description":"Si estás pensando en aprender un lenguaje de programación, probablemente uno de los claros objetivos de tu lista sea Python. Es algo lógico: este lenguaje se ha convertido en el más popular en los últimos años con la ayuda de la inteligencia artificial, donde…","url":"https://www.xataka.com/aplicaciones/python-rey-lenguajes-programacion-viejos-rockeros-fortran-cobol-siguen-dando-guerra","urlToImage":"https://i.blogs.es/22ad13/caspar/840_560.jpeg","publishedAt":"2023-09-12T11:01:33Z","content":"Si estás pensando en aprender un lenguaje de programación, probablemente uno de los claros objetivos de tu lista sea Python. Es algo lógico: este lenguaje se ha convertido en el más popular en los úl… [+2997 chars]"},{"source":{"id":null,"name":"Phylum.io"},"author":"Phylum Research Team","title":"Rust Malware Staged on Crates.io","description":"Phylum routinely identifies malware and other software supply chain attacks targeting high-value, critical assets: an organization’s software developers. Most recently, we’ve reported on a flurry of sophisticated attacks targeting JavaScript developers, respa…","url":"https://blog.phylum.io/rust-malware-staged-on-crates-io/","urlToImage":"https://blog.phylum.io/content/images/2023/08/evil-crab.png","publishedAt":"2023-08-25T09:39:07Z","content":"Phylum routinely identifies malware and other software supply chain attacks targeting high-value, critical assets: an organizations software developers. Most recently, weve reported on a flurry of so… [+8650 chars]"},{"source":{"id":null,"name":"Slashdot.org"},"author":"EditorDavid","title":"Creators of Python, Java, TypeScript, and SmallTalk Will Make a Joint Apperance for Charity","description":"The creators of four programming languages will appear together onstage for a historic conversation on September 19th. \n\n- Adele Goldberg — Smalltalk\n- Guido Van Rossum — Python\n- Anders Hejlsberg — Turbo Pascal, C#, TypeScript\n- James Gosling — Java \nThe ann…","url":"https://developers.slashdot.org/story/23/08/27/1737256/creators-of-python-java-typescript-and-smalltalk-will-make-a-joint-apperance-for-charity","urlToImage":"https://a.fsdn.com/sd/topics/programming_64.png","publishedAt":"2023-08-27T17:40:00Z","content":"The creators of four programming languages will appear together onstage for a historic conversation on September 19th.- Adele Goldberg — Smalltalk- Guido Van Rossum — Python- Anders Hejlsberg — Turbo… [+2200 chars]"},{"source":{"id":null,"name":"Nuejs.org"},"author":null,"title":"Show HN: Nue – A React/Vue/Vite/Astro Alternative","description":"A powerful React/Vue/Vite/Astro alternative","url":"https://nuejs.org","urlToImage":"https://nuejs.org/global/img/og.jpg","publishedAt":"2023-09-14T11:11:17Z","content":"Nue is a powerful React, Vue, Next.js, Vite, and Astro alternative. It might change the way you develop for the web forever. Hello, World!\r\nAuthor here. Ive been working on this for the past ~12 mont… [+1086 chars]"},{"source":{"id":null,"name":"Hagever.com"},"author":"Gal Schlezinger","title":"My Node.js is a bit Rusty","description":"Replacing an internal Node.js module with a native Rust module made a x25 perf boost. Let’s understand why.","url":"https://gal.hagever.com/posts/my-node-js-is-a-bit-rusty","urlToImage":"https://gal.hagever.com/api/getPostImage?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRlIjoiMjAyMy0wOS0wNFQwMDowMDowMC4wMDBaIiwic3VidGl0bGUiOiJSZXBsYWNpbmcgYW4gaW50ZXJuYWwgTm9kZS5qcyBtb2R1bGUgd2l0aCBhIG5hdGl2ZSBSdXN0IG1vZHVsZSBtYWRlIGEgeDI1IHBlcmYgYm9vc3QuIExldOKAmXMgdW5kZXJzdGFuZCB3aHkuIiwidGl0bGUiOiJNeSBOb2RlLmpzIGlzIGEgYml0IFJ1c3R5IiwiaWF0IjoxNjk0MTQ5Nzg4fQ.DuCz4WqVHu-1RFoZVXzD0O-3-q6Ua-MsiVVWrbp0_Lw","publishedAt":"2023-09-07T07:34:09Z","content":"This blog post has been residing in \"draft\" mode for quite a while now. I've finally decided to just publish it. As such, a few things might be a bit off, but... that's life, isn't it? I'm eager to h… [+14096 chars]"},{"source":{"id":null,"name":"56k.guru"},"author":null,"title":"Deno vs. Bun vs. Node.js: A Feature Comparison","description":"Description","url":"https://dev.hexagon.56k.guru/posts/deno-vs-bun-vs-node/","urlToImage":"https://hexagon.56k.guru/img/og_image.webp","publishedAt":"2023-09-11T22:58:38Z","content":"by Hexagon, \r\n2023-09-11\r\n 5 minutes readdenobunnodejs\r\nChoosing a JavaScript runtime for your project? Then you've probably heard of Deno, Bun, and Node.js. They are all good, but each has its own s… [+6598 chars]"},{"source":{"id":null,"name":"Hackaday"},"author":"Jonathan Bennett","title":"This Week in Security: LastPass Shoe Drops, Keys Lost, and Train Whistles Attack","description":"There has been a rash of cryptocurrency thefts targeting some unexpected victims. Over $35 million has been drained from just over 150 individuals, and the list reads like a who’s-who …read more","url":"https://hackaday.com/2023/09/08/this-week-in-security-lastpass-shoe-drops-keys-lost-and-train-whistles-attack/","urlToImage":"https://hackaday.com/wp-content/uploads/2016/01/darkarts.jpg","publishedAt":"2023-09-08T14:00:24Z","content":"There has been a rash of cryptocurrency thefts targeting some unexpected victims. Over $35 million has been drained from just over 150 individuals, and the list reads like a who’s-who of the least li… [+6877 chars]"},{"source":{"id":null,"name":"Kagi.com"},"author":"Vladimir Prelovac","title":"Kagi now accepts PayPal, EUR and Bitcoin payments","description":"One of the most frequently requested features on Kagi has been the expansion of our payment methods so that more people can more easilly enjoy the benefits of Kagi Search.","url":"https://blog.kagi.com/accepting-paypal-bitcoin","urlToImage":null,"publishedAt":"2023-08-31T23:34:04Z","content":"One of the most frequently requested features on Kagi has been the expansion of our payment methods so that more people can more easilly enjoy the benefits of Kagi Search.\r\nWe are happy to announce t… [+1588 chars]"},{"source":{"id":null,"name":"Macwright.com"},"author":"Tom MacWright","title":"Second-Guessing the Modern Web","description":"What if everyone's wrong?","url":"https://macwright.com/2020/05/10/spa-fatigue","urlToImage":null,"publishedAt":"2023-09-21T23:18:27Z","content":"The emerging norm for web development is to build a React single-page application, with server rendering. The two key elements of this architecture are something like:\r\n
  1. The main UI is built &… [+11428 chars]"},{"source":{"id":null,"name":"Davidwalsh.name"},"author":"David Walsh","title":"Sum an Array of Numbers with JavaScript","description":"It’s rare that I’m disappointed by the JavaScript language not having a function that I need. One such case was summing an array of numbers — I was expecting Math.sum or a likewise, baked in API. Fear not — summing an array of numbers is easy using Array.prot…","url":"https://davidwalsh.name/sum-array-numbers","urlToImage":"https://davidwalsh.name/wp-content/themes/punky/images/logo.png","publishedAt":"2023-09-07T02:06:45Z","content":"It's rare that I'm disappointed by the JavaScript language not having a function that I need. One such case was summing an array of numbers -- I was expecting Math.sum or a likewise, baked in API. Fe… [+438 chars]"},{"source":{"id":null,"name":"Hotwire.dev"},"author":null,"title":"Strada - Create fully native controls, driven by your web app.","description":"Strada enables you to create high fidelity interactions in hybrid mobile apps through a component-based communication channel between the web and native app.","url":"https://strada.hotwire.dev/","urlToImage":null,"publishedAt":"2023-09-20T18:00:26Z","content":"Current version: 1.0.0-beta1 — released Sep 19, 2023\r\nStrada enables you to create fully native controls in your hybrid mobile apps, driven by the web. Build web components and native components that… [+606 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Wolf Hosbach","title":"Umfrage: WebAssembly wächst über das Web hinaus","description":"Eine Umfrage von CNCF zeigt, dass immer mehr Entwickler WebAssembly für Projekte jenseits des Browsers einsetzen. Sie schätzen Flexibilität und Portierbarkeit.","url":"https://www.heise.de/news/Umfrage-WebAssembly-waechst-ueber-das-Web-hinaus-9298069.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/9/8/9/3/8/Metaverse_5-5001e575e3359217.png","publishedAt":"2023-09-08T07:14:00Z","content":"Die Umfrage The State of WebAssembly 2023 der Cloud Native Computing Foundation (CNCF) belegt, dass immer mehr Entwickler und Programmiererinnen WebAssembly (Wasm) nicht nur für Web-Anwendungen, sond… [+3326 chars]"},{"source":{"id":null,"name":"Slashdot.org"},"author":"EditorDavid","title":"IEEE Specctrum Announces Top Programming Languages of 2023: Python and SQL","description":"Last week IEEE Spectrum released its 10th annual rankings of the Top Programming Languages.\nIt choose a top language for each of three categories: actively used among typical IEEE members and working software engineers, in demand by employers, or \"in the zeit…","url":"https://developers.slashdot.org/story/23/09/11/023222/ieee-specctrum-announces-top-programming-languages-of-2023-python-and-sql","urlToImage":"https://a.fsdn.com/sd/topics/programming_64.png","publishedAt":"2023-09-11T07:34:00Z","content":"Last week IEEE Spectrum released its 10th annual rankings of the Top Programming Languages.\r\nIt choose a top language for each of three categories: actively used among typical IEEE members and workin… [+2800 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Dennis Schirrmacher","title":"Sicherheitsupdate: Passwort-Lücke bedroht Nagios XI","description":"Angreifer können die Server-Monitoring-Lösung Nagios XI attackieren. Eine dagegen abgesicherte Version ist verfügbar.","url":"https://www.heise.de/news/Sicherheitsupdate-Passwort-Luecke-bedroht-Nagios-XI-9312331.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/3/0/6/5/9/0/shutterstock_1504494320-293af31631fe565f.jpg","publishedAt":"2023-09-21T07:42:00Z","content":"Admins, die Server mit der Open-Source-Software Nagios XI überwachen, sollten die Monitoring-Lösung zeitnah auf den aktuellen Stand bringen. Andernfalls können Angreifer an vier Sicherheitslücken ans… [+980 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Maika Möbus","title":"Virtuelle Maschine GraalVM für JDK 21 bringt Support für neueste Java-Features","description":"Pünktlich ist GraalVM für JDK 21 erschienen. Das Release ist mit der neuesten Java-LTS-Version 21 kompatibel und verändert den Umgang mit Truffle-Sprachen.","url":"https://www.heise.de/news/Virtuelle-Maschine-GraalVM-fuer-JDK-21-bringt-Support-fuer-neueste-Java-Features-9311360.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/3/0/6/0/6/8/shutterstock_1387420256-1f8e7f8b435a008f.jpg","publishedAt":"2023-09-20T11:56:00Z","content":"Oracle hat GraalVM für JDK 21 veröffentlicht. Die virtuelle Maschine ist nun auf die neue Sprachversion Java 21 mit Long-Term Support (LTS) ausgelegt und kann deren Features verwenden. Das betrifft u… [+3091 chars]"},{"source":{"id":null,"name":"Speckyboy.com"},"author":"Eric Karkovack","title":"8 CSS & JavaScript Snippets for Creating Blur Effects","description":"We share some excellent examples of CSS & JavaScript blur effects. They are a surefire way of making a design element stand out.\nThe post 8 CSS & JavaScript Snippets for Creating Blur Effects appeared first on Speckyboy Design Magazine.","url":"https://speckyboy.com/css-javascript-blur-effects/","urlToImage":"https://speckyboy.com/wp-content/uploads/2023/09/css-blur-effects-thumb.jpg","publishedAt":"2023-09-18T06:04:47Z","content":"Adding blur effects is a surefire way to make a surrounding design element stand out. For example, adding a bit of haziness to a background photo will draw attention to the layered text on top.\r\nCraf… [+3875 chars]"},{"source":{"id":null,"name":"Itsnicethat.com"},"author":"Joey Levenson","title":"How pixel art of the early web inspires John Provencher’s design work","description":"John harnesses the nascent potential of HTML and JavaScript to craft digital marvels within the confines of the web browser.","url":"https://www.itsnicethat.com/articles/john-provencher-graphic-design-discover-050923","urlToImage":"https://admin.itsnicethat.com/images/rG0m-HGnimoj1kuJWY18Tv7akt0=/244756/width-1440%7Cformat-jpeg/john_provencherpicture-37-copy.png","publishedAt":"2023-09-05T08:00:00Z","content":"Graphic designer, artist, and educator John Provencher is making waves in the New York design scene. His work is, simply put: incredibly unique. Its exciting, tantalising, different and pulsating wit… [+1046 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"Front-end is harder than Back-end","description":"Comments","url":"https://news.ycombinator.com/item?id=37300579","urlToImage":null,"publishedAt":"2023-08-28T21:24:37Z","content":"For you. Because you're new at it.Also \"Front End\" and \"Back End\" are about as terrible of terms as one could come up with to describe the areas of work. It's like acting like building a house requir… [+956 chars]"},{"source":{"id":null,"name":"Vaxbarn.com"},"author":null,"title":"Vaxbarn","description":"VAXBARN: Camiel Vanderhoeven's computer collection","url":"https://vaxbarn.com/","urlToImage":null,"publishedAt":"2023-09-16T11:23:40Z","content":"Welcome to VAXBARN, Camiel Vanderhoeven's computer collection, located in a 200-year old farmhouse in the tiny village of Netterden, in the east of the Netherlands, on the border with Germany.\r\nThere… [+971 chars]"},{"source":{"id":null,"name":"Github.com"},"author":"jedisct1","title":"Libsodium: A modern, portable, easy to use crypto library","description":"A modern, portable, easy to use crypto library. Contribute to jedisct1/libsodium development by creating an account on GitHub.","url":"https://github.com/jedisct1/libsodium","urlToImage":"https://opengraph.githubassets.com/90197b5e10f19f51124ce652fb68a965f52b22997f96ad867ae9c36100c10306/jedisct1/libsodium","publishedAt":"2023-09-15T06:01:45Z","content":"Sodium is a new, easy-to-use software library for encryption,\r\ndecryption, signatures, password hashing and more.\r\nIt is a portable, cross-compilable, installable, packageable\r\nfork of NaCl, with a c… [+1152 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"Ask HN: SICP is often recommended as mind opener, what did you learn from it?","description":"Comments","url":"https://news.ycombinator.com/item?id=37362626","urlToImage":null,"publishedAt":"2023-09-02T15:53:18Z","content":"I didn't study SICP directly, but took a course which was inspired by it.Perhaps the question needs the qualifier of whether you've encountered lisp before or not.\r\n> ... What did it do differentl… [+1106 chars]"},{"source":{"id":null,"name":"Pippinbarr.com"},"author":null,"title":"Pongs","description":"Comments","url":"https://pippinbarr.com/pongs/info/","urlToImage":null,"publishedAt":"2023-09-16T06:49:54Z","content":"Description\r\nBip! Bip! Bip! Boop! Everyone loves PONG! So everyone loves thirty six PONGS even more! Work those learning muscles with EDUTAINMENT PONG! Get serious with SERIOUS PONG! Shoot a laser gu… [+1089 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"Debarshi Das","title":"Why You Shouldn't Copy-Paste Commands From the Internet","description":"Tempted to copy-paste a command online? Think twice.","url":"https://www.makeuseof.com/why-you-shouldnt-copy-paste-commands-from-internet/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/03/girl-confused-how-to-copy-paste-on-linux.jpg","publishedAt":"2023-08-29T17:01:23Z","content":"From computers to mobile phones, copy-pasting is prevalent everywhere. It makes life easier and saves you time as you don't have to type long commands or redundant texts. However, if you aren't caref… [+4458 chars]"},{"source":{"id":null,"name":"Gigazine.net"},"author":"@GIGAZINE","title":"グランド・セフト・オートVのコミュニティサーバー「FiveM」で「IPアドレスを流出させる」などの悪用が可能な脆弱性が見つかる","description":"2023年時点で世界中で1億8500万本を売り上げる人気ゲームソフト「グランド・セフト・オートV」では、オンラインマルチプレイヤーモードの「GTAオンライン」をプレイすることが可能です。そんなGTAオンラインには、ユーザー間で専用サーバーの構築や接続が可能になるオープンソースのコミュニティサーバープラットフォーム「FiveM」が存在します。エンジニアのベリタス氏が、FiveMの脆弱(ぜいじゃく)性によって、別のユーザーのマイクへのアクセスが可能になるなどの危険性を報告しています。続きを読む...","url":"https://gigazine.net/news/20230831-hacking-gta-servers/","urlToImage":"https://i.gzn.jp/img/2023/08/31/hacking-gta-servers/00.jpg","publishedAt":"2023-08-30T23:00:00Z","content":"202318500VGTAGTAFiveMFiveM()\r\nHacking GTA V RP Servers Using Web Exploitation Techniqueshttps://www.nullpt.rs/hacking-gta-servers-using-web-exploitation\r\nVMODCfx.reFiveMLuaC#JavaScript\r\nFiveM\r\nrcore_… [+1852 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Dennis Schirrmacher","title":"Jetzt patchen! Sicherheitslösungen von Fortinet als Sicherheitsrisiko","description":"Mehrere Produkte von Fortinet sind verwundbar. Sicherheitsupdates schaffen Abhilfe.","url":"https://www.heise.de/news/Jetzt-patchen-Sicherheitsloesungen-von-Fortinet-als-Sicherheitsrisiko-9306543.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/3/0/3/4/8/6/shutterstock_1024271563-bad03ea07113dd32.jpg","publishedAt":"2023-09-15T10:26:00Z","content":"Wenn Unternehmen Netzwerke mit Sicherheitslösungen von Fortinet schützen, sollten Admins die Appliances, Firewalls & Co. auf den aktuellen Stand bringen. Andernfalls können Attacken bevorstehen.\r… [+1292 chars]"},{"source":{"id":null,"name":"Arxiv.org"},"author":null,"title":"Can Programming Languages Boost Each Other via Instruction Tuning? Yes","description":"When human programmers have mastered a programming language, it would be\neasier when they learn a new programming language. In this report, we focus on\nexploring whether programming languages can boost each other during the\ninstruction fine-tuning phase of co…","url":"https://arxiv.org/abs/2308.16824","urlToImage":"https://static.arxiv.org/static/browse/0.3.4/images/arxiv-logo-fb.png","publishedAt":"2023-09-01T15:03:11Z","content":"arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.\r\nBoth individuals and organizations that work with arXivLabs have embraced and acce… [+257 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Wilhelm Drehling","title":"heise+ | Programmierkenntnisse ausbauen: Die Website LeetCode im Überblick","description":"Um Ihre Programmierkenntnisse aufzumöbeln, können Sie auf der LeetCode-Webseite Aufgaben direkt im Browser bearbeiten. Lösungen werden direkt geprüft.","url":"https://www.heise.de/tests/Programmierkenntnisse-ausbauen-Die-Website-LeetCode-im-Ueberblick-9289520.html?wt_mc=rss.red.ho.ho.atom.beitrag_plus.beitrag_plus","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/9/4/3/6/3/shutterstock_376500178-13bc2ee9a7b60717.jpg","publishedAt":"2023-09-05T09:30:00Z","content":"Inhaltsverzeichnis\r\nZum Programmieren genügt es nicht, einfach nur die Syntax einer Programmiersprache zu beherrschen. Analytisches Denken und die richtige Herangehensweise an Probleme sind genauso w… [+1490 chars]"},{"source":{"id":null,"name":"Xataka.com"},"author":"Javier Marquez","title":"GitHub Copilot tiene más competencia: Meta acaba de presentar Code Llama, un nuevo aliado para los programadores","description":"La inteligencia artificial (IA) está cambiando la forma en la que los programadores hacen su trabajo. Una encuesta de GitHub en Estados Unidos sugiere que el 92% de los desarrolladores con sede en ese país utilizan herramientas de codificación impulsadas por …","url":"https://www.xataka.com/robotica-e-ia/github-copilot-tiene-competencia-meta-acaba-presentar-code-llama-nuevo-aliado-para-programadores","urlToImage":"https://i.blogs.es/9ac092/code-llama-porrtada/840_560.jpeg","publishedAt":"2023-08-24T18:01:35Z","content":"La inteligencia artificial (IA) está cambiando la forma en la que los programadores hacen su trabajo. Una encuesta de GitHub en Estados Unidos sugiere que el 92% de los desarrolladores con sede en es… [+2429 chars]"},{"source":{"id":"reddit-r-all","name":"Reddit /r/all"},"author":null,"title":"As I get older, I just don't care about new technology","description":"Maybe it's just the depressive phase I'm currently in, or if I'm just getting older and have less and less patience for things, but I just don't...","url":"https://www.reddit.com/r/webdev/comments/1613yqj/as_i_get_older_i_just_dont_care_about_new/","urlToImage":"https://www.redditstatic.com/new-icon.png","publishedAt":"2023-08-26T10:19:59Z","content":"Very confused by this. My googling said that React was released in 2013, 3 years after earlier popular SPA frameworks, and 8 years after the term AJAX was coined to describe the process of getting da… [+1343 chars]"},{"source":{"id":null,"name":"Fauna.com"},"author":"Bob Muglia","title":"Relational is more than SQL","description":"SQL is the standard for working with structured tables, which will continue. But it is time to break the relational model free from tables.","url":"https://fauna.com/blog/relational-is-more-than-sql","urlToImage":"https://images.ctfassets.net/po4qc9xpmpuh/4LVmVrjdN9tv7DQo4vMWev/b48c772c33cb6fc3a7eaf3ced935fc01/Relational_is_more_than_SQL.png","publishedAt":"2023-09-16T05:17:34Z","content":"Bob Muglia|Sep 15th, 2023\r\nSQL is a good friend to many people, myself included. My first deep dive into SQL was in 1987, just before I became the first technical person at Microsoft to work on SQL S… [+11444 chars]"},{"source":{"id":null,"name":"Github.io"},"author":null,"title":"My favorite Erlang program (2013)","description":"Comments","url":"https://joearms.github.io/#2013-11-21%20My%20favorite%20Erlang%20Program","urlToImage":null,"publishedAt":"2023-09-07T02:13:42Z","content":"created: 20181219192505269\r\nmodified: 20181220090702251\r\ntags: \r\ntitle: $:state/sidebar\r\ntype: text/vnd.tiddlywiki\r\nno\r\n/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAHgAA/+4ADkFkb2JlAGTAAAAAAf/bAIQ… [+3749398 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Maria Korneeva","title":"Practical Accessibility in Web Development","description":"Pragmatic tips and tricks can help web developers integrate accessibility features into their daily coding routines—to make the leap from tooling to mindset.","url":"https://www.heise.de/hintergrund/Practical-Accessibility-in-Web-Development-9200584.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/6/2/7/3/2/accessibility-shutterstock-3d601881a8568684.jpeg","publishedAt":"2023-08-23T07:27:00Z","content":"Inhaltsverzeichnis\r\n(Dieser Artikel ist auch auf Deutsch verfügbar.)\r\nIn July 2021, Germany enacted the Accessibility Strengthening Act (Barrierefreiheitsstärkungsgesetz, BFSG), which puts the Europe… [+7190 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Maria Korneeva","title":"Praktische Barrierefreiheit in der Webentwicklung","description":"Mit pragmatischen Tipps und Tricks lässt sich Barrierefreiheit in die tägliche Entwicklung integrieren – um so den Sprung vom Tooling zum Mindset zu schaffen.","url":"https://www.heise.de/hintergrund/Praktische-Barrierefreiheit-in-der-Webentwicklung-9279097.html?wt_mc=rss.red.ho.ho.atom.beitrag.beitrag","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/9/0/0/7/3/accessibility-shutterstock-3d601881a8568684.jpeg","publishedAt":"2023-08-23T07:27:00Z","content":"Inhaltsverzeichnis\r\n(This article is also available in English.)\r\nIm Juli 2021 trat in Deutschland das Barrierefreiheitsstärkungsgesetz (BFSG) in Kraft, das den European Accessibility Act (EAA) umset… [+8408 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"David Uzondu","title":"How to Create a Hangman Game With Svelte","description":"Understand Svelte’s fundamentals by building a simple Hangman game.","url":"https://www.makeuseof.com/hangman-game-svelte/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/05/svelte.jpg","publishedAt":"2023-09-15T20:31:28Z","content":"Svelte is a radical new JavaScript framework that is winning the hearts of developers. Its simple syntax makes it a great candidate for beginners who are looking to dive into the world of JavaScript … [+7224 chars]"},{"source":{"id":null,"name":"Search Engine Journal"},"author":"Roger Montti","title":"Google On How Googlebot Handles AI Generated Content via @sejournal, @martinibuster","description":"Google's Martin Splitt discusses AI Content in the context of quality control at the time of crawling and rendering\nThe post Google On How Googlebot Handles AI Generated Content appeared first on Search Engine Journal.","url":"https://www.searchenginejournal.com/google-on-how-googlebot-handles-ai-generated-content/494925/","urlToImage":"https://www.searchenginejournal.com/wp-content/uploads/2023/08/google-ai-content-64ec648057615-sej.jpg","publishedAt":"2023-08-28T09:45:31Z","content":"Google’s Martin Splitt was asked how Googlebot’s crawling and rendering was adapting to the increase in AI generated content.\r\nMartin’s answer provided insights into how Google handles AI generated c… [+4416 chars]"},{"source":{"id":null,"name":"Renegadeotter.com"},"author":null,"title":"Death by a Thousand Microservices","description":"The software industry is learning once again that complexity kills","url":"https://renegadeotter.com","urlToImage":"https://renegadeotter.com/img/complexity/og.jpg","publishedAt":"2023-09-12T05:05:20Z","content":"The Church of Complexity\r\nThere is a pretty well-known sketch in which an engineer is explaining to the project manager how an overly complicated maze of \r\nmicroservices works in order to get a users… [+14828 chars]"},{"source":{"id":null,"name":"Incolumitas.com"},"author":"Nikolai Tschacher","title":"BotOrNot (2021)","description":"Nikolai Tschacher's ideas around IT security and computer science","url":"https://incolumitas.com/pages/BotOrNot/","urlToImage":"https://incolumitas.com/theme/img/me-on-chasseral.webp","publishedAt":"2023-09-15T09:23:50Z","content":"Visit the BotOrNot detection page!\r\nI currently put a lot of effort into researching the question how to distinguish web based bots from real human beings. Researchers are publishing intriguing new p… [+13510 chars]"},{"source":{"id":null,"name":"Creativeapplications.net"},"author":"casper","title":"Web – A deterministic universe","description":"Web is a fully on-chain generative cross-linked network of 1000 webpages on Ethereum mainnet. All pages and the links between them are generated and form a deterministic universe. \nCategory: Javascript\nTags: blockchain / generative / internet / jan robert lee…","url":"https://www.creativeapplications.net/js/web-a-deterministic-universe/","urlToImage":"https://www.creativeapplications.net/wp-content/uploads/2023/09/web_front.jpg","publishedAt":"2023-09-14T11:45:13Z","content":"Web is a network spawned in the dark, resting within a smart contract waiting to be explored. It is a performance of the Internet itself, a non-linear choreography of a thousand webpages. The pages a… [+7147 chars]"},{"source":{"id":null,"name":"Geowayne.com"},"author":null,"title":"Interpretation and analysis of songs written or performed by Pet Shop Boys","description":"This site analyzes each song written or recorded by the Pet Shop Boys and provides a wealth of interesting and enjoyable information about them and their music. Launched in 2001, it is updated regularly and has been listed among the Internet's best music fans…","url":"http://www.geowayne.com/psbhtml.htm","urlToImage":null,"publishedAt":"2023-09-18T05:27:17Z","content":"Most \r\n recent updates: September 18, 2023 \r\n What This Website Is All About\r\nThis website has no \"official\" \r\n connection to the Pet Shop Boys. It merely presents my own personal commentary—often \r\n… [+4334 chars]"},{"source":{"id":null,"name":"Thedailywtf.com"},"author":"Remy Porter","title":"CodeSOD: This Equals Success","description":"There are common errors that are (or were) once so common that we've built tools to help us avoid them. So I was a little surprised to see this JavaScript from Annie's co-worker.\ntoggleField() {\n this.updateToggle(this.obj.id, this.toggle).subscribe(data=> {\n…","url":"https://thedailywtf.com/articles/this-equals-success","urlToImage":"https://thedailywtf.com/images/remy/Remy203-300x300.png","publishedAt":"2023-09-20T06:30:00Z","content":"There are common errors that are (or were) once so common that we've built tools to help us avoid them. So I was a little surprised to see this JavaScript from Annie's co-worker.\r\ntoggleField() {\r\n t… [+821 chars]"},{"source":{"id":null,"name":"Github.com"},"author":"jqlang","title":"jq 1.7 released","description":"After a five year hiatus we're back with a GitHub organization, with new admins and new maintainers who have brought a great deal of energy to make a long-awaited and long-needed new release. We'r...","url":"https://github.com/jqlang/jq/releases/tag/jq-1.7","urlToImage":"https://opengraph.githubassets.com/4e9dc3da694b4fd53e95f834d7a8c1c55556498a7a458fe1b39289050b207ef2/jqlang/jq/releases/tag/jq-1.7","publishedAt":"2023-09-06T23:16:05Z","content":"After a five year hiatus we're back with a GitHub organization, with new admins and new maintainers who have brought a great deal of energy to make a long-awaited and long-needed new release. We're v… [+5433 chars]"},{"source":{"id":null,"name":"Tauri.app"},"author":null,"title":"Roadmap to Tauri 2.0","description":"The cross-platform app building toolkit","url":"https://beta.tauri.app/blog/roadmap-to-tauri-2-0/","urlToImage":null,"publishedAt":"2023-09-07T20:25:50Z","content":"Tauri 1.0 was released in June 2022 and introduced an app toolkit for developers to build apps using HTML, CSS, and JavaScript with the security and performance of Rust. Tauri has been pivotal in red… [+5481 chars]"},{"source":{"id":null,"name":"Thedailywtf.com"},"author":"Remy Porter","title":"The Debugging Tool","description":"When Allan C's company, Initrode, got acquired by Initech a few years ago, it sounded like actually good news for the rank and file employees. Initech had a product in the same line of business as Allan's employer, and it was better in most ways, at least acc…","url":"https://thedailywtf.com/articles/the-debugging-tool","urlToImage":"https://thedailywtf.com/images/remy/Remy203-300x300.png","publishedAt":"2023-08-29T06:30:00Z","content":"When Allan C's company, Initrode, got acquired by Initech a few years ago, it sounded like actually good news for the rank and file employees. Initech had a product in the same line of business as Al… [+5736 chars]"},{"source":{"id":null,"name":"Publickey1.jp"},"author":"jniino","title":"JavaScriptランタイム「Bun 1.0」正式リリース。Windows版もまもなく登場へ","description":"JavaScriptランタイム「Bun 1.0」正式版がリリースされました。 BunはJavaScriptとTypeScriptのランタイム機能を備えるだけでなく、トランスパイラ、バンドラ、タスクランナーなど、JavaScript/Type...","url":"https://www.publickey1.jp/blog/23/javascriptbun_10windows.html","urlToImage":"https://www.publickey1.jp/2023/bun1001.png","publishedAt":"2023-09-10T15:28:58Z","content":"JavaScriptランタイム「Bun 1.0」正式版がリリースされました。 BunはJavaScriptとTypeScriptのランタイム機能を備えるだけでなく、トランスパイラ、バンドラ、タスクランナーなど、JavaScript/TypeScriptのツールチェーンを統合したソフトウェアです。 Bunの開発者であるJarred Sumner氏 Node.jsと入れ替えてそのまま利用できる互換性… [+42 chars]"},{"source":{"id":null,"name":"Stackexchange.com"},"author":null,"title":"How could the early Unix OS comprise so few lines of code?","description":"I start my journey to become a hardware / software specialist with an internship in two weeks time and decided to start studying the C language early.\nI came across this video, Learn C Programming ...","url":"https://retrocomputing.stackexchange.com/questions/26083/how-could-early-unix-os-comprise-so-few-lines-of-code","urlToImage":"https://cdn.sstatic.net/Sites/retrocomputing/Img/apple-touch-icon@2.png?v=6b27f39a6023","publishedAt":"2023-09-11T04:14:53Z","content":"Is it true, and if so how did they manage it?\r\nYes, it is true, as proven by the book linked in Brian's answer.\r\nAs to how they managed it: computers are, as a rule of thumb getting more complex over… [+1886 chars]"},{"source":{"id":null,"name":"Signoz.io"},"author":null,"title":"SigNoz – Open-source alternative to Datadog is hiring product designers (remote)","description":"Product Designer (Remote) (India)","url":"https://signoz.io/careers/product-designer-in/","urlToImage":"https://signoz.io/img/signoz_website_hero_image.webp","publishedAt":"2023-09-13T17:01:36Z","content":"SigNoz is a global open source project with users in 30+ countries. We are building an open-source application monitoring which helps developers monitor their applications and troubleshoot problems, … [+2356 chars]"},{"source":{"id":null,"name":"Github.io"},"author":null,"title":"Harbour – A Cross-Platform xBase","description":"Comments","url":"https://harbour.github.io/","urlToImage":null,"publishedAt":"2023-08-27T07:09:39Z","content":"Improve this pageOverview\r\nHarbour is the open/free software implementation of a cross-platform,\r\n multi-threading, object-oriented, scriptable programming language, backwards\r\n compatible with xBase… [+2685 chars]"},{"source":{"id":null,"name":"Microsiervos.com"},"author":"alvy@microsiervos.com (Alvy)","title":"La infinidad de pi calculada en tiempo real","description":"Infinity of Pi es una curiosa página que realiza un cálculo de pi (π) en tiempo real mediante un algoritmo descrito por Jeremy Gibbons. Lo más llamativo –y no lo había visto nunca antes– es que se ve cómo el PDF del resultado se va generando en tiempo real, u…","url":"https://www.microsiervos.com/archivo/matematicas/la-infinidad-de-pi-calculada-en-tiempo-real.html","urlToImage":"https://img.microsiervos.com/images2023/InfinityOfPi.jpg","publishedAt":"2023-08-31T22:23:49Z","content":""},{"source":{"id":null,"name":"Quicksprout.com"},"author":"Quick Sprout","title":"The Top 10 Principles That Boost Your Website Loading Time","description":"How fast does it take for your website to load? You may not think about this question very often, but …\n The Top 10 Principles That Boost Your Website Loading Time Read More »\nThe post The Top 10 Principles That Boost Your Website Loading Time appeared first …","url":"https://www.quicksprout.com/boost-website-loading-time/","urlToImage":"https://www.quicksprout.com/wp-content/uploads/2023/06/QS-Default-Featured-Image-3-267.webp","publishedAt":"2023-08-30T16:00:00Z","content":"How fast does it take for your website to load?\r\nYou may not think about this question very often, but its arguably the most important aspect of your site.\r\nThats because 47% of people\r\n expect pages… [+10227 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Maika Möbus","title":"Entwicklungsumgebung Fleet 1.22 erlaubt Finetuning von KI-Prompts","description":"Die JetBrains-IDE im Preview-Status bringt Terraform-Support, baut KI- und Git-Funktionen weiter aus und zeigt automatisch eine Vorschau für Quick-Fixes.","url":"https://www.heise.de/news/Entwicklungsumgebung-Fleet-1-22-erlaubt-Finetuning-von-KI-Prompts-9278938.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/8/9/9/7/4/shutterstock_1962386719-2015fbba99b983b5.jpg","publishedAt":"2023-08-22T12:05:00Z","content":"JetBrains hat seine verteilte Entwicklungsumgebung Fleet auf Version 1.22 aktualisiert. Weiterhin als kostenfreie öffentliche Preview verfügbar, bringt der Visual-Studio-Code-Herausforderer einige ne… [+3115 chars]"},{"source":{"id":null,"name":"heise online"},"author":"Dirk Knop","title":"Webbrowser: Update für Google Chrome dichtet hochriskante SIcherheitslücken ab","description":"Google stopft mit aktualisiertern Chrome-Versionen vier als hochriskant eingestufte Sicherheitslücken.","url":"https://www.heise.de/news/Webbrowser-Update-fuer-Google-Chrome-dichtet-hochriskante-SIcherheitsluecken-ab-9295977.html","urlToImage":"https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/4/2/9/7/8/3/5/Chrome_Update_2023-cf6b1ea372934f01.png","publishedAt":"2023-09-06T05:59:00Z","content":"Googles Entwickler haben dem Webbrowser Chrome das wöchentliche Update verpasst. Es enthält Fehlerkorrekturen für vier als hochriskant eingestufte Sicherheitslücken. Wer Chrome nutzt, sollte daher zü… [+3040 chars]"},{"source":{"id":null,"name":"Hipertextual"},"author":"Gabriel Erard","title":"Code Llama es oficial: así funciona la nueva IA de Meta que te ayuda a programar","description":"Era solo cuestión de días para que Meta lo hiciera oficial. Luego que se filtraran algunas de sus características, la firma de Mark Zuckerberg ha lanzado Code Llama, su nuevo modelo de inteligencia artificial capaz de escribir y corregir código. La nueva herr…","url":"http://hipertextual.com/2023/08/meta-lanza-oficialmente-code-llama","urlToImage":"https://i0.wp.com/imgs.hipertextual.com/wp-content/uploads/2023/08/arnold-francisca-f77Bh3inUpE-unsplash-scaled.jpg?fit=2560%2C1707&quality=50&strip=all&ssl=1","publishedAt":"2023-08-24T19:00:00Z","content":"Era solo cuestión de días para que Meta lo hiciera oficial. Luego que se filtraran algunas de sus características, la firma de Mark Zuckerberg ha lanzadoCode Llama, su nuevo modelo de inteligencia ar… [+4295 chars]"},{"source":{"id":null,"name":"Genbeta.com"},"author":"Antonio Vallejo","title":"Microsoft lleva Python a Excel. Ya puedes crear fórmulas, tablas, gráficos y más con este lenguaje de programación","description":"No hay duda de que Microsoft Excel es una herramienta extremadamente potente cuando le sabemos sacar todo el provecho. Sin embargo, la compañía acaba de potenciar aún más su herramienta de ofimática con la integración oficial de Python.\n\nLa id…","url":"https://www.genbeta.com/actualidad/microsoft-lleva-python-a-excel-puedes-crear-formulas-tablas-graficos-este-lenguaje-programacion","urlToImage":"https://i.blogs.es/2ae1cc/python/840_560.jpeg","publishedAt":"2023-08-23T10:57:30Z","content":"No hay duda de que Microsoft Excel es una herramienta extremadamente potente cuando le sabemos sacar todo el provecho. Sin embargo, la compañía acaba de potenciar aún más su herramienta de ofimática … [+2612 chars]"},{"source":{"id":null,"name":"Svelte.dev"},"author":null,"title":"Svelte 5: Runes","description":"Rethinking 'rethinking reactivity'","url":"https://svelte.dev/blog/runes","urlToImage":"https://svelte.dev/blog/runes/card.png","publishedAt":"2023-09-20T13:59:32Z","content":"Rethinking 'rethinking reactivity'\r\nThe Svelte teamSep 20 2023\r\nOn this page\r\nOn this page\r\nIn 2019, Svelte 3 turned JavaScript into a reactive language. Svelte is a web UI framework that uses a comp… [+8617 chars]"},{"source":{"id":null,"name":"Wwwhatsnew.com"},"author":"Juan Diego Polo","title":"Internet Archive alcanza un nuevo hito: 250,000 programas y juegos emulados en tu navegador","description":"El Internet Archive ha llegado a un nuevo peldaño en su escalera hacia la preservación digital. Ahora ofrece más de 250,000 programas y juegos emulados que pueden ejecutarse directamente desde tu navegador. Desde su inicio hace una década, el Internet Archive…","url":"https://wwwhatsnew.com/2023/09/21/internet-archive-alcanza-un-nuevo-hito-250000-programas-y-juegos-emulados-en-tu-navegador/","urlToImage":"https://wwwhatsnew.com/wp-content/uploads/2023/09/juegos-emuladores.jpg","publishedAt":"2023-09-21T13:00:28Z","content":"El Internet Archive ha llegado a un nuevo peldaño en su escalera hacia la preservación digital. Ahora ofrece más de 250,000 programas y juegos emulados que pueden ejecutarse directamente desde tu nav… [+1758 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"Ukeje Chukwuemeriwo Goodness (Goodnessuc)","title":"5 GitHub Copilot Alternatives You Can Try Today","description":"GitHub Copilot may be the most popular AI coding tool, but there are plenty more besides.","url":"https://www.makeuseof.com/github-copilot-alternatives/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/06/picture-ai-graphic-with-black-box.jpg","publishedAt":"2023-08-29T10:00:24Z","content":"Key Takeaways\r\n
    • Replit's Ghostwriter is an AI-powered code completion tool available on the Replit IDE. It suggests code based on your current code and project context, helping you code faste… [+5688 chars]"},{"source":{"id":null,"name":"Applesfera.com"},"author":"Fran Bouzas","title":"¿TikTok lee todo lo que escribes en tu iPhone? Esta es la realidad","description":"Prácticamente todos hemos utilizado TikTok en algún momento de nuestras vidas. Bien sea como red social habitual, para ver algún vídeo que nos envíe algún amigo, o los más atrevidos para subirlos. De vez en cuando surge alguna que otra polémica a su alrededor…","url":"https://www.applesfera.com/aplicaciones-ios-1/tiktok-lee-todo-que-escribes-tu-iphone-esta-realidad","urlToImage":"https://i.blogs.es/bc9f6f/solen-feyissa-xfnfmlnpwdo-unsplash/840_560.jpeg","publishedAt":"2023-09-08T18:03:42Z","content":"Prácticamente todos hemos utilizado TikTok en algún momento de nuestras vidas. Bien sea como red social habitual, para ver algún vídeo que nos envíe algún amigo, o los más atrevidos para subirlos. De… [+3336 chars]"},{"source":{"id":null,"name":"Lifehacker.ru"},"author":"Евгения Миткевич","title":"Как школьникам и студентам попасть в ИТ бесплатно","description":"Начало учебного года — отличное время, чтобы подумать о дополнительном образовании. Что предлагает рынок и куда подавать заявки — разбираемся вместе с национальным проектом «Цифровая экономика».","url":"https://lifehacker.ru/besplatnye-kursy-programmirovaniya/","urlToImage":"https://cdn.lifehacker.ru/wp-content/uploads/2023/05/Kak-nauchitsya-programmirovat-besplatno-ili-s-horoshej-skidkoj-ot-gosudarstva-1_1684330774-1024x512.jpg","publishedAt":"2023-08-22T08:00:33Z","content":"1. « » \r\n 811  , . : Python, Java, C++, C#, 1, Lua, SQL, JavaScript . . 36  .\r\n , , , . , . , , . , , , , .\r\n , . , . , : «», 1, «.», , , , . .\r\n «». , « » 2022  2030  . , , , , . «» 30  2023 . 140 0… [+435 chars]"},{"source":{"id":null,"name":"Srad.jp"},"author":"nagazou","title":"IEEE Spectrumのプログラミング言語ランキング、Pythonが2位以下との差を大きく広げる","description":"headless 曰く、IEEE Spectrum のプログラミング言語ランキングでは 2017 年以来 Python が 1 位を保っているが、2023年版では 2 位以下との差を大きく広げた\n(The Top Programming Languages 2023、\nDEVCLASS の記事)。\n\nIEEE Spectrum のランキングでは昨年まで 1 位のスコアを 100 点としていたのに対し、今年は 1 位のスコアが 1 点となったためそのままの数字では比較しにくいが、昨年 96.8/100 点で 2 位…","url":"https://developers.srad.jp/story/23/09/03/1224214/","urlToImage":"https://srad.jp/static/topics/python_64.png","publishedAt":"2023-09-04T09:02:00Z","content":"IEEE Spectrum 2017 Python 1 2023 2 \r\n(The Top Programming Languages 2023DEVCLASS )\r\nIEEE Spectrum 1 100 1 1 96.8/100 2 C 0.4641/1 4 Java 5 2 Java 70.22/100 0.588/1 2 4 7 JavaScript 40.48/100 0.4638/1… [+116 chars]"},{"source":{"id":null,"name":"Ascii.jp"},"author":"ASCII","title":"グレープシティ、帳票開発用JavaScriptライブラリーの新バージョン「V4.1J」をリリース","description":"グレープシティは9月20日、ウェブシステムに帳票機能を組み込む帳票開発用JavaScriptライブラリ「ActiveReportsJS(アクティブレポートJS)」の新バージョン「V4.1J」をリリースする。","url":"https://weekly.ascii.jp/elem/000/004/156/4156495/","urlToImage":"https://ascii.jp/img/2023/09/14/3603302/l/2e1a6d4a6e7ccfa7.png","publishedAt":"2023-09-14T04:45:00Z","content":"920JavaScriptActiveReportsJSJSV4.1J\r\nUIUI\r\nChart\r\nActiveReportsJS V4.1J9201165000116611111"},{"source":{"id":null,"name":"Thedailywtf.com"},"author":"Remy Porter","title":"Representative Line: Path To","description":"Sometimes, you see a code sample and you almost scroll by. \"This isn't bad, I see it all the time.\" So it took a second glance to see the awful charm of what Henrik H found.\nHenrik was asked to join a project to fix a high load website having \"some issues\". H…","url":"https://thedailywtf.com/articles/path-to","urlToImage":"https://thedailywtf.com/images/remy/Remy203-300x300.png","publishedAt":"2023-09-18T06:30:00Z","content":"Sometimes, you see a code sample and you almost scroll by. \"This isn't bad, I see it all the time.\" So it took a second glance to see the awful charm of what Henrik H found.\r\nHenrik was asked to join… [+1079 chars]"},{"source":{"id":null,"name":"Linuxtoday.com"},"author":"Web Webster","title":"GNOME 45 Breaks Extensions’ Compatibility","description":"Due to the move to standard JavaScript modules (ESM), GNOME 45 will not be compatible with extensions for older GNOME versions. Learn more about it here!\nThe post GNOME 45 Breaks Extensions’ Compatibility appeared first on Linux Today.","url":"https://www.linuxtoday.com/news/gnome-45-breaks-extensions-compatibility/","urlToImage":"https://www.linuxtoday.com/wp-content/uploads/2021/07/Linux_opengraph_square2-01.png","publishedAt":"2023-09-05T16:00:23Z","content":"Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear o… [+169 chars]"},{"source":{"id":null,"name":"Macarthur.me"},"author":"Alex MacArthur","title":"Your cache headers could probably be more aggressive","description":"It's common for modern hosts to cache static assets in a flexible, but not most optimal way. Let's explore why that is and what we can do to push cache performance (for some assets) even further.","url":"https://macarthur.me/posts/more-aggressive-cache-headers/","urlToImage":"https://images.unsplash.com/photo-1453932128466-7d60a03d9adb?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFnZ3Jlc3Npb258ZW58MHx8fHwxNjkyNjcxMjA3fDA&ixlib=rb-4.0.3&q=80&w=2000","publishedAt":"2023-09-20T08:01:44Z","content":"Back to All PostsIt's common for modern hosts to cache static assets in a flexible, but not most optimal way. Let's explore why that is and what we can do to push cache performance (for some assets) … [+7723 chars]"},{"source":{"id":null,"name":"Techdirt"},"author":"Gretchen Heckmann","title":"Daily Deal: Become A Full-Stack Developer","description":"Familiar with both front- and back-end development, full-stack developers know the programming process from top to bottom, making them tremendously valuable (and highly paid) pros in their field. Jump into this full-stack primer, and you’ll learn how to build…","url":"https://www.techdirt.com/2023/08/28/daily-deal-become-a-full-stack-developer/","urlToImage":"https://www.techdirt.com/wp-content/themes/techdirt/assets/images/td-rect-logo-white.png","publishedAt":"2023-08-28T17:42:03Z","content":"from the good-deals-on-cool-stuff dept\r\nFamiliar with both front- and back-end development, full-stack developers know the programming process from top to bottom, making them tremendously valuable (a… [+706 chars]"},{"source":{"id":null,"name":"Microsoft.com"},"author":"Raymond Chen","title":"On writing loops in continuation-passing style, part 4","description":"Equivalents in C# and JavaScript.\nThe post On writing loops in continuation-passing style, part 4 appeared first on The Old New Thing.","url":"https://devblogs.microsoft.com/oldnewthing/20230825-00/?p=108652","urlToImage":"https://devblogs.microsoft.com/oldnewthing/wp-content/uploads/sites/38/2019/02/ShowCover.jpg","publishedAt":"2023-08-25T14:00:00Z","content":"Raymond Chen\r\nAugust 25th, 20230\r\n0\r\nSo far, we’ve been look at writing loops in PPL and continuation-passing style, and a lot of the complications came from creating shared_ptrs to manage shared sta… [+2426 chars]"},{"source":{"id":null,"name":"Aaronbruce.com"},"author":"Aaron Bruce","title":"TDD Doesn't Force Good Design","description":"I think the simple claim that TDD improves design isn't strictly true, and turns some people away from automated testing.","url":"https://www.aaronbruce.com/posts/tests-dont-force-good-desgin/","urlToImage":"https://www.aaronbruce.com/og-image/tests-dont-force-good-desgin.png","publishedAt":"2023-09-05T06:03:29Z","content":"I love automated testing, and Im a very big proponent of TDD with unit tests, but I have a couple nits to pick with my fellow test automation proponents. The claim that automated testing and TDD forc… [+3080 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"MixRank (YC S11) Is Hiring Global Remote Software Engineers","description":"Comments","url":"https://news.ycombinator.com/item?id=37555031","urlToImage":null,"publishedAt":"2023-09-18T12:00:39Z","content":"Programming should be fun. At MixRank, we get to work with distributed systems, databases, data science, and big data. No meetings, no bureaucracy, no office, no time tracking just challenging techni… [+3226 chars]"},{"source":{"id":null,"name":"Lukeplant.me.uk"},"author":"Luke Plant","title":"No One Wants Simplicity","description":"We think we do, but in fact every web developer will happily sacrifice simplicity to the first shiny thing promising them relief from the mildest of ailments.","url":"https://lukeplant.me.uk/blog/posts/no-one-actually-wants-simplicity/","urlToImage":null,"publishedAt":"2023-08-22T22:30:42Z","content":"The reason that modern web development is swamped with complexity is that no one really wants things to be simple. We just think we do, while our choices prove otherwise.\r\nA lot of developers want si… [+2559 chars]"},{"source":{"id":null,"name":"Github.com"},"author":"samuelclay","title":"Friend/foe individual writers on Hacker News","description":"Friend/foe individual writers on Hacker News. Contribute to samuelclay/hackersmacker development by creating an account on GitHub.","url":"https://github.com/samuelclay/hackersmacker","urlToImage":"https://opengraph.githubassets.com/f0fe6506d8b6eecd442fe634cb21d3872fbc9b32a0994a32ec06c2b6cfcec84b/samuelclay/hackersmacker","publishedAt":"2023-08-28T01:33:24Z","content":"Friend/foe individual writers on Hacker News.\r\nSynopsis\r\nHacker Smacker helps you identify quality authors and filter out obnoxious commenters on Hacker News. Three little orbs appear next to every a… [+2844 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"Ask HN: Who is hiring? (September 2023)","description":"Comments","url":"https://news.ycombinator.com/item?id=37351667","urlToImage":null,"publishedAt":"2023-09-01T15:00:25Z","content":"MixRank (YC S11) | Software Engineers | 100% REMOTE (Global) | Full-TimeMixRank processes petabytes of data every month from web crawling. We have hundreds of customers using our data products includ… [+3166 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"Meticulous (YC S21) Is Hiring #3 Engineer to build future of software","description":"Comments","url":"https://news.ycombinator.com/item?id=37286598","urlToImage":null,"publishedAt":"2023-08-27T21:00:42Z","content":"Hey HN!I'm Gabriel, CEO and co-founder of Meticulous.\r\nOur mission is to radically accelerate the pace of software development for every company in the world. We're starting with a tool to catch UI b… [+3579 chars]"},{"source":{"id":"hacker-news","name":"Hacker News"},"author":null,"title":"Meticulous (YC S21) Is Hiring #3 engineer to build AI for testing","description":"Comments","url":"https://news.ycombinator.com/item?id=37463864","urlToImage":null,"publishedAt":"2023-09-11T07:01:04Z","content":"Hey HN!I'm Gabriel, CEO and co-founder of Meticulous.\r\nOur mission is to radically accelerate the pace of software development for every company in the world. We're starting with a tool to catch UI b… [+3580 chars]"},{"source":{"id":null,"name":"Js.org"},"author":null,"title":"PSA: Storybook sends telemetry data, opt-in by default","description":"Storybook is a frontend workshop for building UI components and pages in isolation. Thousands of teams use it for UI development, testing, and documentation. It’s open source and free.","url":"https://storybook.js.org/docs/7.4/react/configure/telemetry/","urlToImage":"https://storybook.js.org/images/social/open-graph.jpg","publishedAt":"2023-09-21T10:03:06Z","content":"Storybook collects completely anonymous data to help us improve user experience. Participation in this anonymous program is optional, and you may opt-out if you'd not like to share any information.\r\n… [+3791 chars]"},{"source":{"id":null,"name":"Microsoft.com"},"author":"Raymond Chen","title":"A freestanding JavaScript function that uses this is easily mistaken for a constructor","description":"Because that's what constructors look like.\nThe post A freestanding JavaScript function that uses this is easily mistaken for a constructor appeared first on The Old New Thing.","url":"https://devblogs.microsoft.com/oldnewthing/20230907-00/?p=108734","urlToImage":"https://devblogs.microsoft.com/oldnewthing/wp-content/uploads/sites/38/2019/02/ShowCover.jpg","publishedAt":"2023-09-07T14:00:00Z","content":"Raymond Chen\r\nSeptember 7th, 20230\r\n0\r\nAs a general rule in JavaScript, when you define a function with the function keyword (not with the arrow syntax), the this keyword is bound to the invoking obj… [+4987 chars]"},{"source":{"id":null,"name":"Impress.co.jp"},"author":null,"title":"インタプリタの作り方 -言語設計/開発の基本と2つの方式による実装- - インプレスブックス","description":"5,940円(本体 5,400円+税10%) 品種名書籍 発売日2023/9/26 ページ数768 サイズB5変形判 著者 Robert Nystrom 著/吉川邦夫 訳 ISBN 9784295017875 本書は、言語の開発に興味がある方、プログラミングの知識や技術をさらに磨きたい方、コンピュータの処理系を詳しく知りたい方に最適な書籍です。筆者の豊富なプログラ...","url":"https://book.impress.co.jp/books/1122101087.php","urlToImage":"https://img.ips.co.jp/ij/22/1122101087/1122101087-520x.jpg","publishedAt":"2023-08-26T12:15:12Z","content":"Robert Nystrom ()20108&PCGameCubePlaystation 2XboxXbox 360Nintendo DSGame Programming Patterns 2015\r\n()1957 ICU()Scott MeyersEffective()C# ()C++()JavaScript ! ()"},{"source":{"id":null,"name":"MakeUseOf"},"author":"Kingsley Ubah","title":"How to Manage State in Astro Applications","description":"Find out how you can use state management to power your Astro apps.","url":"https://www.makeuseof.com/astro-state-manage-applications-how-to/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/08/macbook-pro-in-the-woods-4-1.jpg","publishedAt":"2023-08-23T14:00:27Z","content":"When building an application with the Astro framework, you might be wondering how to manage the application state or share it between components and frameworks. Nano Stores is one of the best state m… [+6364 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"David Uzondu","title":"Getting Started With Sveltestrap","description":"Beautify your Svelte projects with the popular Bootstrap CSS library.","url":"https://www.makeuseof.com/sveltestrap-getting-started/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/07/embedding-coding.jpg","publishedAt":"2023-09-21T10:16:25Z","content":"Svelte is an excellent choice for building user interfaces and, while writing custom styles may suffice for small projects, a component library is often better for large-scale projects.\r\nSuch librari… [+7854 chars]"},{"source":{"id":null,"name":"MakeUseOf"},"author":"Tashreef Shareef","title":"How to Make Inspect Element Changes Permanent in Your Browser with Tampermonkey","description":"Made some changes to a website using the Inspect Element tool? Here's how you can use the Tampermonkey extension to make these changes permanent.","url":"https://www.makeuseof.com/make-inspect-element-changes-permanent-tampermonkey/","urlToImage":"https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/09/make-inspect-element-changes-permanent-browser-tampermonkey-1.jpg","publishedAt":"2023-09-21T12:30:24Z","content":"The Inspect Element feature on your web browser is a developer tool that lets you modify the front-end aspects of a website, including HTML, CSS, and JavaScript, and make temporary changes. You can a… [+8207 chars]"}]} \ No newline at end of file diff --git a/api/newsfeed/README.md b/api/newsfeed/README.md deleted file mode 100644 index 46409041..00000000 --- a/api/newsfeed/README.md +++ /dev/null @@ -1 +0,0 @@ -# TODO diff --git a/api/newsfeed/index.js b/api/newsfeed/index.js index 9832f3f3..1cc55434 100644 --- a/api/newsfeed/index.js +++ b/api/newsfeed/index.js @@ -5,8 +5,7 @@ const app = express(); app.use((req, res, next) => { const environment = process.env.NODE_ENV || "development"; - let origin = - environment === "development" ? "*" : "https://binarytree.dev"; + let origin = environment === "development" ? "*" : "https://binarytree.dev"; res.header("Access-Control-Allow-Origin", origin); next(); }); @@ -32,7 +31,7 @@ app.get("/rss", async (req, res) => { throw new Error("Failed to fetch the Medium RSS feed"); } - res.setHeader('Cache-Control', 's-max-age=86400, stale-while-revalidate'); + res.setHeader("Cache-Control", "s-max-age=86400, stale-while-revalidate"); res.set("Content-Type", "application/xml"); res.send(response.data); diff --git a/automation-scripts/News/.gitignore b/automation-scripts/News/.gitignore index 8410b55f..3165ac94 100644 --- a/automation-scripts/News/.gitignore +++ b/automation-scripts/News/.gitignore @@ -9,3 +9,6 @@ # Documentation here: https://yarnpkg.com/features/zero-installs !.yarn/cache #.pnp.* +.yarn + +node_modules \ No newline at end of file diff --git a/automation-scripts/README.md b/automation-scripts/README.md deleted file mode 100644 index d5c267fb..00000000 --- a/automation-scripts/README.md +++ /dev/null @@ -1 +0,0 @@ -# AS diff --git a/automation-scripts/npm-packages/.gitignore b/automation-scripts/npm-packages/.gitignore new file mode 100644 index 00000000..933031a8 --- /dev/null +++ b/automation-scripts/npm-packages/.gitignore @@ -0,0 +1,15 @@ +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Swap the comments on the following lines if you don't wish to use zero-installs +# Documentation here: https://yarnpkg.com/features/zero-installs +!.yarn/cache +#.pnp.* +.yarn + +node_modules + diff --git a/automation-scripts/npm-packages/.yarnrc.yml b/automation-scripts/npm-packages/.yarnrc.yml new file mode 100644 index 00000000..3186f3f0 --- /dev/null +++ b/automation-scripts/npm-packages/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/automation-scripts/npm-packages/README.md b/automation-scripts/npm-packages/README.md index 46409041..e397f2ad 100644 --- a/automation-scripts/npm-packages/README.md +++ b/automation-scripts/npm-packages/README.md @@ -1 +1,16 @@ -# TODO +```shell +yarn init -2 + +yarn add --dev typescript +yarn add --dev ts-node +yarn add --dev nodemon +yarn add fs + +mkdir src +cd src +touch index.ts +``` + +```shell +yarn start +``` diff --git a/automation-scripts/npm-packages/package.json b/automation-scripts/npm-packages/package.json new file mode 100644 index 00000000..9e08d53e --- /dev/null +++ b/automation-scripts/npm-packages/package.json @@ -0,0 +1,21 @@ +{ + "name": "npm-packages", + "packageManager": "yarn@3.6.3", + "scripts": { + "start": "ts-node src/index.ts", + "dev": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts", + "build": "tsc", + "watch": "tsc -w" + }, + "dependencies": { + "fs": "^0.0.1-security", + "semver": "^7.5.4" + }, + "devDependencies": { + "@types/node": "^20.6.3", + "@types/semver": "^7.5.2", + "nodemon": "^3.0.1", + "ts-node": "^10.9.1", + "typescript": "^5.2.2" + } +} diff --git a/automation-scripts/npm-packages/src/index.ts b/automation-scripts/npm-packages/src/index.ts new file mode 100644 index 00000000..ea2e24c2 --- /dev/null +++ b/automation-scripts/npm-packages/src/index.ts @@ -0,0 +1,98 @@ +import fs from "fs"; +import semver from "semver"; + +interface PackageType { + key: string; + url: string; + version: string; + new: boolean; +} + +interface ResponseType { + packages: PackageType[]; + lastDate: number; +} + +async function fetchData(url: string) { + try { + const response = await fetch(url); + const data = await response.json(); + + return data; + } catch (error) { + console.log("something went wrong"); + } +} + +function compareMajorVersion(latestVersion: string, previousVesrion: string) { + const latestMajor = semver.major(latestVersion); + const prevMajor = semver.major(previousVesrion); + + return latestMajor > prevMajor; +} + +async function fetchPackages(packageNames: string[]) { + try { + const packageList: PackageType[] = []; + let prevData = (await fetchData( + "https://raw.githubusercontent.com/lifeparticle/binarytree/main/api/packages.json" + )) as ResponseType; + + for (const packageName of packageNames) { + const packageUrl = `https://registry.npmjs.org/${packageName}/latest`; + const latestPackage = await fetchData(packageUrl); + + if (latestPackage) { + const prevPackage = prevData?.packages.find( + (info) => info.key === packageName + ); + + const isNew = + !prevPackage || + compareMajorVersion(latestPackage.version, prevPackage.version); + + const result = { + key: packageName, + url: `https://www.npmjs.com/package/${packageName}`, + version: latestPackage.version, + new: isNew, + }; + + packageList.push(result); + } + } + + return { + packages: packageList, + lastDate: Date.now(), + }; + } catch (error) { + console.log(error); + } +} + +async function saveDataToFile(data: any, filename: string): Promise { + return new Promise((resolve, reject) => { + fs.writeFile(filename, JSON.stringify(data), (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +async function main() { + const packages = ["react", "svelte", "remix", "gatsby", "next", "vue"]; + if (!packages) { + throw new Error("No package found"); + } + const articles = await fetchPackages(packages); + await saveDataToFile(articles, "packages.json"); + console.log("Data saved to packages.json"); +} + +main().catch((err) => { + console.error(err); +}); diff --git a/automation-scripts/npm-packages/tsconfig.json b/automation-scripts/npm-packages/tsconfig.json new file mode 100644 index 00000000..e923b303 --- /dev/null +++ b/automation-scripts/npm-packages/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "strict": true, + "esModuleInterop": true + }, + "types": ["node"] +} diff --git a/automation-scripts/npm-packages/yarn.lock b/automation-scripts/npm-packages/yarn.lock new file mode 100644 index 00000000..0733a1ee --- /dev/null +++ b/automation-scripts/npm-packages/yarn.lock @@ -0,0 +1,1518 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + cacheKey: 8 + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": 0.3.9 + checksum: 5718f267085ed8edb3e7ef210137241775e607ee18b77d95aa5bd7514f47f5019aa2d82d96b3bf342ef7aa890a346fa1044532ff7cc3009e7d24fce3ce6200fa + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": ^3.0.3 + "@jridgewell/sourcemap-codec": ^1.4.10 + checksum: d89597752fd88d3f3480845691a05a44bd21faac18e2185b6f436c3b0fd0c5a859fbbd9aaa92050c4052caf325ad3e10e2e1d1b64327517471b7d51babc0ddef + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" + dependencies: + semver: ^7.3.5 + checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff + languageName: node + linkType: hard + +"@types/node@npm:^20.6.3": + version: 20.6.3 + resolution: "@types/node@npm:20.6.3" + checksum: 444a6f1f41cfa8d3e20ce0108e6e43960fb2ae0e481f233bb1c14d6252aa63a92e021de561cd317d9fdb411688f871065f40175a1f18763282dee2613a08f8a3 + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.2": + version: 7.5.2 + resolution: "@types/semver@npm:7.5.2" + checksum: 743aa8a2b58e20b329c19bd2459152cb049d12fafab7279b90ac11e0f268c97efbcb606ea0c681cca03f79015381b40d9b1244349b354270bec3f939ed49f6e9 + languageName: node + linkType: hard + +"abbrev@npm:1, abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.1.1": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + languageName: node + linkType: hard + +"acorn@npm:^8.4.1": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" + bin: + acorn: bin/acorn + checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + languageName: node + linkType: hard + +"cacache@npm:^17.0.0": + version: 17.1.4 + resolution: "cacache@npm:17.1.4" + dependencies: + "@npmcli/fs": ^3.1.0 + fs-minipass: ^3.0.0 + glob: ^10.2.2 + lru-cache: ^7.7.1 + minipass: ^7.0.3 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + p-map: ^4.0.0 + ssri: ^10.0.0 + tar: ^6.1.11 + unique-filename: ^3.0.0 + checksum: b7751df756656954a51201335addced8f63fc53266fa56392c9f5ae83c8d27debffb4458ac2d168a744a4517ec3f2163af05c20097f93d17bdc2dc8a385e14a6 + languageName: node + linkType: hard + +"chokidar@npm:^3.5.2": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.3.3": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: ^7.0.3 + checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fs@npm:^0.0.1-security": + version: 0.0.1-security + resolution: "fs@npm:0.0.1-security" + checksum: 53c6230e1faae9fa32c1df82c16a84b51b1243d20f3da2b64bd110bb472b73b9185169b703e008356e3cdc92d155088b617d9d39a63b5227a30b3621baad7f5d + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: latest + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@~2.3.2#~builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + +"glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob@npm:^10.2.2": + version: 10.3.6 + resolution: "glob@npm:10.3.6" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.0.3 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 + bin: + glob: dist/cjs/src/bin.js + checksum: ebc5eb3d5c13bee1070f0833e649d83320a5a9ebfcdd570bfb63b9af5906b76002fcd792091fa3f327e9acc62deeb9566cd678170a44f0f2eb0b4d41074158ab + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.1.1 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"ignore-by-default@npm:^1.0.1": + version: 1.0.1 + resolution: "ignore-by-default@npm:1.0.1" + checksum: 441509147b3615e0365e407a3c18e189f78c07af08564176c680be1fabc94b6c789cad1342ad887175d4ecd5225de86f73d376cec8e06b42fd9b429505ffcf8a + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"jackspeak@npm:^2.0.3": + version: 2.3.3 + resolution: "jackspeak@npm:2.3.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 4313a7c0cc44c7753c4cb9869935f0b06f4cf96827515f63f58ff46b3d2f6e29aba6b3b5151778397c3f5ae67ef8bfc48871967bd10343c27e90cff198ec7808 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 + languageName: node + linkType: hard + +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + languageName: node + linkType: hard + +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^11.0.3": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^17.0.0 + http-cache-semantics: ^4.1.1 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^5.0.0 + minipass-fetch: ^3.0.0 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 + ssri: ^10.0.0 + checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 + languageName: node + linkType: hard + +"minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" + dependencies: + encoding: ^0.1.13 + minipass: ^7.0.3 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: ^4.0.0 + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": + version: 7.0.3 + resolution: "minipass@npm:7.0.3" + checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 9.4.0 + resolution: "node-gyp@npm:9.4.0" + dependencies: + env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^11.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 + languageName: node + linkType: hard + +"nodemon@npm:^3.0.1": + version: 3.0.1 + resolution: "nodemon@npm:3.0.1" + dependencies: + chokidar: ^3.5.2 + debug: ^3.2.7 + ignore-by-default: ^1.0.1 + minimatch: ^3.1.2 + pstree.remy: ^1.1.8 + semver: ^7.5.3 + simple-update-notifier: ^2.0.0 + supports-color: ^5.5.0 + touch: ^3.1.0 + undefsafe: ^2.0.5 + bin: + nodemon: bin/nodemon.js + checksum: 6a5d81855760d6617049eccce10ccf02bddb482dab13ceea5280ae595ec7004eee13e7b934368e3f46c37fe4d970342a8c38c99cae7e93e4d7a3ed1c1ecb6acf + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: ^1.0.0 + bin: + nopt: bin/nopt.js + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + languageName: node + linkType: hard + +"nopt@npm:~1.0.10": + version: 1.0.10 + resolution: "nopt@npm:1.0.10" + dependencies: + abbrev: 1 + bin: + nopt: ./bin/nopt.js + checksum: f62575aceaa3be43f365bf37a596b89bbac2e796b001b6d2e2a85c2140a4e378ff919e2753ccba959c4fd344776fc88c29b393bc167fa939fb1513f126f4cd45 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"npm-packages@workspace:.": + version: 0.0.0-use.local + resolution: "npm-packages@workspace:." + dependencies: + "@types/node": ^20.6.3 + "@types/semver": ^7.5.2 + fs: ^0.0.1-security + nodemon: ^3.0.1 + semver: ^7.5.4 + ts-node: ^10.9.1 + typescript: ^5.2.2 + languageName: unknown + linkType: soft + +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + languageName: node + linkType: hard + +"pstree.remy@npm:^1.1.8": + version: 1.1.8 + resolution: "pstree.remy@npm:1.1.8" + checksum: 5cb53698d6bb34dfb278c8a26957964aecfff3e161af5fbf7cee00bbe9d8547c7aced4bd9cb193bce15fb56e9e4220fc02a5bf9c14345ffb13a36b858701ec2d + languageName: node + linkType: hard + +"readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 + languageName: node + linkType: hard + +"simple-update-notifier@npm:^2.0.0": + version: 2.0.0 + resolution: "simple-update-notifier@npm:2.0.0" + dependencies: + semver: ^7.5.3 + checksum: 9ba00d38ce6a29682f64a46213834e4eb01634c2f52c813a9a7b8873ca49cdbb703696f3290f3b27dc067de6d9418b0b84bef22c3eb074acf352529b2d6c27fd + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: ^2.0.0 + smart-buffer: ^4.2.0 + checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: ^7.0.3 + checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: ^6.0.1 + checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d + languageName: node + linkType: hard + +"supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.0 + resolution: "tar@npm:6.2.0" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^5.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"touch@npm:^3.1.0": + version: 3.1.0 + resolution: "touch@npm:3.1.0" + dependencies: + nopt: ~1.0.10 + bin: + nodetouch: ./bin/nodetouch.js + checksum: e0be589cb5b0e6dbfce6e7e077d4a0d5f0aba558ef769c6d9c33f635e00d73d5be49da6f8631db302ee073919d82b5b7f56da2987feb28765c95a7673af68647 + languageName: node + linkType: hard + +"ts-node@npm:^10.9.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" + dependencies: + "@cspotcode/source-map-support": ^0.8.0 + "@tsconfig/node10": ^1.0.7 + "@tsconfig/node12": ^1.0.7 + "@tsconfig/node14": ^1.0.0 + "@tsconfig/node16": ^1.0.2 + acorn: ^8.4.1 + acorn-walk: ^8.1.1 + arg: ^4.1.0 + create-require: ^1.1.0 + diff: ^4.0.1 + make-error: ^1.1.1 + v8-compile-cache-lib: ^3.0.1 + yn: 3.1.1 + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 090adff1302ab20bd3486e6b4799e90f97726ed39e02b39e566f8ab674fd5bd5f727f43615debbfc580d33c6d9d1c6b1b3ce7d8e3cca3e20530a145ffa232c35 + languageName: node + linkType: hard + +"typescript@npm:^5.2.2": + version: 5.2.2 + resolution: "typescript@npm:5.2.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 7912821dac4d962d315c36800fe387cdc0a6298dba7ec171b350b4a6e988b51d7b8f051317786db1094bd7431d526b648aba7da8236607febb26cf5b871d2d3c + languageName: node + linkType: hard + +"typescript@patch:typescript@^5.2.2#~builtin": + version: 5.2.2 + resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin::version=5.2.2&hash=f3b441" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 0f4da2f15e6f1245e49db15801dbee52f2bbfb267e1c39225afdab5afee1a72839cd86000e65ee9d7e4dfaff12239d28beaf5ee431357fcced15fb08583d72ca + languageName: node + linkType: hard + +"undefsafe@npm:^2.0.5": + version: 2.0.5 + resolution: "undefsafe@npm:2.0.5" + checksum: f42ab3b5770fedd4ada175fc1b2eb775b78f609156f7c389106aafd231bfc210813ee49f54483d7191d7b76e483bc7f537b5d92d19ded27156baf57592eb02cc + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: ^4.0.0 + checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: ^0.1.4 + checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 78089ad549e21bcdbfca10c08850022b22024cdcc2da9b168bcf5a73a6ed7bf01a9cebb9eac28e03cd23a684d81e0502797e88f3ccd27a32aeab1cfc44c39da0 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + languageName: node + linkType: hard diff --git a/ui/src/components/Layouts/Menu/utils/constants.ts b/ui/src/components/Layouts/Menu/utils/constants.ts index 3504d34e..00d6a300 100644 --- a/ui/src/components/Layouts/Menu/utils/constants.ts +++ b/ui/src/components/Layouts/Menu/utils/constants.ts @@ -193,6 +193,12 @@ export const MENU_ITEMS = [ icon: "ArrowLeftRight", show: true, }, + { + name: routesById.npmpackages.title, + url: routesById.npmpackages.path, + icon: "PackageCheck", + show: true, + }, ], }, { diff --git a/ui/src/pages/Information/Npmpackages/Npmpackages.module.scss b/ui/src/pages/Information/Npmpackages/Npmpackages.module.scss new file mode 100644 index 00000000..6a19b037 --- /dev/null +++ b/ui/src/pages/Information/Npmpackages/Npmpackages.module.scss @@ -0,0 +1,13 @@ +.npm { + max-width: var(--bt-converter-width); + margin: 0 auto; + + &__card { + position: relative; + &_tag { + position: absolute; + top: 0; + right: -7.5px; + } + } +} diff --git a/ui/src/pages/Information/Npmpackages/components/PackageList.tsx b/ui/src/pages/Information/Npmpackages/components/PackageList.tsx new file mode 100644 index 00000000..d192b6f5 --- /dev/null +++ b/ui/src/pages/Information/Npmpackages/components/PackageList.tsx @@ -0,0 +1,40 @@ +import { Card, Col, Row, Skeleton, Space, Tag, Typography } from "antd"; +import React from "react"; +import { PackageListProps } from "../utils/types"; +import style from "pages/Information/Npmpackages/Npmpackages.module.scss"; + +const { Title } = Typography; + +const PackageList: React.FC = ({ packages, isLoading }) => { + const onClick = (url: string) => { + window.open(url, "_blank", "noopener"); + }; + return ( + + {packages.map((info) => ( + + onClick(info.url)} + className={style.npm__card} + > + + + + {info.key}@{info.version} + + + + {info.new && "NEW"} + + + + + ))} + + ); +}; + +export default PackageList; diff --git a/ui/src/pages/Information/Npmpackages/index.tsx b/ui/src/pages/Information/Npmpackages/index.tsx new file mode 100644 index 00000000..f2401825 --- /dev/null +++ b/ui/src/pages/Information/Npmpackages/index.tsx @@ -0,0 +1,26 @@ +import Text from "components/General/Text/Text"; +import { API_ERROR, API_NO_DATA } from "lib/utils/constants"; +import useFetchList from "lib/utils/hooks/useFetchList"; +import PackageList from "./components/PackageList"; +import { PACKAGE_QUERY_KEY, PACKAGE_QUERY_URL } from "./utils/types"; + +const Npmpackages = () => { + const { data, isLoading, isError } = useFetchList( + PACKAGE_QUERY_KEY, + PACKAGE_QUERY_URL + ); + + if (isError) { + return ; + } + + if (!isError && !isLoading && data.packages?.length === 0) { + return ; + } + + return ( + + ); +}; + +export default Npmpackages; diff --git a/ui/src/pages/Information/Npmpackages/utils/types.ts b/ui/src/pages/Information/Npmpackages/utils/types.ts new file mode 100644 index 00000000..181780e4 --- /dev/null +++ b/ui/src/pages/Information/Npmpackages/utils/types.ts @@ -0,0 +1,11 @@ +interface PackageListProps { + packages: { key: string; url: string; version: string; new: boolean }[]; + isLoading: boolean; +} + +const PACKAGE_QUERY_KEY = "npm-packages"; +const PACKAGE_QUERY_URL = + "https://raw.githubusercontent.com/lifeparticle/binarytree/main/api/packages.json"; + +export { PACKAGE_QUERY_KEY, PACKAGE_QUERY_URL }; +export type { PackageListProps }; diff --git a/ui/src/pages/Routes/utils/constant.tsx b/ui/src/pages/Routes/utils/constant.tsx index 3e13099f..e73fb3d3 100644 --- a/ui/src/pages/Routes/utils/constant.tsx +++ b/ui/src/pages/Routes/utils/constant.tsx @@ -38,6 +38,7 @@ import { TvSeries, UiUx, YouTube, + Npmpackages, } from "pages/pages"; export const routes: Route[] = [ @@ -266,6 +267,13 @@ export const routes: Route[] = [ description: "Find out what type your file fancies itself as.", component: Mimetype, }, + { + id: "npmpackages", + path: "/information/npm-packages", + title: "Npm Packages", + description: "Find out the latest npm packages", + component: Npmpackages, + }, { id: "diagramming", path: "/tools/diagramming", diff --git a/ui/src/pages/Routes/utils/types.ts b/ui/src/pages/Routes/utils/types.ts index aa9227c2..93025b4c 100644 --- a/ui/src/pages/Routes/utils/types.ts +++ b/ui/src/pages/Routes/utils/types.ts @@ -31,6 +31,7 @@ type RouteId = | "tableofcontent" | "texteditor" | "mimetype" + | "npmpackages" | "diffchecker" | "diagramming" | "/" diff --git a/ui/src/pages/Tools/Diffchecker/index.tsx b/ui/src/pages/Tools/Diffchecker/index.tsx index 4157b36a..d06afffc 100644 --- a/ui/src/pages/Tools/Diffchecker/index.tsx +++ b/ui/src/pages/Tools/Diffchecker/index.tsx @@ -1,20 +1,21 @@ import { Card, Form, Input } from "antd"; import PageGrid from "components/Layouts/PageGrid"; import React, { useState } from "react"; -import { diffChars, Change } from "diff"; +import { diffLines, Change } from "diff"; import { ResponsiveButton } from "components/General/FormComponents"; import style from "./Diffchecker.module.scss"; +import CodeHighlightWithCopy from "components/General/CodeHighlightWithCopy"; const { TextArea } = Input; const Diffchecker: React.FC = () => { const [text1, setText1] = useState(""); const [text2, setText2] = useState(""); - const [differences, setDifferences] = useState([]); + const [lineDifferences, setLineDifferences] = useState([]); const calculateDiff = () => { - const diff = diffChars(text1, text2); - setDifferences(diff); + const lineDiff = diffLines(text1, text2); + setLineDifferences(lineDiff); }; return ( @@ -53,27 +54,53 @@ const Diffchecker: React.FC = () => { - {differences.length > 0 && ( - -

      Differences:

      -
      - {differences?.map((part, index) => ( - - {part.value} - - ))} -
      -
      - )} + + {lineDifferences.length > 0 && ( + +
      +
      +								{lineDifferences
      +									.filter((part) => !part.added)
      +									.map((part, index) => (
      +										
      +											{part.value}
      +										
      +									))}
      +							
      +
      +
      + )} + + {lineDifferences.length > 0 && ( + +
      +
      +								{lineDifferences
      +									.filter((part) => !part.removed)
      +									.map((part, index) => (
      +										
      +											{part.value}
      +										
      +									))}
      +							
      +
      +
      + )} +
      ); }; diff --git a/ui/src/pages/pages.ts b/ui/src/pages/pages.ts index 29fc60ab..b386e076 100644 --- a/ui/src/pages/pages.ts +++ b/ui/src/pages/pages.ts @@ -49,6 +49,7 @@ const SvgFormatter = lazy(() => import("pages/Tools/SvgFormatter")); const TextEditor = lazy(() => import("pages/Text/TextEditor")); const Mimetype = lazy(() => import("pages/Information/Mimetype")); +const Npmpackages = lazy(() => import("pages/Information/Npmpackages")); export { About, @@ -72,6 +73,7 @@ export { JsonToTypescript, MarkdownEditor, Mimetype, + Npmpackages, Movie, News, PageNotFound, From c5341f48a2c2478970a2eb656fe22f68307479cc Mon Sep 17 00:00:00 2001 From: ashik-75 Date: Sun, 24 Sep 2023 15:32:34 +0600 Subject: [PATCH 2/4] update values --- .../Npmpackages/components/Package.tsx | 34 ++++++++++++ .../Npmpackages/components/PackageList.tsx | 52 ++++--------------- .../components/PackageSkeleton.tsx | 20 +++++++ .../Information/Npmpackages/utils/types.ts | 15 +++++- ui/src/pages/Tools/Diffchecker/index.tsx | 1 - 5 files changed, 77 insertions(+), 45 deletions(-) create mode 100644 ui/src/pages/Information/Npmpackages/components/Package.tsx create mode 100644 ui/src/pages/Information/Npmpackages/components/PackageSkeleton.tsx diff --git a/ui/src/pages/Information/Npmpackages/components/Package.tsx b/ui/src/pages/Information/Npmpackages/components/Package.tsx new file mode 100644 index 00000000..925d087a --- /dev/null +++ b/ui/src/pages/Information/Npmpackages/components/Package.tsx @@ -0,0 +1,34 @@ +import { Card, Col, Skeleton, Space, Tag, Typography } from "antd"; +import React from "react"; +import { PackageProps } from "pages/Information/Npmpackages/utils/types"; +const { Title } = Typography; +import style from "pages/Information/Npmpackages/Npmpackages.module.scss"; + +const Package: React.FC = (props) => { + const onClick = (url: string) => { + window.open(url, "_blank", "noopener"); + }; + + const { version, new: status, url, key } = props.resource; + + return ( + + onClick(url)}> + + + + {key}@{version} + + + {status && ( + + NEW + + )} + + + + ); +}; + +export default Package; diff --git a/ui/src/pages/Information/Npmpackages/components/PackageList.tsx b/ui/src/pages/Information/Npmpackages/components/PackageList.tsx index d174e545..70feffba 100644 --- a/ui/src/pages/Information/Npmpackages/components/PackageList.tsx +++ b/ui/src/pages/Information/Npmpackages/components/PackageList.tsx @@ -1,53 +1,21 @@ import React from "react"; -import { Card, Col, Row, Skeleton, Space, Tag, Typography } from "antd"; +import { Row } from "antd"; import { PackageListProps } from "pages/Information/Npmpackages/utils/types"; import style from "pages/Information/Npmpackages/Npmpackages.module.scss"; - -const { Title } = Typography; +import Package from "./Package"; +import PackageSkeleton from "./PackageSkeleton"; const PackageList: React.FC = ({ packages, isLoading }) => { - const onClick = (url: string) => { - window.open(url, "_blank", "noopener"); - }; + const LoadingComponent = [...Array(4).keys()].map((x) => ( + + )); + const ListComponent = packages?.map((info) => ( + + )); return ( - {isLoading - ? Array.from({ length: 4 }, (_, index) => ( - - - - - Loading... - - - - - )) - : packages.map((info) => ( - - onClick(info.url)} - className={style.npm__card} - > - - - - {info.key}@{info.version} - - - {info.new && ( - - NEW - - )} - - - - ))} + {isLoading ? LoadingComponent : ListComponent} ); }; diff --git a/ui/src/pages/Information/Npmpackages/components/PackageSkeleton.tsx b/ui/src/pages/Information/Npmpackages/components/PackageSkeleton.tsx new file mode 100644 index 00000000..2bf80209 --- /dev/null +++ b/ui/src/pages/Information/Npmpackages/components/PackageSkeleton.tsx @@ -0,0 +1,20 @@ +import { Card, Col, Skeleton, Space, Typography } from "antd"; +import React from "react"; + +const { Title } = Typography; + +const PackageSkeleton: React.FC = () => { + return ( + + + + + Loading... + + + + + ); +}; + +export default PackageSkeleton; diff --git a/ui/src/pages/Information/Npmpackages/utils/types.ts b/ui/src/pages/Information/Npmpackages/utils/types.ts index 181780e4..3cee39e9 100644 --- a/ui/src/pages/Information/Npmpackages/utils/types.ts +++ b/ui/src/pages/Information/Npmpackages/utils/types.ts @@ -1,5 +1,16 @@ +interface Package { + key: string; + url: string; + version: string; + new: boolean; +} + +interface PackageProps { + resource: Package; +} + interface PackageListProps { - packages: { key: string; url: string; version: string; new: boolean }[]; + packages: Package[]; isLoading: boolean; } @@ -8,4 +19,4 @@ const PACKAGE_QUERY_URL = "https://raw.githubusercontent.com/lifeparticle/binarytree/main/api/packages.json"; export { PACKAGE_QUERY_KEY, PACKAGE_QUERY_URL }; -export type { PackageListProps }; +export type { PackageListProps, PackageProps }; diff --git a/ui/src/pages/Tools/Diffchecker/index.tsx b/ui/src/pages/Tools/Diffchecker/index.tsx index d06afffc..5c3ce4a1 100644 --- a/ui/src/pages/Tools/Diffchecker/index.tsx +++ b/ui/src/pages/Tools/Diffchecker/index.tsx @@ -4,7 +4,6 @@ import React, { useState } from "react"; import { diffLines, Change } from "diff"; import { ResponsiveButton } from "components/General/FormComponents"; import style from "./Diffchecker.module.scss"; -import CodeHighlightWithCopy from "components/General/CodeHighlightWithCopy"; const { TextArea } = Input; From b3b7886427e496f28b4341755bcba61a0e5bd57b Mon Sep 17 00:00:00 2001 From: ashik-75 Date: Sun, 24 Sep 2023 15:39:02 +0600 Subject: [PATCH 3/4] remove empty array --- ui/src/pages/Information/Npmpackages/index.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ui/src/pages/Information/Npmpackages/index.tsx b/ui/src/pages/Information/Npmpackages/index.tsx index f2401825..864ed2a7 100644 --- a/ui/src/pages/Information/Npmpackages/index.tsx +++ b/ui/src/pages/Information/Npmpackages/index.tsx @@ -18,9 +18,7 @@ const Npmpackages = () => { return ; } - return ( - - ); + return ; }; export default Npmpackages; From a9749f948b57c46d4144257942a89d2a8924b80b Mon Sep 17 00:00:00 2001 From: ashik-75 Date: Sun, 24 Sep 2023 17:08:25 +0600 Subject: [PATCH 4/4] add footer --- .../Layouts/Footer/Footer.module.scss | 41 ++--- ui/src/components/Layouts/Footer/index.tsx | 165 +++++++++++++----- ui/src/styles/sizes.css | 1 + 3 files changed, 133 insertions(+), 74 deletions(-) diff --git a/ui/src/components/Layouts/Footer/Footer.module.scss b/ui/src/components/Layouts/Footer/Footer.module.scss index 26b29285..9b28c5cf 100644 --- a/ui/src/components/Layouts/Footer/Footer.module.scss +++ b/ui/src/components/Layouts/Footer/Footer.module.scss @@ -1,36 +1,21 @@ .footer { - margin-top: var(--bt-size-20); - margin-left: calc(var(--bt-size-10) * -1); - margin-right: calc(var(--bt-size-10) * -1); - padding: var(--bt-size-10); - display: flex; - justify-content: space-between; - align-items: center; + padding: var(--bt-size-50); &__left { - display: flex; - align-items: center; - gap: var(--bt-size-20); - &_list { - list-style-type: none; - display: flex; - gap: var(--bt-size-10); - padding: 0px; - } + border-right: 1px solid #e8e8e8; + height: "100%"; } - @media (max-width: 767px) { - gap: var(--bt-size-10); - flex-direction: column; - align-items: center; - justify-items: center; - - &__left { - display: flex; - flex-direction: column; - justify-items: center; - align-items: center; - gap: var(--bt-size-10); + &__list { + list-style-type: none; + li { + margin: var(--bt-size-10) 0px; + a { + text-decoration: none; + font-size: var(--bt-size-18); + } } + + padding: 0px; } } diff --git a/ui/src/components/Layouts/Footer/index.tsx b/ui/src/components/Layouts/Footer/index.tsx index 1940c071..c4a141e6 100644 --- a/ui/src/components/Layouts/Footer/index.tsx +++ b/ui/src/components/Layouts/Footer/index.tsx @@ -1,10 +1,15 @@ -import React from "react"; +import React, { useContext } from "react"; import style from "./Footer.module.scss"; import Icon from "components/General/Icon"; -import { Typography, theme } from "antd"; +import { Col, Row, Space, Typography, theme } from "antd"; import { ResponsiveButton } from "components/General/FormComponents"; +import { Link } from "react-router-dom"; +import logo_light from "assets/logo_light.svg"; +import logo_dark from "assets/logo_dark.svg"; +import { DarkModeContext } from "lib/utils/context/DarkModeProvider"; const Footer: React.FC = () => { + const { isDarkMode } = useContext(DarkModeContext); const { token: { colorBgContainer }, } = theme.useToken(); @@ -14,52 +19,120 @@ const Footer: React.FC = () => { className={style.footer} style={{ backgroundColor: colorBgContainer }} > -
      -
      - - © {new Date().getFullYear()} Binarytree - -
      - -
      + + © {new Date().getFullYear()} Binarytree + + + - } - onClick={() => - window.open( - "https://github.com/lifeparticle/binarytree", - "_blank", - "noopener" - ) - } - /> + + + + + Product + + + + + + + Developers + + + + + + + Company + + + + + + Legal + + + + + ); }; diff --git a/ui/src/styles/sizes.css b/ui/src/styles/sizes.css index 7490111e..1cf6da20 100644 --- a/ui/src/styles/sizes.css +++ b/ui/src/styles/sizes.css @@ -18,6 +18,7 @@ --bt-size-11: 11px; --bt-size-15: 15px; --bt-size-16: 16px; + --bt-size-18: 18px; --bt-size-20: 20px; --bt-size-24: 24px; --bt-size-30: 30px;