@hyperlane-xyz/utils 13.0.0 → 13.1.1

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/dist/arrays.d.ts CHANGED
@@ -5,5 +5,6 @@ interface Sliceable {
5
5
  export declare function chunk<T extends Sliceable>(str: T, size: number): T[];
6
6
  export declare function exclude<T>(item: T, list: T[]): T[];
7
7
  export declare function randomElement<T>(list: T[]): T;
8
+ export declare function sortArrayByKey<T extends Record<keyof T, any>>(array: T[], sortKey: keyof T): T[];
8
9
  export {};
9
10
  //# sourceMappingURL=arrays.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"AAEA,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;CACtC;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,OAM9D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAE5C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAEzC"}
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"AAIA,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;CACtC;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,OAM9D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAE5C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAEzC;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAC3D,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,EAAE,MAAM,CAAC,GACf,CAAC,EAAE,CAEL"}
package/dist/arrays.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { sortBy } from 'lodash-es';
1
2
  import { randomInt } from './math.js';
2
3
  export function chunk(str, size) {
3
4
  const R = [];
@@ -12,4 +13,7 @@ export function exclude(item, list) {
12
13
  export function randomElement(list) {
13
14
  return list[randomInt(list.length)];
14
15
  }
16
+ export function sortArrayByKey(array, sortKey) {
17
+ return sortBy(array, [(item) => item[sortKey]]);
18
+ }
15
19
  //# sourceMappingURL=arrays.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOtC,MAAM,UAAU,KAAK,CAAsB,GAAM,EAAE,IAAY;IAC7D,MAAM,CAAC,GAAa,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,IAAO,EAAE,IAAS;IAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,IAAS;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOtC,MAAM,UAAU,KAAK,CAAsB,GAAM,EAAE,IAAY;IAC7D,MAAM,CAAC,GAAa,EAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,IAAO,EAAE,IAAS;IAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,IAAS;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAU,EACV,OAAgB;IAEhB,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai';
2
- import { chunk, exclude, randomElement } from './arrays.js';
2
+ import { chunk, exclude, randomElement, sortArrayByKey } from './arrays.js';
3
3
  describe('Arrays utilities', () => {
4
4
  describe('chunk', () => {
5
5
  it('should split an array into chunks of the specified size', () => {
@@ -41,5 +41,37 @@ describe('Arrays utilities', () => {
41
41
  expect(result).to.be.undefined;
42
42
  });
43
43
  });
44
+ describe('sortArrayByKey', () => {
45
+ it('should sort objects by string key in ascending order', () => {
46
+ const array = [
47
+ { name: 'Charlie', id: 3 },
48
+ { name: 'Alice', id: 1 },
49
+ { name: 'Bob', id: 2 },
50
+ ];
51
+ const result = sortArrayByKey(array, 'name');
52
+ expect(result).to.deep.equal([
53
+ { name: 'Alice', id: 1 },
54
+ { name: 'Bob', id: 2 },
55
+ { name: 'Charlie', id: 3 },
56
+ ]);
57
+ });
58
+ it('should sort objects by numeric key in ascending order', () => {
59
+ const array = [
60
+ { name: 'Charlie', value: 30 },
61
+ { name: 'Alice', value: 10 },
62
+ { name: 'Bob', value: 20 },
63
+ ];
64
+ const result = sortArrayByKey(array, 'value');
65
+ expect(result).to.deep.equal([
66
+ { name: 'Alice', value: 10 },
67
+ { name: 'Bob', value: 20 },
68
+ { name: 'Charlie', value: 30 },
69
+ ]);
70
+ });
71
+ it('should return an empty array when input is empty', () => {
72
+ const result = sortArrayByKey([], 'any');
73
+ expect(result).to.deep.equal([]);
74
+ });
75
+ });
44
76
  });
45
77
  //# sourceMappingURL=arrays.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.test.js","sourceRoot":"","sources":["../src/arrays.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arrays.test.js","sourceRoot":"","sources":["../src/arrays.test.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,45 @@ export declare const importRestrictionsPlugin: {
4
4
  'no-restricted-imports-from-exports': import("eslint").Rule.RuleModule;
5
5
  };
6
6
  };
7
+ export declare const sortYamlArraysPlugin: {
8
+ name: string;
9
+ rules: {
10
+ 'sort-yaml-arrays': {
11
+ meta: {
12
+ type: string;
13
+ docs: {
14
+ description: string;
15
+ category: string;
16
+ recommended: boolean;
17
+ url: null;
18
+ };
19
+ fixable: string;
20
+ schema: {
21
+ type: string;
22
+ properties: {
23
+ arrays: {
24
+ type: string;
25
+ items: {
26
+ type: string;
27
+ properties: {
28
+ path: {
29
+ type: string;
30
+ };
31
+ sortKey: {
32
+ type: string;
33
+ };
34
+ };
35
+ required: string[];
36
+ };
37
+ };
38
+ };
39
+ additionalProperties: boolean;
40
+ }[];
41
+ };
42
+ create(context: import("eslint").Rule.RuleContext): {
43
+ Program(node: import("eslint").Rule.Node): void;
44
+ };
45
+ };
46
+ };
47
+ };
7
48
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB;;;;;CAKpC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB;;;;;CAKpC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAC"}
@@ -1,8 +1,15 @@
1
1
  import noRestrictedImportsFromExports from './no-restricted-imports-from-exports.js';
2
+ import sortYamlArrays from './sort-yaml-arrays.js';
2
3
  export const importRestrictionsPlugin = {
3
4
  name: '@hyperlane/import-restrictions',
4
5
  rules: {
5
6
  'no-restricted-imports-from-exports': noRestrictedImportsFromExports,
6
7
  },
7
8
  };
9
+ export const sortYamlArraysPlugin = {
10
+ name: '@hyperlane/sort-yaml-arrays',
11
+ rules: {
12
+ 'sort-yaml-arrays': sortYamlArrays,
13
+ },
14
+ };
8
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint-rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,8BAA8B,MAAM,yCAAyC,CAAC;AAErF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,gCAAgC;IACtC,KAAK,EAAE;QACL,oCAAoC,EAAE,8BAA8B;KACrE;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint-rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,8BAA8B,MAAM,yCAAyC,CAAC;AACrF,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,gCAAgC;IACtC,KAAK,EAAE;QACL,oCAAoC,EAAE,8BAA8B;KACrE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,6BAA6B;IACnC,KAAK,EAAE;QACL,kBAAkB,EAAE,cAAc;KACnC;CACF,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Rule } from 'eslint';
2
+ declare const _default: {
3
+ meta: {
4
+ type: string;
5
+ docs: {
6
+ description: string;
7
+ category: string;
8
+ recommended: boolean;
9
+ url: null;
10
+ };
11
+ fixable: string;
12
+ schema: {
13
+ type: string;
14
+ properties: {
15
+ arrays: {
16
+ type: string;
17
+ items: {
18
+ type: string;
19
+ properties: {
20
+ path: {
21
+ type: string;
22
+ };
23
+ sortKey: {
24
+ type: string;
25
+ };
26
+ };
27
+ required: string[];
28
+ };
29
+ };
30
+ };
31
+ additionalProperties: boolean;
32
+ }[];
33
+ };
34
+ create(context: Rule.RuleContext): {
35
+ Program(node: Rule.Node): void;
36
+ };
37
+ };
38
+ export default _default;
39
+ //# sourceMappingURL=sort-yaml-arrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-yaml-arrays.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/sort-yaml-arrays.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmCZ,KAAK,WAAW;sBAQd,SAAS;;;AAtC7B,wBAiFE"}
@@ -0,0 +1,74 @@
1
+ import YAML from 'yaml';
2
+ import { sortNestedArrays, transformYaml } from '../yaml.js';
3
+ export default {
4
+ meta: {
5
+ type: 'layout',
6
+ docs: {
7
+ description: 'Sort YAML arrays based on specified keys',
8
+ category: 'Stylistic Issues',
9
+ recommended: true,
10
+ url: null,
11
+ },
12
+ fixable: 'code',
13
+ schema: [
14
+ {
15
+ type: 'object',
16
+ properties: {
17
+ arrays: {
18
+ type: 'array',
19
+ items: {
20
+ type: 'object',
21
+ properties: {
22
+ path: { type: 'string' },
23
+ sortKey: { type: 'string' },
24
+ },
25
+ required: ['path', 'sortKey'],
26
+ },
27
+ },
28
+ },
29
+ additionalProperties: false,
30
+ },
31
+ ],
32
+ },
33
+ create(context) {
34
+ const sourceCode = context.sourceCode;
35
+ const options = context.options[0] || {};
36
+ const sortConfig = {
37
+ arrays: options.arrays || [],
38
+ };
39
+ return {
40
+ Program(node) {
41
+ if (!context.filename.endsWith('.yaml') &&
42
+ !context.filename.endsWith('.yml')) {
43
+ return;
44
+ }
45
+ try {
46
+ const yamlText = sourceCode.getText();
47
+ const yamlData = YAML.parse(yamlText);
48
+ if (!yamlData)
49
+ return;
50
+ const sortedData = sortNestedArrays(yamlData, sortConfig);
51
+ const sortedYaml = YAML.stringify(sortedData);
52
+ const originalYaml = YAML.stringify(yamlData);
53
+ if (sortedYaml !== originalYaml) {
54
+ context.report({
55
+ node,
56
+ message: 'YAML arrays should be sorted by specified keys',
57
+ fix(fixer) {
58
+ const finalText = transformYaml(sourceCode.getText(), (data) => sortNestedArrays(data, sortConfig));
59
+ return fixer.replaceText(node, finalText.trimEnd());
60
+ },
61
+ });
62
+ }
63
+ }
64
+ catch (error) {
65
+ context.report({
66
+ node,
67
+ message: `Error processing YAML: ${error instanceof Error ? error.message : String(error)}`,
68
+ });
69
+ }
70
+ },
71
+ };
72
+ },
73
+ };
74
+ //# sourceMappingURL=sort-yaml-arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-yaml-arrays.js","sourceRoot":"","sources":["../../src/eslint-rules/sort-yaml-arrays.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAmB,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9E,eAAe;IACb,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE;YACJ,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE,IAAI;SACV;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC5B;4BACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;yBAC9B;qBACF;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,MAAM,CAAC,OAAyB;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,UAAU,GAAoB;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;QAEF,OAAO;YACL,OAAO,CAAC,IAAe;gBACrB,IACE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACnC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAClC,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAEtC,IAAI,CAAC,QAAQ;wBAAE,OAAO;oBAEtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAE1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAE9C,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;wBAChC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI;4BACJ,OAAO,EAAE,gDAAgD;4BACzD,GAAG,CAAC,KAAqB;gCACvB,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAC7D,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CACnC,CAAC;gCAEF,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;4BACtD,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,OAAO,EAAE,0BACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;qBACH,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sort-yaml-arrays.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-yaml-arrays.test.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/sort-yaml-arrays.test.ts"],"names":[],"mappings":""}