@weborigami/async-tree 0.0.45 → 0.0.47

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 (49) hide show
  1. package/index.ts +18 -1
  2. package/main.js +4 -5
  3. package/package.json +4 -4
  4. package/src/BrowserFileTree.js +1 -1
  5. package/src/DeepMapTree.js +1 -1
  6. package/src/DeepObjectTree.js +1 -2
  7. package/src/DeferredTree.js +22 -9
  8. package/src/FileTree.js +24 -20
  9. package/src/FunctionTree.js +0 -4
  10. package/src/MapTree.js +1 -1
  11. package/src/ObjectTree.js +1 -1
  12. package/src/SetTree.js +1 -1
  13. package/src/SiteTree.js +1 -6
  14. package/src/Tree.d.ts +2 -1
  15. package/src/Tree.js +56 -45
  16. package/src/internal.js +15 -0
  17. package/src/keysJson.js +1 -1
  18. package/src/operations/cache.js +9 -5
  19. package/src/operations/mergeDeep.js +1 -1
  20. package/src/symbols.js +1 -0
  21. package/src/transforms/{cachedKeyMaps.js → cachedKeyFunctions.js} +10 -10
  22. package/src/transforms/groupBy.js +4 -4
  23. package/src/transforms/{keyMapsForExtensions.js → keyFunctionsForExtensions.js} +4 -4
  24. package/src/transforms/map.js +29 -28
  25. package/src/transforms/regExpKeys.js +3 -2
  26. package/src/transforms/sort.js +4 -1
  27. package/src/transforms/sortBy.js +4 -1
  28. package/src/utilities.d.ts +3 -1
  29. package/src/utilities.js +37 -9
  30. package/test/BrowserFileTree.test.js +1 -1
  31. package/test/DeepObjectTree.test.js +1 -2
  32. package/test/DeferredTree.test.js +1 -2
  33. package/test/FileTree.test.js +1 -1
  34. package/test/FunctionTree.test.js +0 -6
  35. package/test/ObjectTree.test.js +1 -2
  36. package/test/SetTree.test.js +1 -1
  37. package/test/SiteTree.test.js +1 -1
  38. package/test/Tree.test.js +12 -22
  39. package/test/operations/cache.test.js +1 -2
  40. package/test/operations/merge.test.js +1 -1
  41. package/test/operations/mergeDeep.test.js +1 -2
  42. package/test/transforms/cachedKeyMaps.test.js +13 -13
  43. package/test/transforms/groupBy.test.js +1 -1
  44. package/test/transforms/keyMapsForExtensions.test.js +20 -21
  45. package/test/transforms/map.test.js +36 -41
  46. package/test/transforms/regExpKeys.test.js +1 -2
  47. package/test/transforms/sort.test.js +1 -1
  48. package/test/transforms/sortBy.test.js +1 -1
  49. package/test/transforms/sortNatural.test.js +1 -1
@@ -1,18 +1,16 @@
1
1
  import assert from "node:assert";
2
2
  import { describe, test } from "node:test";
3
- import DeepObjectTree from "../../src/DeepObjectTree.js";
4
3
  import FunctionTree from "../../src/FunctionTree.js";
5
- import ObjectTree from "../../src/ObjectTree.js";
6
- import * as Tree from "../../src/Tree.js";
4
+ import { DeepObjectTree, ObjectTree, Tree } from "../../src/internal.js";
7
5
  import map from "../../src/transforms/map.js";
8
6
 
