1.1.3 • Published 6 days ago

goodcore v1.1.3

Weekly downloads
10
License
MIT
Repository
github
Last release
6 days ago

GoodCore

version downloads Build Status Coverage Status

A Good Core typescript library with utility functions and effective data structures for use with both Node and browser.

It brings:

  • type definitions
  • fluent api where applicable
  • high performance
  • fully tested
  • fully tree shakeable with rollup
  • Zero external dependencies

It contains ...

the following JSON.stringify -able data structures:

  • List (indexable, with iterator)
  • SortedList (O(log(n)) lookup, and iterator)
  • Dictionary
  • Stack
  • Tree
  • Vec2
  • Range2
  • Rect
  • KeyValuePair<S, T>

general utility objects:

  • Pool

method combinator decorators:

  • @before
  • @after
  • @around
  • @provided
  • @once (caches first result)
  • @async
  • @async.before
  • @async.after
  • @async.provided

mixins:

  • Initable
  • Pooable

and lots of utility functions for:

  • Array manipulation, optimized for speed
  • Dom manipulation
  • Moc data generation
  • Object manipulation
  • Timer
  • Uri location handling
  • Fast rotation calculation using pre calculationand and closest value
  • Utility functions for
    • Asserts
    • Function proxies
    • Log pipe
    • Guid generation
    • looping

Version 1.0.0 Changes

  • Removed all different bundlings of the library except: goodcore.bundle.min.js and goodcore-lite.bundle.min.js.
  • Moved to ES2021 transpilation for the whole library.
  • Removed the ES(6) version of the library since there is no ES5 version anymore.
  • Several Array functions, such as slice() and map(), have been deprecated in favor of native array functions. Deprecated functions will result in a console.warn message. If you want to disable this message set Global.noDeprecationWarnings = true;
  • Array functions that had optimized code for older browsers (IE) have had that code removed.
  • Obj
    • CHANGE: mixin() now mixes objects deep in the case when the target and the source both have a property value with the object type.
  • Util
    • ADDED: function deprecate<T extends Function>(instead: string, fn: T): T
    • REMOVED: getFunctionName() in favor of Function.prototype.name
    • REMOVED: getFunctionCode() since it did not feel very "core" and was not handling any variations of arrow functions. Replace with .toString and a regex of your choice.

Caveat

Iterator support in List and SortedList requires that the browser supports it too. So if you have to support a browser which do not such as IE11 then please use a polyfill like core.js.

Examples

Here is a small example that makes no sense other than show what the lib looks like in use.

import { Initable, List, provided, Range2, Util, Vec2 } from "goodcore";

let world = new Range2(2, 2, 8, 8); //x,y,h,w
function inWorld(point: IVec2): boolean {
    return world.containsPoint(point);
}

class BaseLogger {
    private _list: List<Vec2> = new List<Vec2>();
    public id: string = "";

    @provided(inWorld)
    public log(point: IVec2) {
        this._list.add(new Vec2().set(point));
    }
    public search(point: IVec2): List<Vec2> {
        return this._list.select((p, i) => p.equals(point)).clone();
    }
    public get list(): List<Vec2> {
        return this._list.clone();
    }
}
class Logger extends Initable(BaseLogger) {}

// log in the order of distance from 0,0 
let logger: Logger = new Logger().init({id: Util.newUUID()}) as Logger;
logger.log({x: 1, y: 3});
logger.log({x: 4, y: 4});
logger.log({x: 5, y: 5});
logger.log({x: 7, y: 8});
logger.log({x: 9, y: 3});

console.log(logger.id);
logger.list
    .orderBy((a, b) => a.length() - b.length())
    .forEach((p) => console.log(p.x, p.y));

let contains = logger.search({x: 4, y: 4});
console.log(`does the log contain point 4,4? ${contains.count > 0}`);

Contribute

Found a bug? GREAT! Raise an issue!

