joist-core 2.1.0-next.24 → 2.1.0-next.26
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/build/QueryParser.collectionJoins.d.ts.map +1 -1
- package/build/QueryParser.collectionJoins.js +125 -57
- package/build/QueryParser.collectionJoins.js.map +1 -1
- package/build/QueryParser.collectionJoins.test.d.ts +2 -0
- package/build/QueryParser.collectionJoins.test.d.ts.map +1 -0
- package/build/QueryParser.collectionJoins.test.js +65 -0
- package/build/QueryParser.collectionJoins.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryParser.collectionJoins.d.ts","sourceRoot":"","sources":["../src/QueryParser.collectionJoins.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,eAAe,EAGrB,MAAM,eAAe,CAAC;AAIvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAC5F,IAAI,
|
|
1
|
+
{"version":3,"file":"QueryParser.collectionJoins.d.ts","sourceRoot":"","sources":["../src/QueryParser.collectionJoins.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,eAAe,EAGrB,MAAM,eAAe,CAAC;AAIvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAC5F,IAAI,CAiCN"}
|
|
@@ -32,10 +32,13 @@ function optimizeCollectionJoins(query, opts = {}) {
|
|
|
32
32
|
optimizeCollectionJoins(table.query, { ...opts, pruneJoins: false });
|
|
33
33
|
}
|
|
34
34
|
rewriteCollectionJoins(query);
|
|
35
|
-
// I.e.
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
// I.e. collection LEFT JOINs now fall into three buckets:
|
|
36
|
+
// 1. local real filters, like `{ books: { title: "b1" } }`, were rewritten to EXISTS above;
|
|
37
|
+
// 2. no local real filters, like `{ books: {}, comments: {} }`, are safe because pruning will remove them;
|
|
38
|
+
// 3. blocked real filters, like cross-scope ORs, must stay as LEFT JOINs and can multiply rows.
|
|
39
|
+
// Only the third bucket should trip the fanout guard.
|
|
40
|
+
const fanoutLeftJoinAliases = getTopLevelCollectionRoots(query)
|
|
41
|
+
.filter((t) => conditionBlocksExistsRewrite(query.condition, collectJoinSubtreeAliases(query, t.alias)))
|
|
39
42
|
.map((t) => t.alias);
|
|
40
43
|
if (!allowMultipleLeftJoins && fanoutLeftJoinAliases.length > 1) {
|
|
41
44
|
throw new Error(`em.find would issue multiple LEFT JOINs across collection relations (${fanoutLeftJoinAliases.join(", ")}); pass allowMultipleLeftJoins: true if this fanout is intentional`);
|
|
@@ -55,70 +58,21 @@ function optimizeCollectionJoins(query, opts = {}) {
|
|
|
55
58
|
* I.e. for `authors a -> books b -> book_reviews br`, `b` is the collection root and `br` is part of its subtree.
|
|
56
59
|
*/
|
|
57
60
|
function rewriteCollectionJoins(query) {
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
.filter((t) => t.join === "inner" || t.join === "outer")
|
|
61
|
-
.flatMap((t) => (t.collection ? [t.alias] : [])));
|
|
62
|
-
const roots = query.tables.filter((t) => (t.join === "inner" || t.join === "outer") &&
|
|
63
|
-
t.collection?.rootAlias === t.alias &&
|
|
64
|
-
!collectionAliases.has(t.collection.parentAlias));
|
|
65
|
-
for (const root of roots) {
|
|
61
|
+
rewriteSiblingOrConditions(query);
|
|
62
|
+
for (const root of getTopLevelCollectionRoots(query)) {
|
|
66
63
|
// I.e. for root `b`, this gathers `b`, `br`, and any other joins whose `col1` depends on that subtree.
|
|
67
64
|
const subtreeAliases = collectJoinSubtreeAliases(query, root.alias);
|
|
68
65
|
// I.e. move `b.title = 'x'` and `(br.rating = 5 OR br.rating = 4)`, but not `b.title = 'x' OR a.first_name = 'x'`.
|
|
69
66
|
const moved = query.condition ? removeLocallyScopedConditions(query.condition, subtreeAliases) : [];
|
|
70
|
-
const subqueryTables = query.tables.filter((t) => subtreeAliases.has(t.alias));
|
|
71
67
|
const hasOnlyAntiJoin = moved.length === 1 && isAliasIdNull(moved[0], root.alias);
|
|
72
68
|
if (moved.length === 0 && !hasOnlyAntiJoin)
|
|
73
69
|
continue;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
query.condition ??= { kind: "exp", op: "and", conditions: [] };
|
|
77
|
-
query.condition.conditions.push(...moved);
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
if (moved.length > 0 && moved.some((c) => isAliasIdNull(c, root.alias)) && !hasOnlyAntiJoin) {
|
|
81
|
-
// I.e. `b.id IS NULL AND b.title = 'x'` is not a pure anti-join; leave it as a LEFT JOIN for SQL semantics.
|
|
70
|
+
const exists = createExistsCondition(query, root, subtreeAliases, moved);
|
|
71
|
+
if (!exists) {
|
|
82
72
|
query.condition ??= { kind: "exp", op: "and", conditions: [] };
|
|
83
73
|
query.condition.conditions.push(...moved);
|
|
84
74
|
continue;
|
|
85
75
|
}
|
|
86
|
-
const correlation = {
|
|
87
|
-
kind: "raw",
|
|
88
|
-
aliases: [root.alias],
|
|
89
|
-
condition: `${root.col1} = ${root.col2}`,
|
|
90
|
-
bindings: [],
|
|
91
|
-
pruneable: false,
|
|
92
|
-
};
|
|
93
|
-
// I.e. a pure `b.id IS NULL` anti-join becomes `NOT EXISTS (SELECT 1 FROM books b WHERE a.id = b.author_id)`.
|
|
94
|
-
const conditions = hasOnlyAntiJoin ? [correlation] : [correlation, ...moved];
|
|
95
|
-
const subquery = {
|
|
96
|
-
selects: ["1"],
|
|
97
|
-
tables: subqueryTables.map((t) => {
|
|
98
|
-
// I.e. the collection root becomes the subquery's FROM table; children remain joins off that root.
|
|
99
|
-
if (t.alias === root.alias)
|
|
100
|
-
return { join: "primary", alias: t.alias, table: t.table };
|
|
101
|
-
// I.e. by this point every moved condition is locally scoped and positive, like `br.rating = 5`; pure
|
|
102
|
-
// `br.id IS NULL` anti-joins are handled as NOT EXISTS at their own root, and mixed/null-sensitive cases stay
|
|
103
|
-
// as outer joins. So inside this EXISTS, child rows must exist to satisfy the moved filters, and INNER JOIN is
|
|
104
|
-
// equivalent to LEFT JOIN + WHERE child condition.
|
|
105
|
-
if (t.join === "inner" || t.join === "outer")
|
|
106
|
-
return { ...t, join: "inner" };
|
|
107
|
-
return t;
|
|
108
|
-
}),
|
|
109
|
-
condition: { kind: "exp", op: "and", conditions },
|
|
110
|
-
orderBys: [],
|
|
111
|
-
};
|
|
112
|
-
// I.e. nested `books.reviews` first creates an EXISTS for books, then this recursive call creates EXISTS for reviews.
|
|
113
|
-
rewriteCollectionJoins(subquery);
|
|
114
|
-
const exists = {
|
|
115
|
-
kind: "exists",
|
|
116
|
-
negate: hasOnlyAntiJoin,
|
|
117
|
-
correlation,
|
|
118
|
-
joinColumns: { col1: root.col1, col2: root.col2 },
|
|
119
|
-
subquery,
|
|
120
|
-
outerAliases: [root.collection.parentAlias],
|
|
121
|
-
};
|
|
122
76
|
query.condition ??= { kind: "exp", op: "and", conditions: [] };
|
|
123
77
|
query.condition.conditions.push(exists);
|
|
124
78
|
// I.e. after adding EXISTS, remove `books b` and its children from the outer FROM list.
|
|
@@ -126,6 +80,120 @@ function rewriteCollectionJoins(query) {
|
|
|
126
80
|
}
|
|
127
81
|
removeEmptyExpressions(query.condition);
|
|
128
82
|
}
|
|
83
|
+
/** Rewrites `b.id IS NOT NULL OR c.id IS NOT NULL` into sibling EXISTS clauses. */
|
|
84
|
+
function rewriteSiblingOrConditions(query) {
|
|
85
|
+
if (!query.condition)
|
|
86
|
+
return;
|
|
87
|
+
rewriteSiblingOrExpression(query, query.condition);
|
|
88
|
+
}
|
|
89
|
+
/** Rewrites eligible sibling collection ORs while preserving outer/mixed-scope ORs as joins. */
|
|
90
|
+
function rewriteSiblingOrExpression(query, condition) {
|
|
91
|
+
if (condition.kind !== "exp")
|
|
92
|
+
return;
|
|
93
|
+
if (condition.op === "or" && rewriteSiblingOrExpressionChildren(query, condition))
|
|
94
|
+
return;
|
|
95
|
+
if (condition.op === "and") {
|
|
96
|
+
for (const child of condition.conditions)
|
|
97
|
+
rewriteSiblingOrExpression(query, child);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Returns true when every OR branch became an EXISTS for one collection subtree. */
|
|
101
|
+
function rewriteSiblingOrExpressionChildren(query, exp) {
|
|
102
|
+
const roots = getTopLevelCollectionRoots(query).map((root) => ({
|
|
103
|
+
root,
|
|
104
|
+
subtreeAliases: collectJoinSubtreeAliases(query, root.alias),
|
|
105
|
+
}));
|
|
106
|
+
const existsConditions = [];
|
|
107
|
+
const usedAliases = new Set();
|
|
108
|
+
for (const condition of exp.conditions) {
|
|
109
|
+
if (!isRealCondition(condition))
|
|
110
|
+
return false;
|
|
111
|
+
const match = roots.find(({ subtreeAliases }) => conditionReferencesOnlyAliases(condition, subtreeAliases));
|
|
112
|
+
if (!match)
|
|
113
|
+
return false;
|
|
114
|
+
const exists = createExistsCondition(query, match.root, match.subtreeAliases, [condition]);
|
|
115
|
+
if (!exists)
|
|
116
|
+
return false;
|
|
117
|
+
existsConditions.push(exists);
|
|
118
|
+
for (const alias of match.subtreeAliases)
|
|
119
|
+
usedAliases.add(alias);
|
|
120
|
+
}
|
|
121
|
+
if (new Set(existsConditions.map((exists) => exists.subquery.tables[0].alias)).size < 2)
|
|
122
|
+
return false;
|
|
123
|
+
exp.conditions = existsConditions;
|
|
124
|
+
// I.e. after adding sibling EXISTS branches, remove those collection joins from the outer FROM list.
|
|
125
|
+
query.tables = query.tables.filter((t) => !usedAliases.has(t.alias));
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
/** Creates an EXISTS/NOT EXISTS condition for moved collection filters, or undefined when a LEFT JOIN must stay. */
|
|
129
|
+
function createExistsCondition(query, root, subtreeAliases, moved) {
|
|
130
|
+
const hasOnlyAntiJoin = moved.length === 1 && isAliasIdNull(moved[0], root.alias);
|
|
131
|
+
if (!hasOnlyAntiJoin && !moved.some(isRealCondition)) {
|
|
132
|
+
// I.e. only soft-delete/STI conditions moved; don't create an EXISTS that changes nothing.
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
if (moved.length > 0 && moved.some((c) => isAliasIdNull(c, root.alias)) && !hasOnlyAntiJoin) {
|
|
136
|
+
// I.e. `b.id IS NULL AND b.title = 'x'` is not a pure anti-join; leave it as a LEFT JOIN for SQL semantics.
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
const correlation = {
|
|
140
|
+
kind: "raw",
|
|
141
|
+
aliases: [root.alias],
|
|
142
|
+
condition: `${root.col1} = ${root.col2}`,
|
|
143
|
+
bindings: [],
|
|
144
|
+
pruneable: false,
|
|
145
|
+
};
|
|
146
|
+
// I.e. a pure `b.id IS NULL` anti-join becomes `NOT EXISTS (SELECT 1 FROM books b WHERE a.id = b.author_id)`.
|
|
147
|
+
const conditions = hasOnlyAntiJoin ? [correlation] : [correlation, ...moved];
|
|
148
|
+
const subquery = {
|
|
149
|
+
selects: ["1"],
|
|
150
|
+
tables: query.tables.filter((t) => subtreeAliases.has(t.alias)).map((t) => {
|
|
151
|
+
// I.e. the collection root becomes the subquery's FROM table; children remain joins off that root.
|
|
152
|
+
if (t.alias === root.alias)
|
|
153
|
+
return { join: "primary", alias: t.alias, table: t.table };
|
|
154
|
+
// I.e. by this point every moved condition is locally scoped and positive, like `br.rating = 5`; pure
|
|
155
|
+
// `br.id IS NULL` anti-joins are handled as NOT EXISTS at their own root, and mixed/null-sensitive cases stay
|
|
156
|
+
// as outer joins. So inside this EXISTS, child rows must exist to satisfy the moved filters, and INNER JOIN is
|
|
157
|
+
// equivalent to LEFT JOIN + WHERE child condition.
|
|
158
|
+
if (t.join === "inner" || t.join === "outer")
|
|
159
|
+
return { ...t, join: "inner" };
|
|
160
|
+
return t;
|
|
161
|
+
}),
|
|
162
|
+
condition: { kind: "exp", op: "and", conditions },
|
|
163
|
+
orderBys: [],
|
|
164
|
+
};
|
|
165
|
+
// I.e. nested `books.reviews` first creates an EXISTS for books, then this recursive call creates EXISTS for reviews.
|
|
166
|
+
rewriteCollectionJoins(subquery);
|
|
167
|
+
return {
|
|
168
|
+
kind: "exists",
|
|
169
|
+
negate: hasOnlyAntiJoin,
|
|
170
|
+
correlation,
|
|
171
|
+
joinColumns: { col1: root.col1, col2: root.col2 },
|
|
172
|
+
subquery,
|
|
173
|
+
outerAliases: [root.collection.parentAlias],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/** Returns top-level collection roots, i.e. `books b` but not nested `book_reviews br`. */
|
|
177
|
+
function getTopLevelCollectionRoots(query) {
|
|
178
|
+
// I.e. if `books b` is nested under another collection root, the parent pass should absorb it; don't rewrite it here.
|
|
179
|
+
const collectionAliases = new Set(query.tables
|
|
180
|
+
.filter((t) => t.join === "inner" || t.join === "outer")
|
|
181
|
+
.flatMap((t) => (t.collection ? [t.alias] : [])));
|
|
182
|
+
return query.tables.filter((t) => (t.join === "inner" || t.join === "outer") &&
|
|
183
|
+
t.collection?.rootAlias === t.alias &&
|
|
184
|
+
!collectionAliases.has(t.collection.parentAlias));
|
|
185
|
+
}
|
|
186
|
+
/** Returns true if a remaining real condition prevents this subtree from becoming EXISTS, i.e. a cross-scope OR. */
|
|
187
|
+
function conditionBlocksExistsRewrite(condition, aliases) {
|
|
188
|
+
if (!condition || !isRealCondition(condition))
|
|
189
|
+
return false;
|
|
190
|
+
if (condition.kind === "exp" && condition.op === "and") {
|
|
191
|
+
return condition.conditions.some((c) => conditionBlocksExistsRewrite(c, aliases));
|
|
192
|
+
}
|
|
193
|
+
const found = new Set();
|
|
194
|
+
collectAllAliases(condition, found);
|
|
195
|
+
return [...found].some((alias) => aliases.has(alias));
|
|
196
|
+
}
|
|
129
197
|
/** Collects a collection root and all joins that depend on it, i.e. `b -> br -> c`. */
|
|
130
198
|
function collectJoinSubtreeAliases(query, rootAlias) {
|
|
131
199
|
const aliases = new Set([rootAlias]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryParser.collectionJoins.js","sourceRoot":"","sources":["../src/QueryParser.collectionJoins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryParser.collectionJoins.js","sourceRoot":"","sources":["../src/QueryParser.collectionJoins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParser.collectionJoins.test.d.ts","sourceRoot":"","sources":["../src/QueryParser.collectionJoins.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const QueryParser_collectionJoins_1 = require("./QueryParser.collectionJoins");
|
|
4
|
+
describe("QueryParser.collectionJoins", () => {
|
|
5
|
+
it("allows unblocked multiple collection left joins before pruning", () => {
|
|
6
|
+
const query = {
|
|
7
|
+
selects: ["a.*"],
|
|
8
|
+
tables: [
|
|
9
|
+
{ alias: "a", table: "authors", join: "primary" },
|
|
10
|
+
{
|
|
11
|
+
alias: "b",
|
|
12
|
+
table: "books",
|
|
13
|
+
join: "outer",
|
|
14
|
+
col1: "a.id",
|
|
15
|
+
col2: "b.author_id",
|
|
16
|
+
collection: { parentAlias: "a", rootAlias: "b", kind: "o2m" },
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
alias: "c",
|
|
20
|
+
table: "comments",
|
|
21
|
+
join: "outer",
|
|
22
|
+
col1: "a.id",
|
|
23
|
+
col2: "c.parent_author_id",
|
|
24
|
+
collection: { parentAlias: "a", rootAlias: "c", kind: "o2m" },
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
orderBys: [],
|
|
28
|
+
};
|
|
29
|
+
(0, QueryParser_collectionJoins_1.optimizeCollectionJoins)(query, { pruneJoins: false });
|
|
30
|
+
expect(query.tables).toMatchObject([
|
|
31
|
+
{ alias: "a", table: "authors", join: "primary" },
|
|
32
|
+
{ alias: "b", table: "books", join: "outer" },
|
|
33
|
+
{ alias: "c", table: "comments", join: "outer" },
|
|
34
|
+
]);
|
|
35
|
+
});
|
|
36
|
+
it("prunes unblocked multiple collection left joins after checking fanout safety", () => {
|
|
37
|
+
const query = {
|
|
38
|
+
selects: ["a.*"],
|
|
39
|
+
tables: [
|
|
40
|
+
{ alias: "a", table: "authors", join: "primary" },
|
|
41
|
+
{
|
|
42
|
+
alias: "b",
|
|
43
|
+
table: "books",
|
|
44
|
+
join: "outer",
|
|
45
|
+
col1: "a.id",
|
|
46
|
+
col2: "b.author_id",
|
|
47
|
+
collection: { parentAlias: "a", rootAlias: "b", kind: "o2m" },
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
alias: "c",
|
|
51
|
+
table: "comments",
|
|
52
|
+
join: "outer",
|
|
53
|
+
col1: "a.id",
|
|
54
|
+
col2: "c.parent_author_id",
|
|
55
|
+
collection: { parentAlias: "a", rootAlias: "c", kind: "o2m" },
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
orderBys: [],
|
|
59
|
+
};
|
|
60
|
+
(0, QueryParser_collectionJoins_1.optimizeCollectionJoins)(query);
|
|
61
|
+
expect(query.tables).toMatchObject([{ alias: "a", table: "authors", join: "primary" }]);
|
|
62
|
+
expect(query.condition).toBeUndefined();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=QueryParser.collectionJoins.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryParser.collectionJoins.test.js","sourceRoot":"","sources":["../src/QueryParser.collectionJoins.test.ts"],"names":[],"mappings":";;AAAA,+EAAwE;AAGxE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,KAAK,GAAoB;YAC7B,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,MAAM,EAAE;gBACN,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjD;oBACE,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC9D;gBACD;oBACE,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC9D;aACF;YACD,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAA,qDAAuB,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YACjC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACjD,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;YAC7C,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;SACjD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,KAAK,GAAoB;YAC7B,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,MAAM,EAAE;gBACN,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjD;oBACE,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC9D;gBACD;oBACE,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC9D;aACF;YACD,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAA,qDAAuB,EAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-core",
|
|
3
|
-
"version": "2.1.0-next.
|
|
3
|
+
"version": "2.1.0-next.26",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"build"
|
|
21
21
|
],
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"joist-utils": "2.1.0-next.
|
|
23
|
+
"joist-utils": "2.1.0-next.26"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@types/object-hash": "^3.0.6",
|