prep for publish

This commit is contained in:
Holly Stubbs 2024-07-02 10:22:53 +01:00
parent e095f79743
commit 4bc5e7c4a7
2 changed files with 201 additions and 2 deletions

134
.npmignore Normal file
View file

@ -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.*

View file

@ -1,3 +1,68 @@
# funky-array # FunkyArray
Array that supports both iteration and key value indexing. 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<key_type, value_type>();
```
From here you can `set` or `remove` items by an a key of `key_type`
For example:
```ts
const users = new FunkyArray<string, User>();
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.<br>
Returns a boolean of remove success.
- `removeFirst(regenerate:boolean = true)`
Removes the first item in the array<br>
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<boolean>`
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<T>`
Returns an array of the FunkyArray's keys.