@descryy/adapter-kotlin 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 +4 -8
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +56 -58
- package/dist/adapter.js.map +1 -1
- package/dist/client.d.ts +23 -41
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +42 -67
- package/dist/client.js.map +1 -1
- package/dist/extract.d.ts +18 -32
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +107 -173
- package/dist/extract.js.map +1 -1
- package/dist/parse.d.ts +20 -37
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +70 -118
- package/dist/parse.js.map +1 -1
- package/dist/retrofit.d.ts +23 -49
- package/dist/retrofit.d.ts.map +1 -1
- package/dist/retrofit.js +20 -46
- package/dist/retrofit.js.map +1 -1
- package/dist/routes.d.ts +13 -20
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +24 -45
- package/dist/routes.js.map +1 -1
- package/dist/spring.d.ts +16 -24
- package/dist/spring.d.ts.map +1 -1
- package/dist/spring.js +21 -33
- package/dist/spring.js.map +1 -1
- package/package.json +15 -6
package/dist/retrofit.d.ts
CHANGED
|
@@ -1,56 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Retrofit — the client-side declarative HTTP interface, Kotlin/Android's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `language-problems.md` §9's second row: neither Retrofit nor OkHttp had a
|
|
6
|
-
* reader at all, disclosed only by omission from `frameworkExtractors`.
|
|
2
|
+
* Retrofit — the client-side declarative HTTP interface, Kotlin/Android's dominant client-call
|
|
3
|
+
* shape. `language-problems.md` §9's second row: neither Retrofit nor OkHttp had a reader at all,
|
|
4
|
+
* disclosed only by omission from `frameworkExtractors`.
|
|
7
5
|
*
|
|
8
6
|
* ## Structurally different from `client.ts`
|
|
9
7
|
*
|
|
10
|
-
* Every other client-call mechanism
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* corpus
|
|
29
|
-
*
|
|
30
|
-
* one is built and that one is not.
|
|
31
|
-
*
|
|
32
|
-
* So the edge starts at the ANNOTATED FUNCTION'S OWN id, not at whatever
|
|
33
|
-
* calls it — the declaration itself is the evidence that calling this
|
|
34
|
-
* function reaches this endpoint, and ordinary `CALLS` resolution (already
|
|
35
|
-
* built, unchanged here) is what connects a real caller to it, one hop away.
|
|
36
|
-
*
|
|
37
|
-
* ## Why raw OkHttp (`OkHttpClient().newCall(...)`) is measured, not built
|
|
38
|
-
*
|
|
39
|
-
* Two real corpora were checked. `tivi` (a large, real, actively maintained
|
|
40
|
-
* Android app) imports `okhttp3.OkHttpClient` in 6 files — **all 6 are
|
|
41
|
-
* dependency-injection configuration** (`OkHttpClient.Builder()...build()`
|
|
42
|
-
* handed to Retrofit), **zero** are a `.newCall(request).execute()` call
|
|
43
|
-
* site. `okhttp` itself has real call sites in `samples/guide` — but every
|
|
44
|
-
* one builds its `Request` in a `val request = Request.Builder().url(...)`
|
|
45
|
-
* two hops from the call, needing the same cross-statement value tracing
|
|
46
|
-
* `language-problems.md` §0.1 already lists as the class of gap this project
|
|
47
|
-
* defers everywhere else (Rust's default trait bodies, PHP's raw `curl_*`) —
|
|
48
|
-
* and every one of those `.url(...)` arguments is an absolute external host
|
|
49
|
-
* (`https://httpbin.org/...`), which this project refuses on sight (DEC-014)
|
|
50
|
-
* regardless. Building the trace would move zero edges on either corpus on
|
|
51
|
-
* disk; this is the same call `adapter-csharp` made for Refit (measured at
|
|
52
|
-
* zero, disclosed rather than built) and `adapter-rust` made for warp/rocket
|
|
53
|
-
* — a rule with no witness in evidence is an untaken branch, not a weak one.
|
|
8
|
+
* Every other client-call mechanism here (`client.get(path)`, raw OkHttp's
|
|
9
|
+
* `.newCall(request).execute()`) is a call SITE with an enclosing function to blame. A Retrofit
|
|
10
|
+
* interface method has no body at all — Retrofit fills it in at runtime via a generated proxy, the
|
|
11
|
+
* same "no AST call site" shape `adapter-java` declines for Feign/`@HttpExchange` for lack of a
|
|
12
|
+
* corpus. Kotlin's corpus isn't empty (`skydoves/Pokedex`: 2 endpoints, 2 methods), which is the
|
|
13
|
+
* only reason this one is built and that one isn't.
|
|
14
|
+
*
|
|
15
|
+
* So the edge starts at the ANNOTATED FUNCTION'S OWN id, not whatever calls it — the declaration is
|
|
16
|
+
* the evidence that calling it reaches the endpoint; ordinary `CALLS` resolution connects a real
|
|
17
|
+
* caller one hop further out.
|
|
18
|
+
*
|
|
19
|
+
* ## Why raw OkHttp is measured, not built
|
|
20
|
+
*
|
|
21
|
+
* Two corpora checked. `tivi` imports `OkHttpClient` in 6 files — all 6 are DI configuration handed
|
|
22
|
+
* to Retrofit, zero are call sites. `okhttp` itself has real call sites, but every `Request` is
|
|
23
|
+
* built two hops away via `Request.Builder()...` (the cross-statement tracing
|
|
24
|
+
* `language-problems.md` §0.1 already defers everywhere else), and every URL is an absolute
|
|
25
|
+
* external host anyway, refused on sight (DEC-014). Building the trace would move zero edges on
|
|
26
|
+
* either corpus — same call `adapter-csharp` made for Refit and `adapter-rust` for warp/rocket: a
|
|
27
|
+
* rule with no witness is an untaken branch, not a weak one.
|
|
54
28
|
*/
|
|
55
29
|
import type { Node } from "@descryy/adapter-treesitter";
|
|
56
30
|
import type { KotlinImport } from "./parse.ts";
|
package/dist/retrofit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrofit.d.ts","sourceRoot":"","sources":["../src/retrofit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"retrofit.d.ts","sourceRoot":"","sources":["../src/retrofit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe/C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACrD;AAqED,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,uBAAuB,CA4E3G"}
|
package/dist/retrofit.js
CHANGED
|
@@ -1,56 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Retrofit — the client-side declarative HTTP interface, Kotlin/Android's
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `language-problems.md` §9's second row: neither Retrofit nor OkHttp had a
|
|
6
|
-
* reader at all, disclosed only by omission from `frameworkExtractors`.
|
|
2
|
+
* Retrofit — the client-side declarative HTTP interface, Kotlin/Android's dominant client-call
|
|
3
|
+
* shape. `language-problems.md` §9's second row: neither Retrofit nor OkHttp had a reader at all,
|
|
4
|
+
* disclosed only by omission from `frameworkExtractors`.
|
|
7
5
|
*
|
|
8
6
|
* ## Structurally different from `client.ts`
|
|
9
7
|
*
|
|
10
|
-
* Every other client-call mechanism
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* ```kotlin
|
|
18
|
-
* interface PokedexService {
|
|
19
|
-
* @GET("pokemon/{name}")
|
|
20
|
-
* suspend fun fetchPokemonInfo(@Path("name") name: String): ApiResponse<PokemonInfo>
|
|
21
|
-
* }
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* `fetchPokemonInfo` has no body — Retrofit fills it in at runtime with a
|
|
25
|
-
* generated proxy this reader will never see, the same "no method body, no
|
|
26
|
-
* AST call site to read at all" shape `adapter-java`'s Feign/`@HttpExchange`
|
|
27
|
-
* row names, and correctly declines to build for lack of a corpus. Kotlin's
|
|
28
|
-
* corpus is not empty (`skydoves/Pokedex`, real, widely-used as an Android
|
|
29
|
-
* reference app: 2 endpoints across 2 methods), which is the only reason this
|
|
30
|
-
* one is built and that one is not.
|
|
8
|
+
* Every other client-call mechanism here (`client.get(path)`, raw OkHttp's
|
|
9
|
+
* `.newCall(request).execute()`) is a call SITE with an enclosing function to blame. A Retrofit
|
|
10
|
+
* interface method has no body at all — Retrofit fills it in at runtime via a generated proxy, the
|
|
11
|
+
* same "no AST call site" shape `adapter-java` declines for Feign/`@HttpExchange` for lack of a
|
|
12
|
+
* corpus. Kotlin's corpus isn't empty (`skydoves/Pokedex`: 2 endpoints, 2 methods), which is the
|
|
13
|
+
* only reason this one is built and that one isn't.
|
|
31
14
|
*
|
|
32
|
-
* So the edge starts at the ANNOTATED FUNCTION'S OWN id, not
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* built, unchanged here) is what connects a real caller to it, one hop away.
|
|
15
|
+
* So the edge starts at the ANNOTATED FUNCTION'S OWN id, not whatever calls it — the declaration is
|
|
16
|
+
* the evidence that calling it reaches the endpoint; ordinary `CALLS` resolution connects a real
|
|
17
|
+
* caller one hop further out.
|
|
36
18
|
*
|
|
37
|
-
* ## Why raw OkHttp
|
|
19
|
+
* ## Why raw OkHttp is measured, not built
|
|
38
20
|
*
|
|
39
|
-
* Two
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* `language-problems.md` §0.1 already lists as the class of gap this project
|
|
47
|
-
* defers everywhere else (Rust's default trait bodies, PHP's raw `curl_*`) —
|
|
48
|
-
* and every one of those `.url(...)` arguments is an absolute external host
|
|
49
|
-
* (`https://httpbin.org/...`), which this project refuses on sight (DEC-014)
|
|
50
|
-
* regardless. Building the trace would move zero edges on either corpus on
|
|
51
|
-
* disk; this is the same call `adapter-csharp` made for Refit (measured at
|
|
52
|
-
* zero, disclosed rather than built) and `adapter-rust` made for warp/rocket
|
|
53
|
-
* — a rule with no witness in evidence is an untaken branch, not a weak one.
|
|
21
|
+
* Two corpora checked. `tivi` imports `OkHttpClient` in 6 files — all 6 are DI configuration handed
|
|
22
|
+
* to Retrofit, zero are call sites. `okhttp` itself has real call sites, but every `Request` is
|
|
23
|
+
* built two hops away via `Request.Builder()...` (the cross-statement tracing
|
|
24
|
+
* `language-problems.md` §0.1 already defers everywhere else), and every URL is an absolute
|
|
25
|
+
* external host anyway, refused on sight (DEC-014). Building the trace would move zero edges on
|
|
26
|
+
* either corpus — same call `adapter-csharp` made for Refit and `adapter-rust` for warp/rocket: a
|
|
27
|
+
* rule with no witness is an untaken branch, not a weak one.
|
|
54
28
|
*/
|
|
55
29
|
const HTTP_PACKAGE = "retrofit2.http";
|
|
56
30
|
/** Retrofit's own verb annotations — each carries the path as its own argument, unlike Spring's split prefix/suffix. */
|
package/dist/retrofit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrofit.js","sourceRoot":"","sources":["../src/retrofit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"retrofit.js","sourceRoot":"","sources":["../src/retrofit.ts"],"names":[],"mappings":"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"}
|
package/dist/routes.d.ts
CHANGED
|
@@ -5,30 +5,23 @@
|
|
|
5
5
|
*
|
|
6
6
|
* ## Provenance is the block, never the bare name
|
|
7
7
|
*
|
|
8
|
-
* Ktor's routing functions
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* function named `get`. So the file must first **import** `io.ktor.server
|
|
14
|
-
* .routing.routing` (or the wildcard `io.ktor.server.routing.*`), and only
|
|
15
|
-
* the lambda passed to a bare `routing(...)` call in that file is walked at
|
|
16
|
-
* all. Everything found outside one is not a route and not a gap.
|
|
8
|
+
* Ktor's routing functions (`get`, `post`, `route`, ...) are bare calls with no receiver — the
|
|
9
|
+
* same implicit-receiver-lambda shape used all over Kotlin's standard library and DSLs, so `get`
|
|
10
|
+
* alone is not evidence of anything. The file must first import `io.ktor.server.routing.routing`
|
|
11
|
+
* (or its wildcard), and only the lambda passed to a bare `routing(...)` call in that file is
|
|
12
|
+
* walked. Anything found outside one is not a route, not a gap.
|
|
17
13
|
*
|
|
18
14
|
* ## The path is composed from nesting, and only from nesting
|
|
19
15
|
*
|
|
20
|
-
* `route("/orders") { get("/{id}") { ... } }` registers `GET /orders/{id}`;
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* two together after the fact.
|
|
16
|
+
* `route("/orders") { get("/{id}") { ... } }` registers `GET /orders/{id}`; `route("/orders") {
|
|
17
|
+
* get { ... } }` registers `GET /orders` with no trailing segment. Read by tracking the
|
|
18
|
+
* accumulated prefix through each `route(...)` a verb call sits inside, never by string-matching
|
|
19
|
+
* after the fact.
|
|
25
20
|
*
|
|
26
|
-
* A call
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* unknown wrapper does not consume a path segment would be a claim this
|
|
31
|
-
* reader cannot back up for constructs it has never read.
|
|
21
|
+
* A call that is neither a verb nor `route` (`authenticate(...) { ... }`, `intercept(...) { ... }`,
|
|
22
|
+
* a plain `if`) is not descended into — Ktor's middleware DSL is larger than this reader knows, and
|
|
23
|
+
* stopping there is the disclosed gap; assuming an unknown wrapper doesn't consume a path segment
|
|
24
|
+
* would be an unbacked claim.
|
|
32
25
|
*/
|
|
33
26
|
import type { Node } from "@descryy/adapter-treesitter";
|
|
34
27
|
import type { KotlinImport } from "./parse.ts";
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB/C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAwGD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,CAkFzF"}
|
package/dist/routes.js
CHANGED
|
@@ -5,30 +5,23 @@
|
|
|
5
5
|
*
|
|
6
6
|
* ## Provenance is the block, never the bare name
|
|
7
7
|
*
|
|
8
|
-
* Ktor's routing functions
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* function named `get`. So the file must first **import** `io.ktor.server
|
|
14
|
-
* .routing.routing` (or the wildcard `io.ktor.server.routing.*`), and only
|
|
15
|
-
* the lambda passed to a bare `routing(...)` call in that file is walked at
|
|
16
|
-
* all. Everything found outside one is not a route and not a gap.
|
|
8
|
+
* Ktor's routing functions (`get`, `post`, `route`, ...) are bare calls with no receiver — the
|
|
9
|
+
* same implicit-receiver-lambda shape used all over Kotlin's standard library and DSLs, so `get`
|
|
10
|
+
* alone is not evidence of anything. The file must first import `io.ktor.server.routing.routing`
|
|
11
|
+
* (or its wildcard), and only the lambda passed to a bare `routing(...)` call in that file is
|
|
12
|
+
* walked. Anything found outside one is not a route, not a gap.
|
|
17
13
|
*
|
|
18
14
|
* ## The path is composed from nesting, and only from nesting
|
|
19
15
|
*
|
|
20
|
-
* `route("/orders") { get("/{id}") { ... } }` registers `GET /orders/{id}`;
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* two together after the fact.
|
|
16
|
+
* `route("/orders") { get("/{id}") { ... } }` registers `GET /orders/{id}`; `route("/orders") {
|
|
17
|
+
* get { ... } }` registers `GET /orders` with no trailing segment. Read by tracking the
|
|
18
|
+
* accumulated prefix through each `route(...)` a verb call sits inside, never by string-matching
|
|
19
|
+
* after the fact.
|
|
25
20
|
*
|
|
26
|
-
* A call
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* unknown wrapper does not consume a path segment would be a claim this
|
|
31
|
-
* reader cannot back up for constructs it has never read.
|
|
21
|
+
* A call that is neither a verb nor `route` (`authenticate(...) { ... }`, `intercept(...) { ... }`,
|
|
22
|
+
* a plain `if`) is not descended into — Ktor's middleware DSL is larger than this reader knows, and
|
|
23
|
+
* stopping there is the disclosed gap; assuming an unknown wrapper doesn't consume a path segment
|
|
24
|
+
* would be an unbacked claim.
|
|
32
25
|
*/
|
|
33
26
|
const ROUTING_PACKAGE = "io.ktor.server.routing";
|
|
34
27
|
const ROUTING_FUNCTION = `${ROUTING_PACKAGE}.routing`;
|
|
@@ -52,9 +45,6 @@ const namedChildren = (node) => {
|
|
|
52
45
|
return out;
|
|
53
46
|
};
|
|
54
47
|
const firstOfType = (node, type) => namedChildren(node).find((child) => child.type === type);
|
|
55
|
-
// `firstDescendantOfType` lived here to serve the interpolation blacklist and
|
|
56
|
-
// was deleted with it — see `stringLiteralOf`. A descendant search for a
|
|
57
|
-
// *forbidden* node is the shape of that defect, not a helper worth keeping.
|
|
58
48
|
/** The text of a plain string literal — `"/orders"` — or `undefined` for anything with interpolation. */
|
|
59
49
|
function stringLiteralOf(argument) {
|
|
60
50
|
if (argument === undefined)
|
|
@@ -63,21 +53,13 @@ function stringLiteralOf(argument) {
|
|
|
63
53
|
if (literal === undefined)
|
|
64
54
|
return undefined;
|
|
65
55
|
// **Every child must be plain content — a whitelist, never a blacklist.**
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
// `
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
// an endpoint nothing serves, which is precisely what this function's own
|
|
74
|
-
// refusal reason says must never happen. Neither the unit tests nor the
|
|
75
|
-
// fixture caught it because both used the braced form.
|
|
76
|
-
//
|
|
77
|
-
// `adapter-rust` and `adapter-swift` were written with the whitelist shape
|
|
78
|
-
// and were never exposed to it. Enumerating what is allowed cannot be
|
|
79
|
-
// outflanked by a grammar node this reader has not heard of; enumerating
|
|
80
|
-
// what is forbidden always can.
|
|
56
|
+
// An earlier version named only the interpolation node it knew about
|
|
57
|
+
// (`interpolated_expression`, `${...}`) and accepted anything else; Kotlin's
|
|
58
|
+
// grammar has a second form, `$name` without braces
|
|
59
|
+
// (`interpolated_identifier`), which fell through and let
|
|
60
|
+
// `get("/reports/$name")` register as the silently truncated route
|
|
61
|
+
// `GET /reports/`. A whitelist can't be outflanked by an unknown grammar
|
|
62
|
+
// node; a blacklist always can.
|
|
81
63
|
let content = "";
|
|
82
64
|
for (const child of namedChildren(literal)) {
|
|
83
65
|
if (child.type !== "string_content")
|
|
@@ -128,13 +110,10 @@ function composePath(prefix, segment) {
|
|
|
128
110
|
return `${prefix}/${segment}`;
|
|
129
111
|
}
|
|
130
112
|
/**
|
|
131
|
-
* Is every placeholder a plain path parameter?
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
* collapsing either to `{param}` would merge routes that serve different
|
|
136
|
-
* requests, DEC-055's finding arriving in Ktor's own syntax. A bare `*`
|
|
137
|
-
* (single-segment wildcard) is refused for the same reason.
|
|
113
|
+
* Is every placeholder a plain path parameter? `{...}` (Ktor's unnamed
|
|
114
|
+
* tailcard), `{param?}` (optional segment) and a bare `*` (wildcard) don't
|
|
115
|
+
* pin down one physical request the way `{param}` does — collapsing them
|
|
116
|
+
* would merge routes serving different requests (DEC-055, in Ktor's syntax).
|
|
138
117
|
*/
|
|
139
118
|
function templateIsPlain(path) {
|
|
140
119
|
if (path.includes("*"))
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/spring.d.ts
CHANGED
|
@@ -1,35 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `API_ROUTE` from Kotlin source — Spring MVC and Spring WebFlux annotations.
|
|
3
3
|
*
|
|
4
|
-
* `language-problems.md` §9's first row: `frameworkExtractors`
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* produced nothing at all, disclosed only in `adapter.ts`'s prose rather than
|
|
8
|
-
* in the refusal ledger.
|
|
4
|
+
* `language-problems.md` §9's first row: `frameworkExtractors` named only `ktor`, and
|
|
5
|
+
* Kotlin-on-Spring (Spring Initializr's own default, and what `spring-petclinic-kotlin` is written
|
|
6
|
+
* against) produced nothing at all.
|
|
9
7
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* is a `constructor_invocation` (`@RequestMapping("/orders")`) — never one
|
|
16
|
-
* grammar node for both, the way Java's is.
|
|
8
|
+
* Direct port of `adapter-java/src/spring.ts`'s admission rules — DEC-127's class-prefix/
|
|
9
|
+
* method-suffix join, and the `@Controller` vs `@RestController` view/data distinction — onto
|
|
10
|
+
* Kotlin's own annotation grammar: an annotation with no arguments is a bare `user_type`
|
|
11
|
+
* (`@RestController`), with arguments a `constructor_invocation` (`@RequestMapping("/orders")`) —
|
|
12
|
+
* two grammar nodes, not Java's one.
|
|
17
13
|
*
|
|
18
14
|
* ## Measured, not assumed
|
|
19
15
|
*
|
|
20
|
-
* `spring-petclinic-kotlin
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
25
|
-
* `spring-petclinic` measured (93.8% view-refused) and the reason
|
|
26
|
-
* `controllerKind` exists at all: admitting all 26 would have been 26 wrong
|
|
27
|
-
* edges, not a degraded number.
|
|
16
|
+
* `spring-petclinic-kotlin`, the only real corpus on disk: 6 controllers, 26 mapping annotations,
|
|
17
|
+
* all `@Controller` (none `@RestController`), every handler returning `String` (a Thymeleaf view).
|
|
18
|
+
* Correctly refused as view routes — zero `API_ROUTE`s emitted, matching Java's own
|
|
19
|
+
* `spring-petclinic` measurement (93.8% view-refused) and the reason `controllerKind` exists:
|
|
20
|
+
* admitting all 26 would have been 26 wrong edges.
|
|
28
21
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* rather than left implicit.
|
|
22
|
+
* No `@RestController` witness in any corpus on disk, so the "data" path is verified structurally
|
|
23
|
+
* (same rule as Java's, which is measured) and by unit test, not a second real corpus — disclosed
|
|
24
|
+
* here rather than left implicit.
|
|
33
25
|
*/
|
|
34
26
|
import type { Node } from "@descryy/adapter-treesitter";
|
|
35
27
|
import type { KotlinImport } from "./parse.ts";
|
package/dist/spring.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"spring.d.ts","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkJ/C,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,WAAW,EAAE,CA4DrG"}
|
package/dist/spring.js
CHANGED
|
@@ -1,35 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `API_ROUTE` from Kotlin source — Spring MVC and Spring WebFlux annotations.
|
|
3
3
|
*
|
|
4
|
-
* `language-problems.md` §9's first row: `frameworkExtractors`
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* produced nothing at all, disclosed only in `adapter.ts`'s prose rather than
|
|
8
|
-
* in the refusal ledger.
|
|
4
|
+
* `language-problems.md` §9's first row: `frameworkExtractors` named only `ktor`, and
|
|
5
|
+
* Kotlin-on-Spring (Spring Initializr's own default, and what `spring-petclinic-kotlin` is written
|
|
6
|
+
* against) produced nothing at all.
|
|
9
7
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* is a `constructor_invocation` (`@RequestMapping("/orders")`) — never one
|
|
16
|
-
* grammar node for both, the way Java's is.
|
|
8
|
+
* Direct port of `adapter-java/src/spring.ts`'s admission rules — DEC-127's class-prefix/
|
|
9
|
+
* method-suffix join, and the `@Controller` vs `@RestController` view/data distinction — onto
|
|
10
|
+
* Kotlin's own annotation grammar: an annotation with no arguments is a bare `user_type`
|
|
11
|
+
* (`@RestController`), with arguments a `constructor_invocation` (`@RequestMapping("/orders")`) —
|
|
12
|
+
* two grammar nodes, not Java's one.
|
|
17
13
|
*
|
|
18
14
|
* ## Measured, not assumed
|
|
19
15
|
*
|
|
20
|
-
* `spring-petclinic-kotlin
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
25
|
-
* `spring-petclinic` measured (93.8% view-refused) and the reason
|
|
26
|
-
* `controllerKind` exists at all: admitting all 26 would have been 26 wrong
|
|
27
|
-
* edges, not a degraded number.
|
|
16
|
+
* `spring-petclinic-kotlin`, the only real corpus on disk: 6 controllers, 26 mapping annotations,
|
|
17
|
+
* all `@Controller` (none `@RestController`), every handler returning `String` (a Thymeleaf view).
|
|
18
|
+
* Correctly refused as view routes — zero `API_ROUTE`s emitted, matching Java's own
|
|
19
|
+
* `spring-petclinic` measurement (93.8% view-refused) and the reason `controllerKind` exists:
|
|
20
|
+
* admitting all 26 would have been 26 wrong edges.
|
|
28
21
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* rather than left implicit.
|
|
22
|
+
* No `@RestController` witness in any corpus on disk, so the "data" path is verified structurally
|
|
23
|
+
* (same rule as Java's, which is measured) and by unit test, not a second real corpus — disclosed
|
|
24
|
+
* here rather than left implicit.
|
|
33
25
|
*/
|
|
34
26
|
const namedChildren = (node) => {
|
|
35
27
|
const out = [];
|
|
@@ -44,11 +36,8 @@ const firstOfType = (node, type) => namedChildren(node).find((child) => child.ty
|
|
|
44
36
|
const lineOf = (node) => node.startPosition.row + 1;
|
|
45
37
|
/**
|
|
46
38
|
* A plain string literal, or every element of a `["a", "b"]` array literal —
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* The whitelist rule `routes.ts`'s `stringLiteralOf` documents applies here
|
|
50
|
-
* too: enumerating what is a plain string cannot be outflanked by a grammar
|
|
51
|
-
* node this reader has not heard of.
|
|
39
|
+
* empty for anything else, interpolation included. Same whitelist rule as
|
|
40
|
+
* `routes.ts`'s `stringLiteralOf`.
|
|
52
41
|
*/
|
|
53
42
|
function stringValuesOf(node) {
|
|
54
43
|
if (node === undefined)
|
|
@@ -217,10 +206,9 @@ export function readSpringRoutes(root, imports) {
|
|
|
217
206
|
}
|
|
218
207
|
}
|
|
219
208
|
}
|
|
220
|
-
// Nested types (
|
|
221
|
-
//
|
|
222
|
-
//
|
|
223
|
-
// type's own body silently skipped by this reader.
|
|
209
|
+
// Nested types (companion object, inner class) are walked too — Spring
|
|
210
|
+
// never nests a controller, but an unrelated nested type in the same
|
|
211
|
+
// file must not be silently skipped.
|
|
224
212
|
if (body !== undefined)
|
|
225
213
|
walkClasses(body);
|
|
226
214
|
}
|
package/dist/spring.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
|