@squiz/optimization-utils 3.1.1 → 3.2.0

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.
@@ -26,4 +26,27 @@ describe('Chunkify Function', () => {
26
26
  expect(() => (0, chunkify_1.chunkify)(input, size)).toThrow('Size must be greater than 0');
27
27
  });
28
28
  });
29
+ describe('truncateTo', () => {
30
+ it('should truncate the array to the specified length', () => {
31
+ expect((0, chunkify_1.truncateTo)([1, 2, 3, 4, 5], 3)).toEqual([1, 2, 3]);
32
+ });
33
+ it('should return the original array if length is greater than array size', () => {
34
+ expect((0, chunkify_1.truncateTo)([1, 2, 3], 5)).toEqual([1, 2, 3]);
35
+ });
36
+ it('should return an empty array if length is 0', () => {
37
+ expect((0, chunkify_1.truncateTo)([1, 2, 3], 0)).toEqual([]);
38
+ });
39
+ it('should return an empty array if the input array is empty', () => {
40
+ expect((0, chunkify_1.truncateTo)([], 5)).toEqual([]);
41
+ });
42
+ it('should not mutate the original array', () => {
43
+ const array = [1, 2, 3, 4];
44
+ const copy = [...array];
45
+ (0, chunkify_1.truncateTo)(array, 2);
46
+ expect(array).toEqual(copy);
47
+ });
48
+ it('should return an empty array if length is negative', () => {
49
+ expect((0, chunkify_1.truncateTo)([1, 2, 3], -1)).toEqual([]);
50
+ });
51
+ });
29
52
  //# sourceMappingURL=chunkify.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunkify.test.js","sourceRoot":"","sources":["../../../src/array/__tests__/chunkify.test.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AAEvC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC;QACf,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,CAAC,IAAA,mBAAQ,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC;QACf,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,IAAA,mBAAQ,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,CAAC;QACf,MAAM,cAAc,GAAyB,EAAE,CAAC;QAEhD,MAAM,CAAC,IAAA,mBAAQ,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC;QAEf,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAQ,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"chunkify.test.js","sourceRoot":"","sources":["../../../src/array/__tests__/chunkify.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export declare const chunkify: <T>(input: Array<T>, size: number) => Array<Array<T>>;
