@hyperlane-xyz/utils 28.1.0 → 29.0.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.
Files changed (116) hide show
  1. package/dist/addresses.d.ts +1 -1
  2. package/dist/addresses.d.ts.map +1 -1
  3. package/dist/addresses.js +5 -7
  4. package/dist/addresses.js.map +1 -1
  5. package/dist/validator.d.ts.map +1 -1
  6. package/dist/validator.js +7 -4
  7. package/dist/validator.js.map +1 -1
  8. package/package.json +7 -5
  9. package/dist/addresses.test.d.ts +0 -2
  10. package/dist/addresses.test.d.ts.map +0 -1
  11. package/dist/addresses.test.js +0 -124
  12. package/dist/addresses.test.js.map +0 -1
  13. package/dist/amount.test.d.ts +0 -2
  14. package/dist/amount.test.d.ts.map +0 -1
  15. package/dist/amount.test.js +0 -113
  16. package/dist/amount.test.js.map +0 -1
  17. package/dist/arrays.test.d.ts +0 -2
  18. package/dist/arrays.test.d.ts.map +0 -1
  19. package/dist/arrays.test.js +0 -77
  20. package/dist/arrays.test.js.map +0 -1
  21. package/dist/async.test.d.ts +0 -2
  22. package/dist/async.test.d.ts.map +0 -1
  23. package/dist/async.test.js +0 -335
  24. package/dist/async.test.js.map +0 -1
  25. package/dist/base58.test.d.ts +0 -2
  26. package/dist/base58.test.d.ts.map +0 -1
  27. package/dist/base58.test.js +0 -31
  28. package/dist/base58.test.js.map +0 -1
  29. package/dist/base64.test.d.ts +0 -2
  30. package/dist/base64.test.d.ts.map +0 -1
  31. package/dist/base64.test.js +0 -54
  32. package/dist/base64.test.js.map +0 -1
  33. package/dist/big-numbers.test.d.ts +0 -2
  34. package/dist/big-numbers.test.d.ts.map +0 -1
  35. package/dist/big-numbers.test.js +0 -96
  36. package/dist/big-numbers.test.js.map +0 -1
  37. package/dist/checkpoints.test.d.ts +0 -2
  38. package/dist/checkpoints.test.d.ts.map +0 -1
  39. package/dist/checkpoints.test.js +0 -105
  40. package/dist/checkpoints.test.js.map +0 -1
  41. package/dist/env.test.d.ts +0 -2
  42. package/dist/env.test.d.ts.map +0 -1
  43. package/dist/env.test.js +0 -16
  44. package/dist/env.test.js.map +0 -1
  45. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts +0 -2
  46. package/dist/eslint-rules/no-restricted-imports-from-exports.test.d.ts.map +0 -1
  47. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js +0 -259
  48. package/dist/eslint-rules/no-restricted-imports-from-exports.test.js.map +0 -1
  49. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts +0 -2
  50. package/dist/eslint-rules/sort-yaml-arrays.test.d.ts.map +0 -1
  51. package/dist/eslint-rules/sort-yaml-arrays.test.js +0 -629
  52. package/dist/eslint-rules/sort-yaml-arrays.test.js.map +0 -1
  53. package/dist/fs/format.test.d.ts +0 -2
  54. package/dist/fs/format.test.d.ts.map +0 -1
  55. package/dist/fs/format.test.js +0 -153
  56. package/dist/fs/format.test.js.map +0 -1
  57. package/dist/fs/json.test.d.ts +0 -2
  58. package/dist/fs/json.test.d.ts.map +0 -1
  59. package/dist/fs/json.test.js +0 -148
  60. package/dist/fs/json.test.js.map +0 -1
  61. package/dist/fs/utils.test.d.ts +0 -2
  62. package/dist/fs/utils.test.d.ts.map +0 -1
  63. package/dist/fs/utils.test.js +0 -120
  64. package/dist/fs/utils.test.js.map +0 -1
  65. package/dist/fs/yaml.test.d.ts +0 -2
  66. package/dist/fs/yaml.test.d.ts.map +0 -1
  67. package/dist/fs/yaml.test.js +0 -134
  68. package/dist/fs/yaml.test.js.map +0 -1
  69. package/dist/ids.test.d.ts +0 -2
  70. package/dist/ids.test.d.ts.map +0 -1
  71. package/dist/ids.test.js +0 -39
  72. package/dist/ids.test.js.map +0 -1
  73. package/dist/lazy.test.d.ts +0 -2
  74. package/dist/lazy.test.d.ts.map +0 -1
  75. package/dist/lazy.test.js +0 -129
  76. package/dist/lazy.test.js.map +0 -1
  77. package/dist/logging.test.d.ts +0 -2
  78. package/dist/logging.test.d.ts.map +0 -1
  79. package/dist/logging.test.js +0 -35
  80. package/dist/logging.test.js.map +0 -1
  81. package/dist/math.test.d.ts +0 -2
  82. package/dist/math.test.d.ts.map +0 -1
  83. package/dist/math.test.js +0 -45
  84. package/dist/math.test.js.map +0 -1
  85. package/dist/objects.test.d.ts +0 -2
  86. package/dist/objects.test.d.ts.map +0 -1
  87. package/dist/objects.test.js +0 -655
  88. package/dist/objects.test.js.map +0 -1
  89. package/dist/rpc.test.d.ts +0 -2
  90. package/dist/rpc.test.d.ts.map +0 -1
  91. package/dist/rpc.test.js +0 -49
  92. package/dist/rpc.test.js.map +0 -1
  93. package/dist/sets.test.d.ts +0 -2
  94. package/dist/sets.test.d.ts.map +0 -1
  95. package/dist/sets.test.js +0 -35
  96. package/dist/sets.test.js.map +0 -1
  97. package/dist/strings.test.d.ts +0 -2
  98. package/dist/strings.test.d.ts.map +0 -1
  99. package/dist/strings.test.js +0 -42
  100. package/dist/strings.test.js.map +0 -1
  101. package/dist/typeof.test.d.ts +0 -2
  102. package/dist/typeof.test.d.ts.map +0 -1
  103. package/dist/typeof.test.js +0 -34
  104. package/dist/typeof.test.js.map +0 -1
  105. package/dist/url.test.d.ts +0 -2
  106. package/dist/url.test.d.ts.map +0 -1
  107. package/dist/url.test.js +0 -29
  108. package/dist/url.test.js.map +0 -1
  109. package/dist/validation.test.d.ts +0 -2
  110. package/dist/validation.test.d.ts.map +0 -1
  111. package/dist/validation.test.js +0 -11
  112. package/dist/validation.test.js.map +0 -1
  113. package/dist/yaml.test.d.ts +0 -2
  114. package/dist/yaml.test.d.ts.map +0 -1
  115. package/dist/yaml.test.js +0 -519
  116. package/dist/yaml.test.js.map +0 -1
