Generate prime numbers from pictures!

Overview

Pictoprime

This is a program used to generate prime numbers from pictures.

Dependencies

Ensure you have the following dependencies:

GraphicsMagick Common Installations:

# OS X
brew install graphicsmagick

# Windows users can install the binaries from http://www.graphicsmagick.org/ or using the command line:
choco install graphicsmagick

To Install

You can install this program just by running:

npm i -g pictoprime 

To Run

$ pictoprime --help
Usage: pictoprime [options]

A program to find picture-esque primes. Requires openssl.

Options:
  -V, --version          output the version number
  -n, --number <number>  The number to be transformed into a prime.
  -i, --image <image>    Use an image to find primes.
  -q, --quiet            Hides some of the debug information to make it easier to get output from this program.
  -x, --export <mode>    The output format (choices: "json", "prime", "ascii", default: "json")
  --pixels <pixels>      The numbers to use to generate the prime (image mode). Left side is lighter, right side is darker. (default: "7772299408")
  --width <width>        The width of the ascii to generate (image mode). (default: "32")
  --contrast <contrast>  Additional contrast to apply between -1.0 and 1.0 (image mode). (default: "0.1")
  -s, --sophie           Enable the search for an (almost) Sophie Germain prime (useful for Discrete Log cryptography).
  -h, --help             display help for command

Example

pictoprime -i examples/headshot.png
{
  prime: '888888888888888888880499222229999999400888888888888888888888888888888888888888888049222222222222299999994888888888888888888888888888888888888884922227777722222222222992294088888888888888888888888888888888809277777777777772222222222222290088888888888888888888888888888092777777777777777777777722222222940888888888888888888888888888427777777777777777777777777222222299088888888888888888888888888827777777777777777777777777222222222948888888888888888888888888847777777777777777777777777222222222999888888888888888888888888882777777777777777777777777722222222299908888888888888888888888880777777777777777777777777777722222299994888888888888888888888888027777777777777777777777772222222222299488088888888888888888888884777777777777777777777222222999922229944994888888888888888888888897777222277777777777772222222299222999229908888888888888888888880277227777777777777222929999922222229922994888888888888888888842927777722292227777229227299292222222999992488888888888888888880277777722794922777722222222222227722299999208888888888888888888827777777772227777772222222227777722229999220888888889888888888889777777777777777777222222777777722222999222088888888888888888888477777777777777717722222177777772222229400088888888888888888888807717777777777777772222227777777222222208888888888888888888888888922777777777777777222229277777222222224888888888888888888888888888097777777777727729992222777722222222488888888888888888888888888880777777777777772222222222271292722298888888888888888888888888888827777777777777777222999227722222224888888888888888888888888888889777777727777772222222222772222229888888888888888888888888888888027777777777772222222222222222299088888888888888888888888888888880977777777777777772222222292999248888888888888888888888888888888884277777777777777722229999999224888888888888888888888888888888888802777777777777722229999992222948888888888888888888888888888888888277227772222222299999922222222488888888888888888888888888888888827777772222222222222222222222298888888888888888888888888888888802777177777777772222222777222229888888888888888888888888888888884777777777777777722227777777777988888888888889',
  attempts: 382,
  simultaneous: 10,
  distinctTested: 3830
}

A picture of matt parker's face

A picture of matt parker's face but as a prime number.

To Develop

Clone the repository and run:

yarn

then

node index.js 

Special Thanks To

  • Numberphile, JF Mckee for their video on the Trinity Hall Prime, inspiring earlier versions of this project.
  • Matt Parker, for being a brilliant maths educator & inspiring amateur mathematicians to give things a try. :)
  • Forbes Lindesay, for their optimization contributions.
