@appsemble/node-utils 0.19.4 → 0.19.8
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/fs.d.ts +7 -1
- package/dist/fs.js +9 -11
- package/dist/fs.js.map +1 -1
- package/package.json +3 -4
package/dist/fs.d.ts
CHANGED
|
@@ -21,6 +21,12 @@ interface WriteDataOptions {
|
|
|
21
21
|
* If false, don’t sort the object keys.
|
|
22
22
|
*/
|
|
23
23
|
readonly sort?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* A comparison function to use for sorting keys.
|
|
26
|
+
*
|
|
27
|
+
* By default natural sorting will be used.
|
|
28
|
+
*/
|
|
29
|
+
readonly compare?: ((a: string, b: string) => number) | null;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
32
|
* Write data to a file serialized as JSON or YAML.
|
|
@@ -32,7 +38,7 @@ interface WriteDataOptions {
|
|
|
32
38
|
* @param options - Additional options for processing the data.
|
|
33
39
|
* @returns The formatted content.
|
|
34
40
|
*/
|
|
35
|
-
export declare function writeData(path: string, data: unknown, { sort }?: WriteDataOptions): Promise<string>;
|
|
41
|
+
export declare function writeData(path: string, data: unknown, { compare, sort }?: WriteDataOptions): Promise<string>;
|
|
36
42
|
interface OpenDirSafeOptions {
|
|
37
43
|
allowMissing?: boolean;
|
|
38
44
|
recursive?: boolean;
|
package/dist/fs.js
CHANGED
|
@@ -26,9 +26,9 @@ exports.opendirSafe = exports.writeData = exports.readData = exports.isErrno = v
|
|
|
26
26
|
const fs_1 = require("fs");
|
|
27
27
|
const path_1 = require("path");
|
|
28
28
|
const utils_1 = require("@appsemble/utils");
|
|
29
|
-
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
30
29
|
const parse_json_1 = __importDefault(require("parse-json"));
|
|
31
30
|
const sort_keys_1 = __importDefault(require("sort-keys"));
|
|
31
|
+
const yaml_1 = require("yaml");
|
|
32
32
|
const _1 = require(".");
|
|
33
33
|
/**
|
|
34
34
|
* Test if the error is a NodeJS errno exception.
|
|
@@ -67,7 +67,10 @@ async function readData(path) {
|
|
|
67
67
|
throw new _1.AppsembleError(`Unknown file extension: ${path}`);
|
|
68
68
|
}
|
|
69
69
|
try {
|
|
70
|
-
return [
|
|
70
|
+
return [
|
|
71
|
+
ext === '.json' ? parse_json_1.default(content) : yaml_1.parse(content, { maxAliasCount: 10000 }),
|
|
72
|
+
content,
|
|
73
|
+
];
|
|
71
74
|
}
|
|
72
75
|
catch (error) {
|
|
73
76
|
throw new _1.AppsembleError(`Error parsing ${path}\n${error.message}`);
|
|
@@ -84,26 +87,21 @@ exports.readData = readData;
|
|
|
84
87
|
* @param options - Additional options for processing the data.
|
|
85
88
|
* @returns The formatted content.
|
|
86
89
|
*/
|
|
87
|
-
async function writeData(path, data, { sort = true } = {}) {
|
|
88
|
-
const sorted = sort ? sort_keys_1.default(data, { deep: true, compare:
|
|
90
|
+
async function writeData(path, data, { compare = utils_1.compareStrings, sort = true } = {}) {
|
|
91
|
+
const sorted = sort ? sort_keys_1.default(data, { deep: true, compare: compare || undefined }) : data;
|
|
89
92
|
let buffer;
|
|
90
93
|
try {
|
|
91
94
|
const { format, getFileInfo, resolveConfig } = await Promise.resolve().then(() => __importStar(require('prettier')));
|
|
92
95
|
const { inferredParser } = await getFileInfo(path, { resolveConfig: true });
|
|
93
96
|
const prettierOptions = await resolveConfig(path, { editorconfig: true });
|
|
94
97
|
prettierOptions.parser = inferredParser;
|
|
95
|
-
buffer =
|
|
96
|
-
inferredParser === 'yaml'
|
|
97
|
-
? js_yaml_1.default.dump(sorted, { lineWidth: -1 })
|
|
98
|
-
: JSON.stringify(sorted, undefined, 2);
|
|
98
|
+
buffer = inferredParser === 'yaml' ? yaml_1.stringify(sorted) : JSON.stringify(sorted, undefined, 2);
|
|
99
99
|
buffer = format(buffer, prettierOptions);
|
|
100
100
|
}
|
|
101
101
|
catch {
|
|
102
102
|
const ext = path_1.extname(path);
|
|
103
103
|
buffer =
|
|
104
|
-
ext === '.yml' || ext === '.yaml'
|
|
105
|
-
? js_yaml_1.default.dump(sorted, { lineWidth: -1 })
|
|
106
|
-
: JSON.stringify(sorted, undefined, 2);
|
|
104
|
+
ext === '.yml' || ext === '.yaml' ? yaml_1.stringify(sorted) : JSON.stringify(sorted, undefined, 2);
|
|
107
105
|
}
|
|
108
106
|
await fs_1.promises.mkdir(path_1.dirname(path), { recursive: true });
|
|
109
107
|
await fs_1.promises.writeFile(path, buffer);
|
package/dist/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAmD;AACnD,+BAA8C;AAE9C,4CAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appsemble/node-utils",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.8",
|
|
4
4
|
"description": "NodeJS utilities used by Appsemble internally.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"app",
|
|
@@ -29,14 +29,13 @@
|
|
|
29
29
|
"test": "jest"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@appsemble/utils": "0.19.
|
|
32
|
+
"@appsemble/utils": "0.19.8",
|
|
33
33
|
"@types/koa": "^2.0.0",
|
|
34
34
|
"axios": "^0.23.0",
|
|
35
35
|
"chalk": "^4.0.0",
|
|
36
36
|
"cli-highlight": "^2.0.0",
|
|
37
37
|
"fast-glob": "^3.0.0",
|
|
38
38
|
"form-data": "^4.0.0",
|
|
39
|
-
"js-yaml": "^4.0.0",
|
|
40
39
|
"koa": "^2.0.0",
|
|
41
40
|
"koa-compose": "^4.0.0",
|
|
42
41
|
"logform": "^2.0.0",
|
|
@@ -45,11 +44,11 @@
|
|
|
45
44
|
"sort-keys": "^4.0.0",
|
|
46
45
|
"type-fest": "^2.0.0",
|
|
47
46
|
"winston": "^3.0.0",
|
|
47
|
+
"yaml": "^2.0.0-8",
|
|
48
48
|
"yargs": "^17.0.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@sinonjs/fake-timers": "^7.0.0",
|
|
52
|
-
"@types/js-yaml": "^4.0.0",
|
|
53
52
|
"@types/normalize-path": "^3.0.0",
|
|
54
53
|
"@types/parse-json": "^4.0.0",
|
|
55
54
|
"axios-mock-adapter": "^1.0.0",
|