@@ -1,153 +0,0 @@
1
- import { expect } from 'chai';
2
- import fs from 'fs';
3
- import os from 'os';
4
- import path from 'path';
5
- import { indentYamlOrJson, mergeYamlOrJson, readYamlOrJson, resolveFileFormat, writeYamlOrJson, } from './format.js';
6
- describe('Format utilities', () => {
7
- const testDir = path.join(os.tmpdir(), 'hyperlane-format-test');
8
- beforeEach(() => {
9
- if (fs.existsSync(testDir)) {
10
- fs.rmSync(testDir, { recursive: true });
11
- }
12
- fs.mkdirSync(testDir, { recursive: true });
13
- });
14
- afterEach(() => {
15
- if (fs.existsSync(testDir)) {
16
- fs.rmSync(testDir, { recursive: true });
17
- }
18
- });
19
- describe('resolveFileFormat', () => {
20
- it('returns json for .json extension', () => {
21
- expect(resolveFileFormat('file.json')).to.equal('json');
22
- });
23
- it('returns yaml for .yaml extension', () => {
24
- expect(resolveFileFormat('file.yaml')).to.equal('yaml');
25
- });
26
- it('returns yaml for .yml extension', () => {
27
- expect(resolveFileFormat('file.yml')).to.equal('yaml');
28
- });
29
- it('returns undefined for unknown extension', () => {
30
- expect(resolveFileFormat('file.txt')).to.be.undefined;
31
- });
32
- it('format and extension both considered (format checked first for yaml, extension for json)', () => {
33
- // The logic checks format === 'json' OR extension .json first
34
- // Then format === 'yaml' OR extension .yaml/.yml
35
- // So json format/extension takes precedence
36
- expect(resolveFileFormat('file.txt', 'yaml')).to.equal('yaml');
37
- expect(resolveFileFormat('file.txt', 'json')).to.equal('json');
38
- expect(resolveFileFormat('file.json', 'yaml')).to.equal('json'); // .json extension wins
39
- expect(resolveFileFormat('file.yaml', 'json')).to.equal('json'); // json format wins
40
- });
41
- it('returns format when filepath is undefined', () => {
42
- expect(resolveFileFormat(undefined, 'json')).to.equal('json');
43
- expect(resolveFileFormat(undefined, 'yaml')).to.equal('yaml');
44
- });
45
- it('returns undefined when both are undefined', () => {
46
- expect(resolveFileFormat(undefined, undefined)).to.be.undefined;
47
- });
48
- });
49
- describe('indentYamlOrJson', () => {
50
- it('indents single line', () => {
51
- expect(indentYamlOrJson('line', 2)).to.equal(' line');
52
- });
53
- it('indents multiple lines', () => {
54
- const input = 'line1\nline2\nline3';
55
- const expected = ' line1\n line2\n line3';
56
- expect(indentYamlOrJson(input, 4)).to.equal(expected);
57
- });
58
- it('handles zero indent', () => {
59
- expect(indentYamlOrJson('line', 0)).to.equal('line');
60
- });
61
- });
62
- describe('readYamlOrJson', () => {
63
- it('reads JSON file based on extension', () => {
64
- const jsonFile = path.join(testDir, 'test.json');
65
- fs.writeFileSync(jsonFile, JSON.stringify({ format: 'json' }));
66
- const result = readYamlOrJson(jsonFile);
67
- expect(result).to.deep.equal({ format: 'json' });
68
- });
69
- it('reads YAML file based on extension', () => {
70
- const yamlFile = path.join(testDir, 'test.yaml');
71
- fs.writeFileSync(yamlFile, 'format: yaml\n');
72
- const result = readYamlOrJson(yamlFile);
73
- expect(result).to.deep.equal({ format: 'yaml' });
74
- });
75
- it('reads .yml file', () => {
76
- const ymlFile = path.join(testDir, 'test.yml');
77
- fs.writeFileSync(ymlFile, 'format: yml\n');
78
- const result = readYamlOrJson(ymlFile);
79
- expect(result).to.deep.equal({ format: 'yml' });
80
- });
81
- it('uses explicit format override', () => {
82
- // Write YAML content but with .txt extension, read with explicit format
83
- const txtFile = path.join(testDir, 'test.txt');
84
- fs.writeFileSync(txtFile, 'key: value\n');
85
- const result = readYamlOrJson(txtFile, 'yaml');
86
- expect(result).to.deep.equal({ key: 'value' });
87
- });
88
- it('throws for unknown format', () => {
89
- const txtFile = path.join(testDir, 'test.txt');
90
- fs.writeFileSync(txtFile, 'content');
91
- expect(() => readYamlOrJson(txtFile)).to.throw('Invalid file format');
92
- });
93
- });
94
- describe('writeYamlOrJson', () => {
95
- it('writes JSON file based on extension', () => {
96
- const jsonFile = path.join(testDir, 'test.json');
97
- writeYamlOrJson(jsonFile, { format: 'json' });
98
- const content = fs.readFileSync(jsonFile, 'utf8');
99
- expect(JSON.parse(content)).to.deep.equal({ format: 'json' });
100
- });
101
- it('writes YAML file based on extension', () => {
102
- const yamlFile = path.join(testDir, 'test.yaml');
103
- writeYamlOrJson(yamlFile, { format: 'yaml' });
104
- const result = readYamlOrJson(yamlFile);
105
- expect(result).to.deep.equal({ format: 'yaml' });
106
- });
107
- it('writes arrays', () => {
108
- const jsonFile = path.join(testDir, 'array.json');
109
- writeYamlOrJson(jsonFile, [1, 2, 3]);
110
- const result = readYamlOrJson(jsonFile);
111
- expect(result).to.deep.equal([1, 2, 3]);
112
- });
113
- it('uses explicit format override', () => {
114
- const txtFile = path.join(testDir, 'test.txt');
115
- writeYamlOrJson(txtFile, { key: 'value' }, 'yaml');
116
- const content = fs.readFileSync(txtFile, 'utf8');
117
- expect(content.trimEnd()).to.equal('key: value');
118
- });
119
- it('throws for unknown format', () => {
120
- const txtFile = path.join(testDir, 'test.txt');
121
- expect(() => writeYamlOrJson(txtFile, { key: 'value' })).to.throw('Invalid file format');
122
- });
123
- });
124
- describe('mergeYamlOrJson', () => {
125
- it('creates JSON file if it does not exist', () => {
126
- const jsonFile = path.join(testDir, 'new.json');
127
- mergeYamlOrJson(jsonFile, { key: 'value' }, 'json');
128
- const result = readYamlOrJson(jsonFile);
129
- expect(result).to.deep.equal({ key: 'value' });
130
- });
131
- it('creates YAML file if it does not exist (default)', () => {
132
- const yamlFile = path.join(testDir, 'new.yaml');
133
- mergeYamlOrJson(yamlFile, { key: 'value' });
134
- const result = readYamlOrJson(yamlFile);
135
- expect(result).to.deep.equal({ key: 'value' });
136
- });
137
- it('merges with existing JSON content', () => {
138
- const jsonFile = path.join(testDir, 'existing.json');
139
- writeYamlOrJson(jsonFile, { existing: 'data' });
140
- mergeYamlOrJson(jsonFile, { new: 'data' }, 'json');
141
- const result = readYamlOrJson(jsonFile);
142
- expect(result).to.deep.equal({ existing: 'data', new: 'data' });
143
- });
144
- it('merges with existing YAML content', () => {
145
- const yamlFile = path.join(testDir, 'existing.yaml');
146
- writeYamlOrJson(yamlFile, { existing: 'data' });
147
- mergeYamlOrJson(yamlFile, { new: 'data' });
148
- const result = readYamlOrJson(yamlFile);
149
- expect(result).to.deep.equal({ existing: 'data', new: 'data' });
150
- });
151
- });
152
- });
153
- //# sourceMappingURL=format.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../src/fs/format.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=json.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.test.d.ts","sourceRoot":"","sources":["../../src/fs/json.test.ts"],"names":[],"mappings":""}
@@ -1,148 +0,0 @@
1
- import { expect } from 'chai';
2
- import fs from 'fs';
3
- import os from 'os';
4
- import path from 'path';
5
- import { mergeJson, mergeJsonInDir, readJson, readJsonFromDir, tryReadJson, writeJson, writeJsonToDir, writeJsonWithAppendMode, } from './json.js';
6
- describe('JSON utilities', () => {
7
- const testDir = path.join(os.tmpdir(), 'hyperlane-json-test');
8
- const testFile = path.join(testDir, 'test.json');
9
- beforeEach(() => {
10
- if (fs.existsSync(testDir)) {
11
- fs.rmSync(testDir, { recursive: true });
12
- }
13
- fs.mkdirSync(testDir, { recursive: true });
14
- });
15
- afterEach(() => {
16
- if (fs.existsSync(testDir)) {
17
- fs.rmSync(testDir, { recursive: true });
18
- }
19
- });
20
- describe('readJson', () => {
21
- it('reads and parses JSON file', () => {
22
- fs.writeFileSync(testFile, JSON.stringify({ key: 'value' }));
23
- const result = readJson(testFile);
24
- expect(result).to.deep.equal({ key: 'value' });
25
- });
26
- it('handles nested objects', () => {
27
- const data = { nested: { deep: { value: 42 } } };
28
- fs.writeFileSync(testFile, JSON.stringify(data));
29
- const result = readJson(testFile);
30
- expect(result).to.deep.equal(data);
31
- });
32
- it('throws for non-existent file', () => {
33
- expect(() => readJson('/non/existent/file.json')).to.throw();
34
- });
35
- it('throws for invalid JSON', () => {
36
- fs.writeFileSync(testFile, 'not valid json');
37
- expect(() => readJson(testFile)).to.throw();
38
- });
39
- });
40
- describe('tryReadJson', () => {
41
- it('returns parsed JSON on success', () => {
42
- fs.writeFileSync(testFile, JSON.stringify({ key: 'value' }));
43
- const result = tryReadJson(testFile);
44
- expect(result).to.deep.equal({ key: 'value' });
45
- });
46
- it('returns null for non-existent file', () => {
47
- const result = tryReadJson('/non/existent/file.json');
48
- expect(result).to.be.null;
49
- });
50
- it('returns null for invalid JSON', () => {
51
- fs.writeFileSync(testFile, 'not valid json');
52
- const result = tryReadJson(testFile);
53
- expect(result).to.be.null;
54
- });
55
- });
56
- describe('writeJson', () => {
57
- it('writes JSON with formatting and trailing newline', () => {
58
- writeJson(testFile, { key: 'value' });
59
- const content = fs.readFileSync(testFile, 'utf8');
60
- expect(content).to.equal('{\n "key": "value"\n}\n');
61
- });
62
- it('handles arrays', () => {
63
- writeJson(testFile, [1, 2, 3]);
64
- const result = readJson(testFile);
65
- expect(result).to.deep.equal([1, 2, 3]);
66
- });
67
- it('creates directory if needed', () => {
68
- const nestedFile = path.join(testDir, 'nested', 'test.json');
69
- writeJson(nestedFile, { nested: true });
70
- expect(fs.existsSync(nestedFile)).to.be.true;
71
- });
72
- });
73
- describe('mergeJson', () => {
74
- it('creates file if it does not exist', () => {
75
- mergeJson(testFile, { key: 'value' });
76
- const result = readJson(testFile);
77
- expect(result).to.deep.equal({ key: 'value' });
78
- });
79
- it('merges with existing content', () => {
80
- writeJson(testFile, { existing: 'data', toOverwrite: 'old' });
81
- mergeJson(testFile, { new: 'data', toOverwrite: 'new' });
82
- const result = readJson(testFile);
83
- expect(result).to.deep.equal({
84
- existing: 'data',
85
- new: 'data',
86
- toOverwrite: 'new',
87
- });
88
- });
89
- });
90
- describe('readJsonFromDir', () => {
91
- it('reads JSON from directory with filename', () => {
92
- fs.writeFileSync(path.join(testDir, 'config.json'), JSON.stringify({ config: true }));
93
- const result = readJsonFromDir(testDir, 'config.json');
94
- expect(result).to.deep.equal({ config: true });
95
- });
96
- });
97
- describe('writeJsonToDir', () => {
98
- it('writes JSON to directory with filename', () => {
99
- writeJsonToDir(testDir, 'output.json', { output: true });
100
- const result = readJson(path.join(testDir, 'output.json'));
101
- expect(result).to.deep.equal({ output: true });
102
- });
103
- });
104
- describe('mergeJsonInDir', () => {
105
- it('merges JSON in directory with filename', () => {
106
- writeJsonToDir(testDir, 'merge.json', { existing: 'data' });
107
- mergeJsonInDir(testDir, 'merge.json', { new: 'data' });
108
- const result = readJson(path.join(testDir, 'merge.json'));
109
- expect(result).to.deep.equal({ existing: 'data', new: 'data' });
110
- });
111
- });
112
- describe('writeJsonWithAppendMode', () => {
113
- it('writes new data when file does not exist (appendMode false)', () => {
114
- writeJsonWithAppendMode(testFile, { a: 1, b: 2 }, false);
115
- const result = readJson(testFile);
116
- expect(result).to.deep.equal({ a: 1, b: 2 });
117
- });
118
- it('writes new data when file does not exist (appendMode true)', () => {
119
- writeJsonWithAppendMode(testFile, { a: 1, b: 2 }, true);
120
- const result = readJson(testFile);
121
- expect(result).to.deep.equal({ a: 1, b: 2 });
122
- });
123
- it('overwrites when appendMode is false', () => {
124
- writeJson(testFile, { a: 'old', b: 'old' });
125
- writeJsonWithAppendMode(testFile, { a: 'new', b: 'new' }, false);
126
- const result = readJson(testFile);
127
- expect(result).to.deep.equal({ a: 'new', b: 'new' });
128
- });
129
- it('preserves existing values when appendMode is true', () => {
130
- writeJson(testFile, { a: 'existing', b: 'existing' });
131
- writeJsonWithAppendMode(testFile, { a: 'new', b: 'new', c: 'new' }, true);
132
- const result = readJson(testFile);
133
- expect(result).to.deep.equal({ a: 'existing', b: 'existing', c: 'new' });
134
- });
135
- it('preserves existing keys not present in newData when appendMode is true', () => {
136
- writeJson(testFile, { a: 'existing', b: 'existing', c: 'existing' });
137
- writeJsonWithAppendMode(testFile, { a: 'new' }, true);
138
- const result = readJson(testFile);
139
- // All existing keys should be preserved, 'a' keeps its existing value
140
- expect(result).to.deep.equal({
141
- a: 'existing',
142
- b: 'existing',
143
- c: 'existing',
144
- });
145
- });
146
- });
147
- });
148
- //# sourceMappingURL=json.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.test.js","sourceRoot":"","sources":["../../src/fs/json.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../src/fs/utils.test.ts"],"names":[],"mappings":""}
@@ -1,120 +0,0 @@
1
- import { expect } from 'chai';
2
- import fs from 'fs';
3
- import os from 'os';
4
- import path from 'path';
5
- import { ensureDirectoryExists, isFile, pathExists, readFileAtPath, removeTrailingSlash, resolvePath, writeFileAtPath, writeToFile, } from './utils.js';
6
- describe('fs utilities', () => {
7
- const testDir = path.join(os.tmpdir(), 'hyperlane-fs-test');
8
- const testFile = path.join(testDir, 'test.txt');
9
- beforeEach(() => {
10
- // Clean up before each test
11
- if (fs.existsSync(testDir)) {
12
- fs.rmSync(testDir, { recursive: true });
13
- }
14
- });
15
- afterEach(() => {
16
- // Clean up after each test
17
- if (fs.existsSync(testDir)) {
18
- fs.rmSync(testDir, { recursive: true });
19
- }
20
- });
21
- describe('removeTrailingSlash', () => {
22
- it('removes trailing slash', () => {
23
- expect(removeTrailingSlash('/path/to/dir/')).to.equal('/path/to/dir');
24
- });
25
- it('leaves path without trailing slash unchanged', () => {
26
- expect(removeTrailingSlash('/path/to/dir')).to.equal('/path/to/dir');
27
- });
28
- it('handles empty string', () => {
29
- expect(removeTrailingSlash('')).to.equal('');
30
- });
31
- });
32
- describe('resolvePath', () => {
33
- it('expands ~ to home directory', () => {
34
- const result = resolvePath('~/test');
35
- expect(result).to.equal(path.join(os.homedir(), 'test'));
36
- });
37
- it('leaves absolute paths unchanged', () => {
38
- expect(resolvePath('/absolute/path')).to.equal('/absolute/path');
39
- });
40
- it('leaves relative paths unchanged', () => {
41
- expect(resolvePath('relative/path')).to.equal('relative/path');
42
- });
43
- });
44
- describe('isFile', () => {
45
- it('returns false for empty filepath', () => {
46
- expect(isFile('')).to.be.false;
47
- });
48
- it('returns false for non-existent path', () => {
49
- expect(isFile('/non/existent/path')).to.be.false;
50
- });
51
- it('returns true for existing file', () => {
52
- fs.mkdirSync(testDir, { recursive: true });
53
- fs.writeFileSync(testFile, 'test content');
54
- expect(isFile(testFile)).to.be.true;
55
- });
56
- it('returns false for directory', () => {
57
- fs.mkdirSync(testDir, { recursive: true });
58
- expect(isFile(testDir)).to.be.false;
59
- });
60
- });
61
- describe('pathExists', () => {
62
- it('returns false for non-existent path', () => {
63
- expect(pathExists('/non/existent/path')).to.be.false;
64
- });
65
- it('returns true for existing file', () => {
66
- fs.mkdirSync(testDir, { recursive: true });
67
- fs.writeFileSync(testFile, 'test content');
68
- expect(pathExists(testFile)).to.be.true;
69
- });
70
- it('returns true for existing directory', () => {
71
- fs.mkdirSync(testDir, { recursive: true });
72
- expect(pathExists(testDir)).to.be.true;
73
- });
74
- });
75
- describe('readFileAtPath', () => {
76
- it('reads file content', () => {
77
- fs.mkdirSync(testDir, { recursive: true });
78
- fs.writeFileSync(testFile, 'test content');
79
- expect(readFileAtPath(testFile)).to.equal('test content');
80
- });
81
- it('throws for non-existent file', () => {
82
- expect(() => readFileAtPath('/non/existent/file')).to.throw("File doesn't exist");
83
- });
84
- });
85
- describe('ensureDirectoryExists', () => {
86
- it('creates directory if it does not exist', () => {
87
- const nestedPath = path.join(testDir, 'nested', 'dir', 'file.txt');
88
- ensureDirectoryExists(nestedPath);
89
- expect(fs.existsSync(path.dirname(nestedPath))).to.be.true;
90
- });
91
- it('does nothing if directory already exists', () => {
92
- fs.mkdirSync(testDir, { recursive: true });
93
- ensureDirectoryExists(testFile);
94
- expect(fs.existsSync(testDir)).to.be.true;
95
- });
96
- });
97
- describe('writeFileAtPath', () => {
98
- it('writes content to file', () => {
99
- writeFileAtPath(testFile, 'test content');
100
- expect(fs.readFileSync(testFile, 'utf8')).to.equal('test content');
101
- });
102
- it('creates directory if it does not exist', () => {
103
- const nestedFile = path.join(testDir, 'nested', 'file.txt');
104
- writeFileAtPath(nestedFile, 'nested content');
105
- expect(fs.readFileSync(nestedFile, 'utf8')).to.equal('nested content');
106
- });
107
- it('overwrites existing file', () => {
108
- writeFileAtPath(testFile, 'original');
109
- writeFileAtPath(testFile, 'updated');
110
- expect(fs.readFileSync(testFile, 'utf8')).to.equal('updated');
111
- });
112
- });
113
- describe('writeToFile', () => {
114
- it('writes content with trailing newline', () => {
115
- writeToFile(testFile, 'test content');
116
- expect(fs.readFileSync(testFile, 'utf8')).to.equal('test content\n');
117
- });
118
- });
119
- });
120
- //# sourceMappingURL=utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/fs/utils.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=yaml.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"yaml.test.d.ts","sourceRoot":"","sources":["../../src/fs/yaml.test.ts"],"names":[],"mappings":""}
@@ -1,134 +0,0 @@
1
- import { expect } from 'chai';
2
- import fs from 'fs';
3
- import os from 'os';
4
- import path from 'path';
5
- import { mergeYaml, readYaml, readYamlFromDir, tryReadYaml, writeYaml, yamlParse, } from './yaml.js';
6
- describe('YAML utilities', () => {
7
- const testDir = path.join(os.tmpdir(), 'hyperlane-yaml-test');
8
- const testFile = path.join(testDir, 'test.yaml');
9
- beforeEach(() => {
10
- if (fs.existsSync(testDir)) {
11
- fs.rmSync(testDir, { recursive: true });
12
- }
13
- fs.mkdirSync(testDir, { recursive: true });
14
- });
15
- afterEach(() => {
16
- if (fs.existsSync(testDir)) {
17
- fs.rmSync(testDir, { recursive: true });
18
- }
19
- });
20
- describe('yamlParse', () => {
21
- it('parses YAML string', () => {
22
- const result = yamlParse('key: value');
23
- expect(result).to.deep.equal({ key: 'value' });
24
- });
25
- it('handles nested structures', () => {
26
- const yaml = `
27
- nested:
28
- deep:
29
- value: 42
30
- `;
31
- const result = yamlParse(yaml);
32
- expect(result).to.deep.equal({ nested: { deep: { value: 42 } } });
33
- });
34
- it('handles arrays', () => {
35
- const yaml = `
36
- items:
37
- - one
38
- - two
39
- - three
40
- `;
41
- const result = yamlParse(yaml);
42
- expect(result).to.deep.equal({ items: ['one', 'two', 'three'] });
43
- });
44
- it('handles YAML aliases without limit', () => {
45
- // This tests that maxAliasCount is set to -1, allowing many alias references
46
- const yaml = `
47
- shared: &shared
48
- - item1
49
- - item2
50
- list1: *shared
51
- list2: *shared
52
- list3: *shared
53
- `;
54
- const result = yamlParse(yaml);
55
- expect(result.list1).to.deep.equal(['item1', 'item2']);
56
- expect(result.list2).to.deep.equal(['item1', 'item2']);
57
- expect(result.list3).to.deep.equal(['item1', 'item2']);
58
- });
59
- });
60
- describe('readYaml', () => {
61
- it('reads and parses YAML file', () => {
62
- fs.writeFileSync(testFile, 'key: value\n');
63
- const result = readYaml(testFile);
64
- expect(result).to.deep.equal({ key: 'value' });
65
- });
66
- it('throws for non-existent file', () => {
67
- expect(() => readYaml('/non/existent/file.yaml')).to.throw();
68
- });
69
- });
70
- describe('tryReadYaml', () => {
71
- it('returns parsed YAML on success', () => {
72
- fs.writeFileSync(testFile, 'key: value\n');
73
- const result = tryReadYaml(testFile);
74
- expect(result).to.deep.equal({ key: 'value' });
75
- });
76
- it('returns null for non-existent file', () => {
77
- const result = tryReadYaml('/non/existent/file.yaml');
78
- expect(result).to.be.null;
79
- });
80
- it('returns null for invalid YAML', () => {
81
- fs.writeFileSync(testFile, 'invalid: yaml: content: [unclosed');
82
- const result = tryReadYaml(testFile);
83
- expect(result).to.be.null;
84
- });
85
- });
86
- describe('writeYaml', () => {
87
- it('writes YAML with trailing newline', () => {
88
- writeYaml(testFile, { key: 'value' });
89
- const content = fs.readFileSync(testFile, 'utf8');
90
- expect(content).to.equal('key: value\n');
91
- });
92
- it('sorts map entries', () => {
93
- writeYaml(testFile, { z: 1, a: 2, m: 3 });
94
- const content = fs.readFileSync(testFile, 'utf8');
95
- // Keys should be sorted alphabetically
96
- expect(content).to.equal('a: 2\nm: 3\nz: 1\n');
97
- });
98
- it('handles nested objects', () => {
99
- writeYaml(testFile, { outer: { inner: 'value' } });
100
- const result = readYaml(testFile);
101
- expect(result).to.deep.equal({ outer: { inner: 'value' } });
102
- });
103
- it('creates directory if needed', () => {
104
- const nestedFile = path.join(testDir, 'nested', 'test.yaml');
105
- writeYaml(nestedFile, { nested: true });
106
- expect(fs.existsSync(nestedFile)).to.be.true;
107
- });
108
- });
109
- describe('mergeYaml', () => {
110
- it('creates file if it does not exist', () => {
111
- mergeYaml(testFile, { key: 'value' });
112
- const result = readYaml(testFile);
113
- expect(result).to.deep.equal({ key: 'value' });
114
- });
115
- it('merges with existing content', () => {
116
- writeYaml(testFile, { existing: 'data', toOverwrite: 'old' });
117
- mergeYaml(testFile, { new: 'data', toOverwrite: 'new' });
118
- const result = readYaml(testFile);
119
- expect(result).to.deep.equal({
120
- existing: 'data',
121
- new: 'data',
122
- toOverwrite: 'new',
123
- });
124
- });
125
- });
126
- describe('readYamlFromDir', () => {
127
- it('reads YAML from directory with filename', () => {
128
- fs.writeFileSync(path.join(testDir, 'config.yaml'), 'config: true\n');
129
- const result = readYamlFromDir(testDir, 'config.yaml');
130
- expect(result).to.deep.equal({ config: true });
131
- });
132
- });
133
- });
134
- //# sourceMappingURL=yaml.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"yaml.test.js","sourceRoot":"","sources":["../../src/fs/yaml.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ids.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ids.test.d.ts","sourceRoot":"","sources":["../src/ids.test.ts"],"names":[],"mappings":""}