@ms-cloudpack/json-utilities 0.1.10 → 0.1.12

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/README.md CHANGED
@@ -1,23 +1,3 @@
1
1
  # @ms-cloudpack/json-utilities
2
2
 
3
- Helpers for reading/writing json files.
4
-
5
- ## Usage
6
-
7
- ```js
8
- import { readJson, writeJson } from '@ms-cloudpack/json-utilities';
9
-
10
- async function start() {
11
- const result = (await readJSON(`path/to/file.json`)) || defaultValue;
12
- }
13
-
14
- const app = createExpressApp([5000, 5001], (app) => {
15
- // Set up routes.
16
- app.get('*', async (req, res) => {
17
- res.send(`<html>...</html>`);
18
- });
19
- });
20
-
21
- // Stop app when you're done.
22
- app.close();
23
- ```
3
+ Helpers for reading/writing JSON files in Cloudpack.
@@ -9,7 +9,7 @@
9
9
  export declare function cloneJson<T extends unknown[]>(obj: T): T;
10
10
  export declare function cloneJson<T extends object>(obj: T): T;
11
11
  export declare function cloneJson<T extends object, TKeys extends keyof T>(obj: T, options: {
12
- /** Clone only these keys. Not propagated to recursive operations. */
13
- onlyKeys: Record<TKeys, true>;
12
+ /** Keys with true values are cloned, keys with false values are not cloned. Not propagated to recursive operations. */
13
+ keys: Record<TKeys, boolean>;
14
14
  }): Pick<T, TKeys>;
15
15
  //# sourceMappingURL=cloneJson.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloneJson.d.ts","sourceRoot":"","sources":["../src/cloneJson.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1D,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACvD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,CAAC,EAC/D,GAAG,EAAE,CAAC,EACN,OAAO,EAAE;IACP,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC/B,GACA,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"cloneJson.d.ts","sourceRoot":"","sources":["../src/cloneJson.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1D,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACvD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,CAAC,EAC/D,GAAG,EAAE,CAAC,EACN,OAAO,EAAE;IACP,uHAAuH;IACvH,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CAC9B,GACA,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC"}
