@descryy/adapter-csharp 0.1.0 → 0.3.0
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/LICENSE +8 -0
- package/dist/adapter.d.ts +3 -8
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +57 -65
- package/dist/adapter.js.map +1 -1
- package/dist/aspnetcore.d.ts +53 -95
- package/dist/aspnetcore.d.ts.map +1 -1
- package/dist/aspnetcore.js +56 -101
- package/dist/aspnetcore.js.map +1 -1
- package/dist/client-base.d.ts +51 -88
- package/dist/client-base.d.ts.map +1 -1
- package/dist/client-base.js +46 -79
- package/dist/client-base.js.map +1 -1
- package/dist/client.d.ts +42 -106
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +83 -172
- package/dist/client.js.map +1 -1
- package/dist/efcore.d.ts +59 -113
- package/dist/efcore.d.ts.map +1 -1
- package/dist/efcore.js +119 -204
- package/dist/efcore.js.map +1 -1
- package/dist/extract.d.ts +27 -50
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +154 -248
- package/dist/extract.js.map +1 -1
- package/dist/nullability.d.ts +46 -78
- package/dist/nullability.d.ts.map +1 -1
- package/dist/nullability.js +47 -80
- package/dist/nullability.js.map +1 -1
- package/dist/parse.d.ts +62 -102
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +60 -101
- package/dist/parse.js.map +1 -1
- package/dist/projects.d.ts +24 -40
- package/dist/projects.d.ts.map +1 -1
- package/dist/projects.js +38 -65
- package/dist/projects.js.map +1 -1
- package/package.json +15 -6
package/dist/aspnetcore.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The HTTP-route framework extractor for C# — ASP.NET Core.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* DEC-
|
|
6
|
-
* re-counting in the unit the rules decide, and that amendment is most of what
|
|
7
|
-
* is load-bearing here.
|
|
4
|
+
* An `API_ROUTE` is a framework claim, earned here. DEC-128 §1 set the rules;
|
|
5
|
+
* DEC-181 amended them after re-counting.
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* controller is `[ApiController]` or a `ControllerBase` base. Counted in files:
|
|
7
|
+
* Evidence is on an ancestor, subject is the descendant. DEC-128 §1a admits
|
|
8
|
+
* a `[HttpGet]` method on a controller (`[ApiController]` or `ControllerBase`
|
|
9
|
+
* base). Counted in files:
|
|
13
10
|
*
|
|
14
11
|
* | corpus | files with a verb attribute | directly admissible | **need the base chain** |
|
|
15
12
|
* | --- | --- | --- | --- |
|
|
@@ -17,39 +14,27 @@
|
|
|
17
14
|
* | `Ocelot` | 9 | 9 | 0 |
|
|
18
15
|
* | `eShopOnWeb` | 4 | 3 | 1 |
|
|
19
16
|
*
|
|
20
|
-
* Every
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* This is the **third instance of one construct class**: the evidence sits on an
|
|
27
|
-
* ancestor and the subject is the descendant. JPA's `@MappedSuperclass` cost a
|
|
28
|
-
* third of an entity population; this is 98% of a corpus. It is checked for by
|
|
29
|
-
* name now rather than met by surprise.
|
|
30
|
-
*
|
|
31
|
-
* ## `[controller]` expands against the SUBJECT class, not the declaring one
|
|
17
|
+
* Every jellyfin controller is `class XController : BaseJellyfinApiController`,
|
|
18
|
+
* whose base carries `[ApiController]`/`[Route("[controller]")]` — checking
|
|
19
|
+
* only the class admits 1 of 62 and misses ~400 verb attributes. Third
|
|
20
|
+
* instance of this construct class after JPA's `@MappedSuperclass` (cost a
|
|
21
|
+
* third of an entity population) and ASP.NET's own base controller (98% of a corpus).
|
|
32
22
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* sixty-one
|
|
37
|
-
* a silence
|
|
38
|
-
*
|
|
39
|
-
* The template is inherited; the *name substituted into it* never is.
|
|
40
|
-
*
|
|
41
|
-
* ## A derived `[Route]` REPLACES an inherited one — it does not join
|
|
23
|
+
* `[controller]` expands against the SUBJECT class, not the declaring one:
|
|
24
|
+
* the token governing 61 jellyfin controllers is declared once, on the base
|
|
25
|
+
* — expanding it where the attribute lives would give `BaseJellyfinApi`
|
|
26
|
+
* sixty-one times, one wrong template producing sixty-one wrong routes (a
|
|
27
|
+
* wrong answer, not a silence — rule 2 treats them differently). The
|
|
28
|
+
* template is inherited; the name substituted into it never is.
|
|
42
29
|
*
|
|
30
|
+
* A derived `[Route]` REPLACES an inherited one, it does not join:
|
|
43
31
|
* `ActivityLogController` carries `[Route("System/ActivityLog")]` while
|
|
44
|
-
* inheriting `[Route("[controller]")]
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* alike — which is the trap. **Before reusing a composition rule on a new pair,
|
|
49
|
-
* establish that the new pair composes at all.** Class↔method concatenates;
|
|
50
|
-
* class↔base overrides.
|
|
32
|
+
* inheriting `[Route("[controller]")]` — ASP.NET takes the most-derived. §1a
|
|
33
|
+
* *does* join class template to method template, so before reusing a
|
|
34
|
+
* composition rule on a new pair, confirm the pair composes at all:
|
|
35
|
+
* class↔method concatenates, class↔base overrides.
|
|
51
36
|
*
|
|
52
|
-
*
|
|
37
|
+
* Both mechanisms, counted apart:
|
|
53
38
|
*
|
|
54
39
|
* | corpus | verb attributes | `Map*` | `MapGroup` |
|
|
55
40
|
* | --- | --- | --- | --- |
|
|
@@ -58,12 +43,10 @@
|
|
|
58
43
|
* | `eShopOnWeb` | 26 | 7 | 0 |
|
|
59
44
|
* | `CleanArchitecture` | **0** | **15** | **1** |
|
|
60
45
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* degraded number
|
|
64
|
-
*
|
|
65
|
-
* — stated rather than discovered later, because a rule with one witness is not
|
|
66
|
-
* measured.
|
|
46
|
+
* CleanArchitecture is attribute-free, jellyfin is minimal-API-free, so
|
|
47
|
+
* supporting one mechanism scores zero on a whole corpus rather than a
|
|
48
|
+
* degraded number — counted separately so a total miss can't average out.
|
|
49
|
+
* `MapGroup` has one witness in the entire control set.
|
|
67
50
|
*/
|
|
68
51
|
const MVC_NAMESPACES = ["Microsoft.AspNetCore.Mvc", "Microsoft.AspNetCore.Http", "Microsoft.AspNetCore.Builder", "Microsoft.AspNetCore.Routing"];
|
|
69
52
|
const VERB_ATTRIBUTES = new Map([
|
|
@@ -85,15 +68,10 @@ const MINIMAL_VERBS = new Map([
|
|
|
85
68
|
const importsIn = (file, onlyGlobal = false) => file.usings.some((using) => (!onlyGlobal || using.isGlobal) &&
|
|
86
69
|
MVC_NAMESPACES.some((ns) => using.target === ns || using.target.startsWith(`${ns}.`)));
|
|
87
70
|
/**
|
|
88
|
-
* Does this file import ASP.NET's routing surface?
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* project. `efcore.ts` records the measured cost of ignoring it: nine `DbSet<T>`
|
|
93
|
-
* read as zero because the `using` sat three files away.
|
|
94
|
-
*
|
|
95
|
-
* Scoped by assembly, because a global using in one project does not reach
|
|
96
|
-
* another.
|
|
71
|
+
* Does this file import ASP.NET's routing surface? A `global using` counts,
|
|
72
|
+
* in force across the assembly (modern C#'s .NET 6+ implicit global usings;
|
|
73
|
+
* `efcore.ts` measured the cost of ignoring it — nine `DbSet<T>` read as zero).
|
|
74
|
+
* Scoped by assembly — a global using in one project doesn't reach another.
|
|
97
75
|
*/
|
|
98
76
|
export function importsAspNet(file, globalsByAssembly) {
|
|
99
77
|
if (importsIn(file))
|
|
@@ -101,15 +79,10 @@ export function importsAspNet(file, globalsByAssembly) {
|
|
|
101
79
|
return globalsByAssembly?.get(file.assembly) === true;
|
|
102
80
|
}
|
|
103
81
|
/**
|
|
104
|
-
* Normalise a route template to its joinable form.
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* joins to nothing. Golden 04's note names `{id:guid}` explicitly.
|
|
109
|
-
*
|
|
110
|
-
* The *written* form is kept beside this one. Identity normalises and fidelity
|
|
111
|
-
* preserves; collapsing to one deletes a fact that surfaces as a clean zero
|
|
112
|
-
* somewhere else.
|
|
82
|
+
* Normalise a route template to its joinable form. `{id}`, `{id:int}`,
|
|
83
|
+
* `{id:guid}`, `{id?}`, `{*rest}` all serve the same URL shape and must mint
|
|
84
|
+
* the same endpoint id (golden 04 names `{id:guid}` explicitly). The written
|
|
85
|
+
* form is kept beside this one — identity normalises, fidelity preserves.
|
|
113
86
|
*/
|
|
114
87
|
export function normaliseTemplate(written) {
|
|
115
88
|
return written.replace(/\{[^}]*\}/g, "{param}");
|
|
@@ -127,15 +100,10 @@ function join(prefix, suffix) {
|
|
|
127
100
|
return `/${left}/${right}`;
|
|
128
101
|
}
|
|
129
102
|
/**
|
|
130
|
-
* Expand `[controller]`, `[action]
|
|
131
|
-
*
|
|
132
|
-
* `
|
|
133
|
-
*
|
|
134
|
-
* the `Controller` suffix, which is the framework's own rule and the one place a
|
|
135
|
-
* class name legitimately enters a path.
|
|
136
|
-
*
|
|
137
|
-
* A token this reader does not know yields `undefined`: the route is refused and
|
|
138
|
-
* logged rather than emitted with a guessed path.
|
|
103
|
+
* Expand `[controller]`, `[action]`, `[area]` against the SUBJECT (the
|
|
104
|
+
* most-derived class, never the declaring class — see file comment).
|
|
105
|
+
* `[controller]` drops the `Controller` suffix, the framework's own rule. An
|
|
106
|
+
* unknown token yields `undefined`: refused and logged, never guessed.
|
|
139
107
|
*/
|
|
140
108
|
export function expandTokens(template, subject, action) {
|
|
141
109
|
let tokens = 0;
|
|
@@ -268,12 +236,10 @@ export function aspNetRoutes(input) {
|
|
|
268
236
|
for (const type of parsed.types) {
|
|
269
237
|
const chain = chainOf({ type, file: parsed });
|
|
270
238
|
if (!chain.isController) {
|
|
271
|
-
// Not silently dropped
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
// `SERVES_API` ledger row; an ordinary non-controller class (no
|
|
276
|
-
// `unresolvedBase`) is correctly not reported at all.
|
|
239
|
+
// Not silently dropped: when an ancestor's base left the analysed
|
|
240
|
+
// set, controller status is genuinely undetermined, not "no".
|
|
241
|
+
// `extract.ts` turns this into a `SERVES_API` ledger row; an
|
|
242
|
+
// ordinary non-controller class (no `unresolvedBase`) isn't reported.
|
|
277
243
|
if (chain.unresolvedBase !== undefined) {
|
|
278
244
|
unresolvedBaseSites.push({
|
|
279
245
|
path: type.path,
|
|
@@ -295,21 +261,15 @@ export function aspNetRoutes(input) {
|
|
|
295
261
|
const verb = VERB_ATTRIBUTES.get(attribute);
|
|
296
262
|
if (verb === undefined)
|
|
297
263
|
continue;
|
|
298
|
-
// RT-208
|
|
299
|
-
//
|
|
300
|
-
//
|
|
301
|
-
//
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
// serves `POST /User/Logout`, not the bare `POST /User` this
|
|
305
|
-
// reader used to emit by only ever looking at the verb
|
|
306
|
-
// attribute's own argument). The verb attribute's own argument
|
|
307
|
-
// still wins when both are present -- that shape is unchanged.
|
|
264
|
+
// RT-208: a bare verb attribute (`[HttpPost]`) can carry its route
|
|
265
|
+
// suffix on a sibling `[Route("...")]` — ASP.NET's own documented
|
|
266
|
+
// composition (`eShopOnWeb`'s `UserController.Logout()`:
|
|
267
|
+
// `[Route("Logout")] [HttpPost]` serves `POST /User/Logout`, not
|
|
268
|
+
// bare `POST /User`). The verb attribute's own argument still wins
|
|
269
|
+
// when both are present.
|
|
308
270
|
const suffix = func.attributeArguments[attribute] ?? func.attributeArguments["Route"];
|
|
309
|
-
//
|
|
310
|
-
//
|
|
311
|
-
// there was something to read and it could not be read as a
|
|
312
|
-
// literal.
|
|
271
|
+
// No argument and no sibling `[Route]` is legal — means "the class
|
|
272
|
+
// template". Refused only when something unreadable was there.
|
|
313
273
|
const classPart = chain.route ?? "";
|
|
314
274
|
const expanded = expandTokens(join(classPart, suffix ?? ""), type.name, func.name);
|
|
315
275
|
if (expanded === undefined) {
|
|
@@ -334,17 +294,12 @@ export function aspNetRoutes(input) {
|
|
|
334
294
|
}
|
|
335
295
|
}
|
|
336
296
|
}
|
|
337
|
-
// `MapGroup` prefixes, bound to the variable
|
|
338
|
-
//
|
|
339
|
-
//
|
|
340
|
-
//
|
|
341
|
-
//
|
|
342
|
-
//
|
|
343
|
-
// whole argument for filling a gap rather than carrying it.
|
|
344
|
-
//
|
|
345
|
-
// `var api = vApi.MapGroup("api/catalog")` binds `api`. A group whose prefix
|
|
346
|
-
// is not a literal binds nothing, so a `Map*` on it is refused below rather
|
|
347
|
-
// than emitted bare.
|
|
297
|
+
// `MapGroup` prefixes, bound to the variable holding the builder.
|
|
298
|
+
// DEC-128 §1b named this; the first version didn't do it, silently
|
|
299
|
+
// emitting `/items` where the served path is `/api/catalog/items` —
|
|
300
|
+
// found by adding `eShop`, the corpus the gap register said was missing.
|
|
301
|
+
// `var api = vApi.MapGroup("api/catalog")` binds `api`; a non-literal
|
|
302
|
+
// prefix binds nothing, so a `Map*` on it is refused below.
|
|
348
303
|
const groups = new Map();
|
|
349
304
|
const groupDecl = /\b(?:var|[A-Za-z_][A-Za-z0-9_<>,. ]*?)\s+([A-Za-z_][A-Za-z0-9_]*)\s*=\s*[^;]*?\.\s*MapGroup\s*\(\s*"([^"]*)"/g;
|
|
350
305
|
for (let match = groupDecl.exec(source); match !== null; match = groupDecl.exec(source)) {
|
package/dist/aspnetcore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspnetcore.js","sourceRoot":"","sources":["../src/aspnetcore.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"aspnetcore.js","sourceRoot":"","sources":["../src/aspnetcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AA+EH,MAAM,cAAc,GAAG,CAAC,0BAA0B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,8BAA8B,CAAC,CAAC;AAEjJ,MAAM,eAAe,GAAG,IAAI,GAAG,CAAiB;IAC9C,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,aAAa,EAAE,SAAS,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAiB;IAC5C,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,CAAC,SAAS,EAAE,MAAM,CAAC;IACnB,CAAC,QAAQ,EAAE,KAAK,CAAC;IACjB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,WAAW,EAAE,QAAQ,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,UAAU,GAAG,KAAK,EAAW,EAAE,CAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC;IAC/B,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CACxF,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,iBAAgD;IAC1F,IAAI,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,mFAAmF;AACnF,SAAS,IAAI,CAAC,MAAc,EAAE,MAAc;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5C,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,KAAK,EAAE,CAAC;IACpC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IACpC,OAAO,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,OAAe,EACf,MAAc;IAEd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,CAAC;YACZ,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,CAAC;YACZ,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,uEAAuE;QACvE,iEAAiE;QACjE,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACpD,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB;IAC7C;oFACgF;IAChF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;;gBACrE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,IAAI,yBAAyB,GAAG,CAAC,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD;;;;;;OAMG;IACH,MAAM,OAAO,GAAG,CACd,KAAe,EAC4F,EAAE;QAC7G,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,OAAO,GAAyB,KAAK,CAAC;QAC1C,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,KAAyB,CAAC;QAC9B,IAAI,cAAkC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM;YACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEd,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,KAAK,KAAK,CAAC;oBAAE,MAAM,GAAG,IAAI,CAAC;YACjC,CAAC;YACD,yEAAyE;YACzE,wEAAwE;YACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,QAAQ,KAAK,SAAS;oBAAE,KAAK,GAAG,QAAQ,CAAC;YAC/C,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM;YAC9B,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACvD,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,KAAK,KAAK,CAAC;oBAAE,MAAM,GAAG,IAAI,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxD,yBAAyB,IAAI,CAAC,CAAC;gBAC/B,uEAAuE;gBACvE,oEAAoE;gBACpE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACtC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,mEAAmE;gBACnE,mEAAmE;gBACnE,iEAAiE;gBACjE,kCAAkC;gBAClC,cAAc,GAAG,IAAI,CAAC;gBACtB,MAAM;YACR,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,sEAAsE;gBACtE,qEAAqE;gBACrE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM;YACR,CAAC;YACD,OAAO,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,mBAAmB,GAA+B,EAAE,CAAC;IAC3D,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,0BAA0B,GAAG,CAAC,CAAC;IAEnC,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC9C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;YAAE,SAAS;QAEjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBACxB,kEAAkE;gBAClE,8DAA8D;gBAC9D,6DAA6D;gBAC7D,sEAAsE;gBACtE,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;oBACvC,mBAAmB,CAAC,IAAI,CAAC;wBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,IAAI,EAAE,IAAI,CAAC,SAAS;wBACpB,IAAI,EAAE,KAAK,CAAC,cAAc;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,MAAM;gBAAE,gBAAgB,IAAI,CAAC,CAAC;;gBACnC,oBAAoB,IAAI,CAAC,CAAC;YAE/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC/D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5C,IAAI,IAAI,KAAK,SAAS;wBAAE,SAAS;oBAEjC,mEAAmE;oBACnE,kEAAkE;oBAClE,yDAAyD;oBACzD,iEAAiE;oBACjE,mEAAmE;oBACnE,yBAAyB;oBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBACtF,mEAAmE;oBACnE,+DAA+D;oBAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;oBACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,aAAa,IAAI,CAAC,CAAC;wBACnB,SAAS;oBACX,CAAC;oBACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpC,iBAAiB,IAAI,CAAC,CAAC;wBACvB,SAAS;oBACX,CAAC;oBACD,cAAc,IAAI,QAAQ,CAAC,MAAM,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC9C,OAAO,EAAE,QAAQ,CAAC,QAAQ;wBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS;wBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;wBACtC,SAAS,EAAE,WAAW;wBACtB,SAAS,EAAE,YAAY;qBACxB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,mEAAmE;QACnE,oEAAoE;QACpE,yEAAyE;QACzE,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,MAAM,SAAS,GAAG,+GAA+G,CAAC;QAClI,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YACjC,aAAa,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,kFAAkF;QAClF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,UAAU,GAAG,2GAA2G,CAAC;QAC/H,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1D,CAAC;QAED,wEAAwE;QACxE,yEAAyE;QACzE,MAAM,OAAO,GAAG,qFAAqF,CAAC;QACtG,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACpF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,wEAAwE;gBACxE,6CAA6C;gBAC7C,iBAAiB,IAAI,CAAC,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,qEAAqE;gBACrE,8CAA8C;gBAC9C,0BAA0B,IAAI,CAAC,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACpC,OAAO;gBACP,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;gBACrD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM;QACN,gBAAgB;QAChB,oBAAoB;QACpB,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,EAAE;QAClD,yBAAyB;QACzB,eAAe,EAAE,CAAC,GAAG,eAAe,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,mBAAmB;QACnB,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,aAAa;QACb,0BAA0B;KAC3B,CAAC;AACJ,CAAC"}
|
package/dist/client-base.d.ts
CHANGED
|
@@ -1,62 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* unaddressed: what the receiver's *base* is, so a bare-relative call
|
|
6
|
-
* (`client.GetAsync("Users/Me")`, no leading slash) composes against
|
|
2
|
+
* Client-base extractor — DEC-164's contract. `client.ts` already reads a
|
|
3
|
+
* call's own literal path; this resolves the receiver's *base*, so a
|
|
4
|
+
* bare-relative call (`client.GetAsync("Users/Me")`) composes against
|
|
7
5
|
* something real instead of being refused for want of one.
|
|
8
6
|
*
|
|
9
|
-
*
|
|
7
|
+
* Two shapes built. The original audit named
|
|
8
|
+
* `services.AddHttpClient<T>(c => c.BaseAddress = new Uri(...))` as the
|
|
9
|
+
* pattern, on the premise that jellyfin and eShopOnWeb both use it — false
|
|
10
|
+
* for both: jellyfin's `AddHttpClient(NamedClient.Default, ...)` never sets
|
|
11
|
+
* `BaseAddress`, and eShopOnWeb has no `AddHttpClient<T>(...)` call at all.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* (`
|
|
17
|
-
*
|
|
13
|
+
* What every real `USES_API` edge in both corpora actually goes through is
|
|
14
|
+
* `WebApplicationFactory<TEntryPoint>.CreateClient(...)` — ASP.NET's
|
|
15
|
+
* integration-test client, documented default `BaseAddress` is the app under
|
|
16
|
+
* test. `derivesFromWebApplicationFactory` (in `extract.ts`) is the whole
|
|
17
|
+
* mechanism: does the receiver's class, directly or via one in-repo
|
|
18
|
+
* indirection (`CustomWebApplicationFactory<TProgram> : WebApplicationFactory<TProgram>`,
|
|
19
|
+
* CleanArchitecture's shape), carry `WebApplicationFactory<` in its base
|
|
20
|
+
* list. Measured: 100% of jellyfin's and eShopOnWeb's 27 `USES_API` edges,
|
|
21
|
+
* plus every newly-reached bare-relative call, go through this receiver.
|
|
18
22
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* bare-relative call this row newly reaches, go through exactly this
|
|
31
|
-
* receiver.**
|
|
32
|
-
*
|
|
33
|
-
* The named `AddHttpClient<T>(...)` shape is real, just not in the two
|
|
34
|
-
* repositories the audit cited — `dotnet/eShop` has it
|
|
35
|
-
* (`WebApp/Extensions.cs`, `WebhookClient/Extensions.cs`,
|
|
36
|
-
* `HybridApp/MauiProgram.cs`, 4 sites), and every one of those typed clients'
|
|
37
|
-
* own call sites builds its path by string interpolation
|
|
38
|
-
* (`$"{remoteServiceBaseUrl}items/{id}"`), already and separately refused by
|
|
39
|
-
* `client.ts`'s "not a bare string literal" rule — so resolving this base
|
|
40
|
-
* moves **zero** measured edges in any corpus this row has on disk.
|
|
41
|
-
* {@link typedClientBases} below reads it anyway, narrowly (a literal string
|
|
42
|
-
* argument to `new Uri(...)`/`new(...)` only — a field, a config read, or any
|
|
43
|
-
* other expression stays `unresolved`, never guessed): the mechanism is real
|
|
44
|
-
* corpus evidence, not invented for a fixture, and golden pattern 08a needs a
|
|
45
|
-
* *non-empty* composed path to prove `DEC-097`'s composition is real rather
|
|
46
|
-
* than coincidentally correct when the prefix is always empty. No other DI
|
|
47
|
-
* mechanism — `IHttpClientFactory.CreateClient(name)`'s named-client form
|
|
48
|
-
* included — is read here; every such call was invisible before this row and
|
|
49
|
-
* stays exactly as invisible after it, a disclosed, unaffected limit rather
|
|
50
|
-
* than a claim this file makes and cannot back.
|
|
51
|
-
*
|
|
52
|
-
* ## The state built but never produced by real corpus evidence
|
|
23
|
+
* `AddHttpClient<T>(...)` is real, just not in those two repos —
|
|
24
|
+
* `dotnet/eShop` has it (4 sites), but every one of those typed clients'
|
|
25
|
+
* call sites builds its path by string interpolation, already refused by
|
|
26
|
+
* `client.ts`'s literal-only rule — so resolving this base moves zero
|
|
27
|
+
* measured edges. {@link typedClientBases} reads it anyway, narrowly (a
|
|
28
|
+
* literal string argument to `new Uri(...)`/`new(...)` only; a field or
|
|
29
|
+
* config read stays `unresolved`): golden pattern 08a needs a non-empty
|
|
30
|
+
* composed path to prove DEC-097's composition is real, not coincidental.
|
|
31
|
+
* No other DI mechanism (`IHttpClientFactory.CreateClient(name)` included) is
|
|
32
|
+
* read here — every such call was invisible before and stays invisible, a
|
|
33
|
+
* disclosed, unaffected limit.
|
|
53
34
|
*
|
|
54
35
|
* DEC-164 names four states; three are real here. `unresolved` is reachable
|
|
55
|
-
* in code
|
|
56
|
-
*
|
|
57
|
-
* the six corpora this row measured — kept rather than deleted, the same way
|
|
58
|
-
* `efcore.ts`'s rival-ORM exclusion rule stays written down at zero
|
|
59
|
-
* witnesses: a real rule with no corpus evidence yet, not a guess.
|
|
36
|
+
* in code but has zero witnesses across all six corpora measured — kept
|
|
37
|
+
* rather than deleted, same as `efcore.ts`'s rival-ORM exclusion rule.
|
|
60
38
|
*/
|
|
61
39
|
/**
|
|
62
40
|
* DEC-164's four-state contract, minus the fourth — the field's own absence
|
|
@@ -65,24 +43,19 @@
|
|
|
65
43
|
*/
|
|
66
44
|
export type ClientBaseResult = {
|
|
67
45
|
/**
|
|
68
|
-
* A real base
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* (`AddHttpClient<T>(o => o.BaseAddress = new("http://host/api/v1"))`)
|
|
74
|
-
* that would carry one, the day a corpus exercises it.
|
|
46
|
+
* A real base traced to the receiver's construction. DEC-097: only the
|
|
47
|
+
* origin is stripped, so `path` is empty for every witness found here
|
|
48
|
+
* (`WebApplicationFactory<T>.CreateClient()`'s default is
|
|
49
|
+
* `http://localhost/`, origin only) — the field exists for the
|
|
50
|
+
* DI-registration case that would carry one.
|
|
75
51
|
*/
|
|
76
52
|
readonly state: "resolved";
|
|
77
53
|
readonly path: string;
|
|
78
54
|
} | {
|
|
79
55
|
/**
|
|
80
|
-
* No base-setting mechanism
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* a real base may be configured somewhere this reader does not reach.
|
|
84
|
-
* The call's own literal path is trusted as complete, unchanged from
|
|
85
|
-
* every C# `USES_API` edge minted before this row existed.
|
|
56
|
+
* No base-setting mechanism found. Not a claim that none exists — an
|
|
57
|
+
* untraced `HttpClient` parameter is exactly this case. The call's own
|
|
58
|
+
* literal path is trusted as complete, unchanged from before this row.
|
|
86
59
|
*/
|
|
87
60
|
readonly state: "none";
|
|
88
61
|
} | {
|
|
@@ -92,30 +65,20 @@ export type ClientBaseResult = {
|
|
|
92
65
|
};
|
|
93
66
|
/**
|
|
94
67
|
* `services.AddHttpClient<TClient>(o => o.BaseAddress = <expr>)` —
|
|
95
|
-
* `dotnet/eShop`'s
|
|
96
|
-
* `
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* simple name, a disclosed limit rather than a full type resolution this
|
|
102
|
-
* textual pass cannot do): DI hands the configured client straight to
|
|
103
|
-
* `TClient`'s own constructor, so a call inside `TClient` whose receiver
|
|
104
|
-
* resolves to a bare, otherwise-untraced `HttpClient` is exactly this base.
|
|
68
|
+
* `dotnet/eShop`'s shape, read textually (same division of labour
|
|
69
|
+
* `aspnetcore.ts`/`efcore.ts` keep for fluent chains — see `extract.ts`).
|
|
70
|
+
* Keyed by `TClient`'s written name, matched against the enclosing type's
|
|
71
|
+
* simple name (disclosed limit, not full type resolution): DI hands the
|
|
72
|
+
* configured client straight to `TClient`'s constructor, so an untraced bare
|
|
73
|
+
* `HttpClient` receiver inside `TClient` is exactly this base.
|
|
105
74
|
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* so matching up to the first `)` is exact for both, not an approximation.
|
|
114
|
-
* A bare string literal (`new Uri("https+http://catalog-api")`,
|
|
115
|
-
* `new("http://webhooks-api")`) resolves; anything else (`new(MobileBffHost)`
|
|
116
|
-
* — a static field, `eShop`'s own `HybridApp/MauiProgram.cs`) is `unresolved`
|
|
117
|
-
* with the argument's own text as `why`. Both are measured, not invented for
|
|
118
|
-
* this file.
|
|
75
|
+
* RHS matched as `new(...)`/`new Uri(...)`'s single argument, not
|
|
76
|
+
* "everything to the next `;`" — real `eShop` source follows with a fluent
|
|
77
|
+
* chain (`.AddApiVersion(2.0).AddAuthToken();`) whose own parens would
|
|
78
|
+
* otherwise be swallowed. Real shapes have no nested parens in the argument,
|
|
79
|
+
* so matching to the first `)` is exact. A bare string literal resolves;
|
|
80
|
+
* anything else (`new(MobileBffHost)`, a static field) is `unresolved` with
|
|
81
|
+
* the argument text as `why`. Both measured, not invented.
|
|
119
82
|
*/
|
|
120
83
|
export declare function typedClientBases(files: readonly {
|
|
121
84
|
readonly source: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-base.d.ts","sourceRoot":"","sources":["../src/client-base.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client-base.d.ts","sourceRoot":"","sources":["../src/client-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IACE,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAcN;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAqB7G"}
|