From 4bc5e7c4a72abb7e23d9b92c902ae51e8f5062af Mon Sep 17 00:00:00 2001 From: Holly Date: Tue, 2 Jul 2024 10:22:53 +0100 Subject: [PATCH] prep for publish --- .npmignore | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 69 ++++++++++++++++++++++++++- 2 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..28d242a --- /dev/null +++ b/.npmignore @@ -0,0 +1,134 @@ +.github/* +funkyArray.ts +tsconfig.json + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* \ No newline at end of file diff --git a/README.md b/README.md index 1b73545..bed5e10 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,68 @@ -# funky-array +# FunkyArray -Array that supports both iteration and key value indexing. \ No newline at end of file +An array that supports both iteration and key value indexing. + +## Usage +Create a new instance of FunkyArray + +#### JavaScript +```js +const funkyArray = new FunkyArray(); +``` +#### TypeScript +```ts +const funkyArray = new FunkyArray(); +``` + +From here you can `set` or `remove` items by an a key of `key_type` + +For example: +```ts +const users = new FunkyArray(); +const user = new User(1, "Username", crypto.randomUUID()); +users.set(user.uuid, user); +``` + +## General concepts +FunkyArray uses an internal "itteration array" which is really just a regular js array with all the keys. Whenever you see a `regenerate:boolean` in a method, this is so you can not regenerate the "itteration array" if you are bulk inserting things. In general you want to be very careful when turning this off and it can break itteration. + +## Methods + - `set(key:T, item:TT, regenerate:boolean = true) : TT` + + Sets the corrosponding key in the array to the given value. If an existing array key is provided the existing value is overwritten. + +- `remove(key:T, regenerate:boolean = true) : boolean` + + Removes an item from the array by key.
+ Returns a boolean of remove success. + +- `removeFirst(regenerate:boolean = true)` + + Removes the first item in the array
+ Returns a boolean of remove success. + +- `first() : TT` + + Returns the first item in the array. + +- `get(key:T) : TT | undefined` + + Returns the item with the given key, if it does not exist it returns undefined. + +- `has(key:T) : boolean` + + Returns a boolean for if a value exists for the given key. + +- `forEach(callback: (value:TT) => void) : Promise` + + Functionally equivilent to `Array.forEach` + Returns a boolean promise that resolves once the forEach itteration is complete. + +## Getters +- `length : number` + + Returns the number of key values in the FunkyArray. + +- `keys : Array` + + Returns an array of the FunkyArray's keys. \ No newline at end of file