@nestia/e2e 7.4.0 → 8.0.0-dev.20250829

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 +1 @@
1
- {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAoD;AACpD,0DAAyD;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,IAAiB,aAAa,CAinB7B;AAjnBD,WAAiB,aAAa;;IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,uBAAS,GACpB,UAAC,KAAa;QACd,OAAA,UACE,SAAY;YAEZ,IAAM,OAAO,GAAG;gBACd,OAAA,iBAAU,KAAK,2CAAwC;YAAvD,CAAuD,CAAC;YAE1D,SAAS;YACT,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,SAAS,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnD,OAAO,SAAgB,CAAC;YAC1B,CAAC;YAED,UAAU;YACV,IAAM,MAAM,GAA+B,SAAS,EAAE,CAAC;YACvD,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,MAAM,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,OAAO,SAAgB,CAAC;YAC1B,CAAC;YAED,eAAe;YACf,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;gBACvC,MAAM;qBACH,IAAI,CAAC,UAAC,IAAI;oBACT,IAAI,IAAI,KAAK,IAAI;wBAAE,OAAO,EAAE,CAAC;;wBACxB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzB,CAAC,CAAC;qBACD,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAQ,CAAC;QACZ,CAAC;IA5BD,CA4BC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACU,oBAAM,GACjB,UAAC,KAAa,EAAE,SAAiD;QAAjD,0BAAA,EAAA,0BAA4C,OAAA,KAAK,EAAL,CAAK;QACjE,OAAA,UAAI,MAAS;YACb,OAAA,UAAC,QAA8B;gBAC7B,IAAM,IAAI,GAAa,IAAA,6BAAa,EAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,IAAI,CAAC,MAAM;oBACb,MAAM,IAAI,KAAK,CACb;wBACE,iBAAU,KAAK,yCAA+B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAI;wBACjE,IAAI;wBACJ,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACN,CAAC;QAVD,CAUC;IAXD,CAWC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACU,uBAAS,GACpB,UAAC,KAAa,EAAE,SAAiD;QAAjD,0BAAA,EAAA,0BAA4C,OAAA,KAAK,EAAL,CAAK;QACjE,OAAA,UAAI,MAAS;YACb,OAAA,UAAC,QAA8B;gBAC7B,IAAM,IAAI,GAAa,IAAA,6BAAa,EAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBACnB,MAAM,IAAI,KAAK,CACb;wBACE,iBAAU,KAAK,gDAA6C;wBAC5D,IAAI;wBACJ,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACN,CAAC;QAVD,CAUC;IAXD,CAWC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACU,mBAAK,GAChB,UAAC,KAAa;QACd,OAAA,UAAI,IAAa;YACf,IAAM,OAAO,GAAG,cAAM,OAAA,iBAAU,KAAK,gCAA6B,EAA5C,CAA4C,CAAC;YACnE,IAAI,CAAC;gBACH,IAAM,QAAM,GAAM,IAAI,EAAE,CAAC;gBACzB,IAAI,UAAU,CAAC,QAAM,CAAC;oBACpB,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;wBACvC,OAAA,QAAM,CAAC,KAAK,CAAC,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,MAAM,CAAC,OAAO,EAAE,CAAC,EAAjB,CAAiB,CAAC;oBAA3D,CAA2D,CACrD,CAAC;;oBACN,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClC,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,SAAgB,CAAC;YAC1B,CAAC;QACH,CAAC;IAZD,CAYC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACU,uBAAS,GACpB,UAAC,KAAa;QACd,OAAA;YAAC,kBAAqB;iBAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;gBAArB,6BAAqB;;YACtB,OAAA,UAAI,IAAa;gBACf,IAAM,OAAO,GAAG,UAAC,MAAe;oBAC9B,OAAA,OAAO,MAAM,KAAK,QAAQ;wBACxB,CAAC,CAAC,iBAAU,KAAK,mCAAyB,QAAQ,CAAC,IAAI,CACnD,MAAM,CACP,mBAAS,MAAM,MAAG;wBACrB,CAAC,CAAC,iBAAU,KAAK,mCAAyB,QAAQ,CAAC,IAAI,CACnD,MAAM,CACP,qBAAkB;gBANvB,CAMuB,CAAC;gBAC1B,IAAM,SAAS,GAAG,UAAC,GAAQ;oBACzB,OAAA,OAAO,GAAG,KAAK,QAAQ;wBACvB,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW;wBACpC,QAAQ,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,KAAK,GAAG,CAAC,MAAM,EAAlB,CAAkB,CAAC;wBACxC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI,KAAK,CACP,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW;4BAC7D,CAAC,CAAC,GAAG,CAAC,MAAM;4BACZ,CAAC,CAAC,SAAS,CACd,CACF;gBAVL,CAUK,CAAC;gBACR,IAAI,CAAC;oBACH,IAAM,QAAM,GAAM,IAAI,EAAE,CAAC;oBACzB,IAAI,UAAU,CAAC,QAAM,CAAC;wBACpB,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;4BACvC,OAAA,QAAM;iCACH,KAAK,CAAC,UAAC,GAAG;gCACT,IAAM,GAAG,GAAiB,SAAS,CAAC,GAAG,CAAC,CAAC;gCACzC,IAAI,GAAG;oCAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;oCAChB,OAAO,EAAE,CAAC;4BACjB,CAAC,CAAC;iCACD,IAAI,CAAC,cAAM,OAAA,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAA5B,CAA4B,CAAC;wBAN3C,CAM2C,CACrC,CAAC;;wBACN,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAM,GAAG,GAAiB,SAAS,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,GAAG;wBAAE,MAAM,GAAG,CAAC;oBACnB,OAAO,SAAU,CAAC;gBACpB,CAAC;YACH,CAAC;QAvCD,CAuCC;IAxCD,CAwCC,CAAC;IAmCJ,SAAgB,OAAO,CACrB,IAAe;QAEf,IAAI,CAAC;YACH,IAAM,QAAM,GAAQ,IAAI,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,QAAM,CAAC;gBACpB,OAAO,IAAI,OAAO,CAAe,UAAC,OAAO;oBACvC,OAAA,QAAM;yBACH,KAAK,CAAC,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,GAAY,CAAC,EAArB,CAAqB,CAAC;yBACrC,IAAI,CAAC,cAAM,OAAA,OAAO,CAAC,IAAI,CAAC,EAAb,CAAa,CAAC;gBAF5B,CAE4B,CAC7B,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,GAAY,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAfe,qBAAO,UAetB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,mBAAK,GAChB,UAAC,KAAa;QACd,OAAA,UAAgC,QAAoB;YACpD,OAAA,UACE,MAAiB,EACjB,KAAsB;gBAAtB,sBAAA,EAAA,aAAsB;gBAEtB,IAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAEjC,IAAM,IAAI,GAAa,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC1D,IAAM,IAAI,GAAa,OAAO,CAAC,MAAM,CAAC;qBACnC,MAAM,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;qBAC7B,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAEpB,IAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC,CAAC;gBAC5D,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO;qBACvB,IAAI,KAAK,KAAK,IAAI;oBACrB,OAAO,CAAC,GAAG,CAAC;wBACV,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;gBACL,MAAM,IAAI,KAAK,CACb,iBAAU,KAAK,gEAA6D,CAC7E,CAAC;YACJ,CAAC;QAvBD,CAuBC;IAxBD,CAwBC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACU,oBAAM,GACjB,UAAC,KAAa;QACd,OAAA,UACE,MAA6C;YAE/C,OAAA,UAAC,KAAe,EAAE,WAAuB;gBAAvB,4BAAA,EAAA,eAAuB;gBACzC,OAAA,UACE,KAA4C;;;;;;gCAEtC,OAAO,GAAa,iCAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;oDAC1D,CAAC;;;;;gDACJ,MAAM,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gDACjC,QAAQ,GAAa,KAAK,CAAC,MAAM,CAAC,UAAC,MAAM;oDAC7C,OAAA,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;gDAA5B,CAA4B,CAC7B,CAAC;gDACuB,qBAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAA;;gDAAtD,MAAM,GAAa,SAAmC;gDAE5D,aAAa,CAAC,KAAK,CAAC,UAAG,KAAK,eAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,CAAC,CAAC,QAAQ,CAAC,CACpE,MAAM,CACP,CAAC;;;;;;;;gCATY,YAAA,SAAA,OAAO,CAAA;;;;gCAAZ,CAAC;8DAAD,CAAC;;;;;;;;;;;;;;;;;;;;;qBAWb;YAfD,CAeC;QAhBD,CAgBC;IAnBD,CAmBC,CAAC;IAgDJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACU,kBAAI,GACf,UAAC,KAAa;QACd,OAAA,UAOE,MAA4C;YAE9C,OAAA;gBAAC,gBAAmB;qBAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;oBAAnB,2BAAmB;;gBACpB,OAAA,UAAC,IAA4B,EAAE,MAA6B;oBAC5D,OAAA;;;;;uHAAO,SAAoB,EAAE,KAAsB;;4BAAtB,sBAAA,EAAA,aAAsB;;;4CACjC,qBAAM,MAAM,CAC1B,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,UAAG,SAAS,SAAG,KAAK,CAAW,EAA/B,CAA+B,CAAa,CACnE,EAAA;;wCAFG,IAAI,GAAQ,SAEf;wCACD,IAAI,MAAM;4CAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wCAEjC,QAAQ,GACZ,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAV,CAAU,CAAC;wCAClD,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;4CACxC,IACE,MAAM,CAAC,MAAM,KAAK,CAAC;gDACnB,IAAI,CAAC,MAAM;gDACV,IAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gDACzC,KAAK;gDAEL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAC,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAxB,CAAwB,CAAC,CAAC,CAAC;4CAC5D,MAAM,IAAI,KAAK,CACb,iBAAU,KAAK,gCAAsB,SAAS,cAAI,MAAM,CAAC,IAAI,CAC3D,IAAI,CACL,OAAI,CACN,CAAC;wCACJ,CAAC;;;;;qBACF;gBAtBD,CAsBC;YAvBD,CAuBC;QAxBD,CAwBC;IAjCD,CAiCC,CAAC;AAqBN,CAAC,EAjnBgB,aAAa,6BAAb,aAAa,QAinB7B;AAMD,SAAS,OAAO,CAA8B,QAAkB;IAC9D,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,EAAT,CAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,KAAU;IAC5B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAa,CAAC,IAAI,KAAK,UAAU;QACzC,OAAQ,KAAa,CAAC,KAAK,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAI,IAAS,EAAE,IAA4B;IAC3D,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
package/lib/module.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./ArrayUtil";
2
+ export * from "./MapUtil";
3
+ export * from "./RandomGenerator";
2
4
  export * from "./DynamicExecutor";
3
5
  export * from "./GaffComparator";
4
- export * from "./RandomGenerator";
5
6
  export * from "./TestValidator";
package/lib/module.js CHANGED
@@ -15,8 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ArrayUtil"), exports);
18
+ __exportStar(require("./MapUtil"), exports);
19
+ __exportStar(require("./RandomGenerator"), exports);
18
20
  __exportStar(require("./DynamicExecutor"), exports);
19
21
  __exportStar(require("./GaffComparator"), exports);
20
- __exportStar(require("./RandomGenerator"), exports);
21
22
  __exportStar(require("./TestValidator"), exports);
22
23
  //# sourceMappingURL=module.js.map
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,oDAAkC;AAElC,oDAAkC;AAClC,mDAAiC;AACjC,kDAAgC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/e2e",
3
- "version": "7.4.0",
3
+ "version": "8.0.0-dev.20250829",
4
4
  "description": "E2E test utilify functions",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
package/src/ArrayUtil.ts CHANGED
@@ -3,15 +3,15 @@
3
3
  *
4
4
  * This namespace contains utility functions for array operations including
5
5
  * asynchronous processing, filtering, mapping, and repetition tasks implemented
6
- * in functional programming style. All functions are implemented using currying
7
- * to enhance reusability and composability.
6
+ * in functional programming style. Functions use direct parameter passing for
7
+ * simplicity while maintaining functional programming principles.
8
8
  *
9
9
  * @author Jeongho Nam - https://github.com/samchon
10
10
  * @example
11
11
  * ```typescript
12
12
  * // Asynchronous filtering example
13
13
  * const numbers = [1, 2, 3, 4, 5];
14
- * const evenNumbers = await ArrayUtil.asyncFilter(numbers)(
14
+ * const evenNumbers = await ArrayUtil.asyncFilter(numbers,
15
15
  * async (num) => num % 2 === 0
16
16
  * );
17
17
  * console.log(evenNumbers); // [2, 4]
@@ -22,9 +22,9 @@ export namespace ArrayUtil {
22
22
  * Filters an array by applying an asynchronous predicate function to each
23
23
  * element.
24
24
  *
25
- * This function is implemented in curried form, first taking an array and
26
- * then a predicate function. Elements are processed sequentially, ensuring
27
- * order is maintained.
25
+ * Elements are processed sequentially, ensuring order is maintained. The
26
+ * predicate function receives the element, index, and the full array as
27
+ * parameters.
28
28
  *
29
29
  * @example
30
30
  * ```typescript
@@ -34,7 +34,7 @@ export namespace ArrayUtil {
34
34
  * { id: 3, name: 'Charlie', active: true }
35
35
  * ];
36
36
  *
37
- * const activeUsers = await ArrayUtil.asyncFilter(users)(
37
+ * const activeUsers = await ArrayUtil.asyncFilter(users,
38
38
  * async (user) => {
39
39
  * // Async validation logic (e.g., API call)
40
40
  * await new Promise(resolve => setTimeout(resolve, 100));
@@ -46,25 +46,24 @@ export namespace ArrayUtil {
46
46
  *
47
47
  * @template Input - The type of elements in the input array
48
48
  * @param elements - The readonly array to filter
49
- * @returns A function that takes a predicate and returns a Promise resolving
50
- * to the filtered array
49
+ * @param pred - The asynchronous predicate function to test each element
50
+ * @returns A Promise resolving to the filtered array
51
51
  */
52
- export const asyncFilter =
53
- <Input>(elements: readonly Input[]) =>
54
- async (
55
- pred: (
56
- elem: Input,
57
- index: number,
58
- array: readonly Input[],
59
- ) => Promise<boolean>,
60
- ): Promise<Input[]> => {
61
- const ret: Input[] = [];
62
- await asyncForEach(elements)(async (elem, index, array) => {
63
- const flag: boolean = await pred(elem, index, array);
64
- if (flag === true) ret.push(elem);
65
- });
66
- return ret;
67
- };
52
+ export const asyncFilter = async <Input>(
53
+ elements: readonly Input[],
54
+ pred: (
55
+ elem: Input,
56
+ index: number,
57
+ array: readonly Input[],
58
+ ) => Promise<boolean>,
59
+ ): Promise<Input[]> => {
60
+ const ret: Input[] = [];
61
+ await asyncForEach(elements, async (elem, index, array) => {
62
+ const flag: boolean = await pred(elem, index, array);
63
+ if (flag === true) ret.push(elem);
64
+ });
65
+ return ret;
66
+ };
68
67
 
69
68
  /**
70
69
  * Executes an asynchronous function for each element in an array
@@ -79,32 +78,32 @@ export namespace ArrayUtil {
79
78
  * ```typescript
80
79
  * const urls = ['url1', 'url2', 'url3'];
81
80
  *
82
- * await ArrayUtil.asyncForEach(urls)(async (url, index) => {
83
- * console.log(`Processing ${index}: ${url}`);
84
- * const data = await fetch(url);
85
- * await processData(data);
86
- * console.log(`Completed ${index}: ${url}`);
81
+ * await ArrayUtil.asyncForEach(urls, async (url, index) => {
82
+ * console.log(`Processing ${index}: ${url}`);
83
+ * const data = await fetch(url);
84
+ * await processData(data);
85
+ * console.log(`Completed ${index}: ${url}`);
87
86
  * });
88
87
  * console.log('All URLs processed sequentially');
89
88
  * ```
90
89
  *
91
90
  * @template Input - The type of elements in the input array
92
91
  * @param elements - The readonly array to process
93
- * @returns A function that takes an async closure and returns a Promise<void>
92
+ * @param closure - The asynchronous function to execute for each element
93
+ * @returns A Promise<void> that resolves when all operations complete
94
94
  */
95
- export const asyncForEach =
96
- <Input>(elements: readonly Input[]) =>
97
- async (
98
- closure: (
99
- elem: Input,
100
- index: number,
101
- array: readonly Input[],
102
- ) => Promise<any>,
103
- ): Promise<void> => {
104
- await asyncRepeat(elements.length)((index) =>
105
- closure(elements[index], index, elements),
106
- );
107
- };
95
+ export const asyncForEach = async <Input>(
96
+ elements: readonly Input[],
97
+ closure: (
98
+ elem: Input,
99
+ index: number,
100
+ array: readonly Input[],
101
+ ) => Promise<any>,
102
+ ): Promise<void> => {
103
+ await asyncRepeat(elements.length, (index) =>
104
+ closure(elements[index], index, elements),
105
+ );
106
+ };
108
107
 
109
108
  /**
110
109
  * Transforms each element of an array using an asynchronous function to
@@ -112,24 +111,24 @@ export namespace ArrayUtil {
112
111
  *
113
112
  * Similar to JavaScript's native map but processes asynchronous functions
114
113
  * sequentially. Each element's transformation is completed before proceeding
115
- * to the next element, ensuring order is maintained.
114
+ * to the next element, ensuring order is maintained. This function still
115
+ * maintains the currying pattern for composition.
116
116
  *
117
117
  * @example
118
118
  * ```typescript
119
119
  * const userIds = [1, 2, 3, 4, 5];
120
120
  *
121
121
  * const userDetails = await ArrayUtil.asyncMap(userIds)(
122
- * async (id, index) => {
123
- * console.log(`Fetching user ${id} (${index + 1}/${userIds.length})`);
124
- * const response = await fetch(`/api/users/${id}`);
125
- * return await response.json();
126
- * }
122
+ * async (id, index) => {
123
+ * console.log(`Fetching user ${id} (${index + 1}/${userIds.length})`);
124
+ * const response = await fetch(`/api/users/${id}`);
125
+ * return await response.json();
126
+ * }
127
127
  * );
128
128
  * console.log('All users fetched:', userDetails);
129
129
  * ```
130
130
  *
131
131
  * @template Input - The type of elements in the input array
132
- * @template Output - The type of elements in the output array
133
132
  * @param elements - The readonly array to transform
134
133
  * @returns A function that takes a transformation function and returns a
135
134
  * Promise resolving to the transformed array
@@ -144,7 +143,7 @@ export namespace ArrayUtil {
144
143
  ) => Promise<Output>,
145
144
  ): Promise<Output[]> => {
146
145
  const ret: Output[] = [];
147
- await asyncForEach(elements)(async (elem, index, array) => {
146
+ await asyncForEach(elements, async (elem, index, array) => {
148
147
  const output: Output = await closure(elem, index, array);
149
148
  ret.push(output);
150
149
  });
@@ -161,7 +160,7 @@ export namespace ArrayUtil {
161
160
  * @example
162
161
  * ```typescript
163
162
  * // Generate random data 5 times
164
- * const randomData = await ArrayUtil.asyncRepeat(5)(async (index) => {
163
+ * const randomData = await ArrayUtil.asyncRepeat(5, async (index) => {
165
164
  * await new Promise(resolve => setTimeout(resolve, 100)); // Wait 0.1 seconds
166
165
  * return {
167
166
  * id: index,
@@ -172,29 +171,26 @@ export namespace ArrayUtil {
172
171
  * console.log('Generated data:', randomData);
173
172
  * ```;
174
173
  *
174
+ * @template T - The type of the result from each execution
175
175
  * @param count - The number of times to repeat (non-negative integer)
176
- * @returns A function that takes an async closure and returns a Promise
177
- * resolving to an array of results
176
+ * @param closure - The asynchronous function to execute repeatedly
177
+ * @returns A Promise resolving to an array of results
178
178
  */
179
- export const asyncRepeat =
180
- (count: number) =>
181
- async <T>(closure: (index: number) => Promise<T>): Promise<T[]> => {
182
- const indexes: number[] = new Array(count)
183
- .fill(1)
184
- .map((_, index) => index);
185
-
186
- const output: T[] = [];
187
- for (const index of indexes) output.push(await closure(index));
188
-
189
- return output;
190
- };
179
+ export const asyncRepeat = async <T>(
180
+ count: number,
181
+ closure: (index: number) => Promise<T>,
182
+ ): Promise<T[]> => {
183
+ const indexes: number[] = new Array(count).fill(1).map((_, index) => index);
184
+ const output: T[] = [];
185
+ for (const index of indexes) output.push(await closure(index));
186
+ return output;
187
+ };
191
188
 
192
189
  /**
193
190
  * Checks if at least one element in the array satisfies the given condition.
194
191
  *
195
- * Similar to JavaScript's native some() method but implemented in curried
196
- * form for better compatibility with functional programming style. Returns
197
- * true immediately when the first element satisfying the condition is found.
192
+ * Similar to JavaScript's native some() method. Returns true immediately
193
+ * when the first element satisfying the condition is found.
198
194
  *
199
195
  * @example
200
196
  * ```typescript
@@ -205,24 +201,25 @@ export namespace ArrayUtil {
205
201
  * { name: 'Orange', price: 80, inStock: true }
206
202
  * ];
207
203
  *
208
- * const hasEvenNumber = ArrayUtil.has(numbers)(num => num % 2 === 0);
204
+ * const hasEvenNumber = ArrayUtil.has(numbers, num => num % 2 === 0);
209
205
  * console.log(hasEvenNumber); // true (8 exists)
210
206
  *
211
- * const hasExpensiveItem = ArrayUtil.has(products)(product => product.price > 90);
207
+ * const hasExpensiveItem = ArrayUtil.has(products, product => product.price > 90);
212
208
  * console.log(hasExpensiveItem); // true (Apple costs 100)
213
209
  *
214
- * const hasOutOfStock = ArrayUtil.has(products)(product => !product.inStock);
210
+ * const hasOutOfStock = ArrayUtil.has(products, product => !product.inStock);
215
211
  * console.log(hasOutOfStock); // true (Banana is out of stock)
216
212
  * ```;
217
213
  *
218
214
  * @template T - The type of elements in the array
219
215
  * @param elements - The readonly array to check
220
- * @returns A function that takes a predicate and returns a boolean
216
+ * @param pred - The predicate function to test elements
217
+ * @returns Boolean indicating if any element satisfies the condition
221
218
  */
222
- export const has =
223
- <T>(elements: readonly T[]) =>
224
- (pred: (elem: T) => boolean): boolean =>
225
- elements.find(pred) !== undefined;
219
+ export const has = <T>(
220
+ elements: readonly T[],
221
+ pred: (elem: T) => boolean,
222
+ ): boolean => elements.find(pred) !== undefined;
226
223
 
227
224
  /**
228
225
  * Executes a function a specified number of times and collects the results
@@ -234,14 +231,14 @@ export namespace ArrayUtil {
234
231
  * @example
235
232
  * ```typescript
236
233
  * // Generate an array of squares from 1 to 5
237
- * const squares = ArrayUtil.repeat(5)(index => (index + 1) ** 2);
234
+ * const squares = ArrayUtil.repeat(5, index => (index + 1) ** 2);
238
235
  * console.log(squares); // [1, 4, 9, 16, 25]
239
236
  *
240
237
  * // Generate an array of default user objects
241
- * const users = ArrayUtil.repeat(3)(index => ({
242
- * id: index + 1,
243
- * name: `User${index + 1}`,
244
- * email: `user${index + 1}@example.com`
238
+ * const users = ArrayUtil.repeat(3, index => ({
239
+ * id: index + 1,
240
+ * name: `User${index + 1}`,
241
+ * email: `user${index + 1}@example.com`
245
242
  * }));
246
243
  * console.log(users);
247
244
  * // [
@@ -251,13 +248,15 @@ export namespace ArrayUtil {
251
248
  * // ]
252
249
  * ```
253
250
  *
251
+ * @template T - The type of the result from each execution
254
252
  * @param count - The number of times to repeat (non-negative integer)
255
- * @returns A function that takes a closure and returns an array of results
253
+ * @param closure - The function to execute repeatedly
254
+ * @returns An array of results
256
255
  */
257
- export const repeat =
258
- (count: number) =>
259
- <T>(closure: (index: number) => T): T[] =>
260
- new Array(count).fill("").map((_, index) => closure(index));
256
+ export const repeat = <T>(
257
+ count: number,
258
+ closure: (index: number) => T,
259
+ ): T[] => new Array(count).fill("").map((_, index) => closure(index));
261
260
 
262
261
  /**
263
262
  * Generates all possible subsets of a given array.
@@ -34,12 +34,14 @@
34
34
  * users.sort(GaffComparator.strings(user => [user.lastName, user.firstName]));
35
35
  * events.sort(GaffComparator.dates(event => [event.startDate, event.endDate]));
36
36
  *
37
- * // Integration with TestValidator
38
- * await TestValidator.sort("user sorting")(
37
+ * // Integration with TestValidator's currying pattern
38
+ * const validator = TestValidator.sort("user sorting",
39
39
  * (sortable) => api.getUsers({ sort: sortable })
40
40
  * )("name", "email")(
41
41
  * GaffComparator.strings(user => [user.name, user.email])
42
- * )("+");
42
+ * );
43
+ * await validator("+"); // ascending
44
+ * await validator("-"); // descending
43
45
  * ```;
44
46
  */
45
47
  export namespace GaffComparator {
@@ -87,12 +89,14 @@ export namespace GaffComparator {
87
89
  * // Complex multi-field: status, then last name, then first name
88
90
  * users.sort(GaffComparator.strings(user => [user.status, user.lastName, user.firstName]));
89
91
  *
90
- * // Integration with API sorting validation
91
- * await TestValidator.sort("user name sorting")(
92
+ * // Integration with TestValidator sorting validation
93
+ * const sortValidator = TestValidator.sort("user name sorting",
92
94
  * (sortFields) => userApi.getUsers({ sort: sortFields })
93
95
  * )("lastName", "firstName")(
94
96
  * GaffComparator.strings(user => [user.lastName, user.firstName])
95
- * )("+");
97
+ * );
98
+ * await sortValidator("+"); // test ascending order
99
+ * await sortValidator("-"); // test descending order
96
100
  * ```;
97
101
  *
98
102
  * @template T - The type of objects being compared
@@ -165,12 +169,13 @@ export namespace GaffComparator {
165
169
  * // Sort by modification history: created date, then updated date
166
170
  * events.sort(GaffComparator.dates(event => [event.createdAt, event.updatedAt]));
167
171
  *
168
- * // Validate API date sorting
169
- * await TestValidator.sort("event chronological sorting")(
172
+ * // Validate API date sorting with TestValidator
173
+ * const dateValidator = TestValidator.sort("event chronological sorting",
170
174
  * (sortFields) => eventApi.getEvents({ sort: sortFields })
171
175
  * )("startDate")(
172
176
  * GaffComparator.dates(event => event.startDate)
173
- * )("+");
177
+ * );
178
+ * await dateValidator("+", true); // ascending with trace logging
174
179
  *
175
180
  * // Test complex date-based sorting
176
181
  * const sortByEventSchedule = GaffComparator.dates(event => [
@@ -245,12 +250,14 @@ export namespace GaffComparator {
245
250
  * // Sort by inventory priority: low stock first, then by sales
246
251
  * products.sort(GaffComparator.numbers(product => [product.stock, -product.salesCount]));
247
252
  *
248
- * // Validate API numerical sorting
249
- * await TestValidator.sort("product price sorting")(
253
+ * // Validate API numerical sorting with TestValidator
254
+ * const priceValidator = TestValidator.sort("product price sorting",
250
255
  * (sortFields) => productApi.getProducts({ sort: sortFields })
251
256
  * )("price")(
252
257
  * GaffComparator.numbers(product => product.price)
253
- * )("+");
258
+ * );
259
+ * await priceValidator("+"); // test ascending order
260
+ * await priceValidator("-"); // test descending order
254
261
  *
255
262
  * // Test multi-criteria sorting
256
263
  * const sortByBusinessValue = GaffComparator.numbers(product => [
package/src/MapUtil.ts ADDED
@@ -0,0 +1,86 @@
1
+ /**
2
+ * A namespace providing utility functions for Map manipulation.
3
+ *
4
+ * This namespace contains helper functions for working with JavaScript Map
5
+ * objects, providing convenient methods for common Map operations like
6
+ * retrieving values with lazy initialization.
7
+ *
8
+ * @author Jeongho Nam - https://github.com/samchon
9
+ * @example
10
+ * ```typescript
11
+ * // Create a cache with lazy initialization
12
+ * const cache = new Map<string, ExpensiveObject>();
13
+ *
14
+ * const obj = MapUtil.take(cache, "key1", () => {
15
+ * console.log("Creating expensive object...");
16
+ * return new ExpensiveObject();
17
+ * });
18
+ *
19
+ * // Subsequent calls return cached value without re-creating
20
+ * const sameObj = MapUtil.take(cache, "key1", () => new ExpensiveObject());
21
+ * console.log(obj === sameObj); // true
22
+ * ```;
23
+ */
24
+ export namespace MapUtil {
25
+ /**
26
+ * Retrieves a value from a Map or creates it using a lazy initialization
27
+ * function.
28
+ *
29
+ * This function implements the "get or create" pattern for Maps. If the key
30
+ * exists in the Map, it returns the existing value. Otherwise, it calls the
31
+ * provided factory function to create a new value, stores it in the Map, and
32
+ * returns it. The factory function is only called when the key doesn't exist,
33
+ * enabling lazy initialization and caching patterns.
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Simple caching example
38
+ * const userCache = new Map<number, User>();
39
+ *
40
+ * const user = MapUtil.take(userCache, userId, () => {
41
+ * // This expensive operation only runs if userId is not cached
42
+ * return fetchUserFromDatabase(userId);
43
+ * });
44
+ *
45
+ * // Configuration object caching
46
+ * const configs = new Map<string, Config>();
47
+ *
48
+ * const dbConfig = MapUtil.take(configs, "database", () => ({
49
+ * host: "localhost",
50
+ * port: 5432,
51
+ * database: "myapp"
52
+ * }));
53
+ *
54
+ * // Lazy computation results
55
+ * const computationCache = new Map<string, number>();
56
+ *
57
+ * const result = MapUtil.take(computationCache, "fibonacci-40", () => {
58
+ * console.log("Computing fibonacci(40)...");
59
+ * return fibonacci(40); // Only computed once
60
+ * });
61
+ *
62
+ * // Using with complex keys
63
+ * const cache = new Map<[number, number], Matrix>();
64
+ * const key: [number, number] = [rows, cols];
65
+ *
66
+ * const matrix = MapUtil.take(cache, key, () =>
67
+ * generateIdentityMatrix(rows, cols)
68
+ * );
69
+ * ```;
70
+ *
71
+ * @template K - The type of keys in the Map
72
+ * @template V - The type of values in the Map
73
+ * @param map - The Map to retrieve from or update
74
+ * @param key - The key to look up in the Map
75
+ * @param value - A factory function that creates the value if key doesn't exist
76
+ * @returns The existing value if found, or the newly created value
77
+ */
78
+ export function take<K, V>(map: Map<K, V>, key: K, value: () => V): V {
79
+ if (map.has(key)) {
80
+ return map.get(key) as V;
81
+ }
82
+ const newValue = value();
83
+ map.set(key, newValue);
84
+ return newValue;
85
+ }
86
+ }