joist-core 2.2.0-next.6 → 2.2.0-next.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/build/IsLoadedCache.d.ts.map +1 -1
- package/build/IsLoadedCache.js +19 -10
- package/build/IsLoadedCache.js.map +1 -1
- package/build/loadLens.d.ts +11 -0
- package/build/loadLens.d.ts.map +1 -1
- package/build/loadLens.js +24 -7
- package/build/loadLens.js.map +1 -1
- package/build/relations/hasOneThrough.d.ts.map +1 -1
- package/build/relations/hasOneThrough.js +6 -4
- package/build/relations/hasOneThrough.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsLoadedCache.d.ts","sourceRoot":"","sources":["../src/IsLoadedCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,qBAAa,aAAa;;
|
|
1
|
+
{"version":3,"file":"IsLoadedCache.d.ts","sourceRoot":"","sources":["../src/IsLoadedCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,qBAAa,aAAa;;IAaxB,+FAA+F;IAC/F,GAAG,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IASnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAKxC,yFAAyF;IACzF,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAsDvD"}
|
package/build/IsLoadedCache.js
CHANGED
|
@@ -10,27 +10,32 @@ class IsLoadedCache {
|
|
|
10
10
|
// A dumb cache for things that are hard selectively invalidate (o2m.get, recursive collections,
|
|
11
11
|
// and custom references/collections), so any mutation resets these.
|
|
12
12
|
#naiveCache = new Set();
|
|
13
|
-
// Counter to
|
|
14
|
-
#
|
|
13
|
+
// Counter to skip reactive hint walking when no smart cache sets are populated.
|
|
14
|
+
#smartDirtySets = 0;
|
|
15
|
+
// Counter to fast-path resetIsLoaded when the naive cache is empty.
|
|
16
|
+
#naiveDirtySets = 0;
|
|
15
17
|
/** Adds a ReactiveField/Relation/Collection to be invalidated when its dependencies change. */
|
|
16
18
|
add(target) {
|
|
17
19
|
const meta = (0, EntityMetadata_1.getMetadata)(target.entity);
|
|
18
20
|
const set = ((this.#smartCache[meta.tagName] ??= {})[target.fieldName] ??= new Set());
|
|
19
|
-
if (set.size === 0)
|
|
20
|
-
this.#
|
|
21
|
+
if (set.size === 0) {
|
|
22
|
+
this.#smartDirtySets++;
|
|
23
|
+
}
|
|
21
24
|
set.add(target);
|
|
22
25
|
}
|
|
23
26
|
addNaive(target) {
|
|
24
27
|
if (this.#naiveCache.size === 0)
|
|
25
|
-
this.#
|
|
28
|
+
this.#naiveDirtySets++;
|
|
26
29
|
this.#naiveCache.add(target);
|
|
27
30
|
}
|
|
28
31
|
/** Resets any in-memory #isLoaded/#isCached caches that depend on `entity.fieldName`. */
|
|
29
32
|
resetIsLoaded(entity, fieldName) {
|
|
30
|
-
if (this.#
|
|
33
|
+
if (this.#smartDirtySets === 0 && this.#naiveDirtySets === 0)
|
|
31
34
|
return;
|
|
32
35
|
// Reset caches that we can deterministically find by walking the reactivity hints
|
|
33
|
-
this.#
|
|
36
|
+
if (this.#smartDirtySets > 0) {
|
|
37
|
+
this.#resetDownstreamReactables((0, EntityMetadata_1.getMetadata)(entity), fieldName);
|
|
38
|
+
}
|
|
34
39
|
// We could use this to invalidate m2o.get, but it doesn't work for collections
|
|
35
40
|
// with an orderBy, when the orderBy changes, so for now we use the blunt naiveCache.
|
|
36
41
|
// const field = meta.allFields[fieldName];
|
|
@@ -46,7 +51,7 @@ class IsLoadedCache {
|
|
|
46
51
|
for (const target of this.#naiveCache.values())
|
|
47
52
|
target.resetIsLoaded();
|
|
48
53
|
this.#naiveCache.clear();
|
|
49
|
-
this.#
|
|
54
|
+
this.#naiveDirtySets--;
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
57
|
/**
|
|
@@ -56,8 +61,12 @@ class IsLoadedCache {
|
|
|
56
61
|
*/
|
|
57
62
|
#resetDownstreamReactables(meta, fieldName) {
|
|
58
63
|
// These are reactables in other entities that are watching/reacting to this entity/fieldName
|
|
59
|
-
const reactables = meta.reactablesIncludingReadOnlyByField.get(fieldName)
|
|
64
|
+
const reactables = meta.reactablesIncludingReadOnlyByField.get(fieldName);
|
|
65
|
+
if (reactables === undefined)
|
|
66
|
+
return;
|
|
60
67
|
for (const r of reactables) {
|
|
68
|
+
if (this.#smartDirtySets === 0)
|
|
69
|
+
return;
|
|
61
70
|
// I.e. we've written to Author.firstName, and this reactable in Book/otherMeta depends on it
|
|
62
71
|
const otherMeta = (0, EntityMetadata_1.getMetadata)(r.cstr);
|
|
63
72
|
// Find any cache entries for this cstr + name
|
|
@@ -73,7 +82,7 @@ class IsLoadedCache {
|
|
|
73
82
|
}
|
|
74
83
|
}
|
|
75
84
|
set.clear();
|
|
76
|
-
this.#
|
|
85
|
+
this.#smartDirtySets--;
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsLoadedCache.js","sourceRoot":"","sources":["../src/IsLoadedCache.ts"],"names":[],"mappings":";;;AACA,qDAA+D;AAyB/D,MAAa,aAAa;IACxB,yFAAyF;IACzF,oFAAoF;IACpF,cAAc;IACd,WAAW,GAA0D,EAAE,CAAC;IACxE,gGAAgG;IAChG,oEAAoE;IACpE,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,
|
|
1
|
+
{"version":3,"file":"IsLoadedCache.js","sourceRoot":"","sources":["../src/IsLoadedCache.ts"],"names":[],"mappings":"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"}
|
package/build/loadLens.d.ts
CHANGED
|
@@ -48,6 +48,11 @@ export declare function loadLens<T extends Entity, U, V>(start: T | readonly T[]
|
|
|
48
48
|
forceReload?: boolean;
|
|
49
49
|
sql?: boolean;
|
|
50
50
|
}): Promise<V>;
|
|
51
|
+
/** Loads a precomputed lens path, avoiding repeated lambda/proxy evaluation for long-lived relation declarations. */
|
|
52
|
+
export declare function loadLensPath<T extends Entity, V>(start: T | readonly T[], paths: string[], opts?: {
|
|
53
|
+
forceReload?: boolean;
|
|
54
|
+
sql?: boolean;
|
|
55
|
+
}): Promise<V>;
|
|
51
56
|
export declare function isAllSqlPaths(meta: EntityMetadata, paths: string[]): boolean;
|
|
52
57
|
export declare function mapPathsToTarget(source: EntityMetadata, paths: string[]): [EntityMetadata, [EntityMetadata, Field][]];
|
|
53
58
|
/**
|
|
@@ -56,10 +61,16 @@ export declare function mapPathsToTarget(source: EntityMetadata, paths: string[]
|
|
|
56
61
|
* This assumes you've first evaluated the lens with `loadLens` and now can access it synchronously.
|
|
57
62
|
*/
|
|
58
63
|
export declare function getLens<T, U, V>(startMeta: EntityMetadata, start: T | readonly T[], fn: (lens: Lens<T>) => Lens<U, V>): V;
|
|
64
|
+
/** Synchronously traverses a precomputed lens path. */
|
|
65
|
+
export declare function getLensPath<T, V>(startMeta: EntityMetadata, start: T | readonly T[], paths: string[]): V;
|
|
59
66
|
/** Returns whether a lens is loaded; primarily for deeply loaded instances in tests. */
|
|
60
67
|
export declare function isLensLoaded<T, U, V>(start: T | readonly T[], fn: (lens: Lens<T>) => Lens<U, V>): boolean;
|
|
68
|
+
/** Returns whether a precomputed lens path is loaded; primarily for deeply loaded instances in tests. */
|
|
69
|
+
export declare function isLensLoadedPath<T>(start: T | readonly T[], paths: string[]): boolean;
|
|
61
70
|
/** Accepts a lens like `a => a.books.reviews` and returns a hint like `{ books: { reviews: {} } }`. */
|
|
62
71
|
export declare function lensToLoadHint<T extends Entity, U, V>(fn: (lens: Lens<T>) => Lens<U, V>): LoadHint<T>;
|
|
72
|
+
/** Accepts lens paths like `[books, reviews]` and returns a hint like `{ books: { reviews: {} } }`. */
|
|
73
|
+
export declare function lensPathToLoadHint<T extends Entity>(paths: string[]): LoadHint<T>;
|
|
63
74
|
/** Accepts a lens like `a => a.books.reviews` and returns the paths like `[books, reviews]`. */
|
|
64
75
|
export declare function lensToPath<T extends Entity, U, V>(fn: (lens: Lens<T>) => Lens<U, V>): string[];
|
|
65
76
|
export {};
|
package/build/loadLens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadLens.d.ts","sourceRoot":"","sources":["../src/loadLens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,KAAK,EAON,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,mEAAmE;AACnE,KAAK,QAAQ,CAAC,CAAC,IAAI;IAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAE1C,gFAAgF;AAChF,KAAK,aAAa,CAAC,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;;;;;;;;GAWG;AAIH,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAClB,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,GACxB,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAClC,aAAa,CAAC,CAAC,CAAC,EAAE,GAClB,aAAa,CAAC,CAAC,CAAC,EAAE,GACpB,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,GAC1B,CAAC,GACD,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GACrB,CAAC,GAAG,SAAS,GACb,CAAC,CAAC;AAIZ,yGAAyG;AACzG,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElE,KAAK,aAAa,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACxD,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GACjC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACxD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;;;;GAQG;AAIH,wBAAsB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EACnD,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EACvB,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EACjC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"loadLens.d.ts","sourceRoot":"","sources":["../src/loadLens.ts"],"names":[],"mappings":"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"}
|
package/build/loadLens.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadLens = loadLens;
|
|
4
|
+
exports.loadLensPath = loadLensPath;
|
|
4
5
|
exports.isAllSqlPaths = isAllSqlPaths;
|
|
5
6
|
exports.mapPathsToTarget = mapPathsToTarget;
|
|
6
7
|
exports.getLens = getLens;
|
|
8
|
+
exports.getLensPath = getLensPath;
|
|
7
9
|
exports.isLensLoaded = isLensLoaded;
|
|
10
|
+
exports.isLensLoadedPath = isLensLoadedPath;
|
|
8
11
|
exports.lensToLoadHint = lensToLoadHint;
|
|
12
|
+
exports.lensPathToLoadHint = lensPathToLoadHint;
|
|
9
13
|
exports.lensToPath = lensToPath;
|
|
10
14
|
const Entity_1 = require("./Entity");
|
|
11
15
|
const EntityManager_1 = require("./EntityManager");
|
|
@@ -26,6 +30,10 @@ const AbstractRelationImpl_1 = require("./relations/AbstractRelationImpl");
|
|
|
26
30
|
// subclass itself, so we use the codegen hammer in our subclass to force the right Lens type
|
|
27
31
|
// in a .load stub that just calls us for the implementation.
|
|
28
32
|
async function loadLens(start, fn, opts = {}) {
|
|
33
|
+
return loadLensPath(start, collectPaths(fn), opts);
|
|
34
|
+
}
|
|
35
|
+
/** Loads a precomputed lens path, avoiding repeated lambda/proxy evaluation for long-lived relation declarations. */
|
|
36
|
+
async function loadLensPath(start, paths, opts = {}) {
|
|
29
37
|
// Probe for the meta, so we can track when/if it needs to flip to a collection (even after hitting undefined)
|
|
30
38
|
const meta = Array.isArray(start)
|
|
31
39
|
? (0, Entity_1.isEntity)(start[0]) && (0, EntityMetadata_1.getMetadata)(start[0])
|
|
@@ -34,10 +42,9 @@ async function loadLens(start, fn, opts = {}) {
|
|
|
34
42
|
if (!meta)
|
|
35
43
|
return [];
|
|
36
44
|
// If we're already loaded, just return
|
|
37
|
-
if (!opts.forceReload &&
|
|
38
|
-
return
|
|
45
|
+
if (!opts.forceReload && isLensLoadedPath(start, paths)) {
|
|
46
|
+
return getLensPath(meta, start, paths);
|
|
39
47
|
}
|
|
40
|
-
const paths = collectPaths(fn);
|
|
41
48
|
// See if we can load this via SQL
|
|
42
49
|
if (opts.sql) {
|
|
43
50
|
// Are all paths SQL query-able?
|
|
@@ -150,7 +157,10 @@ function maybeLoad(object, path, opts) {
|
|
|
150
157
|
* This assumes you've first evaluated the lens with `loadLens` and now can access it synchronously.
|
|
151
158
|
*/
|
|
152
159
|
function getLens(startMeta, start, fn) {
|
|
153
|
-
|
|
160
|
+
return getLensPath(startMeta, start, collectPaths(fn));
|
|
161
|
+
}
|
|
162
|
+
/** Synchronously traverses a precomputed lens path. */
|
|
163
|
+
function getLensPath(startMeta, start, paths) {
|
|
154
164
|
let currentMeta = startMeta;
|
|
155
165
|
let current = start;
|
|
156
166
|
let seenSoftDeleted = false;
|
|
@@ -196,9 +206,12 @@ function maybeAdd(set, value) {
|
|
|
196
206
|
}
|
|
197
207
|
/** Returns whether a lens is loaded; primarily for deeply loaded instances in tests. */
|
|
198
208
|
function isLensLoaded(start, fn) {
|
|
209
|
+
return isLensLoadedPath(start, collectPaths(fn));
|
|
210
|
+
}
|
|
211
|
+
/** Returns whether a precomputed lens path is loaded; primarily for deeply loaded instances in tests. */
|
|
212
|
+
function isLensLoadedPath(start, paths) {
|
|
199
213
|
// This is a huge copy/paste of `getLens` but we check `isNotLoaded` and early return
|
|
200
214
|
// as soon as we find any not-loaded relation
|
|
201
|
-
const paths = collectPaths(fn);
|
|
202
215
|
let current = start;
|
|
203
216
|
let seenSoftDeleted = false;
|
|
204
217
|
// Now evaluate each step of the path
|
|
@@ -234,9 +247,13 @@ function isLensLoaded(start, fn) {
|
|
|
234
247
|
}
|
|
235
248
|
/** Accepts a lens like `a => a.books.reviews` and returns a hint like `{ books: { reviews: {} } }`. */
|
|
236
249
|
function lensToLoadHint(fn) {
|
|
237
|
-
|
|
250
|
+
return lensPathToLoadHint(collectPaths(fn));
|
|
251
|
+
}
|
|
252
|
+
/** Accepts lens paths like `[books, reviews]` and returns a hint like `{ books: { reviews: {} } }`. */
|
|
253
|
+
function lensPathToLoadHint(paths) {
|
|
238
254
|
let current = {};
|
|
239
|
-
for (
|
|
255
|
+
for (let i = paths.length - 1; i >= 0; i--) {
|
|
256
|
+
const path = paths[i];
|
|
240
257
|
current = { [path]: current };
|
|
241
258
|
}
|
|
242
259
|
return current;
|
package/build/loadLens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadLens.js","sourceRoot":"","sources":["../src/loadLens.ts"],"names":[],"mappings":";;AAqFA,
|
|
1
|
+
{"version":3,"file":"loadLens.js","sourceRoot":"","sources":["../src/loadLens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasOneThrough.d.ts","sourceRoot":"","sources":["../../src/relations/hasOneThrough.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAIN,IAAI,
|
|
1
|
+
{"version":3,"file":"hasOneThrough.d.ts","sourceRoot":"","sources":["../../src/relations/hasOneThrough.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAIN,IAAI,EAIJ,SAAS,EACV,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5G,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAC/B,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAYpB"}
|
|
@@ -11,13 +11,15 @@ const newEntity_1 = require("../newEntity");
|
|
|
11
11
|
* Because this is based on `CustomReference`, it will work in populates, i.e. `em.populate(review, "author")`.
|
|
12
12
|
*/
|
|
13
13
|
function hasOneThrough(lens) {
|
|
14
|
+
const paths = (0, index_1.lensToPath)(lens);
|
|
15
|
+
const loadHint = (0, index_1.lensPathToLoadHint)(paths);
|
|
14
16
|
return (0, newEntity_1.lazyField)((entity) => {
|
|
15
17
|
const meta = (0, index_1.getMetadata)(entity);
|
|
16
18
|
return new index_1.CustomReference(entity, {
|
|
17
|
-
load: (entity, opts) => (0, index_1.
|
|
18
|
-
get: () => (0, index_1.
|
|
19
|
-
isLoaded: () => (0, index_1.
|
|
20
|
-
loadHint
|
|
19
|
+
load: (entity, opts) => (0, index_1.loadLensPath)(entity, paths, opts),
|
|
20
|
+
get: () => (0, index_1.getLensPath)(meta, entity, paths),
|
|
21
|
+
isLoaded: () => (0, index_1.isLensLoadedPath)(entity, paths),
|
|
22
|
+
loadHint,
|
|
21
23
|
});
|
|
22
24
|
});
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasOneThrough.js","sourceRoot":"","sources":["../../src/relations/hasOneThrough.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"hasOneThrough.js","sourceRoot":"","sources":["../../src/relations/hasOneThrough.ts"],"names":[],"mappings":";;AAqBA,sCAcC;AAnCD,oCAWkB;AAClB,4CAAyC;AAEzC;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,IAAgC;IAEhC,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAA,0BAAkB,EAAI,KAAK,CAAC,CAAC;IAC9C,OAAO,IAAA,qBAAS,EAAC,CAAC,MAAS,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,CAAC;QACjC,OAAO,IAAI,uBAAe,CAAU,MAAM,EAAE;YAC1C,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;YACzD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;YAC3C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,wBAAgB,EAAC,MAAM,EAAE,KAAK,CAAC;YAC/C,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-core",
|
|
3
|
-
"version": "2.2.0-next.
|
|
3
|
+
"version": "2.2.0-next.8",
|
|
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.2.0-next.
|
|
23
|
+
"joist-utils": "2.2.0-next.8"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"ansis": "^4.3.0",
|