When developing, please:

  • Write unit tests.
  • Make sure your unit tests pass
1.1.3

6 days ago

1.1.2

6 days ago

1.1.1

8 months ago

1.1.0

8 months ago

1.0.2

9 months ago

1.0.3

8 months ago

1.0.1

1 year ago

1.0.0

1 year ago

0.36.6

3 years ago

0.36.2

3 years ago

0.35.4

3 years ago

0.35.3

3 years ago

0.35.2

3 years ago

0.35.1

3 years ago

0.34.8

3 years ago

0.34.6

4 years ago

0.34.7

4 years ago

0.34.5

4 years ago

0.34.4

4 years ago

0.34.2

4 years ago

0.34.1

4 years ago

0.33.18

4 years ago

0.33.17

4 years ago

0.33.16

4 years ago

0.33.15

4 years ago

0.33.14

4 years ago

0.33.13

4 years ago

0.33.10

4 years ago

0.33.12

4 years ago

0.33.11

4 years ago

0.33.9

4 years ago

0.33.8

4 years ago

0.33.7

4 years ago

0.33.6

4 years ago

0.33.5

4 years ago

0.33.4

4 years ago

0.33.3

4 years ago

0.33.1

4 years ago

0.32.2

4 years ago

0.32.1

4 years ago

0.31.6

4 years ago

0.31.3

5 years ago

0.31.2

5 years ago

0.31.1

5 years ago

0.30.1

5 years ago

0.29.4

5 years ago

0.29.3

5 years ago

0.29.2

5 years ago

0.29.1

5 years ago

0.28.1

5 years ago

0.27.8

5 years ago

0.27.7

5 years ago

0.27.6

5 years ago

0.27.5

5 years ago

0.27.4

5 years ago

0.27.3

5 years ago

0.27.2

5 years ago

0.27.1

5 years ago

0.26.2

5 years ago

0.26.1

5 years ago

0.25.4

5 years ago

0.25.3

5 years ago

0.25.2

5 years ago

0.25.1

5 years ago

0.24.2

5 years ago

0.24.1

5 years ago

0.23.9

5 years ago

0.23.8

5 years ago

0.23.7

5 years ago

0.23.6

5 years ago

0.23.5

5 years ago

0.23.4

5 years ago

0.23.3

5 years ago

0.23.2

5 years ago

0.23.1

5 years ago

0.22.13

5 years ago

0.22.12

5 years ago

0.22.11

5 years ago

0.22.10

5 years ago

0.22.9

5 years ago

0.22.8

5 years ago

0.22.7

5 years ago

0.22.6

5 years ago

0.22.5

5 years ago

0.22.4

5 years ago

0.22.2

5 years ago

0.21.1

5 years ago

0.20.13

5 years ago

0.20.12

5 years ago

0.20.11

5 years ago

0.20.10

5 years ago

0.20.9

6 years ago

0.20.8

6 years ago

0.20.7

6 years ago

0.20.6

6 years ago

0.20.5

6 years ago

0.20.3

6 years ago

0.20.2

6 years ago

0.20.1

6 years ago

0.19.17

6 years ago

0.19.16

6 years ago

0.19.15

6 years ago

0.19.14

6 years ago

0.19.13

6 years ago

0.19.12

6 years ago

0.19.11

6 years ago

0.19.9

6 years ago

0.19.8

6 years ago

0.19.7

6 years ago

0.19.6

6 years ago

0.19.5

6 years ago

0.19.4

6 years ago

0.19.3

6 years ago

0.19.2

6 years ago

0.19.1

6 years ago

0.18.11

6 years ago

0.18.10

6 years ago

0.18.9

6 years ago

0.18.8

6 years ago

0.18.7

6 years ago

0.18.6

6 years ago

0.18.5

6 years ago

0.18.2

6 years ago

0.18.1

6 years ago

0.17.15

6 years ago

0.17.14

6 years ago

0.17.13

6 years ago

0.17.12