2
+ export declare const truncateTo: <T>(array: Array<T>, length: number) => Array<T>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chunkify = void 0;
3
+ exports.truncateTo = exports.chunkify = void 0;
4
4
  const chunkify = (input, size) => {
5
5
  if (size === 0) {
6
6
  throw new RangeError(`Size must be greater than 0`);
@@ -12,4 +12,6 @@ const chunkify = (input, size) => {
12
12
  return result;
13
13
  };
14
14
  exports.chunkify = chunkify;
15
+ const truncateTo = (array, length) => [...array].splice(0, length);
16
+ exports.truncateTo = truncateTo;
15
17
  //# sourceMappingURL=chunkify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunkify.js","sourceRoot":"","sources":["../../src/array/chunkify.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAI,KAAe,EAAE,IAAY,EAAmB,EAAE;IAC5E,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAZW,QAAA,QAAQ,YAYnB"}
1
+ {"version":3,"file":"chunkify.js","sourceRoot":"","sources":["../../src/array/chunkify.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAI,KAAe,EAAE,IAAY,EAAmB,EAAE;IAC5E,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAZW,QAAA,QAAQ,YAYnB;AAEK,MAAM,UAAU,GAAG,CAAI,KAAe,EAAE,MAAc,EAAY,EAAE,CACzE,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AADlB,QAAA,UAAU,cACQ"}
@@ -1,2 +1,2 @@
1
1
  export * from './chunkify';
2
- export * from './uniqueWith';
2
+ export * from './unique';
@@ -15,5 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./chunkify"), exports);
18
- __exportStar(require("./uniqueWith"), exports);
18
+ __exportStar(require("./unique"), exports);
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAAyB"}
@@ -0,0 +1,2 @@
1
+ export declare const unique: <T>(arr: Array<T>, fn: (a: T, b: T) => boolean) => Array<T>;
2
+ export declare const uniq: <T>(arr: Array<T>) => Array<T>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uniq = exports.unique = void 0;
4
+ const unique = (arr, fn) => arr.filter((element, index) => arr.findIndex((step) => fn(element, step)) === index);
5
+ exports.unique = unique;
6
+ const uniq = (arr) => [...new Set(arr)];
7
+ exports.uniq = uniq;
8
+ //# sourceMappingURL=unique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique.js","sourceRoot":"","sources":["../../src/array/unique.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CACpB,GAAa,EACb,EAA2B,EACjB,EAAE,CACZ,GAAG,CAAC,MAAM,CACR,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,CACzE,CAAC;AANS,QAAA,MAAM,UAMf;AAEG,MAAM,IAAI,GAAG,CAAI,GAAa,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAAzD,QAAA,IAAI,QAAqD"}
package/dist/index.d.ts CHANGED
@@ -2,4 +2,4 @@ export * from './types/class-utilities-types';
2
2
  export * from './object/getProperty';
3
3
  export * from './data-structures/Result';
4
4
  export * from './array/chunkify';
5
- export * from './array/uniqueWith';
5
+ export * from './array/unique';
package/dist/index.js CHANGED
@@ -18,5 +18,5 @@ __exportStar(require("./types/class-utilities-types"), exports);
18
18
  __exportStar(require("./object/getProperty"), exports);
19
19
  __exportStar(require("./data-structures/Result"), exports);
20
20
  __exportStar(require("./array/chunkify"), exports);
21
- __exportStar(require("./array/uniqueWith"), exports);
21
+ __exportStar(require("./array/unique"), exports);
22
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,mDAAiC;AACjC,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,mDAAiC;AACjC,iDAA+B"}
@@ -0,0 +1,5 @@
1
+ import { Logger } from '@squiz/optimization-logger';
2
+ export declare const createPerf: (logger?: Logger) => <T>(callback: () => T | Promise<T>, label: string) => T | Promise<T>;
3
+ export declare function perf<T>(callback: () => T, label: string, logger?: Logger): T;
4
+ export declare function perf<T>(callback: () => Promise<T>, label: string, logger?: Logger): Promise<T>;
5
+ export declare function LogPerf(customLabel?: string): MethodDecorator;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createPerf = void 0;
37
+ exports.perf = perf;
38
+ exports.LogPerf = LogPerf;
39
+ const optimization_logger_1 = require("@squiz/optimization-logger");
40
+ const util = __importStar(require("node:util"));
41
+ const inversify_1 = require("inversify");
42
+ const createPerf = (logger) => (callback, label) => perf(callback, label, logger);
43
+ exports.createPerf = createPerf;
44
+ function perf(callback, label, logger) {
45
+ const start = performance.now();
46
+ logger = logger ? logger : (0, optimization_logger_1.createLogger)();
47
+ const result = callback();
48
+ const logPerformance = () => {
49
+ const end = performance.now();
50
+ const duration = (end - start).toFixed(2);
51
+ logger.debug({
52
+ message: `Execution of ${label} took ${duration} ms`,
53
+ duration,
54
+ label,
55
+ });
56
+ };
57
+ if (util.types.isPromise(result)) {
58
+ return result.then((res) => {
59
+ logPerformance();
60
+ return res;
61
+ });
62
+ }
63
+ logPerformance();
64
+ return result;
65
+ }
66
+ function LogPerf(customLabel) {
67
+ return function (target, propertyKey, descriptor) {
68
+ const originalMethod = descriptor.value;
69
+ const label = customLabel
70
+ ? customLabel
71
+ : `${target.constructor.name}.${propertyKey}`;
72
+ const injection = (0, inversify_1.inject)(optimization_logger_1.Logger);
73
+ const loggerSymbol = Symbol('logger');
74
+ injection(target, loggerSymbol);
75
+ descriptor.value = function (...args) {
76
+ const logger = this[loggerSymbol];
77
+ return perf(() => {
78
+ return originalMethod.apply(this, args);
79
+ }, label, logger);
80
+ };
81
+ };
82
+ }
83
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/measurement/performance.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,oBAiCC;AAED,0BA2BC;AA9ED,oEAAkE;AAClE,gDAAkC;AAClC,yCAAmC;AAE5B,MAAM,UAAU,GACrB,CAAC,MAAe,EAAE,EAAE,CACpB,CAAI,QAA8B,EAAE,KAAa,EAAkB,EAAE,CACnE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAHrB,QAAA,UAAU,cAGW;AASlC,SAAgB,IAAI,CAClB,QAA8B,EAC9B,KAAa,EACb,MAAe;IAEf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEhC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,kCAAY,GAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;IAE1B,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,KAAK,CAAC;YACX,OAAO,EAAE,gBAAgB,KAAK,SAAS,QAAQ,KAAK;YACpD,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,cAAc,EAAE,CAAC;YAEjB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,EAAE,CAAC;IAEjB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,OAAO,CAAC,WAAoB;IAC1C,OAAO,UAAU,MAAM,EAAE,WAAW,EAAE,UAA8B;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,MAAM,KAAK,GAAG,WAAW;YACvB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,WAAqB,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAA,kBAAM,EAAC,4BAAM,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEhC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAoB;YAClD,MAAM,MAAM,GAAI,IAA+C,CAC7D,YAAY,CACb,CAAC;YAEF,OAAO,IAAI,CACT,GAAG,EAAE;gBACH,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC,EACD,KAAK,EACL,MAAM,CACP,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  type MethodKeysOrNever<T> = {
2
- [K in keyof T]: T[K] extends Function ? K : never;
2
+ [K in keyof T]: T[K] extends (...args: Array<unknown>) => unknown ? K : never;
3
3
  };
4
4
  export type MethodKeys<T> = MethodKeysOrNever<T>[keyof T];
5
5
  export type ClassFields<T> = Omit<T, Exclude<MethodKeys<T>, undefined>>;
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@squiz/optimization-utils",
3
- "version": "3.1.1",
3
+ "version": "3.2.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "repository": "https://gitlab.squiz.net/optimization/optimization-utils",
8
8
  "scripts": {
9
- "build": "tsc",
9
+ "build": "tsc -p ./tsconfig-package.json",
10
10
  "build:check": "tsc --noEmit",
11
- "exports:generate": "node ../../scripts/generate-barrels.mjs && prettier -w ./src/index.ts"
11
+ "exports:generate": "opti-build-utils exports:generate --config ../../generate-barrels.json && prettier -w ./src/index.ts"
12
12
  },
13
13
  "exports": {
14
14
  ".": {
@@ -33,6 +33,10 @@
33
33
  },
34
34
  "dependencies": {},
35
35
  "devDependencies": {},
36
+ "peerDependencies": {
37
+ "inversify": "^7.0.1",
38
+ "@squiz/optimization-logger": "^1.7.1"
39
+ },
36
40
  "author": "",
37
41
  "license": "ISC"
38
42
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "exclude": ["dist", "**/*.spec.ts"]
4
+ }
@@ -1 +0,0 @@
1
- export declare const uniqueWith: <T>(arr: Array<T>, fn: (a: T, b: T) => boolean) => Array<T>;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uniqueWith = void 0;
4
- const uniqueWith = (arr, fn) => arr.filter((element, index) => arr.findIndex((step) => fn(element, step)) === index);
5
- exports.uniqueWith = uniqueWith;
6
- //# sourceMappingURL=uniqueWith.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uniqueWith.js","sourceRoot":"","sources":["../../src/array/uniqueWith.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CACxB,GAAa,EACb,EAA2B,EACjB,EAAE,CACZ,GAAG,CAAC,MAAM,CACR,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,CACzE,CAAC;AANS,QAAA,UAAU,cAMnB"}