9
7
  describe("map", () => {
10
- test("returns identity graph if no keyMap or valueMap", async () => {
11
- const tree = new ObjectTree({
8
+ test("returns identity graph if no key or value", async () => {
9
+ const tree = {
12
10
  a: "letter a",
13
11
  b: "letter b",
14
- });
15
- const mapped = map({})(tree);
12
+ };
13
+ const mapped = map()(tree);
16
14
  assert.deepEqual(await Tree.plain(mapped), {
17
15
  a: "letter a",
18
16
  b: "letter b",
@@ -26,7 +24,7 @@ describe("map", () => {
26
24
  c: undefined, // Won't be mapped
27
25
  });
28
26
  const uppercaseValues = map({
29
- valueMap: (sourceValue, sourceKey, innerTree) => {
27
+ value: (sourceValue, sourceKey, innerTree) => {
30
28
  assert(sourceKey === "a" || sourceKey === "b");
31
29
  assert.equal(innerTree, tree);
32
30
  return sourceValue.toUpperCase();
@@ -41,13 +39,12 @@ describe("map", () => {
41
39
  });
42
40
 
43
41
  test("interprets a single function argument as the value function", async () => {
44
- const tree = new ObjectTree({
42
+ const tree = {
45
43
  a: "letter a",
46
44
  b: "letter b",
47
- });
48
- const uppercaseValues = map((sourceValue, sourceKey, innerTree) => {
45
+ };
46
+ const uppercaseValues = map((sourceValue, sourceKey, tree) => {
49
47
  assert(sourceKey === "a" || sourceKey === "b");
50
- assert.equal(innerTree, tree);
51
48
  return sourceValue.toUpperCase();
52
49
  });
53
50
  const mapped = uppercaseValues(tree);
@@ -57,14 +54,14 @@ describe("map", () => {
57
54
  });
58
55
  });
59
56
 
60
- test("maps keys using keyMap and inverseKeyMap", async () => {
61
- const tree = new ObjectTree({
57
+ test("maps keys using key and inverseKey", async () => {
58
+ const tree = {
62
59
  a: "letter a",
63
60
  b: "letter b",
64
- });
61
+ };
65
62
  const doubleKeys = map({
66
- keyMap: async (sourceKey, tree) => `_${sourceKey}`,
67
- inverseKeyMap: async (resultKey, tree) => resultKey.slice(1),
63
+ key: async (sourceKey, tree) => `_${sourceKey}`,
64
+ inverseKey: async (resultKey, tree) => resultKey.slice(1),
68
65
  });
69
66
  const mapped = doubleKeys(tree);
70
67
  assert.deepEqual(await Tree.plain(mapped), {
@@ -74,15 +71,14 @@ describe("map", () => {
74
71
  });
75
72
 
76
73
  test("maps keys and values", async () => {
77
- const tree = new ObjectTree({
74
+ const tree = {
78
75
  a: "letter a",
79
76
  b: "letter b",
80
- });
77
+ };
81
78
  const doubleKeysUppercaseValues = map({
82
- keyMap: async (sourceKey, tree) => `_${sourceKey}`,
83
- inverseKeyMap: async (resultKey, tree) => resultKey.slice(1),
84
- valueMap: async (sourceValue, sourceKey, tree) =>
85
- sourceValue.toUpperCase(),
79
+ key: async (sourceKey, tree) => `_${sourceKey}`,
80
+ inverseKey: async (resultKey, tree) => resultKey.slice(1),
81
+ value: async (sourceValue, sourceKey, tree) => sourceValue.toUpperCase(),
86
82
  });
87
83
  const mapped = doubleKeysUppercaseValues(tree);
88
84
  assert.deepEqual(await Tree.plain(mapped), {
@@ -92,16 +88,16 @@ describe("map", () => {
92
88
  });
93
89
 
94
90
  test("a shallow map is applied to async subtrees too", async () => {
95
- const tree = new ObjectTree({
91
+ const tree = {
96
92
  a: "letter a",
97
93
  more: {
98
94
  b: "letter b",
99
95
  },
100
- });
96
+ };
101
97
  const doubleKeys = map({
102
- keyMap: async (sourceKey, tree) => `_${sourceKey}`,
103
- inverseKeyMap: async (resultKey, tree) => resultKey.slice(1),
104
- valueMap: async (sourceValue, sourceKey, tree) => sourceKey,
98
+ key: async (sourceKey, tree) => `_${sourceKey}`,
99
+ inverseKey: async (resultKey, tree) => resultKey.slice(1),
100
+ value: async (sourceValue, sourceKey, tree) => sourceKey,
105
101
  });
106
102
  const mapped = doubleKeys(tree);
107
103
  assert.deepEqual(await Tree.plain(mapped), {
@@ -110,14 +106,14 @@ describe("map", () => {
110
106
  });
111
107
  });
112
108
 
113
- test("valueMap can provide a default keyMap and inverseKeyMap", async () => {
109
+ test("value can provide a default key and inverse key functions", async () => {
114
110
  const uppercase = (s) => s.toUpperCase();
115
- uppercase.keyMap = (sourceKey) => `_${sourceKey}`;
116
- uppercase.inverseKeyMap = (resultKey) => resultKey.slice(1);
117
- const tree = new ObjectTree({
111
+ uppercase.key = (sourceKey) => `_${sourceKey}`;
112
+ uppercase.inverseKey = (resultKey) => resultKey.slice(1);
113
+ const tree = {
118
114
  a: "letter a",
119
115
  b: "letter b",
120
- });
116
+ };
121
117
  const mapped = map(uppercase)(tree);
122
118
  assert.deepEqual(await Tree.plain(mapped), {
123
119
  _a: "LETTER A",
@@ -134,7 +130,7 @@ describe("map", () => {
134
130
  });
135
131
  const uppercaseValues = map({
136
132
  deep: true,
137
- valueMap: (sourceValue, sourceKey, tree) => sourceValue.toUpperCase(),
133
+ value: (sourceValue, sourceKey, tree) => sourceValue.toUpperCase(),
138
134
  });
139
135
  const mapped = uppercaseValues(tree);
140
136
  assert.deepEqual(await Tree.plain(mapped), {
@@ -154,8 +150,8 @@ describe("map", () => {
154
150
  });
155
151
  const doubleKeys = map({
156
152
  deep: true,
157
- keyMap: async (sourceKey, tree) => `_${sourceKey}`,
158
- inverseKeyMap: async (resultKey, tree) => resultKey.slice(1),
153
+ key: async (sourceKey, tree) => `_${sourceKey}`,
154
+ inverseKey: async (resultKey, tree) => resultKey.slice(1),
159
155
  });
160
156
  const mapped = doubleKeys(tree);
161
157
  assert.deepEqual(await Tree.plain(mapped), {
@@ -175,10 +171,9 @@ describe("map", () => {
175
171
  });
176
172
  const doubleKeysUppercaseValues = map({
177
173
  deep: true,
178
- keyMap: async (sourceKey, tree) => `_${sourceKey}`,
179
- inverseKeyMap: async (resultKey, tree) => resultKey.slice(1),
180
- valueMap: async (sourceValue, sourceKey, tree) =>
181
- sourceValue.toUpperCase(),
174
+ key: async (sourceKey, tree) => `_${sourceKey}`,
175
+ inverseKey: async (resultKey, tree) => resultKey.slice(1),
176
+ value: async (sourceValue, sourceKey, tree) => sourceValue.toUpperCase(),
182
177
  });
183
178
  const mapped = doubleKeysUppercaseValues(tree);
184
179
  assert.deepEqual(await Tree.plain(mapped), {
@@ -196,7 +191,7 @@ describe("map", () => {
196
191
  }, ["a", "b", "c"]);
197
192
  const mapped = map({
198
193
  needsSourceValue: false,
199
- valueMap: () => "X",
194
+ value: () => "X",
200
195
  })(tree);
201
196
  assert.deepEqual(await Tree.plain(mapped), {
202
197
  a: "X",
@@ -1,7 +1,6 @@
1
1
  import assert from "node:assert";
2
2
  import { describe, test } from "node:test";
3
- import DeepObjectTree from "../../src/DeepObjectTree.js";
4
- import * as Tree from "../../src/Tree.js";
3
+ import { DeepObjectTree, Tree } from "../../src/internal.js";
5
4
  import regExpKeys from "../../src/transforms/regExpKeys.js";
6
5
 
7
6
  describe("regExpKeys", () => {
@@ -1,6 +1,6 @@
1
1
  import assert from "node:assert";
2
2
  import { describe, test } from "node:test";
3
- import * as Tree from "../../src/Tree.js";
3
+ import { Tree } from "../../src/internal.js";
4
4
  import sort from "../../src/transforms/sort.js";
5
5
 
6
6
  describe("sort transform", () => {
@@ -1,6 +1,6 @@
1
1
  import assert from "node:assert";
2
2
  import { describe, test } from "node:test";
3
- import * as Tree from "../../src/Tree.js";
3
+ import { Tree } from "../../src/internal.js";
4
4
  import sortBy from "../../src/transforms/sortBy.js";
5
5
 
6
6
  describe("sortBy transform", () => {
@@ -1,6 +1,6 @@
1
1
  import assert from "node:assert";
2
2
  import { describe, test } from "node:test";
3
- import * as Tree from "../../src/Tree.js";
3
+ import { Tree } from "../../src/internal.js";
4
4
  import sortNatural from "../../src/transforms/sortNatural.js";
5
5
 
6
6
  describe("sortNatural transform", () => {