@alloy-js/csharp 0.23.0-dev.3 → 0.23.0-dev.4
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/src/components/access-expression/access-expression.d.ts +6 -1
- package/dist/src/components/access-expression/access-expression.d.ts.map +1 -1
- package/dist/src/components/access-expression/access-expression.js +108 -197
- package/dist/src/components/access-expression/access-expression.js.map +1 -1
- package/dist/src/components/access-expression/part-descriptors.d.ts +0 -31
- package/dist/src/components/access-expression/part-descriptors.d.ts.map +1 -1
- package/dist/src/components/access-expression/part-descriptors.js +0 -105
- package/dist/src/components/access-expression/part-descriptors.js.map +1 -1
- package/dist/src/components/doc/from-markdown.js +1 -1
- package/dist/src/components/doc/from-markdown.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/components/access-expression/access-expression.tsx +146 -243
- package/src/components/access-expression/part-descriptors.ts +0 -186
- package/src/components/doc/from-markdown.tsx +4 -1
- package/temp/api.json +3 -3
|
@@ -3,9 +3,14 @@ import { CSharpSymbol } from "../../symbols/csharp.js";
|
|
|
3
3
|
export interface AccessExpressionProps {
|
|
4
4
|
children: Children;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Create a C# access expression from parts. Each part can be a member access,
|
|
8
|
+
* element access, or invocation. Supports conditional access (`?.`), generic
|
|
9
|
+
* type arguments, and call chain formatting.
|
|
10
|
+
*/
|
|
6
11
|
export declare function AccessExpression(props: AccessExpressionProps): Children;
|
|
7
12
|
export declare namespace AccessExpression {
|
|
8
|
-
var Part: (
|
|
13
|
+
var Part: (_props: AccessExpressionPartProps) => void;
|
|
9
14
|
}
|
|
10
15
|
export interface AccessExpressionPartProps {
|
|
11
16
|
children?: Children;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-expression.d.ts","sourceRoot":"","sources":["../../../../src/components/access-expression/access-expression.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"access-expression.d.ts","sourceRoot":"","sources":["../../../../src/components/access-expression/access-expression.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAIR,UAAU,EAEX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAoGD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,YAE5D;yBAFe,gBAAgB;;;AAMhC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1,180 +1,90 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
let callCount = 0;
|
|
15
|
-
for (const part of parts) {
|
|
16
|
-
if (isArgsPart(part)) callCount++;
|
|
1
|
+
import { memo as _$memo, createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { computed, createAccessExpression, For, Show } from "@alloy-js/core";
|
|
3
|
+
import { normalizeAttributeName } from "./part-descriptors.js";
|
|
4
|
+
const exclusiveParts = ["children", "args", "refkey", "symbol", "id"];
|
|
5
|
+
const {
|
|
6
|
+
Expression,
|
|
7
|
+
Part,
|
|
8
|
+
registerOuterComponent
|
|
9
|
+
} = createAccessExpression({
|
|
10
|
+
createDescriptor(partProps, sym, first) {
|
|
11
|
+
const foundProps = exclusiveParts.filter(key => key in partProps);
|
|
12
|
+
if (foundProps.length > 1) {
|
|
13
|
+
throw new Error(`Only one of ${foundProps.join(", ")} can be used for a MemberExpression part at a time`);
|
|
17
14
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Flattens nested access expressions into a single array of parts.
|
|
32
|
-
*/
|
|
33
|
-
function flattenAccessExpression(children) {
|
|
34
|
-
const flattened = [];
|
|
35
|
-
for (const child of children) {
|
|
36
|
-
if (isComponentCreator(child, AccessExpression)) {
|
|
37
|
-
flattened.push(...flattenAccessExpression(childrenArray(() => child.props.children)));
|
|
15
|
+
let id;
|
|
16
|
+
if (partProps.args || partProps.index !== undefined || partProps.indexerArgs) {
|
|
17
|
+
id = undefined;
|
|
18
|
+
} else if (partProps.children !== undefined) {
|
|
19
|
+
id = partProps.children;
|
|
20
|
+
} else if (first && partProps.refkey) {
|
|
21
|
+
id = partProps.refkey;
|
|
22
|
+
} else if (partProps.id !== undefined) {
|
|
23
|
+
id = normalizeIfAttribute(partProps.id, partProps.attribute);
|
|
24
|
+
} else if (sym) {
|
|
25
|
+
id = normalizeIfAttribute(escapeId(sym.name), partProps.attribute);
|
|
38
26
|
} else {
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return flattened;
|
|
43
|
-
}
|
|
44
|
-
AccessExpression.Part = function (props) {
|
|
45
|
-
/** renders nothing, the parent AccessExpression will use these args */
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Formatting of call chains (i.e. member expressions which have more than one
|
|
50
|
-
* call in them). The general approach is that line breaks occur after each
|
|
51
|
-
* call, and there is only one call per line. When there are non-call elements,
|
|
52
|
-
* they occur prior to the call part. The first part of the member expression
|
|
53
|
-
* contains all but the last non-call part.
|
|
54
|
-
*
|
|
55
|
-
* The following is an example of proper formatting:
|
|
56
|
-
*
|
|
57
|
-
* ```ts
|
|
58
|
-
* z.dummy // all but the last non-call part for the first element
|
|
59
|
-
* .object({ // the first call part with line break after
|
|
60
|
-
* a: 1,
|
|
61
|
-
* })
|
|
62
|
-
* .dummy.partial() // the next call part with non-call parts before it
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
function formatCallChain(parts) {
|
|
66
|
-
return computed(() => {
|
|
67
|
-
const expression = [];
|
|
68
|
-
|
|
69
|
-
// break the expression into parts.
|
|
70
|
-
const chunks = [];
|
|
71
|
-
|
|
72
|
-
// the first part is all the non-call parts
|
|
73
|
-
let partIndex = 0;
|
|
74
|
-
function pushPart() {
|
|
75
|
-
const part = parts[partIndex];
|
|
76
|
-
if (!part) throw new Error("No part to push");
|
|
77
|
-
chunks.at(-1).push(part);
|
|
78
|
-
partIndex++;
|
|
27
|
+
id = "<unresolved symbol>";
|
|
79
28
|
}
|
|
80
|
-
|
|
81
|
-
|
|
29
|
+
let indexerArgs = [];
|
|
30
|
+
if (partProps.indexerArgs) {
|
|
31
|
+
indexerArgs = partProps.indexerArgs;
|
|
32
|
+
} else if (partProps.index !== undefined) {
|
|
33
|
+
indexerArgs = [partProps.index];
|
|
82
34
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
// a call chunk
|
|
98
|
-
while (partIndex < parts.length) {
|
|
99
|
-
pushChunk();
|
|
100
|
-
while (partIndex < parts.length && !isArgsPart(parts[partIndex])) {
|
|
101
|
-
pushPart();
|
|
102
|
-
}
|
|
103
|
-
while (partIndex < parts.length && isArgsPart(parts[partIndex])) {
|
|
104
|
-
pushPart();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
for (let chunkIndex = 0; chunkIndex < chunks.length; chunkIndex++) {
|
|
108
|
-
const chunk = chunks[chunkIndex];
|
|
109
|
-
const chunkExpression = [];
|
|
110
|
-
for (let partIndex = 0; partIndex < chunk.length; partIndex++) {
|
|
111
|
-
if (chunkIndex === 0 && partIndex === 0) {
|
|
112
|
-
// first part is just gonna be the id
|
|
113
|
-
const firstPart = isIdPart(chunk[0]) ? chunk[0].id : chunk[0].indexerArgs;
|
|
114
|
-
chunkExpression.push(firstPart);
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
const part = chunk[partIndex];
|
|
118
|
-
const prevPart = partIndex === 0 ? chunks[chunkIndex - 1].at(-1) : chunk[partIndex - 1];
|
|
119
|
-
if (isArgsPart(part)) {
|
|
120
|
-
// For parts with only args (no name), append function call directly with appropriate nullish operator
|
|
121
|
-
chunkExpression.push(formatCallExpr(prevPart, part));
|
|
122
|
-
} else if (isIdPart(part)) {
|
|
123
|
-
chunkExpression.push(formatMemberAccess(prevPart, part, true));
|
|
124
|
-
} else {
|
|
125
|
-
// bracket notation - don't include the dot
|
|
126
|
-
chunkExpression.push(formatElementAccess(prevPart, part));
|
|
35
|
+
return {
|
|
36
|
+
id,
|
|
37
|
+
indexerArgs,
|
|
38
|
+
conditional: !!partProps.conditional,
|
|
39
|
+
nullable: partProps.nullable ? true : sym ? sym.isNullable : false,
|
|
40
|
+
args: partProps.args === true ? [] : Array.isArray(partProps.args) ? partProps.args : undefined,
|
|
41
|
+
typeArgs: partProps.typeArgs
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
getBase(part) {
|
|
45
|
+
if (part.id !== undefined) {
|
|
46
|
+
return [_$memo(() => part.id), _$createComponent(TypeArgs, {
|
|
47
|
+
get args() {
|
|
48
|
+
return part.typeArgs;
|
|
127
49
|
}
|
|
128
|
-
}
|
|
129
|
-
expression.push(chunkIndex === 0 ? chunkExpression : [_$createIntrinsic("sbr", {}), chunkExpression]);
|
|
50
|
+
})];
|
|
130
51
|
}
|
|
131
|
-
return
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
function formatNonCallChain(parts) {
|
|
141
|
-
return computed(() => {
|
|
142
|
-
const expression = [];
|
|
143
|
-
for (let i = 0; i < parts.length; i++) {
|
|
144
|
-
const part = parts[i];
|
|
145
|
-
const base = isIdPart(part) ? part.id : part.indexerArgs;
|
|
146
|
-
if (i === 0) {
|
|
147
|
-
expression.push(base, _$createComponent(TypeArgs, {
|
|
148
|
-
get args() {
|
|
149
|
-
return part.typeArgs;
|
|
150
|
-
}
|
|
151
|
-
}));
|
|
152
|
-
} else {
|
|
153
|
-
// Determine if we should use nullish operator from previous part
|
|
154
|
-
const prevPart = parts[i - 1];
|
|
155
|
-
if (isArgsPart(part)) {
|
|
156
|
-
// For parts with only args (no name), append function call directly with appropriate nullish operator
|
|
157
|
-
expression.push(formatCallExpr(prevPart, part));
|
|
158
|
-
} else if (isIdPart(part)) {
|
|
159
|
-
expression.push(formatMemberAccess(prevPart, part));
|
|
160
|
-
} else {
|
|
161
|
-
// bracket notation - don't include the dot
|
|
162
|
-
expression.push(formatElementAccess(prevPart, part));
|
|
163
|
-
}
|
|
164
|
-
}
|
|
52
|
+
return part.indexerArgs;
|
|
53
|
+
},
|
|
54
|
+
formatPart(part, prevPart, inCallChain) {
|
|
55
|
+
if (part.args !== undefined) {
|
|
56
|
+
return formatCallExpr(part);
|
|
57
|
+
} else if (part.id !== undefined) {
|
|
58
|
+
return formatMemberAccess(prevPart, part, inCallChain);
|
|
59
|
+
} else {
|
|
60
|
+
return formatElementAccess(prevPart, part);
|
|
165
61
|
}
|
|
166
|
-
|
|
167
|
-
|
|
62
|
+
},
|
|
63
|
+
isCallPart(part) {
|
|
64
|
+
return part.args !== undefined;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Create a C# access expression from parts. Each part can be a member access,
|
|
70
|
+
* element access, or invocation. Supports conditional access (`?.`), generic
|
|
71
|
+
* type arguments, and call chain formatting.
|
|
72
|
+
*/
|
|
73
|
+
export function AccessExpression(props) {
|
|
74
|
+
return Expression(props);
|
|
168
75
|
}
|
|
76
|
+
AccessExpression.Part = Part;
|
|
77
|
+
registerOuterComponent(AccessExpression);
|
|
78
|
+
// --- Formatting helpers ---
|
|
79
|
+
|
|
169
80
|
function formatElementAccess(prevPart, part) {
|
|
81
|
+
const indexerArgs = computed(() => part.indexerArgs);
|
|
170
82
|
return _$createIntrinsic("group", {
|
|
171
83
|
get children() {
|
|
172
|
-
return [_$memo(() => part.conditional ||
|
|
84
|
+
return [_$memo(() => part.conditional || prevPart.nullable ? "?" : ""), "[", _$createIntrinsic("indent", {
|
|
173
85
|
get children() {
|
|
174
86
|
return [_$createIntrinsic("sbr", {}), _$createComponent(For, {
|
|
175
|
-
|
|
176
|
-
return part.indexerArgs;
|
|
177
|
-
},
|
|
87
|
+
each: indexerArgs,
|
|
178
88
|
comma: true,
|
|
179
89
|
line: true,
|
|
180
90
|
children: arg => arg
|
|
@@ -184,36 +94,26 @@ function formatElementAccess(prevPart, part) {
|
|
|
184
94
|
}
|
|
185
95
|
});
|
|
186
96
|
}
|
|
187
|
-
function formatMemberAccess(prevPart, part, noIndent
|
|
188
|
-
|
|
97
|
+
function formatMemberAccess(prevPart, part, noIndent) {
|
|
98
|
+
const content = [_$memo(() => part.conditional || prevPart.nullable ? "?." : "."), _$memo(() => part.id), _$createComponent(TypeArgs, {
|
|
99
|
+
get args() {
|
|
100
|
+
return part.typeArgs;
|
|
101
|
+
}
|
|
102
|
+
})];
|
|
189
103
|
if (noIndent) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
});
|
|
196
|
-
};
|
|
197
|
-
} else {
|
|
198
|
-
Wrapping = function (props) {
|
|
199
|
-
return _$createIntrinsic("group", {
|
|
200
|
-
get children() {
|
|
201
|
-
return _$createIntrinsic("indent", {
|
|
202
|
-
get children() {
|
|
203
|
-
return [_$createIntrinsic("sbr", {}), _$memo(() => props.children)];
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
};
|
|
104
|
+
return _$createIntrinsic("group", {
|
|
105
|
+
get children() {
|
|
106
|
+
return [_$createIntrinsic("sbr", {}), content];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
209
109
|
}
|
|
210
|
-
return _$
|
|
110
|
+
return _$createIntrinsic("group", {
|
|
211
111
|
get children() {
|
|
212
|
-
return
|
|
213
|
-
get
|
|
214
|
-
return
|
|
112
|
+
return _$createIntrinsic("indent", {
|
|
113
|
+
get children() {
|
|
114
|
+
return [_$createIntrinsic("sbr", {}), content];
|
|
215
115
|
}
|
|
216
|
-
})
|
|
116
|
+
});
|
|
217
117
|
}
|
|
218
118
|
});
|
|
219
119
|
}
|
|
@@ -242,27 +142,26 @@ function TypeArgs(props) {
|
|
|
242
142
|
}
|
|
243
143
|
});
|
|
244
144
|
}
|
|
245
|
-
function formatCallExpr(
|
|
145
|
+
function formatCallExpr(part) {
|
|
146
|
+
const args = computed(() => part.args ?? []);
|
|
246
147
|
return _$createIntrinsic("group", {
|
|
247
148
|
get children() {
|
|
248
149
|
return ["(", _$createComponent(Show, {
|
|
249
150
|
get when() {
|
|
250
|
-
return
|
|
151
|
+
return args.value.length <= 1;
|
|
251
152
|
},
|
|
252
153
|
get children() {
|
|
253
|
-
return
|
|
154
|
+
return args.value[0];
|
|
254
155
|
}
|
|
255
156
|
}), _$createComponent(Show, {
|
|
256
157
|
get when() {
|
|
257
|
-
return
|
|
158
|
+
return args.value.length > 1;
|
|
258
159
|
},
|
|
259
160
|
get children() {
|
|
260
161
|
return [_$createIntrinsic("indent", {
|
|
261
162
|
get children() {
|
|
262
163
|
return [_$createIntrinsic("sbr", {}), _$createComponent(For, {
|
|
263
|
-
|
|
264
|
-
return part.args;
|
|
265
|
-
},
|
|
164
|
+
each: args,
|
|
266
165
|
comma: true,
|
|
267
166
|
line: true,
|
|
268
167
|
children: arg => arg
|
|
@@ -274,4 +173,16 @@ function formatCallExpr(prevPart, part) {
|
|
|
274
173
|
}
|
|
275
174
|
});
|
|
276
175
|
}
|
|
176
|
+
|
|
177
|
+
// --- Utilities ---
|
|
178
|
+
|
|
179
|
+
function escapeId(id) {
|
|
180
|
+
return id.replace(/"/g, '\\"');
|
|
181
|
+
}
|
|
182
|
+
function normalizeIfAttribute(id, isAttribute) {
|
|
183
|
+
if (isAttribute) {
|
|
184
|
+
return normalizeAttributeName(id);
|
|
185
|
+
}
|
|
186
|
+
return id;
|
|
187
|
+
}
|
|
277
188
|
//# sourceMappingURL=access-expression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["computed","createAccessExpression","For","Show","normalizeAttributeName","exclusiveParts","Expression","Part","registerOuterComponent","createDescriptor","partProps","sym","first","foundProps","filter","key","length","Error","join","id","args","index","undefined","indexerArgs","children","refkey","normalizeIfAttribute","attribute","escapeId","name","conditional","nullable","isNullable","Array","isArray","typeArgs","getBase","part","_$memo","_$createComponent","TypeArgs","formatPart","prevPart","inCallChain","formatCallExpr","formatMemberAccess","formatElementAccess","isCallPart","AccessExpression","props","_$createIntrinsic","each","comma","line","arg","noIndent","content","when","value","replace","isAttribute"],"sources":["../../../../src/components/access-expression/access-expression.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,34 +1,3 @@
|
|
|
1
|
-
import { Children } from "@alloy-js/core";
|
|
2
|
-
export interface PartDescriptorWithId extends PartDescriptorBase {
|
|
3
|
-
/**
|
|
4
|
-
* The identifier of the access expression part. Will use member access, so must be a valid
|
|
5
|
-
* C# identifier.
|
|
6
|
-
*/
|
|
7
|
-
id: Children;
|
|
8
|
-
conditional: boolean;
|
|
9
|
-
typeArgs?: Children[];
|
|
10
|
-
}
|
|
11
|
-
export declare function isIdPart(part: PartDescriptor): part is PartDescriptorWithId;
|
|
12
|
-
export interface PartDescriptorWithIndex extends PartDescriptorBase {
|
|
13
|
-
/**
|
|
14
|
-
* The index of the access expression part. Will use element access.
|
|
15
|
-
*/
|
|
16
|
-
indexerArgs: Children[];
|
|
17
|
-
conditional: boolean;
|
|
18
|
-
}
|
|
19
|
-
export declare function isIndexPart(part: PartDescriptor): part is PartDescriptorWithIndex;
|
|
20
|
-
export interface PartDescriptorWithArgs extends PartDescriptorBase {
|
|
21
|
-
args: Children[];
|
|
22
|
-
}
|
|
23
|
-
export declare function isArgsPart(part: PartDescriptor): part is PartDescriptorWithArgs;
|
|
24
|
-
export interface PartDescriptorBase {
|
|
25
|
-
nullable: boolean;
|
|
26
|
-
}
|
|
27
|
-
export type PartDescriptor = PartDescriptorWithId | PartDescriptorWithIndex | PartDescriptorWithArgs;
|
|
28
|
-
/**
|
|
29
|
-
* Build part descriptors from the children of a MemberExpression.
|
|
30
|
-
*/
|
|
31
|
-
export declare function childrenToPartDescriptors(children: Children[]): PartDescriptor[];
|
|
32
1
|
/**
|
|
33
2
|
* Normalize attribute name by removing the "Attribute" suffix if present.
|
|
34
3
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-descriptors.d.ts","sourceRoot":"","sources":["../../../../src/components/access-expression/part-descriptors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"part-descriptors.d.ts","sourceRoot":"","sources":["../../../../src/components/access-expression/part-descriptors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,UAKlD"}
|
|
@@ -1,108 +1,3 @@
|
|
|
1
|
-
import { computed, isComponentCreator, reactive, ref, symbolForRefkey } from "@alloy-js/core";
|
|
2
|
-
import { AccessExpression } from "./access-expression.js";
|
|
3
|
-
export function isIdPart(part) {
|
|
4
|
-
return "id" in part && part.id !== undefined;
|
|
5
|
-
}
|
|
6
|
-
export function isIndexPart(part) {
|
|
7
|
-
return "indexerArgs" in part && part.indexerArgs !== undefined;
|
|
8
|
-
}
|
|
9
|
-
export function isArgsPart(part) {
|
|
10
|
-
return "args" in part && part.args !== undefined;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Build part descriptors from the children of a MemberExpression.
|
|
14
|
-
*/
|
|
15
|
-
export function childrenToPartDescriptors(children) {
|
|
16
|
-
const parts = [];
|
|
17
|
-
for (const child of children) {
|
|
18
|
-
if (!isComponentCreator(child, AccessExpression.Part)) {
|
|
19
|
-
// we ignore non-parts
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
parts.push(createPartDescriptorFromProps(child.props, child === children[0]));
|
|
23
|
-
}
|
|
24
|
-
return parts;
|
|
25
|
-
}
|
|
26
|
-
const exclusiveParts = ["children", "args", "refkey", "symbol", "id"];
|
|
27
|
-
/**
|
|
28
|
-
* Creates a reactive part descriptor from the given part props.
|
|
29
|
-
*
|
|
30
|
-
* @param partProps The props for the part.
|
|
31
|
-
* @param first Whether this is the first part in the expression. Refkeys are
|
|
32
|
-
* handled specially for the first part.
|
|
33
|
-
*/
|
|
34
|
-
function createPartDescriptorFromProps(partProps, first) {
|
|
35
|
-
const foundProps = exclusiveParts.filter(key => {
|
|
36
|
-
return key in partProps;
|
|
37
|
-
});
|
|
38
|
-
if (foundProps.length > 1) {
|
|
39
|
-
throw new Error(`Only one of ${foundProps.join(", ")} can be used for a MemberExpression part at a time`);
|
|
40
|
-
}
|
|
41
|
-
const symbolSource = computed(() => {
|
|
42
|
-
if (partProps.refkey) {
|
|
43
|
-
return symbolForRefkey(partProps.refkey).value;
|
|
44
|
-
} else if (partProps.symbol) {
|
|
45
|
-
return partProps.symbol;
|
|
46
|
-
} else {
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
const part = {
|
|
51
|
-
id: computed(() => {
|
|
52
|
-
if (partProps.args || partProps.index || partProps.indexerArgs) {
|
|
53
|
-
return undefined;
|
|
54
|
-
} else if (partProps.children !== undefined) {
|
|
55
|
-
return partProps.children;
|
|
56
|
-
} else if (first && partProps.refkey) {
|
|
57
|
-
return partProps.refkey;
|
|
58
|
-
} else if (partProps.id !== undefined) {
|
|
59
|
-
return normalizeIfAttribute(partProps.id, partProps.attribute);
|
|
60
|
-
} else if (symbolSource.value) {
|
|
61
|
-
return normalizeIfAttribute(escapeId(symbolSource.value.name), partProps.attribute);
|
|
62
|
-
} else {
|
|
63
|
-
return "<unresolved symbol>";
|
|
64
|
-
}
|
|
65
|
-
}),
|
|
66
|
-
indexerArgs: computed(() => {
|
|
67
|
-
if (partProps.indexerArgs) {
|
|
68
|
-
return partProps.indexerArgs;
|
|
69
|
-
}
|
|
70
|
-
if (partProps.index !== undefined) {
|
|
71
|
-
return [partProps.index];
|
|
72
|
-
}
|
|
73
|
-
return [];
|
|
74
|
-
}),
|
|
75
|
-
conditional: computed(() => {
|
|
76
|
-
return !!partProps.conditional;
|
|
77
|
-
}),
|
|
78
|
-
nullable: computed(() => {
|
|
79
|
-
if (partProps.nullable) {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
if (symbolSource.value) {
|
|
83
|
-
return symbolSource.value.isNullable;
|
|
84
|
-
}
|
|
85
|
-
return false;
|
|
86
|
-
}),
|
|
87
|
-
args: ref(partProps.args === true ? [] : partProps.args),
|
|
88
|
-
typeArgs: ref(partProps.typeArgs)
|
|
89
|
-
};
|
|
90
|
-
return reactive(part);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* replaces quotes with escaped quotes
|
|
95
|
-
*/
|
|
96
|
-
function escapeId(id) {
|
|
97
|
-
return id.replace(/"/g, '\\"');
|
|
98
|
-
}
|
|
99
|
-
function normalizeIfAttribute(id, isAttribute) {
|
|
100
|
-
if (isAttribute) {
|
|
101
|
-
return normalizeAttributeName(id);
|
|
102
|
-
}
|
|
103
|
-
return id;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
1
|
/**
|
|
107
2
|
* Normalize attribute name by removing the "Attribute" suffix if present.
|
|
108
3
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["normalizeAttributeName","name","undefined","endsWith","substring","length"],"sources":["../../../../src/components/access-expression/part-descriptors.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,sBAAsBA,CAACC,IAAY,EAAE;EACnD,IAAIA,IAAI,KAAKC,SAAS,IAAID,IAAI,CAACE,QAAQ,CAAC,WAAW,CAAC,EAAE;IACpD,OAAOF,IAAI,CAACG,SAAS,CAAC,CAAC,EAAEH,IAAI,CAACI,MAAM,GAAG,WAAW,CAACA,MAAM,CAAC;EAC5D;EACA,OAAOJ,IAAI;AACb","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ export function DocFromMarkdown(props) {
|
|
|
9
9
|
function renderTokens(tokens) {
|
|
10
10
|
return [_$memo(() => tokens.map((token, index) => [_$createComponent(DocFromMarkedToken, {
|
|
11
11
|
token: token
|
|
12
|
-
}),
|
|
12
|
+
}), token.type === "paragraph" && index !== tokens.length - 1 && _$createIntrinsic("br", {})]))];
|
|
13
13
|
}
|
|
14
14
|
function DocFromMarkedToken(props) {
|
|
15
15
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["marked","DocC","DocCode","DocList","DocSee","DocFromMarkdown","props","tokens","lexer","markdown","renderTokens","_$memo","map","token","index","_$createComponent","DocFromMarkedToken","type","length","_$createIntrinsic","children","text","ordered","items","x","href","raw"],"sources":["../../../../src/components/doc/from-markdown.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,QAA4B,QAAQ;AACnD,SAASC,IAAI,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM;AAMvC;AACA,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAE;EAC3D,MAAMC,MAAM,GAAGP,MAAM,CAACQ,KAAK,CAACF,KAAK,CAACG,QAAQ,CAAC;EAC3C,OAAOC,YAAY,CAACH,MAAM,CAAC;AAC7B;AAEA,SAASG,YAAYA,CAACH,MAAe,EAAE;EACrC,QAAAI,MAAA,OAEKJ,MAAM,CAACK,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,MAAAC,iBAAA,CAEpBC,kBAAkB;IAACH,KAAK,EAAEA;EAAK,
|
|
1
|
+
{"version":3,"names":["marked","DocC","DocCode","DocList","DocSee","DocFromMarkdown","props","tokens","lexer","markdown","renderTokens","_$memo","map","token","index","_$createComponent","DocFromMarkedToken","type","length","_$createIntrinsic","children","text","ordered","items","x","href","raw"],"sources":["../../../../src/components/doc/from-markdown.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,QAA4B,QAAQ;AACnD,SAASC,IAAI,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM;AAMvC;AACA,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAE;EAC3D,MAAMC,MAAM,GAAGP,MAAM,CAACQ,KAAK,CAACF,KAAK,CAACG,QAAQ,CAAC;EAC3C,OAAOC,YAAY,CAACH,MAAM,CAAC;AAC7B;AAEA,SAASG,YAAYA,CAACH,MAAe,EAAE;EACrC,QAAAI,MAAA,OAEKJ,MAAM,CAACK,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,MAAAC,iBAAA,CAEpBC,kBAAkB;IAACH,KAAK,EAAEA;EAAK,IAEpBA,KAAK,CAACI,IAAI,KAAK,WAAW,IAClCH,KAAK,KAAKP,MAAM,CAACW,MAAM,GAAG,CAAC,IAAAC,iBAAA,UAAU,CAG5C,CAAC;AAGR;AAEA,SAASH,kBAAkBA,CAACV,KAAuB,EAAE;EACnD,MAAM;IAAEO;EAAM,CAAC,GAAGP,KAAK;EACvB,QAAQO,KAAK,CAACI,IAAI;IAChB,KAAK,WAAW;MACd,OAAOJ,KAAK,CAACN,MAAM,GAAGG,YAAY,CAACG,KAAK,CAACN,MAAM,CAAC,GAAG,IAAI;IACzD,KAAK,MAAM;MACT,OAAAQ,iBAAA,CAAQb,OAAO;QAAA,IAAAkB,SAAA;UAAA,OAAEP,KAAK,CAACQ,IAAI;QAAA;MAAA;IAC7B,KAAK,UAAU;MACb,OAAAN,iBAAA,CAAQd,IAAI;QAAA,IAAAmB,SAAA;UAAA,OAAEP,KAAK,CAACQ,IAAI;QAAA;MAAA;IAC1B,KAAK,MAAM;MACT,OAAAN,iBAAA,CACGZ,OAAO;QAAA,IACNc,IAAIA,CAAA;UAAA,OAAEJ,KAAK,CAACS,OAAO,GAAG,QAAQ,GAAG,QAAQ;QAAA;QAAA,IACzCC,KAAKA,CAAA;UAAA,OAAEV,KAAK,CAACU,KAAK,CAACX,GAAG,CAAEY,CAAkB,KAAAb,MAAA,OACrCD,YAAY,CAACc,CAAC,CAACjB,MAAM,CAAC,EAC1B,CAAC;QAAA;MAAA;IAGR,KAAK,MAAM;MACT,OAAAQ,iBAAA,CACGX,MAAM;QAAA,IAACqB,IAAIA,CAAA;UAAA,OAAEZ,KAAK,CAACY,IAAI;QAAA;QAAA,IAAAL,SAAA;UAAA,OACrBT,MAAA,SAAAE,KAAK,CAACN,MAAM,OAAIG,YAAY,CAACG,KAAK,CAACN,MAAM,CAAC;QAAA;MAAA;IAGjD,KAAK,QAAQ;IACb,KAAK,IAAI;MACP,OAAOM,KAAK,CAACQ,IAAI;IACnB,KAAK,MAAM;IACX;MACE,OAAOR,KAAK,CAACa,GAAG;EACpB;AACF","ignoreList":[]}
|