tutuca 0.9.19 → 0.9.20
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 +204 -207
- package/dist/tutuca-dev.js +243 -10
- package/dist/tutuca-dev.min.js +2 -2
- package/dist/tutuca-extra.js +13 -9
- package/dist/tutuca-extra.min.js +2 -2
- package/dist/tutuca.js +13 -9
- package/dist/tutuca.min.js +2 -2
- package/package.json +2 -3
package/dist/tutuca-dev.js
CHANGED
|
@@ -1701,9 +1701,14 @@ class ComponentStack {
|
|
|
1701
1701
|
comp.scope = this.enter();
|
|
1702
1702
|
this.comps.registerComponent(comp);
|
|
1703
1703
|
this.byName[comp.name] = comp;
|
|
1704
|
-
|
|
1705
|
-
|
|
1704
|
+
}
|
|
1705
|
+
for (const alias in aliases) {
|
|
1706
|
+
const comp = this.byName[aliases[alias]];
|
|
1707
|
+
console.assert(this.byName[alias] === undefined, "alias overrides component", alias);
|
|
1708
|
+
if (comp !== undefined)
|
|
1706
1709
|
this.byName[alias] = comp;
|
|
1710
|
+
else
|
|
1711
|
+
console.warn("alias", alias, "to inexistent component", aliases[alias]);
|
|
1707
1712
|
}
|
|
1708
1713
|
}
|
|
1709
1714
|
registerMacros(macros) {
|
|
@@ -2038,9 +2043,10 @@ class Transactor {
|
|
|
2038
2043
|
}
|
|
2039
2044
|
}
|
|
2040
2045
|
function mkReq404(name) {
|
|
2041
|
-
|
|
2046
|
+
const fn = () => {
|
|
2042
2047
|
throw new Error(`Request not found: ${name}`);
|
|
2043
2048
|
};
|
|
2049
|
+
return { fn };
|
|
2044
2050
|
}
|
|
2045
2051
|
function nullHandler() {
|
|
2046
2052
|
return this;
|
|
@@ -2681,15 +2687,13 @@ class App {
|
|
|
2681
2687
|
_dispatchEvent(e) {
|
|
2682
2688
|
const { type } = e;
|
|
2683
2689
|
const isDrag = type === "dragover" || type === "dragstart" || type === "dragend";
|
|
2684
|
-
const { rootNode: root, maxEventNodeDepth: maxDepth, comps } = this;
|
|
2690
|
+
const { rootNode: root, maxEventNodeDepth: maxDepth, comps, transactor } = this;
|
|
2685
2691
|
const [path, handlers] = Path.fromEvent(e, root, maxDepth, comps, !isDrag);
|
|
2686
2692
|
if (isDrag)
|
|
2687
2693
|
this._handleDragEvent(e, type, path);
|
|
2688
|
-
if (path !== null && handlers !== null)
|
|
2689
|
-
for (const handler of handlers)
|
|
2690
|
-
|
|
2691
|
-
}
|
|
2692
|
-
}
|
|
2694
|
+
if (path !== null && handlers !== null)
|
|
2695
|
+
for (const handler of handlers)
|
|
2696
|
+
transactor.transactInputNow(path, e, handler, this.dragInfo);
|
|
2693
2697
|
}
|
|
2694
2698
|
_handleTouchEvent(e) {
|
|
2695
2699
|
const { type } = e;
|
|
@@ -7932,7 +7936,7 @@ async function compileClassesToStyleText(app, compileClasses, extraCSSClasses, C
|
|
|
7932
7936
|
}
|
|
7933
7937
|
return await compileClasses(Array.from(classes));
|
|
7934
7938
|
}
|
|
7935
|
-
//
|
|
7939
|
+
// tools/core/lint-check.js
|
|
7936
7940
|
var ALT_HANDLER_NOT_DEFINED = "ALT_HANDLER_NOT_DEFINED";
|
|
7937
7941
|
var RENDER_IT_OUTSIDE_OF_LOOP = "RENDER_IT_OUTSIDE_OF_LOOP";
|
|
7938
7942
|
var UNKNOWN_EVENT_MODIFIER = "UNKNOWN_EVENT_MODIFIER";
|
|
@@ -8176,6 +8180,232 @@ class LintParseContext extends ParseContext {
|
|
|
8176
8180
|
this.attrs.push({ attrs, wrapperAttrs, textChild });
|
|
8177
8181
|
}
|
|
8178
8182
|
}
|
|
8183
|
+
// tools/core/results.js
|
|
8184
|
+
class ComponentDocs {
|
|
8185
|
+
constructor({ items }) {
|
|
8186
|
+
this.items = items;
|
|
8187
|
+
}
|
|
8188
|
+
}
|
|
8189
|
+
|
|
8190
|
+
// tools/core/docs.js
|
|
8191
|
+
function getSignature(name, fn) {
|
|
8192
|
+
const s = fn.toString();
|
|
8193
|
+
const m = s.match(/^(?:\w+|function\s*\w*)\s*\(([^)]*)\)/);
|
|
8194
|
+
const params = m ? m[1].trim() : "";
|
|
8195
|
+
return `${name}(${params})`;
|
|
8196
|
+
}
|
|
8197
|
+
function getFieldMethods(field) {
|
|
8198
|
+
const { name, type } = field;
|
|
8199
|
+
const uname = name[0].toUpperCase() + name.slice(1);
|
|
8200
|
+
const methods = [
|
|
8201
|
+
{ name: `set${uname}`, sig: `set${uname}(v)`, desc: "Set value" },
|
|
8202
|
+
{
|
|
8203
|
+
name: `update${uname}`,
|
|
8204
|
+
sig: `update${uname}(fn)`,
|
|
8205
|
+
desc: "Update value with function"
|
|
8206
|
+
},
|
|
8207
|
+
{
|
|
8208
|
+
name: `reset${uname}`,
|
|
8209
|
+
sig: `reset${uname}()`,
|
|
8210
|
+
desc: "Reset to default value"
|
|
8211
|
+
},
|
|
8212
|
+
{
|
|
8213
|
+
name: `is${uname}NotSet`,
|
|
8214
|
+
sig: `is${uname}NotSet()`,
|
|
8215
|
+
desc: "Check if null/undefined"
|
|
8216
|
+
},
|
|
8217
|
+
{
|
|
8218
|
+
name: `is${uname}Set`,
|
|
8219
|
+
sig: `is${uname}Set()`,
|
|
8220
|
+
desc: "Check if not null/undefined"
|
|
8221
|
+
}
|
|
8222
|
+
];
|
|
8223
|
+
switch (type) {
|
|
8224
|
+
case "bool":
|
|
8225
|
+
methods[0].desc = "Set value (coerces to boolean)";
|
|
8226
|
+
methods.push({
|
|
8227
|
+
name: `toggle${uname}`,
|
|
8228
|
+
sig: `toggle${uname}()`,
|
|
8229
|
+
desc: "Toggle boolean value"
|
|
8230
|
+
});
|
|
8231
|
+
break;
|
|
8232
|
+
case "text":
|
|
8233
|
+
methods.push({
|
|
8234
|
+
name: `is${uname}Empty`,
|
|
8235
|
+
sig: `is${uname}Empty()`,
|
|
8236
|
+
desc: "Check if string is empty"
|
|
8237
|
+
}, { name: `${name}Len`, sig: `${name}Len()`, desc: "Get string length" });
|
|
8238
|
+
break;
|
|
8239
|
+
case "list":
|
|
8240
|
+
methods.push({
|
|
8241
|
+
name: `is${uname}Empty`,
|
|
8242
|
+
sig: `is${uname}Empty()`,
|
|
8243
|
+
desc: "Check if list is empty"
|
|
8244
|
+
}, { name: `${name}Len`, sig: `${name}Len()`, desc: "Get list size" }, {
|
|
8245
|
+
name: `setIn${uname}At`,
|
|
8246
|
+
sig: `setIn${uname}At(i, v)`,
|
|
8247
|
+
desc: "Set item at index"
|
|
8248
|
+
}, {
|
|
8249
|
+
name: `getIn${uname}At`,
|
|
8250
|
+
sig: `getIn${uname}At(i, defaultValue)`,
|
|
8251
|
+
desc: "Get item at index"
|
|
8252
|
+
}, {
|
|
8253
|
+
name: `updateIn${uname}At`,
|
|
8254
|
+
sig: `updateIn${uname}At(i, fn)`,
|
|
8255
|
+
desc: "Update item at index with function"
|
|
8256
|
+
}, {
|
|
8257
|
+
name: `deleteIn${uname}At`,
|
|
8258
|
+
sig: `deleteIn${uname}At(i)`,
|
|
8259
|
+
desc: "Delete item at index"
|
|
8260
|
+
}, {
|
|
8261
|
+
name: `removeIn${uname}At`,
|
|
8262
|
+
sig: `removeIn${uname}At(i)`,
|
|
8263
|
+
desc: "Delete item at index (alias)"
|
|
8264
|
+
}, {
|
|
8265
|
+
name: `pushIn${uname}`,
|
|
8266
|
+
sig: `pushIn${uname}(v)`,
|
|
8267
|
+
desc: "Push item to end"
|
|
8268
|
+
}, {
|
|
8269
|
+
name: `insertIn${uname}At`,
|
|
8270
|
+
sig: `insertIn${uname}At(i, v)`,
|
|
8271
|
+
desc: "Insert item at index"
|
|
8272
|
+
});
|
|
8273
|
+
break;
|
|
8274
|
+
case "map":
|
|
8275
|
+
case "omap": {
|
|
8276
|
+
const label = type === "omap" ? "ordered map" : "map";
|
|
8277
|
+
methods.push({
|
|
8278
|
+
name: `is${uname}Empty`,
|
|
8279
|
+
sig: `is${uname}Empty()`,
|
|
8280
|
+
desc: `Check if ${label} is empty`
|
|
8281
|
+
}, {
|
|
8282
|
+
name: `${name}Len`,
|
|
8283
|
+
sig: `${name}Len()`,
|
|
8284
|
+
desc: `Get ${label} size`
|
|
8285
|
+
}, {
|
|
8286
|
+
name: `setIn${uname}At`,
|
|
8287
|
+
sig: `setIn${uname}At(key, v)`,
|
|
8288
|
+
desc: "Set value at key"
|
|
8289
|
+
}, {
|
|
8290
|
+
name: `getIn${uname}At`,
|
|
8291
|
+
sig: `getIn${uname}At(key, defaultValue)`,
|
|
8292
|
+
desc: "Get value at key"
|
|
8293
|
+
}, {
|
|
8294
|
+
name: `updateIn${uname}At`,
|
|
8295
|
+
sig: `updateIn${uname}At(key, fn)`,
|
|
8296
|
+
desc: "Update value at key with function"
|
|
8297
|
+
}, {
|
|
8298
|
+
name: `deleteIn${uname}At`,
|
|
8299
|
+
sig: `deleteIn${uname}At(key)`,
|
|
8300
|
+
desc: "Delete entry at key"
|
|
8301
|
+
}, {
|
|
8302
|
+
name: `removeIn${uname}At`,
|
|
8303
|
+
sig: `removeIn${uname}At(key)`,
|
|
8304
|
+
desc: "Delete entry at key (alias)"
|
|
8305
|
+
});
|
|
8306
|
+
break;
|
|
8307
|
+
}
|
|
8308
|
+
case "set":
|
|
8309
|
+
methods.push({
|
|
8310
|
+
name: `is${uname}Empty`,
|
|
8311
|
+
sig: `is${uname}Empty()`,
|
|
8312
|
+
desc: "Check if set is empty"
|
|
8313
|
+
}, { name: `${name}Len`, sig: `${name}Len()`, desc: "Get set size" }, {
|
|
8314
|
+
name: `addIn${uname}`,
|
|
8315
|
+
sig: `addIn${uname}(v)`,
|
|
8316
|
+
desc: "Add value to set"
|
|
8317
|
+
}, {
|
|
8318
|
+
name: `deleteIn${uname}`,
|
|
8319
|
+
sig: `deleteIn${uname}(v)`,
|
|
8320
|
+
desc: "Remove value from set"
|
|
8321
|
+
}, {
|
|
8322
|
+
name: `removeIn${uname}`,
|
|
8323
|
+
sig: `removeIn${uname}(v)`,
|
|
8324
|
+
desc: "Remove value from set (alias)"
|
|
8325
|
+
}, {
|
|
8326
|
+
name: `hasIn${uname}`,
|
|
8327
|
+
sig: `hasIn${uname}(v)`,
|
|
8328
|
+
desc: "Check if value is in set"
|
|
8329
|
+
}, {
|
|
8330
|
+
name: `toggleIn${uname}`,
|
|
8331
|
+
sig: `toggleIn${uname}(v)`,
|
|
8332
|
+
desc: "Toggle value in set"
|
|
8333
|
+
});
|
|
8334
|
+
break;
|
|
8335
|
+
}
|
|
8336
|
+
return methods;
|
|
8337
|
+
}
|
|
8338
|
+
function serializeDefault(v) {
|
|
8339
|
+
if (v === null || v === undefined)
|
|
8340
|
+
return v;
|
|
8341
|
+
if (v?.toJS)
|
|
8342
|
+
return v.toJS();
|
|
8343
|
+
return v;
|
|
8344
|
+
}
|
|
8345
|
+
function getComponentDoc(comp) {
|
|
8346
|
+
const meta = comp.Class.getMetaClass();
|
|
8347
|
+
const { fields, name, methods } = meta;
|
|
8348
|
+
const userMethods = Object.keys(methods).map((k) => ({
|
|
8349
|
+
name: k,
|
|
8350
|
+
sig: getSignature(k, methods[k])
|
|
8351
|
+
}));
|
|
8352
|
+
const inputHandlers = Object.keys(comp.input).map((k) => ({
|
|
8353
|
+
name: k,
|
|
8354
|
+
sig: getSignature(k, comp.input[k])
|
|
8355
|
+
}));
|
|
8356
|
+
const fieldDocs = [];
|
|
8357
|
+
for (const fieldName in fields) {
|
|
8358
|
+
const field = fields[fieldName];
|
|
8359
|
+
fieldDocs.push({
|
|
8360
|
+
name: fieldName,
|
|
8361
|
+
type: field.type,
|
|
8362
|
+
default: serializeDefault(field.defaultValue),
|
|
8363
|
+
methods: getFieldMethods(field)
|
|
8364
|
+
});
|
|
8365
|
+
}
|
|
8366
|
+
return { name, methods: userMethods, input: inputHandlers, fields: fieldDocs };
|
|
8367
|
+
}
|
|
8368
|
+
function getComponentsDocs(components) {
|
|
8369
|
+
return components.map((comp) => getComponentDoc(comp));
|
|
8370
|
+
}
|
|
8371
|
+
function docComponents(normalized, { name = null } = {}) {
|
|
8372
|
+
const comps = normalized.components;
|
|
8373
|
+
const picked = name === null ? comps : comps.filter((c) => c.name === name);
|
|
8374
|
+
return new ComponentDocs({ items: getComponentsDocs(picked) });
|
|
8375
|
+
}
|
|
8376
|
+
// tools/format/lint.js
|
|
8377
|
+
function lintIdToMessage(id, info) {
|
|
8378
|
+
switch (id) {
|
|
8379
|
+
case "RENDER_IT_OUTSIDE_OF_LOOP":
|
|
8380
|
+
return "render-it used outside of a loop";
|
|
8381
|
+
case "UNKNOWN_EVENT_MODIFIER":
|
|
8382
|
+
return `Unknown modifier '${info.modifier}' on '${info.name}' event`;
|
|
8383
|
+
case "UNKNOWN_HANDLER_ARG_NAME":
|
|
8384
|
+
return `Unknown handler argument '${info.name}'`;
|
|
8385
|
+
case "INPUT_HANDLER_NOT_IMPLEMENTED":
|
|
8386
|
+
return `Input handler '${info.name}' is not implemented`;
|
|
8387
|
+
case "INPUT_HANDLER_METHOD_NOT_IMPLEMENTED":
|
|
8388
|
+
return `Method '.${info.name}' is not implemented`;
|
|
8389
|
+
case "INPUT_HANDLER_FOR_INPUT_HANDLER_METHOD":
|
|
8390
|
+
return `'${info.name}' exists as input handler — use without '.' prefix`;
|
|
8391
|
+
case "INPUT_HANDLER_METHOD_FOR_INPUT_HANDLER":
|
|
8392
|
+
return `'${info.name}' exists as method — use with '.' prefix`;
|
|
8393
|
+
case "FIELD_VAL_NOT_DEFINED":
|
|
8394
|
+
return `Field '.${info.name}' is not defined`;
|
|
8395
|
+
case "COMPUTED_VAL_NOT_DEFINED":
|
|
8396
|
+
return `Computed property '$${info.name}' is not defined`;
|
|
8397
|
+
case "UNKNOWN_REQUEST_NAME":
|
|
8398
|
+
return `Unknown request '!${info.name}'`;
|
|
8399
|
+
case "UNKNOWN_COMPONENT_NAME":
|
|
8400
|
+
return `Unknown component '${info.name}'`;
|
|
8401
|
+
case "ALT_HANDLER_NOT_DEFINED":
|
|
8402
|
+
return `Alter handler '${info.name}' is not defined`;
|
|
8403
|
+
case "LINT_ERROR":
|
|
8404
|
+
return info.message;
|
|
8405
|
+
default:
|
|
8406
|
+
return id;
|
|
8407
|
+
}
|
|
8408
|
+
}
|
|
8179
8409
|
|
|
8180
8410
|
// dev.js
|
|
8181
8411
|
class LintClassCollectorCtx extends ParseCtxClassSetCollector {
|
|
@@ -8211,6 +8441,7 @@ export {
|
|
|
8211
8441
|
mergeDeep$1 as mergeDeep,
|
|
8212
8442
|
merge$1 as merge,
|
|
8213
8443
|
macro,
|
|
8444
|
+
lintIdToMessage,
|
|
8214
8445
|
isValueObject,
|
|
8215
8446
|
isStack,
|
|
8216
8447
|
isSet,
|
|
@@ -8236,9 +8467,11 @@ export {
|
|
|
8236
8467
|
hasIn$1 as hasIn,
|
|
8237
8468
|
has,
|
|
8238
8469
|
getIn$1 as getIn,
|
|
8470
|
+
getComponentsDocs,
|
|
8239
8471
|
get,
|
|
8240
8472
|
fromJS,
|
|
8241
8473
|
fieldsByClass,
|
|
8474
|
+
docComponents,
|
|
8242
8475
|
css,
|
|
8243
8476
|
component,
|
|
8244
8477
|
compileClassesToStyleText,
|