adaptive-extender 0.8.5 → 0.8.7

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.8.7 (09.12.2025)
2
+ - Added `Array.fromAsync` function.
3
+
1
4
  ## 0.8.5 (04.12.2025)
2
5
  - Added [reflect](./src/core/reflect.ts), [environment](./src/node/environment.ts) modules.
3
6
 
@@ -1,11 +1,19 @@
1
- export interface Constructor {
1
+ /**
2
+ * Defines the interface for an archivable object's prototype.
3
+ * @template S The type of the notation returned by the export method.
4
+ */
5
+ export interface ArchivablePrototype<S = any> {
6
+ /**
7
+ * Creates a new instance of the archivable object.
8
+ */
2
9
  new (...args: any): any;
3
- }
4
- export interface ImportableConstructor extends Constructor {
10
+ /**
11
+ * Imports data from a source and returns a new instance.
12
+ * @throws {TypeError} If unable to import the source.
13
+ */
5
14
  import(source: any, name: string): InstanceType<this>;
6
- }
7
- export interface ExportableConstructor<S = any> extends Constructor {
15
+ /**
16
+ * Exports the state of an instance to a notation.
17
+ */
8
18
  export(source: InstanceType<this>): S;
9
19
  }
10
- export interface PortableConstructor<S = any> extends ImportableConstructor, ExportableConstructor<S>, Constructor {
11
- }
@@ -23,6 +23,18 @@ declare global {
23
23
  zip<T extends unknown[]>(...iterables: {
24
24
  [K in keyof T]: Iterable<T[K]>;
25
25
  }): IteratorObject<T, void>;
26
+ /**
27
+ * Creates an array from an async iterable or iterable object.
28
+ * @param iterable An async iterable or iterable object to convert to an array.
29
+ */
30
+ fromAsync<T>(iterable: AsyncIterable<T> | Iterable<T>): Promise<T[]>;
31
+ /**
32
+ * Creates an array from an async iterable or iterable object.
33
+ * @param iterable An async iterable or iterable object to convert to an array.
34
+ * @param mapper A mapping function to call on every element of the array.
35
+ * @param context Value of 'this' used to invoke the mapper.
36
+ */
37
+ fromAsync<T, U>(iterable: AsyncIterable<T> | Iterable<T>, mapper: (value: T, key: number) => U | PromiseLike<U>, context?: unknown): Promise<U[]>;
26
38
  }
27
39
  export interface Array<T> {
28
40
  /**
@@ -24,6 +24,25 @@ Array.zip = function* (...iterables) {
24
24
  yield results.map(result => result.value);
25
25
  }
26
26
  };
27
+ Array.fromAsync = async function (iterable, mapper, context) {
28
+ const array = [];
29
+ let index = 0;
30
+ for await (const element of iterable) {
31
+ if (mapper === undefined) {
32
+ array.push(element);
33
+ index++;
34
+ continue;
35
+ }
36
+ if (context === undefined) {
37
+ array.push(await mapper(element, index));
38
+ index++;
39
+ continue;
40
+ }
41
+ array.push(await mapper.call(context, element, index));
42
+ index++;
43
+ }
44
+ return array;
45
+ };
27
46
  Array.prototype.swap = function (index1, index2) {
28
47
  index1 = trunc(index1);
29
48
  index2 = trunc(index2);
@@ -37,4 +56,6 @@ Array.prototype.resize = function (length, $default) {
37
56
  this.length = length;
38
57
  return this;
39
58
  };
59
+ //#endregion
60
+ Array.from;
40
61
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/core/array.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,aAAa,CAAC;AAErB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AA2CvB,KAAK,CAAC,MAAM,GAAG,UAAU,MAAW,EAAE,IAAY;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,+BAA+B,IAAI,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxH,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,KAAK,CAAC,KAAK,GAAG,UAAU,GAAW,EAAE,GAAW;IAC/C,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,EAAsB,GAAG,SAA6C;IAC1F,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,MAAM;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAM,CAAC;IAChD,CAAC;AACF,CAAC,CAAC;AAEF,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,MAAc,EAAE,MAAc;IAC9D,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC1B,CAAC,CAAC;AAEF,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAwB,MAAc,EAAE,QAAW;IAC3E,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/core/array.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,4 @@
1
1
  declare global {
2
- /**
3
- * Exclude null from T
4
- */
5
- export type NonNull<T> = T & ({} | undefined);
6
- /**
7
- * Exclude undefined from T
8
- */
9
- export type NonUndefined<T> = T & ({} | null);
10
2
  /**
11
3
  * Returns the constructor of the given non-nullable value.
12
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/core/global.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAyBb,UAAU,CAAC,WAAW,GAAG,UAAa,KAAqB;IAC1D,OAAO,KAAK,CAAC,WAAW,CAAC;AAC1B,CAAC,CAAC;AAEF,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAU;IACzC,QAAQ,KAAK,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/core/global.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAeb,UAAU,CAAC,WAAW,GAAG,UAAa,KAAqB;IAC1D,OAAO,KAAK,CAAC,WAAW,CAAC;AAC1B,CAAC,CAAC;AAEF,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAU;IACzC,QAAQ,KAAK,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;AACF,CAAC,CAAC"}
@@ -1,26 +1,43 @@
1
1
  declare global {
2
+ /**
3
+ * Extracts the non-null part of T.
4
+ */
5
+ export type NotNull<T> = Exclude<T, null>;
6
+ /**
7
+ * Extracts the defined (non-undefined) part of T.
8
+ */
9
+ export type Defined<T> = Exclude<T, undefined>;
10
+ /**
11
+ * Extracts the null part of T (if present).
12
+ */
13
+ export type NullFrom<T> = T & null;
14
+ /**
15
+ * Extracts the undefined part of T (if present).
16
+ */
17
+ export type UndefinedFrom<T> = T & undefined;
18
+ /**
19
+ * Extracts the nullable (null or undefined) part of T (if present).
20
+ */
21
+ export type NullableFrom<T> = T & (null | undefined);
2
22
  export namespace Reflect {
3
23
  /**
4
24
  * Applies a callback function to a non-null value, or returns the original null value.
5
25
  * @param value The value to map.
6
26
  * @param callback The function to apply if the value is non-null.
7
- * @returns The mapped result.
8
27
  */
9
- function mapNull<T, N extends Exclude<T, NonNull<T>>, R>(value: NonNull<T> | N, callback: (value: NonNull<T>) => R): R | N;
28
+ function mapNull<T, R>(value: T, callback: (value: NotNull<T>) => R): R | NullFrom<T>;
10
29
  /**
11
30
  * Applies a callback function to a non-undefined value, or returns the original undefined value.
12
31
  * @param value The value to map.
13
32
  * @param callback The function to apply if the value is non-undefined.
14
- * @returns The mapped result.
15
33
  */
16
- function mapUndefined<T, N extends Exclude<T, NonUndefined<T>>, R>(value: NonUndefined<T> | N, callback: (value: NonUndefined<T>) => R): R | N;
34
+ function mapUndefined<T, R>(value: T, callback: (value: Defined<T>) => R): R | UndefinedFrom<T>;
17
35
  /**
18
36
  * Applies a callback function to a non-nullable value, or returns the original nullable value.
19
37
  * @param value The value to map.
20
38
  * @param callback The function to apply if the value is non-nullable.
21
- * @returns The mapped result.
22
39
  */
23
- function mapNullable<T, N extends Exclude<T, NonNullable<T>>, R>(value: NonNullable<T> | N, callback: (object: NonNullable<T>) => R): R | N;
40
+ function mapNullable<T, R>(value: T, callback: (value: NonNullable<T>) => R): R | NullableFrom<T>;
24
41
  }
25
42
  }
26
43
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../src/core/reflect.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AA6Bb,OAAO,CAAC,OAAO,GAAG,UAAkD,KAAqB,EAAE,QAAkC;IAC5H,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,QAAQ,CAAC,KAAK,CAAe,CAAC;AACtC,CAAC,CAAC;AAEF,OAAO,CAAC,YAAY,GAAG,UAAuD,KAA0B,EAAE,QAAuC;IAChJ,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAoB,CAAC;AAC3C,CAAC,CAAC;AAEF,OAAO,CAAC,WAAW,GAAG,UAAsD,KAAyB,EAAE,QAAsC;IAC5I,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,QAAQ,CAAC,KAAK,CAAmB,CAAC;AAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../src/core/reflect.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAmDb,OAAO,CAAC,OAAO,GAAG,UAAgB,KAAQ,EAAE,QAAkC;IAC7E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAoB,CAAC;IAChD,OAAO,QAAQ,CAAC,KAAmB,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,OAAO,CAAC,YAAY,GAAG,UAAgB,KAAQ,EAAE,QAAkC;IAClF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAyB,CAAC;IAC1D,OAAO,QAAQ,CAAC,KAAmB,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,OAAO,CAAC,WAAW,GAAG,UAAgB,KAAQ,EAAE,QAAsC;IACrF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAwB,CAAC;IAC3E,OAAO,QAAQ,CAAC,KAAuB,CAAC,CAAC;AAC1C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adaptive-extender",
3
- "version": "0.8.5",
3
+ "version": "0.8.7",
4
4
  "description": "Adaptive library for JS/TS development environments",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",