6 years ago

0.17.11

6 years ago

0.17.8

6 years ago

0.17.7

6 years ago

0.17.6

6 years ago

0.17.5

6 years ago

0.17.4

6 years ago

0.17.3

6 years ago

0.17.2

6 years ago

0.17.1

6 years ago

0.16.12

6 years ago

0.16.11

6 years ago

0.16.10

6 years ago

0.16.9

6 years ago

0.16.8

6 years ago

0.16.7

6 years ago

0.16.6

6 years ago

0.16.5

6 years ago

0.16.4

6 years ago

0.16.3

6 years ago

0.16.2

6 years ago

0.16.1

6 years ago

0.15.4

6 years ago

0.15.3

6 years ago

0.15.2

6 years ago

0.15.1

6 years ago

0.14.25

6 years ago

0.14.24

6 years ago

0.14.23

6 years ago

0.14.22

6 years ago

0.14.21

6 years ago

0.14.20

6 years ago

0.14.19

6 years ago

0.14.18

6 years ago

0.14.17

6 years ago

0.14.16

6 years ago

0.14.15

6 years ago

0.14.14

6 years ago

0.14.13

6 years ago

0.14.12

6 years ago

0.14.11

6 years ago

0.14.10

6 years ago

0.14.9

6 years ago

0.14.8

6 years ago

0.14.7

6 years ago

0.14.6

6 years ago

0.14.4

6 years ago

0.14.2

6 years ago

0.14.1

6 years ago

0.14.0

6 years ago

0.13.1

6 years ago

0.13.0

6 years ago

0.12.2

6 years ago

0.12.1

6 years ago

0.12.0

6 years ago

0.11.13

6 years ago

0.11.12

6 years ago

0.11.11

6 years ago

0.11.10

6 years ago

0.11.8

6 years ago

0.11.7

6 years ago

0.11.5

6 years ago

0.11.4

6 years ago

0.11.3

6 years ago

0.11.2

6 years ago

0.11.1

6 years ago

0.11.0

6 years ago

0.10.15

6 years ago

0.10.14

6 years ago

0.10.13

6 years ago

0.10.11

6 years ago

0.10.10

6 years ago

0.10.9

6 years ago

0.10.7

6 years ago

0.10.6

6 years ago

0.10.5

6 years ago

0.10.4

6 years ago

0.10.3

6 years ago

0.10.2

6 years ago

0.10.1

6 years ago

0.10.0

6 years ago

0.9.0

6 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.2

7 years ago

0.7.0

7 years ago

0.6.4

7 years ago

0.6.3

7 years ago

0.6.2

7 years ago

0.5.2

7 years ago

0.4.2

7 years ago

0.4.1

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.13

7 years ago

0.1.12

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.50

7 years ago

0.0.49

7 years ago

0.0.48

7 years ago

0.0.47

7 years ago

0.0.46

7 years ago

0.0.45

7 years ago

0.0.44

7 years ago

0.0.43

7 years ago

0.0.42

7 years ago

0.0.41

7 years ago

0.0.40

7 years ago

0.0.39

7 years ago

0.0.38

7 years ago

0.0.37

7 years ago

0.0.36

7 years ago

0.0.35

7 years ago

0.0.34

7 years ago

0.0.33

7 years ago

0.0.31

7 years ago

0.0.30

7 years ago

0.0.29

7 years ago

0.0.28

7 years ago

0.0.27

7 years ago

0.0.26

7 years ago

0.0.25

7 years ago

0.0.24

7 years ago

0.0.23

7 years ago

0.0.22

7 years ago

0.0.21

7 years ago

0.0.20

7 years ago

0.0.19

7 years ago

0.0.18

7 years ago

0.0.17

7 years ago

0.0.16

7 years ago

0.0.15

7 years ago

0.0.14

7 years ago

0.0.13

7 years ago

0.0.12

7 years ago

0.0.11

7 years ago

0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago