tutuca 0.9.52 → 0.9.53
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/tutuca-cli.js +3 -6
- package/dist/tutuca-dev.js +49 -5
- package/dist/tutuca-dev.min.js +1 -1
- package/dist/tutuca-extra.js +3 -5
- package/dist/tutuca-extra.min.js +1 -1
- package/dist/tutuca.js +3 -5
- package/dist/tutuca.min.js +1 -1
- package/package.json +1 -1
- package/skill/tutuca/SKILL.md +5 -3
- package/skill/tutuca/core.md +9 -4
- package/skill/tutuca/testing.md +266 -0
package/dist/tutuca-cli.js
CHANGED
|
@@ -13630,9 +13630,6 @@ class Renderer {
|
|
|
13630
13630
|
this.comps = comps;
|
|
13631
13631
|
this.cache = new WeakMapDomCache;
|
|
13632
13632
|
}
|
|
13633
|
-
getSeqInfo(seq) {
|
|
13634
|
-
return isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter;
|
|
13635
|
-
}
|
|
13636
13633
|
renderTag(tag, attrs, childs) {
|
|
13637
13634
|
return h(tag, attrs, childs);
|
|
13638
13635
|
}
|
|
@@ -13690,7 +13687,7 @@ class Renderer {
|
|
|
13690
13687
|
const { seq, filter, loopWith } = iterInfo.eval(stack);
|
|
13691
13688
|
const r = [];
|
|
13692
13689
|
const iterData = loopWith.call(stack.it, seq);
|
|
13693
|
-
|
|
13690
|
+
getSeqInfo(seq)(seq, (key, value, attrName) => {
|
|
13694
13691
|
if (filter.call(stack.it, key, value, iterData)) {
|
|
13695
13692
|
const dom = this.renderIt(stack.enter(value, { key }, true), nodeId, key, viewName);
|
|
13696
13693
|
this.pushEachEntry(r, nodeId, attrName, key, dom);
|
|
@@ -13703,7 +13700,7 @@ class Renderer {
|
|
|
13703
13700
|
const r = [];
|
|
13704
13701
|
const it = stack.it;
|
|
13705
13702
|
const iterData = loopWith.call(it, seq);
|
|
13706
|
-
|
|
13703
|
+
getSeqInfo(seq)(seq, (key, value, attrName) => {
|
|
13707
13704
|
if (filter.call(it, key, value, iterData)) {
|
|
13708
13705
|
const cachePath = enricher ? [it, value] : [value];
|
|
13709
13706
|
const binds = { key, value };
|
|
@@ -13740,7 +13737,7 @@ class Renderer {
|
|
|
13740
13737
|
return new VComment(`§${JSON.stringify(info)}§`);
|
|
13741
13738
|
}
|
|
13742
13739
|
}
|
|
13743
|
-
var DATASET_ATTRS, imIndexedIter = (seq, visit) => {
|
|
13740
|
+
var DATASET_ATTRS, getSeqInfo = (seq) => isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter, imIndexedIter = (seq, visit) => {
|
|
13744
13741
|
let i = 0;
|
|
13745
13742
|
for (const v of seq)
|
|
13746
13743
|
visit(i++, v, "si");
|
package/dist/tutuca-dev.js
CHANGED
|
@@ -14601,9 +14601,6 @@ class Renderer {
|
|
|
14601
14601
|
this.comps = comps;
|
|
14602
14602
|
this.cache = new WeakMapDomCache;
|
|
14603
14603
|
}
|
|
14604
|
-
getSeqInfo(seq) {
|
|
14605
|
-
return isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter;
|
|
14606
|
-
}
|
|
14607
14604
|
renderTag(tag, attrs, childs) {
|
|
14608
14605
|
return h(tag, attrs, childs);
|
|
14609
14606
|
}
|
|
@@ -14661,7 +14658,7 @@ class Renderer {
|
|
|
14661
14658
|
const { seq, filter, loopWith } = iterInfo.eval(stack);
|
|
14662
14659
|
const r = [];
|
|
14663
14660
|
const iterData = loopWith.call(stack.it, seq);
|
|
14664
|
-
|
|
14661
|
+
getSeqInfo(seq)(seq, (key, value, attrName) => {
|
|
14665
14662
|
if (filter.call(stack.it, key, value, iterData)) {
|
|
14666
14663
|
const dom = this.renderIt(stack.enter(value, { key }, true), nodeId, key, viewName);
|
|
14667
14664
|
this.pushEachEntry(r, nodeId, attrName, key, dom);
|
|
@@ -14674,7 +14671,7 @@ class Renderer {
|
|
|
14674
14671
|
const r = [];
|
|
14675
14672
|
const it = stack.it;
|
|
14676
14673
|
const iterData = loopWith.call(it, seq);
|
|
14677
|
-
|
|
14674
|
+
getSeqInfo(seq)(seq, (key, value, attrName) => {
|
|
14678
14675
|
if (filter.call(it, key, value, iterData)) {
|
|
14679
14676
|
const cachePath = enricher ? [it, value] : [value];
|
|
14680
14677
|
const binds = { key, value };
|
|
@@ -14711,6 +14708,7 @@ class Renderer {
|
|
|
14711
14708
|
return new VComment(`§${JSON.stringify(info)}§`);
|
|
14712
14709
|
}
|
|
14713
14710
|
}
|
|
14711
|
+
var getSeqInfo = (seq) => isIndexed(seq) ? imIndexedIter : isKeyed(seq) ? imKeyedIter : seq?.[SEQ_INFO] ?? unkIter;
|
|
14714
14712
|
var imIndexedIter = (seq, visit) => {
|
|
14715
14713
|
let i = 0;
|
|
14716
14714
|
for (const v of seq)
|
|
@@ -15036,6 +15034,51 @@ function docComponents(normalized, { name = null } = {}) {
|
|
|
15036
15034
|
const picked = name === null ? comps : comps.filter((c) => c.name === name);
|
|
15037
15035
|
return new ComponentDocs({ items: getComponentsDocs(picked) });
|
|
15038
15036
|
}
|
|
15037
|
+
// src/util/testing.js
|
|
15038
|
+
var filterAlwaysTrue2 = () => true;
|
|
15039
|
+
var nullLoopWith2 = (seq) => ({ seq });
|
|
15040
|
+
var plainArrayIter = (seq, visit) => {
|
|
15041
|
+
for (let i = 0;i < seq.length; i++)
|
|
15042
|
+
visit(i, seq[i]);
|
|
15043
|
+
};
|
|
15044
|
+
var plainMapIter = (seq, visit) => {
|
|
15045
|
+
for (const [k, v] of seq.entries())
|
|
15046
|
+
visit(k, v);
|
|
15047
|
+
};
|
|
15048
|
+
function pickIter(seq) {
|
|
15049
|
+
if (Array.isArray(seq))
|
|
15050
|
+
return plainArrayIter;
|
|
15051
|
+
if (seq instanceof Map)
|
|
15052
|
+
return plainMapIter;
|
|
15053
|
+
return getSeqInfo(seq);
|
|
15054
|
+
}
|
|
15055
|
+
function resolveAlter(Comp, name) {
|
|
15056
|
+
if (name == null)
|
|
15057
|
+
return null;
|
|
15058
|
+
const fn = Comp.alter?.[name];
|
|
15059
|
+
if (typeof fn !== "function") {
|
|
15060
|
+
throw new Error(`alter handler '${name}' not found on component '${Comp.name}'`);
|
|
15061
|
+
}
|
|
15062
|
+
return fn;
|
|
15063
|
+
}
|
|
15064
|
+
function collectIterBindings(Comp, compInstance, seq, opts = {}) {
|
|
15065
|
+
const whenFn = resolveAlter(Comp, opts.when) ?? filterAlwaysTrue2;
|
|
15066
|
+
const loopWithFn = resolveAlter(Comp, opts.loopWith) ?? nullLoopWith2;
|
|
15067
|
+
const enrichFn = resolveAlter(Comp, opts.enrichWith);
|
|
15068
|
+
const it = compInstance;
|
|
15069
|
+
const iterData = loopWithFn.call(it, seq);
|
|
15070
|
+
const out = [];
|
|
15071
|
+
const iter = pickIter(seq);
|
|
15072
|
+
iter(seq, (key, value) => {
|
|
15073
|
+
if (!whenFn.call(it, key, value, iterData))
|
|
15074
|
+
return;
|
|
15075
|
+
const binds = { key, value };
|
|
15076
|
+
if (enrichFn)
|
|
15077
|
+
enrichFn.call(it, binds, key, value, iterData);
|
|
15078
|
+
out.push(binds);
|
|
15079
|
+
});
|
|
15080
|
+
return out;
|
|
15081
|
+
}
|
|
15039
15082
|
|
|
15040
15083
|
// dev.js
|
|
15041
15084
|
async function test3(opts = {}) {
|
|
@@ -15156,6 +15199,7 @@ export {
|
|
|
15156
15199
|
component,
|
|
15157
15200
|
compileClassesToStyleText,
|
|
15158
15201
|
compileClassesToStyle,
|
|
15202
|
+
collectIterBindings,
|
|
15159
15203
|
checkComponent,
|
|
15160
15204
|
check,
|
|
15161
15205
|
UNSUPPORTED_EXPR_SYNTAX,
|