package/lib/cloneJson.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
2
2
  export function cloneJson(obj, options) {
3
- const { onlyKeys } = options || {};
3
+ const { keys } = options || {};
4
4
  if (Array.isArray(obj)) {
5
5
  const clone = [];
6
6
  for (let i = 0; i < obj.length; i++) {
@@ -12,7 +12,7 @@ export function cloneJson(obj, options) {
12
12
  }
13
13
  const clone = {};
14
14
  for (const [key, val] of Object.entries(obj)) {
15
- if (!onlyKeys || onlyKeys[key] === true) {
15
+ if (!keys || keys[key] === true) {
16
16
  // eslint-disable-next-line
17
17
  clone[key] = val && typeof val === 'object' ? cloneJson(val) : val;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cloneJson.js","sourceRoot":"","sources":["../src/cloneJson.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAmB5D,MAAM,UAAU,SAAS,CAAmB,GAAM,EAAE,OAA8C;IAChG,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,EAAgB,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,4CAA4C;YAC5C,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,EAAgB,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAc,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,2BAA2B;YAC1B,KAAa,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n/**\n * Clone a JSON-like object, fast. Does NOT handle non-JSON-serializable values\n * (such as dates or functions), circular references, etc.\n *\n * This is decently faster than `structuredClone` or `JSON.parse(JSON.stringify())` on a\n * very large package.json, and a bit faster for a simple object.\n * https://jsperf.app/rugosa/5\n */\nexport function cloneJson<T extends unknown[]>(obj: T): T;\nexport function cloneJson<T extends object>(obj: T): T;\nexport function cloneJson<T extends object, TKeys extends keyof T>(\n obj: T,\n options: {\n /** Clone only these keys. Not propagated to recursive operations. */\n onlyKeys: Record<TKeys, true>;\n },\n): Pick<T, TKeys>;\nexport function cloneJson<T extends object>(obj: T, options?: { onlyKeys?: Record<keyof T, true> }): T {\n const { onlyKeys } = options || {};\n\n if (Array.isArray(obj)) {\n const clone = [] as typeof obj;\n for (let i = 0; i < obj.length; i++) {\n const val = obj[i];\n // Skip the recursive call if not an object.\n clone[i] = val && typeof val === 'object' ? cloneJson(val) : val;\n }\n return clone;\n }\n\n const clone = {} as typeof obj;\n for (const [key, val] of Object.entries(obj)) {\n if (!onlyKeys || onlyKeys[key as keyof T] === true) {\n // eslint-disable-next-line\n (clone as any)[key] = val && typeof val === 'object' ? cloneJson(val) : val;\n }\n }\n return clone;\n}\n"]}
1
+ {"version":3,"file":"cloneJson.js","sourceRoot":"","sources":["../src/cloneJson.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAmB5D,MAAM,UAAU,SAAS,CAAmB,GAAM,EAAE,OAA6C;IAC/F,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE/B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,EAAgB,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,4CAA4C;YAC5C,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,EAAgB,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAc,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3C,2BAA2B;YAC1B,KAAa,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n/**\n * Clone a JSON-like object, fast. Does NOT handle non-JSON-serializable values\n * (such as dates or functions), circular references, etc.\n *\n * This is decently faster than `structuredClone` or `JSON.parse(JSON.stringify())` on a\n * very large package.json, and a bit faster for a simple object.\n * https://jsperf.app/rugosa/5\n */\nexport function cloneJson<T extends unknown[]>(obj: T): T;\nexport function cloneJson<T extends object>(obj: T): T;\nexport function cloneJson<T extends object, TKeys extends keyof T>(\n obj: T,\n options: {\n /** Keys with true values are cloned, keys with false values are not cloned. Not propagated to recursive operations. */\n keys: Record<TKeys, boolean>;\n },\n): Pick<T, TKeys>;\nexport function cloneJson<T extends object>(obj: T, options?: { keys?: Record<keyof T, boolean> }): T {\n const { keys } = options || {};\n\n if (Array.isArray(obj)) {\n const clone = [] as typeof obj;\n for (let i = 0; i < obj.length; i++) {\n const val = obj[i];\n // Skip the recursive call if not an object.\n clone[i] = val && typeof val === 'object' ? cloneJson(val) : val;\n }\n return clone;\n }\n\n const clone = {} as typeof obj;\n for (const [key, val] of Object.entries(obj)) {\n if (!keys || keys[key as keyof T] === true) {\n // eslint-disable-next-line\n (clone as any)[key] = val && typeof val === 'object' ? cloneJson(val) : val;\n }\n }\n return clone;\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/json-utilities",
3
- "version": "0.1.10",
4
- "description": "Helpers for reading/writing json files.",
3
+ "version": "0.1.12",
4
+ "description": "Helpers for reading/writing JSON files in Cloudpack",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "types": "./lib/index.d.ts",
@@ -13,15 +13,6 @@
13
13
  "import": "./lib/index.js"
14
14
  }
15
15
  },
16
- "dependencies": {
17
- "jju": "^1.4.0",
18
- "json-stream-stringify": "^3.1.4"
19
- },
20
- "devDependencies": {
21
- "@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
22
- "@ms-cloudpack/scripts": "^0.0.1",
23
- "@types/jju": "^1.4.4"
24
- },
25
16
  "scripts": {
26
17
  "api": "cloudpack-scripts api",
27
18
  "build:watch": "cloudpack-scripts build-watch",
@@ -32,6 +23,16 @@
32
23
  "test:watch": "cloudpack-scripts test-watch",
33
24
  "test": "cloudpack-scripts test"
34
25
  },
26
+ "dependencies": {
27
+ "jju": "^1.4.0",
28
+ "json-stream-stringify": "^3.1.4"
29
+ },
30
+ "devDependencies": {
31
+ "@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
32
+ "@ms-cloudpack/scripts": "^0.0.1",
33
+ "@ms-cloudpack/test-utilities": "^0.5.0",
34
+ "@types/jju": "^1.4.4"
35
+ },
35
36
  "files": [
36
37
  "lib/**/!(*.test.*)"
37
38
  ]