@hyperlane-xyz/utils 13.0.0 → 13.1.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.
- package/dist/arrays.d.ts +1 -0
- package/dist/arrays.d.ts.map +1 -1
- package/dist/arrays.js +4 -0
- package/dist/arrays.js.map +1 -1
- package/dist/arrays.test.js +33 -1
- package/dist/arrays.test.js.map +1 -1
- package/dist/eslint-rules/index.d.ts +41 -0
- package/dist/eslint-rules/index.d.ts.map +1 -1
- package/dist/eslint-rules/index.js +7 -0
- package/dist/eslint-rules/index.js.map +1 -1
- package/dist/eslint-rules/sort-yaml-arrays.d.ts +39 -0
- package/dist/eslint-rules/sort-yaml-arrays.d.ts.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.js +74 -0
- package/dist/eslint-rules/sort-yaml-arrays.js.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.d.ts +2 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.d.ts.map +1 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.js +621 -0
- package/dist/eslint-rules/sort-yaml-arrays.test.js.map +1 -0
- package/dist/yaml.d.ts +19 -0
- package/dist/yaml.d.ts.map +1 -1
- package/dist/yaml.js +276 -1
- package/dist/yaml.js.map +1 -1
- package/dist/yaml.test.js +491 -1
- package/dist/yaml.test.js.map +1 -1
- package/package.json +2 -1
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
|
package/dist/arrays.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"
|
|
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
|
package/dist/arrays.js.map
CHANGED
|
@@ -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"}
|
package/dist/arrays.test.js
CHANGED
|
@@ -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
|
package/dist/arrays.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.test.js","sourceRoot":"","sources":["../src/arrays.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
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":"
|
|
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;
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"sort-yaml-arrays.test.d.ts","sourceRoot":"","sources":["../../src/eslint-rules/sort-yaml-arrays.test.ts"],"names":[],"mappings":""}
|