Comments
  • Error with pictoprime -i: Stream yields empty buffer

    Error with pictoprime -i: Stream yields empty buffer

    Getting this error in powershell from running pictoprime -i shapes.png image

    Image i tried to use: shapes Is this an issue on my side? haven't been able to make this work on any image. Am happy to provide any additional info. Cheers

    opened by lucafossen 9
  • infinite recursion past max callstack with certain parameters

    infinite recursion past max callstack with certain parameters

    I believe the image i have is all white (960x720), and these parameters seem to cause an exception in the code:

    pictoprime -i image-363.png --contrast -0.9 -s
    

    Here is the image in case you cannot reproduce with just the details above

    image-363

    And here is the full output from this command:

    image

    bug 
    opened by Terrain2 5
  • getting install errors with all deps.

    getting install errors with all deps.

    pictoprime_install_err.txt

    on win 10 pro x64. using x64 versions of node and the rest. have not tried downgrade to x32.

    as far as I know all deps are installed correctly. not sure about openssl though. I installed via >choco install openssl which seemed to work fine.

    opened by jmerc77 4
  • changing width/contrast

    changing width/contrast

    what is the full command to change width and contrast? i can consistently get a 32 width prime, but I always get errors when trying to change the width.

    for example, when I try "pictoprime --width = 64" then i get: Error: Either a number or an image must be specified.

    i've tried pretty much every variation i can think of for denoting a number and it usually gives that error.

    pictoprime --width (nothing afterwards) this will give error: option '--width ' argument missing

    So i tried "pictoprime --width <64>" but that gave the following message At line:1 char:20

    • pictoprime --width <64>
    •                ~
      

    The '<' operator is reserved for future use. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RedirectionNotSupported

    I've also tried editing the image javascript file directly but that doesn't seem to change anything. any thoughts? i've tried updating, uninstall and reinstall, nothing seems to work. The pictures look good but would like to get them a bit bigger.

    very cool program by the way!

    opened by hamm3rhand 4
  • ERR_UNHANDLED_REJECTION

    ERR_UNHANDLED_REJECTION

    Hey so, I didn't wanna drop a report until I really hit a wall. I'm not terribly tech savvy, so it's totally possible I missed some kinda step in here, but I figured I'd ask rather than keep banging my head against a wall. I've been trying to run this program on my laptop for about two days on and off (ever since seeing the StandUpMaths video that talks about it) and I keep running into the same error. Install GraphicsMagick, node, and openssl, but it still seems to come up and I was wondering if anyone knew how to fix it. I run it in cmd and I get the same error over and over. I'll attach the screenshot with the pic I'm trying to test this on. Please let me know when you can, thanks! image pi

    opened by galaflux 4
  • It dosen't show the full prime number when it's a large number

    It dosen't show the full prime number when it's a large number

    I tried to run with width 80 and it took me almost 12 hours to compute. At the end I got just a parcial number:

    {
      prime: '7777777777777777777777777777777777777777777777777777777777722940000000000000000000000000000000000000000000000000000000000000000004999999999999999999999999999999777777777777777777777777777777777777777777777777777777772294000000000000000000000000000000000000000000000000000090000000000000000000999999999999999999999999999977777777777777777777777777777777777777777777777777777729400000000000000000000000000000000000000000000000000000000000000000000000000000499999999999999999994999997777777777777777777777777777777777777777777777777777294000000000000000000000000000000000000000000000000000000000000000000000000000000000499999999999999999499999777777777777777777777777777777777727222222222222229940000400000000000000000000000000000000000000000000000000000000000000000000000000000000499999999999999499999977777777777777777777777777777777772222222222222294440400000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999949999997777777777777777777777777777777772222222299922944404000000000000000000000000000000000000000088000088888888888888888880800000000000000000000004999999999994999999777777777777777777717777777777777222299999929944440000000000000000000000000000000000000000000000000000888888888888888888880000000000000000000009999999994999999977777777777777777777777777777777722999999299444440000000000000000000000000000000000000000000000000000000008888888888888888888080000000000000000099999999499999997777777777777777777777777777777772999449294444000000000000000000000000444400400444444444400000000000000000000888888888888888888880000000000000004999999999999999777777777777777777777777777777772299992994444000000000000004404444444444444444444444444444440000000000000000000888888888888888888888880000000000049999949999999977777777777777777777777777777777229992994440000000044444444444444444444444444444444444444444444444000000000000000888888888888888888888800000000004999994999999997777777777777777777777777777777729922994440000000444444444444444444444444444444444444444444444444440000000000000000888888888888888888888800000000099999999999999777777777777777777777777777777772922994440000004444444444444444444444444444444444444444444444444444000000000000000008888888888888888888888000000049999499999999977777777777777777777777777777777922994440000044444444999444444444444444444444444444444444444444444400000000000000000088888888888888888888880000009999949999999997777777777777777777777777777777222994440000444999999999999999999444444444444444444444444444444444444000004000000000000888888888888888888888880009999999999999999777777777777777777777777777777727299440000499999999999999999999999999994444444444444444444444444444444404444000000000088888888888888888888888009999999999999999977777777777777777777777777777772299440004999992229999999999999999999999999444444444444444444444444444444444444400000000888888888888888888880049999999999999999997777777777777777777777777777777299444444992222222222222999999999999999999999994444444444444444444444444444444444000000088888888888888888004999999999999999999999777777777777777777777777777777229992299922222222222222229999999999999999999999999444444444444444444444444444444444400008888888888880004999999999999999999999999977777777777777777777777777777722222229922277777222222222299999999999999999999999999999944494444444444444444444440000004088000004449999999999999999999999999999997777777777777777777777777777772922229922277777777722222229999994449999999999999944999994444444444444400000000000000000400044999999999999999999999999999999999999777777777777777777777777777777227229922777777777777722229999444444444444444994444444444444444444444400000000044444444440004999999999999999999999999999999999999977777777777777777777777777777722222992777777777777722299999994444444440004444444444444444944444444444444444444444999999400449999999999999999999999999999999999997777777777777777777777777777777722992277777777777772299222999999944444444444444444449999999999444444444444444444444499940044999999999999999999999999999999999999777777777777777777777777777777722292277777777777772222222222299999444444444444444499999999994444444400000000044444499994004999999999999999999999999999999999999977777777777777777777777777777772229227777777722222292222222229994444444444444444449999999994444440000000000440449449999400499999999999999999999999499999999999997777777777777777777777777777777222222777777772299992222299994994000000444044444444999999444400000000880000049444444499940004499999499999999999999949999999999999777777777777777777777777777227722222277777777772299229999999999940000044444444444999994999944444000000080004994444499994800499999944999999999999949999999999999977777777777777777777777777222272722277777777777772222222222299999444444444444449999992922994444444400000004444499999999404999999994404999999999994999999999999997777777777777777777777777722227222227777777777777277777722222999999444444444999999999999999944444400044444444449999999990499999999940009999999994499999999999999777777777777777777777777777227772222777777777777727777777222299999999999999999999949929999999444940044444444499999999999099999999994499999999999449999999999999977777777777777777777777777722772222227777777777777277777772222299999999999992222922999999994400000044994444449999999999949999999999499999999999949999999999999997777777777777777777777777772272222229277777777777727777772222229999999999999222292779999440088888880499994444999999999249999999999949999999999944999999999999999777777777777777777777777777722222277292777777777777277722222222999999999999999999222994000000000000004999994999999999994999999999949999999999994499999999999999977777777777777777777777777772222227772927777777777722222222222222222229999999999929940000044400000000449999999999999999099999999949999999999994499999999999999997777777777777777777777777777727222277729277777777777722222222222222229999999999999400044444440000000004499999999999999909999999999999999999999449999999999999999777777777777777777777777777777777777777722277777777772222222222222222999999999440000099440000008888888004499999999999990444999999999999999999944999999999999999977777777777777777777777777777777777777777222277777222222222222222229999999444000000000000000008888888888800499999999444044999999999999999999944999999999999999997777777777777777777777777777777777777777777299222222222222222299999999944400000004444000000888888888888888800444444444404999999999999999999994499999999999999999777777777777777777777777777777777777227777777244499922222222222999999440000000004440000000888888888888888888800000000004999999999999999999999449999999999999999977777777777777777777777777777777777222777777772444444499922299999944000888000004440000008888888888888888888888088888800499999999999999999999449999999999999999997777777777777777777777777777777777722277777777244404000004444440000888888000000000000000088888888888888888888880888800049999999999999999999944999999999999999999777777777777777777777777777777777777227777777724440000000000000008888880000000000000000888888888888888888888888008888009999999999999999999944499999999999999999977777777777777777777777777777777777777772277779440000000000000000000000000000000000000888888888888888888888888880888804999999999999999999994449999999999999999997777777777777777777777777777777777777777722777944000000000000000000000000000000000008888888888888888888888888888808880999999999999999999999449999999999999999999777777777777777777777777777777777777777777292244440000000000000000000000000004400088888888888888888888888888888888880499999999999999999999444999999999999999999977777777777777777777777777777777777777777729994444400000000000000000000004404000888888888888888888888888888888888880009999999999999999999944499999999999999999997777777777777777777777777777777777777777777299444440000000000000000444444400008888888888888888888888888888888888888800999999999999999999994499999999999999999999777777777777777777777777777777777777777777724444000000000000000044404000000088888888888888888888888888888888888888800999999999999999999994449999999999999999999977777777777777777777777777777777777777777777244440000000000000000000000000088888888888888888888888888888888888888888499999999999999999999444999999999999999999997777777777777777777777777777777777777777777772944400000000000000000000000008888888888888888888888888888888888888888099999999999999999999444999999999999999999999777777777777777777777777777777777777227777777729440000000000000000000000000888888888888888888888888888888888888808049999999999999999999944499999999999999999999977777777777777777777777777777777777292777777777299400000000000000000000000000888888888888888888888888888888888888099999999999999999999994449999999999999999999997777777777777777777777777777777777729277777777722294000000000000000000000000088888888888888888888888888888888880499999999999999999999999444999999999999994449999777777777777777777777777777777777772927777777772222940000000000000000000008888888888888888888888888888888888888499999999999999999999999444999999999999999449999977777777777777777777777777777777772292777777772222299940000000000000000088888888888888888888888888888888888888499999999999999999999999944499999999999999404999997777777777777777777777777777777772229977777777222222999940000000000000088888888888888888888888888888888888888499999999999999999999999994449999999999999940999999777777777777777777777777777772222222297777777722222999999940000000000088888888888888888888888888888888888880929999999999999999999999994444999999999999994499999977777777777777777777777777772222222272277777722222299999999900000000000008888008888888888888888888888888884272992999999999999999999999444999999999999994049999997777777777777777777777777777222222292292777172222222999999999400000000000888880888888888888888888888888889222292299999999999999999999944499999999999999449999999777777777777777777777777777772222222229977777222222999999999994400000000008888888888888888888888888888800999922222994929999999999999944449999999999999904999999977777777777777777777777777277222222777299277722222999999999999444000000008888888'... 2800 more characters,
      attempts: 767,
      simultaneous: 12,
      distinctTested: 9216
    }
    

    Captura de Tela-20220429230332-1920x1053

    Bummer.

    bug 
    opened by emiliopedrollo 4
  • Types and formatting

    Types and formatting

    I've installed prettier formatter and configured it to be as similar to this repo's primary coding style as possible, I've also run the formatter on all files and added package.json scripts for check and write (aliased as lint and format respectively).

    I've added a command as a shortcut to running the index file in node.

    I've tidied the JSDoc in the project by adding/modifying types where necessary, removing unused types (primarily implied return types), and adding TODO.


    If possible, I would like to work on .d.ts type declaration files for the project to improve type safety as well as give users/contributors a clear view of what goes in and out of a function without having to deal with JSDoc and implementations cluttering the view.

    I would also later like to work on an export option "png" which would leverage Node canvas to generate images from the prime integer, this would also open doors to color in future iterations.

    I have raised issues for both of the above, give me the ok over there if you're happy for me to work on these features.

    opened by willster277 3
  • openssl not installed even though it is

    openssl not installed even though it is

    pictoprime error: Error: You must have openssl in your path for this program to work. at main (file:///C:/Users/Pepe/AppData/Roaming/npm/node_modules/pictoprime/index.js:36:84) my node.js version is v18.1.0 so thats not the issue

    opened by aeron-codes 2
  • Is this supposed to only give the prime number or also create a picture of it?

    Is this supposed to only give the prime number or also create a picture of it?

    After some trying and problem solving I managed to get the code working to give the resulting long prime number. I was wondering if it was also supposed to give a resulting image with the numbers or is it something I should do myself? I'm not an expert so I wasn't sure. I only get the prime number.

    I was of course able to make the image myself, was just wondering if there was some problem still. Very cool idea and program in any case!

    I'm on Windows 11 and ran the program on the command prompt in case it matters. I have so little experience with these things that I needed to install every dependency first.

    opened by Eevee97 2
  • perf: check for divisibility by small primes

    perf: check for divisibility by small primes

    In my tests, this results in the prime searching process running approximately twice as fast. I believe this happens because:

    1. A very large proportion of the candidates can be eliminated by checking them for divisibility with the first 2,000 primes.
    2. Checking against the first 2,000 primes is very fast, even when single threaded in JavaScript.
    3. Calling out to OpenSSL via the terminal adds considerable overhead/latency

    Benchmarks on the sample image (higher is better)

    The old code that always uses OpenSSL

    36.7 prime candidates tested per second 37.5 prime candidates tested per second 33.7 prime candidates tested per second

    My version that first checks for divisibility by small primes

    60.5 prime candidates tested per second 86.5 prime candidates tested per second 95.6 prime candidates tested per second

    opened by ForbesLindesay 2
  • Can not find openssl

    Can not find openssl

    pictoprime throws error: if (!await commandExists('openssl').then(() => true).catch(() => false)) throw new Error('You must have openssl in your path for this program to work.')

    However openssl is in my path: $ which openssl /usr/bin/openssl

    $ echo $PATH /home/karza/julia-1.7.1/bin:/home/karza/.cargo/bin:/home/karza/.local/bin:/home/karza/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

    Running on XUbuntu 18.04.6 LTS

    opened by oh2gqc 2
  • OpenSSL version must be 3

    OpenSSL version must be 3

    I tried running pictoprime on OSX and I had this openssl installed

    > openssl version
    OpenSSL 1.0.2q  20 Nov 2018
    

    which only returns the hex value and not decimal

    > openssl prime 12321321                                                                                                     
    BC0229 is not prime
    

    which resulted in the ascii art to be incorrect

    Screenshot 2022-08-30 at 14 20 25

    After I used openssl@3 it worked

    > /usr/local/opt/openssl@3/bin/openssl prime 12321321                                                                                   
    BC0229 (12321321) is not prime
    
    Screenshot 2022-08-30 at 14 20 42

    So if anyone else runs into this issue you know how to fix it and maybe we can adjust the README to mention this.

    opened by PlayLikeNeverB4 1
  • Export format: `

    Export format: `"png"`

    Using the canvas npm package and the built-in node:fs module, we can write the result of a "prime" export to a virtual HTMLCanvasElement and then pipe that canvas to a file. The file size will be proportional to the configured --width, the most likely solution is a multiplier that decreases through some function as a the configured --width increases, approaching a multiplier of 1.


    Please let me know if you would like this feature implemented and I will begin working on it.

    opened by willster277 0
  • `.d.ts` declaration files for better type safety and readability

    `.d.ts` declaration files for better type safety and readability

    The majority of packages on npm use TypeScript in some form or another, and the ones which don't have 3rd party .d.ts declaration files written over at Definitely Typed.

    I would like to do one of two things;

    1. Convert the project over to TypeScript
    2. Write .d.ts definition files for the project

    In the case of converting to TypeScript, I will pick the most forgiving compilerOptions so that someone with zero knowledge could still come to this project and contribute, esentially the only types necessary will be function parameters and placeholder variables, though type safety could still be improved with further typings such as interfaces and function generics. The project's build step will compile from a new source directory src to an output directory dist, and all pointers in package.json will be modified accordingly.

    In the case of writing .d.ts declaration files, I will be doing the TypeScript compiler's job of extracting type definitions an putting them in .d.ts files. All functions and file-level variables, exported or not, will be typed, and we'll get a few useful interfaces out of it as well, which could solve some of the JSDoc spaghetti this project is beginning to run into.


    Please let me know if you would like this feature implemented and I will begin working on it.

    opened by willster277 0
  • Javascript novice requesting assistance

    Javascript novice requesting assistance

    Please could somebody tell me explicitly how to use this code (in particular to convert an image into a prime)

    • Do I need to save the code, its dependencies or the image I wish to convert anywhere specific?
    • What should I type into node in order to run the program?
      • I've tried pictoprime -V , pictoprime -i , $ pictoprime -V etc.

    This is not an issue with the code, it's an issue with my knowledge and I would really appreciate it if someone could tell me how to use it. I initially started to learn javascript (in a few spare hours) to figure out how to use this code, but it and the instructions given are just as opaque to me as they were before. Please help :)

    opened by Rincewind180 1
Owner
Jesse Mitchell
Full Stack Engineer, Security Enthusiast, and a bit of a total tech geek.
Jesse Mitchell
A small JavaScript library to generate YouTube-like ids from numbers.

Hashids is small JavaScript library to generate YouTube-like ids from numbers. Use it when you don't want to expose your database ids to the user: htt

Bazyli Brzóska 3.9k Dec 30, 2022
A short project to automatically upload multiple pictures to pinata.cloud

Papel Mache Papel Mache is an app that uploads pictures to IPFS through pinata.cloud Requirements pinata/sdk: 1.1.14 node: 14.17.6 Node Node installat

Cardano Valley 7 Aug 18, 2022
A simple class to embed a panoramic view in a website from six pictures

htmlcubemap A simple class to embed a panoramic view in a website from six pictures. It uses CSS with transforms. Demo here Usage Just call from javas

Javi Agenjo 6 Dec 17, 2022
Blobernize your pictures with this all-new tool! Still under development, but it works for now.

Still under development, but in a usable state image-blobernizer A very simple image-blobernizer made for the webbrowser using p5.js Live demo Require

Sen van der Heide 3 Mar 23, 2022
A simple Node.js code to get unlimited instagram public pictures by every user without api, without credentials.

Instagram Without APIs Instagram Scraping in August 2022, no credentials required This is a Node.js library, are you looking for the same in PHP? go t

Francesco Orsi 28 Dec 29, 2022
A jQuery Plugin for viewing pictures like Wechat moments

A jQuery Plugin for viewing pictures like Wechat moments

馒头饭 25 Nov 10, 2022
NFTKastle is an NFT marketplace where users can mint their pictures as NFTs, list their NFTs for sale, and buy NFTs from other users.

NFTKastle NFTKastle is an NFT marketplace where users can mint their pictures as NFTs, list their NFTs for sale, and buy NFTs from other users. NFTKas

Paschal 2 Oct 31, 2022
💥This is an app that recognizes text in pictures

English | 简体中文 Easy OCR App This is an app that recognizes text in pictures. The application is developed using Tauri, Vite, React, TypeScript. The ca

派大星啊 6 Dec 3, 2022
A CodeMirror (v6) extension for adding relative line numbers to your code editor

Relative Line Numbers for CM6 Installation yarn add codemirror-line-numbers-relative Usage import { EditorView } from "@codemirror/view"; import { Edi

Joe Previte 5 Feb 7, 2022
no-comma is a javascript library for dealing with inputted numbers that include commas

no-comma no-comma is a javascript library for dealing with inputted numbers that include commas. Nocomma will allow you to check if the number contain

Fatty 3 Jan 27, 2022
Kyrgyz / Kazakh numbers-to-words converter

Kyrgyz / Kazakh numbers-to-words converter

Timur 4 Mar 12, 2022
🌐 Text Input Component for validating and formatting international phone numbers.

React Native Intl Phone Field Try the Expo Snack ?? ??️ Demo It's a javascript-only (no native code) component that can run in iOS, Android, Expo & Re

Ivanka Todorova 24 Jul 8, 2022
An easy-to-use library to make your life easier when working with random numbers or random choices in javascript.

vrandom An easy-to-use library to make your life easier when working with random numbers or random choices in javascript. Table of contents Installati

Valerio Cipolla 1 Aug 16, 2022
An unreliable and overall unusable sorting library for numbers with a global cache on the edge.

unsort An unreliable and overall unusable sorting library for numbers with a global cache on the edge. the algorithm This library implements a number

Jonas Wanner 6 May 19, 2022
Small utilities for big decimal numbers.

dnum dnum (Decimal Numbers) is a library that allows to operate on large numbers represented as a pair composed of a BigInt for the value, and a Numbe

Pierre Bertet 45 Dec 21, 2022
🏛️ Convert numbers to Roman numerals

Roman Convert Numbers to Roman numerals. Usage The API is the same on all this platforms ✔️ Deno ?? import { parseRoman, roman } from "https://deno.la

Eliaz Bobadilla 10 Jul 18, 2022
As babies smash on the keyboard, images, letters and numbers appear on the screen

Baby Bam Bam As babies smash on the keyboard, images, letters and numbers appear on the screen. Try the many options and find the ones that are right

Boris Fritscher 3 Oct 24, 2022
Lightweight (< 2.3kB gzipped) and performant natural sorting of arrays and collections by differentiating between unicode characters, numbers, dates, etc.

fast-natural-order-by Lightweight (< 2.3kB gzipped) and performant natural sorting of arrays and collections by differentiating between unicode charac

Shelf 5 Nov 14, 2022
A jQuery-free general purpose library for building credit card forms, validating inputs and formatting numbers.

A jQuery-free general purpose library for building credit card forms, validating inputs and formatting numbers.

Jesse Pollak 528 Dec 30, 2022