@danielx/civet 0.5.4 → 0.5.5
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/README.md +5 -0
- package/dist/browser.js +185 -22
- package/dist/main.js +185 -22
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -217,6 +217,11 @@ Things Added that CoffeeScript didn't
|
|
|
217
217
|
`sum=x+1` → `sum={x+1}`, `list=[1, 2, 3]` → `list={[1, 2, 3]}`
|
|
218
218
|
- Attributes can use computed property names:
|
|
219
219
|
`[expr]={value}` → `{...{[expr]: value}}`
|
|
220
|
+
- `"civet solid"` flag adds correct types for JSX elements and fragments.
|
|
221
|
+
Use `"civet solid client"` (default) for client-only code,
|
|
222
|
+
`"civet solid server"` for server-only code (SSR only), or
|
|
223
|
+
`"civet solid client server"` for isomorphic code that runs on
|
|
224
|
+
client and server (SSR + hydration).
|
|
220
225
|
- CoffeeScript improvements
|
|
221
226
|
- Postfix loop `run() loop` → `while(true) run()`
|
|
222
227
|
- Character range literals `["a".."z"]`, `['f'..'a']`, `['0'..'9']`
|
package/dist/browser.js
CHANGED
|
@@ -833,10 +833,12 @@ ${input.slice(result.pos)}
|
|
|
833
833
|
When,
|
|
834
834
|
While,
|
|
835
835
|
Yield,
|
|
836
|
+
TypedJSXElement,
|
|
836
837
|
JSXElement,
|
|
837
838
|
JSXSelfClosingElement,
|
|
838
839
|
JSXOpeningElement,
|
|
839
840
|
JSXClosingElement,
|
|
841
|
+
TypedJSXFragment,
|
|
840
842
|
JSXFragment,
|
|
841
843
|
JSXElementName,
|
|
842
844
|
JSXIdentifierName,
|
|
@@ -2003,8 +2005,8 @@ ${input.slice(result.pos)}
|
|
|
2003
2005
|
var PrimaryExpression$7 = RegularExpressionLiteral;
|
|
2004
2006
|
var PrimaryExpression$8 = TemplateLiteral;
|
|
2005
2007
|
var PrimaryExpression$9 = ParenthesizedExpression;
|
|
2006
|
-
var PrimaryExpression$10 =
|
|
2007
|
-
var PrimaryExpression$11 =
|
|
2008
|
+
var PrimaryExpression$10 = TypedJSXElement;
|
|
2009
|
+
var PrimaryExpression$11 = TypedJSXFragment;
|
|
2008
2010
|
function PrimaryExpression(state) {
|
|
2009
2011
|
if (state.events) {
|
|
2010
2012
|
const result = state.events.enter?.("PrimaryExpression", state);
|
|
@@ -10570,20 +10572,45 @@ ${input.slice(result.pos)}
|
|
|
10570
10572
|
return result;
|
|
10571
10573
|
}
|
|
10572
10574
|
}
|
|
10575
|
+
var TypedJSXElement$0 = $TS($S(JSXElement), function($skip, $loc, $0, $1) {
|
|
10576
|
+
const type = module.typeOfJSXElement($1);
|
|
10577
|
+
return type ? [
|
|
10578
|
+
{ ts: true, children: ["("] },
|
|
10579
|
+
$1,
|
|
10580
|
+
{ ts: true, children: [" as any as ", type, ")"] }
|
|
10581
|
+
] : $1;
|
|
10582
|
+
});
|
|
10583
|
+
function TypedJSXElement(state) {
|
|
10584
|
+
if (state.events) {
|
|
10585
|
+
const result = state.events.enter?.("TypedJSXElement", state);
|
|
10586
|
+
if (result)
|
|
10587
|
+
return result.cache;
|
|
10588
|
+
}
|
|
10589
|
+
if (state.tokenize) {
|
|
10590
|
+
const result = $TOKEN("TypedJSXElement", state, TypedJSXElement$0(state));
|
|
10591
|
+
if (state.events)
|
|
10592
|
+
state.events.exit?.("TypedJSXElement", state, result);
|
|
10593
|
+
return result;
|
|
10594
|
+
} else {
|
|
10595
|
+
const result = TypedJSXElement$0(state);
|
|
10596
|
+
if (state.events)
|
|
10597
|
+
state.events.exit?.("TypedJSXElement", state, result);
|
|
10598
|
+
return result;
|
|
10599
|
+
}
|
|
10600
|
+
}
|
|
10573
10601
|
var JSXElement$0 = JSXSelfClosingElement;
|
|
10574
10602
|
var JSXElement$1 = $TS($S(JSXOpeningElement, $E(JSXChildren), __, JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10575
10603
|
if ($1[1] !== $4[2])
|
|
10576
10604
|
return $skip;
|
|
10577
|
-
return $0;
|
|
10605
|
+
return { type: "JSXElement", children: $0 };
|
|
10578
10606
|
});
|
|
10579
10607
|
var JSXElement$2 = $TS($S(JSXOpeningElement, JSXMixedChildren, InsertNewline, InsertIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10580
10608
|
var open = $1;
|
|
10581
10609
|
var children = $2;
|
|
10582
|
-
|
|
10583
|
-
|
|
10584
|
-
|
|
10585
|
-
|
|
10586
|
-
}
|
|
10610
|
+
return {
|
|
10611
|
+
type: "JSXElement",
|
|
10612
|
+
children: children.jsxChildren.length ? [...$0, ["</", open[1], ">"]] : [open.slice(0, -1), " />"]
|
|
10613
|
+
};
|
|
10587
10614
|
});
|
|
10588
10615
|
var JSXElement$3 = $TS($S(JSXOpeningElement), function($skip, $loc, $0, $1) {
|
|
10589
10616
|
throw new Error(`could not parse JSX element "${require_generate()($0)}" at pos ${$loc.pos}`);
|
|
@@ -10606,7 +10633,9 @@ ${input.slice(result.pos)}
|
|
|
10606
10633
|
return result;
|
|
10607
10634
|
}
|
|
10608
10635
|
}
|
|
10609
|
-
var JSXSelfClosingElement$0 = $S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(CompactTypeArguments), $E(JSXAttributes), __, $EXPECT($L147, fail, 'JSXSelfClosingElement "/>"'))
|
|
10636
|
+
var JSXSelfClosingElement$0 = $TS($S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(CompactTypeArguments), $E(JSXAttributes), __, $EXPECT($L147, fail, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
|
|
10637
|
+
return { type: "JSXElement", children: $0 };
|
|
10638
|
+
});
|
|
10610
10639
|
function JSXSelfClosingElement(state) {
|
|
10611
10640
|
if (state.events) {
|
|
10612
10641
|
const result = state.events.enter?.("JSXSelfClosingElement", state);
|
|
@@ -10663,9 +10692,41 @@ ${input.slice(result.pos)}
|
|
|
10663
10692
|
return result;
|
|
10664
10693
|
}
|
|
10665
10694
|
}
|
|
10666
|
-
var
|
|
10695
|
+
var TypedJSXFragment$0 = $TS($S(JSXFragment), function($skip, $loc, $0, $1) {
|
|
10696
|
+
const type = module.typeOfJSXFragment($1);
|
|
10697
|
+
return type ? [
|
|
10698
|
+
{ ts: true, children: ["("] },
|
|
10699
|
+
$1,
|
|
10700
|
+
{ ts: true, children: [" as any as ", type, ")"] }
|
|
10701
|
+
] : $1;
|
|
10702
|
+
});
|
|
10703
|
+
function TypedJSXFragment(state) {
|
|
10704
|
+
if (state.events) {
|
|
10705
|
+
const result = state.events.enter?.("TypedJSXFragment", state);
|
|
10706
|
+
if (result)
|
|
10707
|
+
return result.cache;
|
|
10708
|
+
}
|
|
10709
|
+
if (state.tokenize) {
|
|
10710
|
+
const result = $TOKEN("TypedJSXFragment", state, TypedJSXFragment$0(state));
|
|
10711
|
+
if (state.events)
|
|
10712
|
+
state.events.exit?.("TypedJSXFragment", state, result);
|
|
10713
|
+
return result;
|
|
10714
|
+
} else {
|
|
10715
|
+
const result = TypedJSXFragment$0(state);
|
|
10716
|
+
if (state.events)
|
|
10717
|
+
state.events.exit?.("TypedJSXFragment", state, result);
|
|
10718
|
+
return result;
|
|
10719
|
+
}
|
|
10720
|
+
}
|
|
10721
|
+
var JSXFragment$0 = $TS($S($EXPECT($L149, fail, 'JSXFragment "<>"'), $E(JSXChildren), __, $EXPECT($L150, fail, 'JSXFragment "</>"')), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10722
|
+
if ($2) {
|
|
10723
|
+
return { type: "JSXFragment", children: $0, jsxChildren: $2.jsxChildren };
|
|
10724
|
+
} else {
|
|
10725
|
+
return { type: "JSXFragment", children: $0, jsxChildren: [] };
|
|
10726
|
+
}
|
|
10727
|
+
});
|
|
10667
10728
|
var JSXFragment$1 = $TS($S($EXPECT($L149, fail, 'JSXFragment "<>"'), JSXMixedChildren, InsertNewline, InsertIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10668
|
-
return [...$0, "</>"];
|
|
10729
|
+
return { type: "JSXFragment", children: [...$0, "</>"], jsxChildren: $2.jsxChildren };
|
|
10669
10730
|
});
|
|
10670
10731
|
function JSXFragment(state) {
|
|
10671
10732
|
if (state.events) {
|
|
@@ -11143,10 +11204,13 @@ ${input.slice(result.pos)}
|
|
|
11143
11204
|
return result;
|
|
11144
11205
|
}
|
|
11145
11206
|
}
|
|
11146
|
-
var JSXMixedChildren$0 = $TS($S($Q(
|
|
11207
|
+
var JSXMixedChildren$0 = $TS($S($Q(JSXChild), JSXNestedChildren), function($skip, $loc, $0, $1, $2) {
|
|
11147
11208
|
var c1 = $1;
|
|
11148
11209
|
var c2 = $2;
|
|
11149
|
-
return
|
|
11210
|
+
return {
|
|
11211
|
+
children: c1.concat(c2),
|
|
11212
|
+
jsxChildren: c1.concat(c2.jsxChildren)
|
|
11213
|
+
};
|
|
11150
11214
|
});
|
|
11151
11215
|
function JSXMixedChildren(state) {
|
|
11152
11216
|
if (state.events) {
|
|
@@ -11166,7 +11230,12 @@ ${input.slice(result.pos)}
|
|
|
11166
11230
|
return result;
|
|
11167
11231
|
}
|
|
11168
11232
|
}
|
|
11169
|
-
var JSXChildren$0 = $Q($S(
|
|
11233
|
+
var JSXChildren$0 = $TV($Q($S($Q($S($E(NonNewlineWhitespace), EOL, $E(NonNewlineWhitespace))), JSXChild)), function($skip, $loc, $0, $1) {
|
|
11234
|
+
return {
|
|
11235
|
+
children: $1,
|
|
11236
|
+
jsxChildren: $1.map((children) => children[1])
|
|
11237
|
+
};
|
|
11238
|
+
});
|
|
11170
11239
|
function JSXChildren(state) {
|
|
11171
11240
|
if (state.events) {
|
|
11172
11241
|
const result = state.events.enter?.("JSXChildren", state);
|
|
@@ -11186,12 +11255,16 @@ ${input.slice(result.pos)}
|
|
|
11186
11255
|
}
|
|
11187
11256
|
}
|
|
11188
11257
|
var JSXNestedChildren$0 = $TS($S(PushIndent, $Q($S(Nested, $P(JSXChild))), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
|
|
11189
|
-
if ($2.length)
|
|
11190
|
-
return
|
|
11258
|
+
if ($2.length) {
|
|
11259
|
+
return {
|
|
11260
|
+
children: $2,
|
|
11261
|
+
jsxChildren: [].concat(...$2.map((nestedChildren) => nestedChildren[1]))
|
|
11262
|
+
};
|
|
11263
|
+
}
|
|
11191
11264
|
return $skip;
|
|
11192
11265
|
});
|
|
11193
11266
|
var JSXNestedChildren$1 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
|
|
11194
|
-
return [];
|
|
11267
|
+
return { children: [], jsxChildren: [] };
|
|
11195
11268
|
});
|
|
11196
11269
|
function JSXNestedChildren(state) {
|
|
11197
11270
|
if (state.events) {
|
|
@@ -11214,7 +11287,14 @@ ${input.slice(result.pos)}
|
|
|
11214
11287
|
var JSXChild$0 = JSXText;
|
|
11215
11288
|
var JSXChild$1 = JSXElement;
|
|
11216
11289
|
var JSXChild$2 = JSXFragment;
|
|
11217
|
-
var JSXChild$3 = $S(OpenBrace, $E(JSXChildExpression), __, CloseBrace)
|
|
11290
|
+
var JSXChild$3 = $TS($S(OpenBrace, $E(JSXChildExpression), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
11291
|
+
var expression = $2;
|
|
11292
|
+
return {
|
|
11293
|
+
type: "JSXChildExpression",
|
|
11294
|
+
children: $0,
|
|
11295
|
+
expression
|
|
11296
|
+
};
|
|
11297
|
+
});
|
|
11218
11298
|
function JSXChild(state) {
|
|
11219
11299
|
if (state.events) {
|
|
11220
11300
|
const result = state.events.enter?.("JSXChild", state);
|
|
@@ -11233,7 +11313,13 @@ ${input.slice(result.pos)}
|
|
|
11233
11313
|
return result;
|
|
11234
11314
|
}
|
|
11235
11315
|
}
|
|
11236
|
-
var JSXText$0 = $
|
|
11316
|
+
var JSXText$0 = $TR($EXPECT($R46, fail, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
|
|
11317
|
+
return {
|
|
11318
|
+
type: "JSXText",
|
|
11319
|
+
token: $0,
|
|
11320
|
+
$loc
|
|
11321
|
+
};
|
|
11322
|
+
});
|
|
11237
11323
|
function JSXText(state) {
|
|
11238
11324
|
if (state.events) {
|
|
11239
11325
|
const result = state.events.enter?.("JSXText", state);
|
|
@@ -12965,6 +13051,9 @@ ${input.slice(result.pos)}
|
|
|
12965
13051
|
coffeeNot: false,
|
|
12966
13052
|
coffeeOf: false,
|
|
12967
13053
|
implicitReturns: true,
|
|
13054
|
+
solid: false,
|
|
13055
|
+
client: false,
|
|
13056
|
+
server: false,
|
|
12968
13057
|
tab: void 0,
|
|
12969
13058
|
verbose: false
|
|
12970
13059
|
};
|
|
@@ -12987,6 +13076,34 @@ ${input.slice(result.pos)}
|
|
|
12987
13076
|
children: [": <T>(this: T, prop: keyof T) => boolean"]
|
|
12988
13077
|
};
|
|
12989
13078
|
module.prelude.push(["", ["const ", hasPropRef, typeSuffix, " = {}.hasOwnProperty", module.asAny, "\n"]]);
|
|
13079
|
+
},
|
|
13080
|
+
JSX(jsxRef) {
|
|
13081
|
+
module.prelude.push({
|
|
13082
|
+
ts: true,
|
|
13083
|
+
children: [
|
|
13084
|
+
"import type { JSX as ",
|
|
13085
|
+
jsxRef,
|
|
13086
|
+
" } from 'solid-js';\n"
|
|
13087
|
+
]
|
|
13088
|
+
});
|
|
13089
|
+
},
|
|
13090
|
+
IntrinsicElements(intrinsicElementsRef) {
|
|
13091
|
+
const JSX = module.getRef("JSX");
|
|
13092
|
+
module.prelude.push({
|
|
13093
|
+
ts: true,
|
|
13094
|
+
children: [
|
|
13095
|
+
"type ",
|
|
13096
|
+
intrinsicElementsRef,
|
|
13097
|
+
"<K extends keyof ",
|
|
13098
|
+
JSX,
|
|
13099
|
+
".IntrinsicElements> =\n",
|
|
13100
|
+
" ",
|
|
13101
|
+
JSX,
|
|
13102
|
+
".IntrinsicElements[K] extends ",
|
|
13103
|
+
JSX,
|
|
13104
|
+
".DOMAttributes<infer T> ? T : unknown;\n"
|
|
13105
|
+
]
|
|
13106
|
+
});
|
|
12990
13107
|
}
|
|
12991
13108
|
};
|
|
12992
13109
|
const refs = {};
|
|
@@ -13004,11 +13121,55 @@ ${input.slice(result.pos)}
|
|
|
13004
13121
|
};
|
|
13005
13122
|
module.typeOfJSXElement = function($12) {
|
|
13006
13123
|
if (module.config.solid) {
|
|
13007
|
-
|
|
13124
|
+
if (module.config.server && !module.config.client) {
|
|
13125
|
+
return ["string"];
|
|
13126
|
+
}
|
|
13127
|
+
let open = $12.children;
|
|
13008
13128
|
while (Array.isArray(open[0]))
|
|
13009
13129
|
open = open[0];
|
|
13010
13130
|
open = open[1];
|
|
13011
|
-
|
|
13131
|
+
const clientType = typeof open === "string" && open[0] === open[0].toLowerCase() ? [module.getRef("IntrinsicElements"), '<"', open, '">'] : ["ReturnType<typeof ", open, ">"];
|
|
13132
|
+
if (module.config.server) {
|
|
13133
|
+
return ["string", " | ", clientType];
|
|
13134
|
+
} else {
|
|
13135
|
+
return clientType;
|
|
13136
|
+
}
|
|
13137
|
+
}
|
|
13138
|
+
};
|
|
13139
|
+
module.typeOfJSXFragment = function($12) {
|
|
13140
|
+
if (module.config.solid) {
|
|
13141
|
+
let type = [];
|
|
13142
|
+
let lastType;
|
|
13143
|
+
for (let child of $12.jsxChildren) {
|
|
13144
|
+
switch (child.type) {
|
|
13145
|
+
case "JSXText":
|
|
13146
|
+
if (lastType !== "JSXText") {
|
|
13147
|
+
type.push("string");
|
|
13148
|
+
}
|
|
13149
|
+
break;
|
|
13150
|
+
case "JSXElement":
|
|
13151
|
+
type.push(module.typeOfJSXElement(child));
|
|
13152
|
+
break;
|
|
13153
|
+
case "JSXFragment":
|
|
13154
|
+
type.push(...module.typeOfJSXFragment(child));
|
|
13155
|
+
break;
|
|
13156
|
+
case "JSXChildExpression":
|
|
13157
|
+
if (child.expression) {
|
|
13158
|
+
type.push(["typeof ", child.expression]);
|
|
13159
|
+
}
|
|
13160
|
+
break;
|
|
13161
|
+
default:
|
|
13162
|
+
throw new Error(`unknown child in JSXFragment: ${JSON.stringify(child)}`);
|
|
13163
|
+
}
|
|
13164
|
+
lastType = child.type;
|
|
13165
|
+
}
|
|
13166
|
+
if (type.length === 1) {
|
|
13167
|
+
return type[0];
|
|
13168
|
+
} else {
|
|
13169
|
+
type = type.map((t) => [t, ", "]).flat();
|
|
13170
|
+
type.pop();
|
|
13171
|
+
return ["[", type, "]"];
|
|
13172
|
+
}
|
|
13012
13173
|
}
|
|
13013
13174
|
};
|
|
13014
13175
|
Object.defineProperty(module.config, "coffeeCompat", {
|
|
@@ -14613,9 +14774,11 @@ ${"//#"} sourceMappingURL=data:application/json;base64,${base64Encode(JSON.strin
|
|
|
14613
14774
|
case "SingleLineComment":
|
|
14614
14775
|
case "Debugger":
|
|
14615
14776
|
case "JSXElement":
|
|
14777
|
+
case "TypedJSXElement":
|
|
14778
|
+
case "JSXFragment":
|
|
14779
|
+
case "TypedJSXFragment":
|
|
14616
14780
|
case "JSXChild":
|
|
14617
14781
|
case "JSXChildren":
|
|
14618
|
-
case "JSXFragment":
|
|
14619
14782
|
case "JSXNestedChildren":
|
|
14620
14783
|
case "JSXMixedChildren":
|
|
14621
14784
|
break;
|
package/dist/main.js
CHANGED
|
@@ -832,10 +832,12 @@ ${input.slice(result.pos)}
|
|
|
832
832
|
When,
|
|
833
833
|
While,
|
|
834
834
|
Yield,
|
|
835
|
+
TypedJSXElement,
|
|
835
836
|
JSXElement,
|
|
836
837
|
JSXSelfClosingElement,
|
|
837
838
|
JSXOpeningElement,
|
|
838
839
|
JSXClosingElement,
|
|
840
|
+
TypedJSXFragment,
|
|
839
841
|
JSXFragment,
|
|
840
842
|
JSXElementName,
|
|
841
843
|
JSXIdentifierName,
|
|
@@ -2002,8 +2004,8 @@ ${input.slice(result.pos)}
|
|
|
2002
2004
|
var PrimaryExpression$7 = RegularExpressionLiteral;
|
|
2003
2005
|
var PrimaryExpression$8 = TemplateLiteral;
|
|
2004
2006
|
var PrimaryExpression$9 = ParenthesizedExpression;
|
|
2005
|
-
var PrimaryExpression$10 =
|
|
2006
|
-
var PrimaryExpression$11 =
|
|
2007
|
+
var PrimaryExpression$10 = TypedJSXElement;
|
|
2008
|
+
var PrimaryExpression$11 = TypedJSXFragment;
|
|
2007
2009
|
function PrimaryExpression(state) {
|
|
2008
2010
|
if (state.events) {
|
|
2009
2011
|
const result = state.events.enter?.("PrimaryExpression", state);
|
|
@@ -10569,20 +10571,45 @@ ${input.slice(result.pos)}
|
|
|
10569
10571
|
return result;
|
|
10570
10572
|
}
|
|
10571
10573
|
}
|
|
10574
|
+
var TypedJSXElement$0 = $TS($S(JSXElement), function($skip, $loc, $0, $1) {
|
|
10575
|
+
const type = module2.typeOfJSXElement($1);
|
|
10576
|
+
return type ? [
|
|
10577
|
+
{ ts: true, children: ["("] },
|
|
10578
|
+
$1,
|
|
10579
|
+
{ ts: true, children: [" as any as ", type, ")"] }
|
|
10580
|
+
] : $1;
|
|
10581
|
+
});
|
|
10582
|
+
function TypedJSXElement(state) {
|
|
10583
|
+
if (state.events) {
|
|
10584
|
+
const result = state.events.enter?.("TypedJSXElement", state);
|
|
10585
|
+
if (result)
|
|
10586
|
+
return result.cache;
|
|
10587
|
+
}
|
|
10588
|
+
if (state.tokenize) {
|
|
10589
|
+
const result = $TOKEN("TypedJSXElement", state, TypedJSXElement$0(state));
|
|
10590
|
+
if (state.events)
|
|
10591
|
+
state.events.exit?.("TypedJSXElement", state, result);
|
|
10592
|
+
return result;
|
|
10593
|
+
} else {
|
|
10594
|
+
const result = TypedJSXElement$0(state);
|
|
10595
|
+
if (state.events)
|
|
10596
|
+
state.events.exit?.("TypedJSXElement", state, result);
|
|
10597
|
+
return result;
|
|
10598
|
+
}
|
|
10599
|
+
}
|
|
10572
10600
|
var JSXElement$0 = JSXSelfClosingElement;
|
|
10573
10601
|
var JSXElement$1 = $TS($S(JSXOpeningElement, $E(JSXChildren), __, JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10574
10602
|
if ($1[1] !== $4[2])
|
|
10575
10603
|
return $skip;
|
|
10576
|
-
return $0;
|
|
10604
|
+
return { type: "JSXElement", children: $0 };
|
|
10577
10605
|
});
|
|
10578
10606
|
var JSXElement$2 = $TS($S(JSXOpeningElement, JSXMixedChildren, InsertNewline, InsertIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10579
10607
|
var open = $1;
|
|
10580
10608
|
var children = $2;
|
|
10581
|
-
|
|
10582
|
-
|
|
10583
|
-
|
|
10584
|
-
|
|
10585
|
-
}
|
|
10609
|
+
return {
|
|
10610
|
+
type: "JSXElement",
|
|
10611
|
+
children: children.jsxChildren.length ? [...$0, ["</", open[1], ">"]] : [open.slice(0, -1), " />"]
|
|
10612
|
+
};
|
|
10586
10613
|
});
|
|
10587
10614
|
var JSXElement$3 = $TS($S(JSXOpeningElement), function($skip, $loc, $0, $1) {
|
|
10588
10615
|
throw new Error(`could not parse JSX element "${require_generate()($0)}" at pos ${$loc.pos}`);
|
|
@@ -10605,7 +10632,9 @@ ${input.slice(result.pos)}
|
|
|
10605
10632
|
return result;
|
|
10606
10633
|
}
|
|
10607
10634
|
}
|
|
10608
|
-
var JSXSelfClosingElement$0 = $S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(CompactTypeArguments), $E(JSXAttributes), __, $EXPECT($L147, fail, 'JSXSelfClosingElement "/>"'))
|
|
10635
|
+
var JSXSelfClosingElement$0 = $TS($S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(CompactTypeArguments), $E(JSXAttributes), __, $EXPECT($L147, fail, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
|
|
10636
|
+
return { type: "JSXElement", children: $0 };
|
|
10637
|
+
});
|
|
10609
10638
|
function JSXSelfClosingElement(state) {
|
|
10610
10639
|
if (state.events) {
|
|
10611
10640
|
const result = state.events.enter?.("JSXSelfClosingElement", state);
|
|
@@ -10662,9 +10691,41 @@ ${input.slice(result.pos)}
|
|
|
10662
10691
|
return result;
|
|
10663
10692
|
}
|
|
10664
10693
|
}
|
|
10665
|
-
var
|
|
10694
|
+
var TypedJSXFragment$0 = $TS($S(JSXFragment), function($skip, $loc, $0, $1) {
|
|
10695
|
+
const type = module2.typeOfJSXFragment($1);
|
|
10696
|
+
return type ? [
|
|
10697
|
+
{ ts: true, children: ["("] },
|
|
10698
|
+
$1,
|
|
10699
|
+
{ ts: true, children: [" as any as ", type, ")"] }
|
|
10700
|
+
] : $1;
|
|
10701
|
+
});
|
|
10702
|
+
function TypedJSXFragment(state) {
|
|
10703
|
+
if (state.events) {
|
|
10704
|
+
const result = state.events.enter?.("TypedJSXFragment", state);
|
|
10705
|
+
if (result)
|
|
10706
|
+
return result.cache;
|
|
10707
|
+
}
|
|
10708
|
+
if (state.tokenize) {
|
|
10709
|
+
const result = $TOKEN("TypedJSXFragment", state, TypedJSXFragment$0(state));
|
|
10710
|
+
if (state.events)
|
|
10711
|
+
state.events.exit?.("TypedJSXFragment", state, result);
|
|
10712
|
+
return result;
|
|
10713
|
+
} else {
|
|
10714
|
+
const result = TypedJSXFragment$0(state);
|
|
10715
|
+
if (state.events)
|
|
10716
|
+
state.events.exit?.("TypedJSXFragment", state, result);
|
|
10717
|
+
return result;
|
|
10718
|
+
}
|
|
10719
|
+
}
|
|
10720
|
+
var JSXFragment$0 = $TS($S($EXPECT($L149, fail, 'JSXFragment "<>"'), $E(JSXChildren), __, $EXPECT($L150, fail, 'JSXFragment "</>"')), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10721
|
+
if ($2) {
|
|
10722
|
+
return { type: "JSXFragment", children: $0, jsxChildren: $2.jsxChildren };
|
|
10723
|
+
} else {
|
|
10724
|
+
return { type: "JSXFragment", children: $0, jsxChildren: [] };
|
|
10725
|
+
}
|
|
10726
|
+
});
|
|
10666
10727
|
var JSXFragment$1 = $TS($S($EXPECT($L149, fail, 'JSXFragment "<>"'), JSXMixedChildren, InsertNewline, InsertIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
10667
|
-
return [...$0, "</>"];
|
|
10728
|
+
return { type: "JSXFragment", children: [...$0, "</>"], jsxChildren: $2.jsxChildren };
|
|
10668
10729
|
});
|
|
10669
10730
|
function JSXFragment(state) {
|
|
10670
10731
|
if (state.events) {
|
|
@@ -11142,10 +11203,13 @@ ${input.slice(result.pos)}
|
|
|
11142
11203
|
return result;
|
|
11143
11204
|
}
|
|
11144
11205
|
}
|
|
11145
|
-
var JSXMixedChildren$0 = $TS($S($Q(
|
|
11206
|
+
var JSXMixedChildren$0 = $TS($S($Q(JSXChild), JSXNestedChildren), function($skip, $loc, $0, $1, $2) {
|
|
11146
11207
|
var c1 = $1;
|
|
11147
11208
|
var c2 = $2;
|
|
11148
|
-
return
|
|
11209
|
+
return {
|
|
11210
|
+
children: c1.concat(c2),
|
|
11211
|
+
jsxChildren: c1.concat(c2.jsxChildren)
|
|
11212
|
+
};
|
|
11149
11213
|
});
|
|
11150
11214
|
function JSXMixedChildren(state) {
|
|
11151
11215
|
if (state.events) {
|
|
@@ -11165,7 +11229,12 @@ ${input.slice(result.pos)}
|
|
|
11165
11229
|
return result;
|
|
11166
11230
|
}
|
|
11167
11231
|
}
|
|
11168
|
-
var JSXChildren$0 = $Q($S(
|
|
11232
|
+
var JSXChildren$0 = $TV($Q($S($Q($S($E(NonNewlineWhitespace), EOL, $E(NonNewlineWhitespace))), JSXChild)), function($skip, $loc, $0, $1) {
|
|
11233
|
+
return {
|
|
11234
|
+
children: $1,
|
|
11235
|
+
jsxChildren: $1.map((children) => children[1])
|
|
11236
|
+
};
|
|
11237
|
+
});
|
|
11169
11238
|
function JSXChildren(state) {
|
|
11170
11239
|
if (state.events) {
|
|
11171
11240
|
const result = state.events.enter?.("JSXChildren", state);
|
|
@@ -11185,12 +11254,16 @@ ${input.slice(result.pos)}
|
|
|
11185
11254
|
}
|
|
11186
11255
|
}
|
|
11187
11256
|
var JSXNestedChildren$0 = $TS($S(PushIndent, $Q($S(Nested, $P(JSXChild))), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
|
|
11188
|
-
if ($2.length)
|
|
11189
|
-
return
|
|
11257
|
+
if ($2.length) {
|
|
11258
|
+
return {
|
|
11259
|
+
children: $2,
|
|
11260
|
+
jsxChildren: [].concat(...$2.map((nestedChildren) => nestedChildren[1]))
|
|
11261
|
+
};
|
|
11262
|
+
}
|
|
11190
11263
|
return $skip;
|
|
11191
11264
|
});
|
|
11192
11265
|
var JSXNestedChildren$1 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
|
|
11193
|
-
return [];
|
|
11266
|
+
return { children: [], jsxChildren: [] };
|
|
11194
11267
|
});
|
|
11195
11268
|
function JSXNestedChildren(state) {
|
|
11196
11269
|
if (state.events) {
|
|
@@ -11213,7 +11286,14 @@ ${input.slice(result.pos)}
|
|
|
11213
11286
|
var JSXChild$0 = JSXText;
|
|
11214
11287
|
var JSXChild$1 = JSXElement;
|
|
11215
11288
|
var JSXChild$2 = JSXFragment;
|
|
11216
|
-
var JSXChild$3 = $S(OpenBrace, $E(JSXChildExpression), __, CloseBrace)
|
|
11289
|
+
var JSXChild$3 = $TS($S(OpenBrace, $E(JSXChildExpression), __, CloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
|
|
11290
|
+
var expression = $2;
|
|
11291
|
+
return {
|
|
11292
|
+
type: "JSXChildExpression",
|
|
11293
|
+
children: $0,
|
|
11294
|
+
expression
|
|
11295
|
+
};
|
|
11296
|
+
});
|
|
11217
11297
|
function JSXChild(state) {
|
|
11218
11298
|
if (state.events) {
|
|
11219
11299
|
const result = state.events.enter?.("JSXChild", state);
|
|
@@ -11232,7 +11312,13 @@ ${input.slice(result.pos)}
|
|
|
11232
11312
|
return result;
|
|
11233
11313
|
}
|
|
11234
11314
|
}
|
|
11235
|
-
var JSXText$0 = $
|
|
11315
|
+
var JSXText$0 = $TR($EXPECT($R46, fail, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
|
|
11316
|
+
return {
|
|
11317
|
+
type: "JSXText",
|
|
11318
|
+
token: $0,
|
|
11319
|
+
$loc
|
|
11320
|
+
};
|
|
11321
|
+
});
|
|
11236
11322
|
function JSXText(state) {
|
|
11237
11323
|
if (state.events) {
|
|
11238
11324
|
const result = state.events.enter?.("JSXText", state);
|
|
@@ -12964,6 +13050,9 @@ ${input.slice(result.pos)}
|
|
|
12964
13050
|
coffeeNot: false,
|
|
12965
13051
|
coffeeOf: false,
|
|
12966
13052
|
implicitReturns: true,
|
|
13053
|
+
solid: false,
|
|
13054
|
+
client: false,
|
|
13055
|
+
server: false,
|
|
12967
13056
|
tab: void 0,
|
|
12968
13057
|
verbose: false
|
|
12969
13058
|
};
|
|
@@ -12986,6 +13075,34 @@ ${input.slice(result.pos)}
|
|
|
12986
13075
|
children: [": <T>(this: T, prop: keyof T) => boolean"]
|
|
12987
13076
|
};
|
|
12988
13077
|
module2.prelude.push(["", ["const ", hasPropRef, typeSuffix, " = {}.hasOwnProperty", module2.asAny, "\n"]]);
|
|
13078
|
+
},
|
|
13079
|
+
JSX(jsxRef) {
|
|
13080
|
+
module2.prelude.push({
|
|
13081
|
+
ts: true,
|
|
13082
|
+
children: [
|
|
13083
|
+
"import type { JSX as ",
|
|
13084
|
+
jsxRef,
|
|
13085
|
+
" } from 'solid-js';\n"
|
|
13086
|
+
]
|
|
13087
|
+
});
|
|
13088
|
+
},
|
|
13089
|
+
IntrinsicElements(intrinsicElementsRef) {
|
|
13090
|
+
const JSX = module2.getRef("JSX");
|
|
13091
|
+
module2.prelude.push({
|
|
13092
|
+
ts: true,
|
|
13093
|
+
children: [
|
|
13094
|
+
"type ",
|
|
13095
|
+
intrinsicElementsRef,
|
|
13096
|
+
"<K extends keyof ",
|
|
13097
|
+
JSX,
|
|
13098
|
+
".IntrinsicElements> =\n",
|
|
13099
|
+
" ",
|
|
13100
|
+
JSX,
|
|
13101
|
+
".IntrinsicElements[K] extends ",
|
|
13102
|
+
JSX,
|
|
13103
|
+
".DOMAttributes<infer T> ? T : unknown;\n"
|
|
13104
|
+
]
|
|
13105
|
+
});
|
|
12989
13106
|
}
|
|
12990
13107
|
};
|
|
12991
13108
|
const refs = {};
|
|
@@ -13003,11 +13120,55 @@ ${input.slice(result.pos)}
|
|
|
13003
13120
|
};
|
|
13004
13121
|
module2.typeOfJSXElement = function($12) {
|
|
13005
13122
|
if (module2.config.solid) {
|
|
13006
|
-
|
|
13123
|
+
if (module2.config.server && !module2.config.client) {
|
|
13124
|
+
return ["string"];
|
|
13125
|
+
}
|
|
13126
|
+
let open = $12.children;
|
|
13007
13127
|
while (Array.isArray(open[0]))
|
|
13008
13128
|
open = open[0];
|
|
13009
13129
|
open = open[1];
|
|
13010
|
-
|
|
13130
|
+
const clientType = typeof open === "string" && open[0] === open[0].toLowerCase() ? [module2.getRef("IntrinsicElements"), '<"', open, '">'] : ["ReturnType<typeof ", open, ">"];
|
|
13131
|
+
if (module2.config.server) {
|
|
13132
|
+
return ["string", " | ", clientType];
|
|
13133
|
+
} else {
|
|
13134
|
+
return clientType;
|
|
13135
|
+
}
|
|
13136
|
+
}
|
|
13137
|
+
};
|
|
13138
|
+
module2.typeOfJSXFragment = function($12) {
|
|
13139
|
+
if (module2.config.solid) {
|
|
13140
|
+
let type = [];
|
|
13141
|
+
let lastType;
|
|
13142
|
+
for (let child of $12.jsxChildren) {
|
|
13143
|
+
switch (child.type) {
|
|
13144
|
+
case "JSXText":
|
|
13145
|
+
if (lastType !== "JSXText") {
|
|
13146
|
+
type.push("string");
|
|
13147
|
+
}
|
|
13148
|
+
break;
|
|
13149
|
+
case "JSXElement":
|
|
13150
|
+
type.push(module2.typeOfJSXElement(child));
|
|
13151
|
+
break;
|
|
13152
|
+
case "JSXFragment":
|
|
13153
|
+
type.push(...module2.typeOfJSXFragment(child));
|
|
13154
|
+
break;
|
|
13155
|
+
case "JSXChildExpression":
|
|
13156
|
+
if (child.expression) {
|
|
13157
|
+
type.push(["typeof ", child.expression]);
|
|
13158
|
+
}
|
|
13159
|
+
break;
|
|
13160
|
+
default:
|
|
13161
|
+
throw new Error(`unknown child in JSXFragment: ${JSON.stringify(child)}`);
|
|
13162
|
+
}
|
|
13163
|
+
lastType = child.type;
|
|
13164
|
+
}
|
|
13165
|
+
if (type.length === 1) {
|
|
13166
|
+
return type[0];
|
|
13167
|
+
} else {
|
|
13168
|
+
type = type.map((t) => [t, ", "]).flat();
|
|
13169
|
+
type.pop();
|
|
13170
|
+
return ["[", type, "]"];
|
|
13171
|
+
}
|
|
13011
13172
|
}
|
|
13012
13173
|
};
|
|
13013
13174
|
Object.defineProperty(module2.config, "coffeeCompat", {
|
|
@@ -14610,9 +14771,11 @@ makeCache = function() {
|
|
|
14610
14771
|
case "SingleLineComment":
|
|
14611
14772
|
case "Debugger":
|
|
14612
14773
|
case "JSXElement":
|
|
14774
|
+
case "TypedJSXElement":
|
|
14775
|
+
case "JSXFragment":
|
|
14776
|
+
case "TypedJSXFragment":
|
|
14613
14777
|
case "JSXChild":
|
|
14614
14778
|
case "JSXChildren":
|
|
14615
|
-
case "JSXFragment":
|
|
14616
14779
|
case "JSXNestedChildren":
|
|
14617
14780
|
case "JSXMixedChildren":
|
|
14618
14781
|
break;
|