@gw2treasures/helper 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
1
  export declare function groupById<T extends {
2
2
  id: unknown;
3
3
  }>(values: T[]): Map<T['id'], T>;
4
+ export declare function groupByUnique<T, K extends keyof T>(values: T[], key: K): Map<T[K], T>;
5
+ export declare function groupBy<T, K extends keyof T>(values: T[], key: K): Map<T[K], T[]>;
package/dist/group-by.js CHANGED
@@ -1,7 +1,22 @@
1
1
  export function groupById(values) {
2
+ return groupByUnique(values, 'id');
3
+ }
4
+ export function groupByUnique(values, key) {
5
+ const map = new Map();
6
+ for (const value of values) {
7
+ map.set(value[key], value);
8
+ }
9
+ return map;
10
+ }
11
+ export function groupBy(values, key) {
2
12
  const map = new Map();
3
13
  for (const value of values) {
4
- map.set(value.id, value);
14
+ if (map.has(value[key])) {
15
+ map.get(value[key]).push(value);
16
+ }
17
+ else {
18
+ map.set(value[key], [value]);
19
+ }
5
20
  }
6
21
  return map;
7
22
  }
package/dist/is.d.ts CHANGED
@@ -6,3 +6,4 @@ export declare function isTruthy<T>(value: T | Falsy): value is T;
6
6
  export declare function isFalsy(value: unknown): value is Falsy;
7
7
  export declare function isEmptyObject(obj: unknown): obj is Record<string, never>;
8
8
  export declare function isString(value: unknown): value is string;
9
+ export declare function isAbortError(error: unknown): error is Error;
package/dist/is.js CHANGED
@@ -16,3 +16,6 @@ export function isEmptyObject(obj) {
16
16
  export function isString(value) {
17
17
  return typeof value === 'string';
18
18
  }
19
+ export function isAbortError(error) {
20
+ return error instanceof Error && error.name === 'AbortError';
21
+ }
@@ -0,0 +1,2 @@
1
+ /** Calculates the positive remainder */
2
+ export declare function mod(n: number, m: number): number;
package/dist/modulo.js ADDED
@@ -0,0 +1,4 @@
1
+ /** Calculates the positive remainder */
2
+ export function mod(n, m) {
3
+ return ((n % m) + m) % m;
4
+ }
@@ -0,0 +1,13 @@
1
+ /** Generate a range starting at 0 up to but not including end. */
2
+ export declare function range<End extends SmallInteger>(end: End): Range<0, End>;
3
+ /** Generate a range starting at 0 up to but not including end. */
4
+ export declare function range(end: number): number[];
5
+ /** Generate a range including start up to but not including end. */
6
+ export declare function range<Start extends SmallInteger, End extends SmallInteger>(start: Start, end: End): Range<Start, End>;
7
+ /** Generate a range including start up to but not including end. */
8
+ export declare function range(start: number, end: number): number[];
9
+ type BuildTuple<Length extends SmallInteger, Acc extends number[] = []> = Acc['length'] extends Length ? Acc : BuildTuple<Length, [...Acc, Acc['length']]>;
10
+ type DropUntil<Start extends SmallInteger, Acc extends number[], Dropped extends SmallInteger[] = []> = Dropped['length'] extends Start ? Acc : DropUntil<Start, Acc extends [infer _, ...infer Rest] ? Rest : [], [...Dropped, 0]>;
11
+ type Range<Start extends SmallInteger, End extends SmallInteger> = DropUntil<Start, BuildTuple<End>>;
12
+ type SmallInteger = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
13
+ export {};
package/dist/range.js ADDED
@@ -0,0 +1,4 @@
1
+ export function range(start, end) {
2
+ const [from, to] = end === undefined ? [0, start] : [start, end];
3
+ return [...Array(to - from).keys()].map((i) => i + from);
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gw2treasures/helper",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "gw2treasures.com utility library",
5
5
  "exports": {
6
6
  "./*": {
@@ -8,14 +8,6 @@
8
8
  "default": "./dist/*.js"
9
9
  }
10
10
  },
11
- "scripts": {
12
- "build": "npm run clean && if test $CI; then npm run build:ci; else npm run build:local; fi",
13
- "build:local": "tsc --declarationMap",
14
- "build:ci": "tsc",
15
- "clean": "rm -rf dist/",
16
- "lint": "eslint src",
17
- "publish-package": "gw2treasures-publish-package"
18
- },
19
11
  "repository": {
20
12
  "type": "git",
21
13
  "url": "git+https://github.com/GW2Treasures/gw2treasures.com.git"
@@ -34,12 +26,21 @@
34
26
  },
35
27
  "homepage": "https://github.com/GW2Treasures/gw2treasures.com#readme",
36
28
  "devDependencies": {
37
- "@gw2treasures/eslint-config": "*",
38
- "@gw2treasures/tsconfig": "*",
39
- "eslint": "8.57.0",
40
- "typescript": "5.5.4"
29
+ "eslint": "9.39.2",
30
+ "typescript": "5.9.3",
31
+ "@gw2treasures/eslint-config": "0.2.0",
32
+ "@gw2treasures/tsconfig": "0.0.1"
41
33
  },
42
34
  "publishConfig": {
43
- "access": "public"
35
+ "access": "public",
36
+ "provenance": true
37
+ },
38
+ "scripts": {
39
+ "build": "pnpm run clean && if test $CI; then pnpm run build:ci; else pnpm run build:local; fi",
40
+ "build:local": "tsc --declarationMap",
41
+ "build:ci": "tsc",
42
+ "clean": "rm -rf dist/",
43
+ "lint": "eslint .",
44
+ "publish-package": "gw2treasures-publish-package"
44
45
  }
45
- }
46
+ }