@descryy/adapter-kotlin 0.4.0 → 0.5.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/dist/parse.d.ts CHANGED
@@ -27,6 +27,7 @@ import { type Node } from "@descryy/adapter-treesitter";
27
27
  import { type KotlinRoute, type KotlinRouteRefusal } from "./routes.ts";
28
28
  import { type KotlinClientCall, type KotlinClientRefusal } from "./client.ts";
29
29
  import { type KotlinRetrofitEndpoint, type KotlinRetrofitRefusal } from "./retrofit.ts";
30
+ import { type KotlinJpaDeclaration } from "./jpa.ts";
30
31
  /** `import a.b.C`, or the package half of `import a.b.*`. */
31
32
  export interface KotlinImport {
32
33
  readonly path: string;
@@ -52,6 +53,12 @@ export interface KotlinSupertype {
52
53
  export interface KotlinDecl {
53
54
  readonly kind: DeclKind;
54
55
  readonly name: string;
56
+ /** Annotation NAMES on the declaration — `Entity`, `Table`. */
57
+ readonly annotations: readonly string[];
58
+ /** The same annotations as raw source text, so a reader can see their arguments.
59
+ * Raw rather than parsed: annotation syntax is open-ended and the language
60
+ * reader has no business knowing what any particular one MEANS. */
61
+ readonly annotationTexts: readonly string[];
55
62
  /** Enclosing type path for a nested declaration, outermost first. */
56
63
  readonly owners: readonly string[];
57
64
  readonly supertypes: readonly KotlinSupertype[];
@@ -82,15 +89,45 @@ export interface KotlinFunc {
82
89
  readonly owners: readonly string[];
83
90
  readonly isTest: boolean;
84
91
  readonly testStyle: TestStyle | undefined;
92
+ /** A Jetpack Compose UI element — `@Composable` returning `Unit`. See `composableOf`. */
93
+ readonly isComposable: boolean;
85
94
  readonly startLine: number;
86
95
  readonly endLine: number;
87
96
  readonly refs: readonly KotlinRef[];
97
+ /**
98
+ * `order.totalAmount` — a property READ through a receiver whose type a
99
+ * binding states.
100
+ *
101
+ * Kept apart from {@link refs}, which carries calls and type references and
102
+ * feeds CALLS/USES_TYPE resolution. Only a receiver with a WRITTEN type is
103
+ * recorded: Kotlin infers aggressively, and a type this reader would have to
104
+ * infer from a callee's signature is a disclosed gap rather than a guess.
105
+ */
106
+ readonly fieldReads: readonly {
107
+ readonly receiverType: string;
108
+ readonly field: string;
109
+ readonly line: number;
110
+ }[];
88
111
  }
89
112
  export interface KotlinProperty {
90
113
  readonly name: string;
91
114
  readonly owners: readonly string[];
92
115
  /** The written type, when annotated. Kotlin infers aggressively, so often absent. */
93
116
  readonly type: string | undefined;
117
+ /**
118
+ * Did the written type end in `?`.
119
+ *
120
+ * Kotlin states nullability IN THE TYPE and the compiler enforces it, so this
121
+ * is a declaration rather than an inference — the one place Kotlin is
122
+ * strictly better evidence than Java, where the same fact needs `@Column`,
123
+ * `@Id` and primitive-vs-boxed to be read together.
124
+ *
125
+ * `undefined` when no type was written at all, which is not the same as
126
+ * "written and not nullable".
127
+ */
128
+ readonly nullable: boolean | undefined;
129
+ /** Annotations on the property, as raw source text — `@Id`, `@Column(nullable = true)`. */
130
+ readonly annotationTexts: readonly string[];
94
131
  readonly line: number;
95
132
  }
96
133
  export interface KotlinFile {
@@ -132,6 +169,13 @@ export interface KotlinFile {
132
169
  /** Retrofit's declarative client endpoints — see `retrofit.ts`. */
133
170
  readonly retrofitEndpoints: readonly KotlinRetrofitEndpoint[];
134
171
  readonly retrofitRefusals: readonly KotlinRetrofitRefusal[];
172
+ /**
173
+ * Persistence-annotated declarations — see `jpa.ts`. Read here rather than
174
+ * in `extract.ts` because `adapter.ts` deletes the tree the moment this
175
+ * function returns, and the shape a `MODEL` carries is written in
176
+ * annotations and types that `KotlinDecl`/`KotlinProperty` do not keep.
177
+ */
178
+ readonly jpaDeclarations: readonly KotlinJpaDeclaration[];
135
179
  }
136
180
  /** Parse one Kotlin file into the structures `extract.ts` consumes. */
137
181
  export declare function readKotlinFile(file: string, tree: {
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
package/dist/parse.js CHANGED
@@ -28,6 +28,45 @@ import { readKtorRoutes } from "./routes.js";
28
28
  import { readKtorClientCalls } from "./client.js";
29
29
  import { readSpringRoutes } from "./spring.js";
30
30
  import { readRetrofitEndpoints } from "./retrofit.js";
31
+ import { readJpaDeclarations } from "./jpa.js";
32
+ /**
33
+ * Jetpack Compose's own definition of a UI element, read as a declaration.
34
+ *
35
+ * Two halves, both written down rather than inferred:
36
+ *
37
+ * 1. `@Composable`, and an `androidx.compose` import that says which
38
+ * `Composable` that is. Same provenance rule `testStyleOf` applies to
39
+ * `@Test` — the annotation's simple name is not, by itself, evidence.
40
+ * 2. Compose's API guidelines split `@Composable` functions in two: those
41
+ * returning `Unit` emit UI, those returning a value are state factories
42
+ * (`rememberFoo()`). Only the first is a `COMPONENT`.
43
+ *
44
+ * Kotlin infers return types, so only what is written is read. A `@Composable`
45
+ * with an **expression body and no written return type** has an inferred type
46
+ * this adapter cannot see below R3, and is refused — left a `FUNCTION` rather
47
+ * than guessed into a `COMPONENT`. Rule 2: the missing node is a disclosed
48
+ * gap, a wrong one is a false claim every finding above it inherits.
49
+ */
50
+ function composableOf(node, annotations, imports) {
51
+ if (!annotations.includes("Composable"))
52
+ return false;
53
+ if (!imports.some((i) => i.path.startsWith("androidx.compose")))
54
+ return false;
55
+ // The written return type: the node after the `:` that follows the parameter
56
+ // list. Absent means the declaration states nothing.
57
+ const children = childrenOf(node);
58
+ const colon = children.findIndex((c) => !c.isNamed && c.type === ":");
59
+ if (colon !== -1) {
60
+ const written = children[colon + 1];
61
+ return written !== undefined && typeNameOf(written) === "Unit";
62
+ }
63
+ // No written type. A block body returns `Unit`; an expression body's type is
64
+ // inferred and unknowable here.
65
+ const body = firstOfType(node, "function_body");
66
+ if (body === undefined)
67
+ return false;
68
+ return childrenOf(body).some((c) => !c.isNamed && c.type === "{");
69
+ }
31
70
  const lineOf = (node) => node.startPosition.row + 1;
32
71
  const namedChildren = (node) => {
33
72
  const out = [];
@@ -82,6 +121,15 @@ function modifiersOf(node) {
82
121
  .concat(childrenOf(block).flatMap((c) => childrenOf(c).map((k) => k.text)))
83
122
  .filter((t) => t !== "");
84
123
  }
124
+ /** Annotations as raw source text, so a reader can see their arguments. */
125
+ function annotationTextsOf(node) {
126
+ const block = firstOfType(node, "modifiers");
127
+ if (block === undefined)
128
+ return [];
129
+ return namedChildren(block)
130
+ .filter((m) => m.type.includes("annotation"))
131
+ .map((m) => m.text);
132
+ }
85
133
  /** Annotation names on a declaration — `@Test`, `@Deprecated`. */
86
134
  function annotationsOf(node) {
87
135
  const block = firstOfType(node, "modifiers");
@@ -215,12 +263,21 @@ function testStyleOf(annotations, imports) {
215
263
  // larger population, and the style is a label rather than an identity input.
216
264
  return "junit";
217
265
  }
218
- /** The written type of a `val`/`var`, when one is stated. Kotlin infers a lot. */
266
+ /**
267
+ * The written type of a `val`/`var`, when one is stated. Kotlin infers a lot.
268
+ *
269
+ * `T?` is a `nullable_type` wrapping the `user_type`, so a lookup for a direct
270
+ * `user_type` child finds nothing and the property reports its type as *not
271
+ * written* — which is a different and false claim. Measured on the conformance
272
+ * fixture: `discountCode: String?` was the one property of three whose type
273
+ * was lost. The nullability itself is `jpa.ts`'s to read; this is only the
274
+ * element type, and it is the same `String` either way.
275
+ */
219
276
  function propertyTypeOf(node) {
220
- const declaration = firstOfType(node, "variable_declaration");
221
- if (declaration === undefined)
222
- return typeNameOf(firstOfType(node, "user_type"));
223
- return typeNameOf(firstOfType(declaration, "user_type"));
277
+ const declaration = firstOfType(node, "variable_declaration") ?? node;
278
+ const nullable = firstOfType(declaration, "nullable_type");
279
+ const holder = nullable ?? declaration;
280
+ return typeNameOf(firstOfType(holder, "user_type"));
224
281
  }
225
282
  function propertyNameOf(node) {
226
283
  const declaration = firstOfType(node, "variable_declaration");
@@ -295,13 +352,24 @@ function readTypeRefs(node, refs) {
295
352
  * (`repository.findById(id)` is read by `readCall`, not this) — avoids
296
353
  * double-reporting one reference through two mechanisms.
297
354
  */
298
- function readValueRefs(node, callHeads, refs) {
355
+ function readValueRefs(node, callHeads, refs, scope, fieldReads) {
299
356
  for (const nav of descendants(node, "navigation_expression")) {
300
357
  if (callHeads.has(nav))
301
358
  continue;
302
359
  const target = namedChildren(nav)[0];
303
360
  if (target?.type !== "simple_identifier")
304
361
  continue;
362
+ // `order.totalAmount` where a binding WROTE `order`'s type. A navigation
363
+ // that is not a call's callee is a property read; the receiver's type is
364
+ // the half Kotlin usually leaves to inference, so only a written one counts.
365
+ if (scope !== undefined && fieldReads !== undefined) {
366
+ const receiverType = scope.locals.get(target.text);
367
+ const suffix = namedChildren(nav).find((c) => c.type === "navigation_suffix");
368
+ const member = suffix === undefined ? undefined : firstOfType(suffix, "simple_identifier")?.text;
369
+ if (receiverType !== undefined && member !== undefined) {
370
+ fieldReads.push({ receiverType, field: member, line: lineOf(nav) });
371
+ }
372
+ }
305
373
  refs.push({
306
374
  kind: "type",
307
375
  name: target.text,
@@ -319,6 +387,12 @@ function readValueRefs(node, callHeads, refs) {
319
387
  * companion's `const val MAX` was recorded twice (class and companion). A
320
388
  * member is a **direct** child of its body.
321
389
  */
390
+ /** Did the written type end in `?` — Kotlin's declaration of nullability. */
391
+ function nullableTypeOf(node) {
392
+ if (node === undefined)
393
+ return undefined;
394
+ return firstOfType(node, "nullable_type") !== undefined;
395
+ }
322
396
  function ownProperties(body) {
323
397
  return namedChildren(body).filter((c) => c.type === "property_declaration");
324
398
  }
@@ -353,6 +427,7 @@ function readFunction(node, scope, walk, imports) {
353
427
  const annotations = annotationsOf(node);
354
428
  const testStyle = testStyleOf(annotations, imports);
355
429
  const refs = [];
430
+ const fieldReads = [];
356
431
  const inner = { owners: scope.owners, locals: new Map(scope.locals) };
357
432
  // Seeded before the body is walked: Kotlin allows using a property declared
358
433
  // below it, and a forward-only pass would make resolution depend on source
@@ -365,7 +440,7 @@ function readFunction(node, scope, walk, imports) {
365
440
  for (const call of calls)
366
441
  readCall(call, inner, refs);
367
442
  readTypeRefs(body, refs);
368
- readValueRefs(body, callHeads, refs);
443
+ readValueRefs(body, callHeads, refs, inner, fieldReads);
369
444
  }
370
445
  const parameters = firstOfType(node, "function_value_parameters");
371
446
  if (parameters !== undefined)
@@ -373,8 +448,10 @@ function readFunction(node, scope, walk, imports) {
373
448
  walk.funcs.push({
374
449
  name,
375
450
  owners: scope.owners,
451
+ fieldReads,
376
452
  isTest: testStyle !== undefined,
377
453
  testStyle,
454
+ isComposable: testStyle === undefined && composableOf(node, annotations, imports),
378
455
  startLine: lineOf(node),
379
456
  endLine: node.endPosition.row + 1,
380
457
  refs,
@@ -400,6 +477,8 @@ function walkNode(node, scope, walk, imports) {
400
477
  walk.decls.push({
401
478
  kind,
402
479
  name,
480
+ annotations: annotationsOf(child),
481
+ annotationTexts: annotationTextsOf(child),
403
482
  owners: scope.owners,
404
483
  supertypes,
405
484
  startLine: lineOf(child),
@@ -425,7 +504,9 @@ function walkNode(node, scope, walk, imports) {
425
504
  walk.properties.push({
426
505
  name: propertyName,
427
506
  owners: inner.owners,
428
- type: typeNameOf(firstOfType(parameter, "user_type")),
507
+ type: propertyTypeOf(parameter),
508
+ nullable: nullableTypeOf(parameter),
509
+ annotationTexts: annotationTextsOf(parameter),
429
510
  line: lineOf(parameter),
430
511
  });
431
512
  }
@@ -441,6 +522,8 @@ function walkNode(node, scope, walk, imports) {
441
522
  name: propertyName,
442
523
  owners: inner.owners,
443
524
  type: propertyTypeOf(property),
525
+ nullable: nullableTypeOf(property),
526
+ annotationTexts: annotationTextsOf(property),
444
527
  line: lineOf(property),
445
528
  });
446
529
  }
@@ -498,9 +581,22 @@ export function readKotlinFile(file, tree) {
498
581
  // After the walk: provenance is decided by the import table, and the import
499
582
  // may sit anywhere above the routing block that needs it.
500
583
  const routes = readKtorRoutes(root, walk.imports);
501
- const client = readKtorClientCalls(root, walk.imports);
584
+ // ONE WALK, READ TWICE — DEC-164's origin rule needs every base in the file
585
+ // before any single call site can be judged. `client-base.ts` admits an
586
+ // absolute call path only at an origin some base in this same file resolves
587
+ // to. The first read collects those origins; the second judges with them in
588
+ // hand. With no absolute base anywhere the set stays empty and the second
589
+ // read never runs.
590
+ const firstClientPass = readKtorClientCalls(root, walk.imports);
591
+ const knownOrigins = new Set();
592
+ for (const call of firstClientPass.calls) {
593
+ if (call.baseOrigin !== undefined)
594
+ knownOrigins.add(call.baseOrigin);
595
+ }
596
+ const client = knownOrigins.size === 0 ? firstClientPass : readKtorClientCalls(root, walk.imports, knownOrigins);
502
597
  const springRoutes = readSpringRoutes(root, walk.imports);
503
598
  const retrofit = readRetrofitEndpoints(root, walk.imports);
599
+ const jpaDeclarations = readJpaDeclarations(root, walk.imports);
504
600
  return {
505
601
  file,
506
602
  hasError: hasErrorSubtree(root),
@@ -518,6 +614,7 @@ export function readKotlinFile(file, tree) {
518
614
  clientRefusals: client.refusals,
519
615
  retrofitEndpoints: retrofit.declarations,
520
616
  retrofitRefusals: retrofit.refusals,
617
+ jpaDeclarations,
521
618
  };
522
619
  }
523
620
  //# sourceMappingURL=parse.js.map
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Which resolution level this repository actually gets Kotlin to.
3
+ *
4
+ * **R3 on ORM-mapped shape facts, R2 on everything else** — a per-fact split,
5
+ * not a ceiling raised across the batch. `adapter-java` and `adapter-csharp`
6
+ * publish the same split on the same ground, and this file is Java's
7
+ * `shape-reach.ts` held to the same bar for the same reason.
8
+ *
9
+ * ## What is R3 here, and what is not
10
+ *
11
+ * R3 is "+ type checker (shapes)", and **no type checker runs here.** DEC-202
12
+ * is the precedent: *a declared schema is R3-grade because the declaration
13
+ * states the shape rather than inferring it.* A JPA mapping is exactly that,
14
+ * and it is the same mapping `adapter-java` already claims R3 on.
15
+ *
16
+ * Everything else Kotlin produces stays at R2 and is emitted at R2. Kotlin
17
+ * writes its package, its imports and its declared types down, so a reference
18
+ * resolves to a definition with no LSP and no compiler — that is name-and-path
19
+ * resolution, and no shape is checked by it.
20
+ *
21
+ * **Exactly one fact kind in this package reaches 3**: the mapped field shape
22
+ * on a `MODEL` (`extract.ts`, the only `SHAPE_LEVEL` there). Routes, client
23
+ * calls, Retrofit endpoints, type references, inheritance and test coverage
24
+ * all push at 2 or below and are unaffected. If a second fact kind ever earns
25
+ * R3, it is added here in the same commit that earns it — never inferred from
26
+ * the fact that some extractor exists.
27
+ *
28
+ * ## Why a count of shapes and not a density
29
+ *
30
+ * `adapter-python` gates its R3 on measured annotation density, because
31
+ * Python's R3 comes from annotations spread across ordinary code and "enough
32
+ * of them" is a real question with a distribution behind it. Kotlin's comes
33
+ * from a mapping that is either declared or is not, so there is no density to
34
+ * measure and a threshold would be a number with nothing under it.
35
+ *
36
+ * ## What a refusal does to the level
37
+ *
38
+ * A refused shape (`jpa.ts`'s four completeness gates) counts for **nothing**
39
+ * here. An entity whose shape was withheld is an entity this run read no shape
40
+ * from, so a repository whose every entity is refused publishes R2 — the same
41
+ * level it would publish with no entity at all, which is the honest answer.
42
+ *
43
+ * ## What this does NOT do
44
+ *
45
+ * It does not mint `DATABASE_TABLE`/`DATABASE_COLUMN`. The physical column
46
+ * name is decided by a *configurable* naming strategy (Spring Boot's
47
+ * camel-to-snake, plain Hibernate's implicit strategy as-written) that no
48
+ * source file states — `discountCode` in the entity against `discount_code`
49
+ * in the migration, measured on this corpus. Minting from the class would
50
+ * mint ids that do not join with `adapter-sql`'s for the same table (DEC-240).
51
+ * Precision over recall: the shape is claimed, the physical schema is not.
52
+ */
53
+ import type { ResolutionLevel } from "@descryy/ir";
54
+ import { type JpaModel, type JpaRefusal } from "./jpa.ts";
55
+ import type { KotlinFile } from "./parse.ts";
56
+ /**
57
+ * The one level `adapter-kotlin` can reach that R2 machinery cannot supply,
58
+ * and the one place in this package that mints at it.
59
+ */
60
+ export declare const SHAPE_LEVEL: ResolutionLevel;
61
+ export interface ShapeReach {
62
+ /** `identityPackage::path` -> the model, handed on so the caller never pays twice. */
63
+ readonly entities: ReadonlyMap<string, JpaModel>;
64
+ /** Shapes withheld by a completeness gate, for disclosure. */
65
+ readonly refusals: readonly (JpaRefusal & {
66
+ readonly file: string;
67
+ })[];
68
+ /**
69
+ * Entities carrying at least one mapped column whose shape this run actually
70
+ * decided — the exact condition `extract.ts` uses before writing
71
+ * `attrs.fields`, so this cannot drift into counting a shape never emitted.
72
+ */
73
+ readonly mappedShapes: number;
74
+ /** True when at least one fact in this repository genuinely rests on R3. */
75
+ readonly reachesShapes: boolean;
76
+ }
77
+ /**
78
+ * Read every entity in the batch, resolving supertypes across files.
79
+ *
80
+ * Resolution is by the *written* package: a single-type import names the
81
+ * parent's package outright, and an unqualified name otherwise means this
82
+ * file's own package. **Two declarations answering to one key make the name
83
+ * ambiguous, and an ambiguous parent resolves to nothing** — which routes
84
+ * straight into `jpa.ts`'s E1 refusal rather than picking a winner.
85
+ */
86
+ export declare function readEntities(units: readonly KotlinFile[]): ShapeReach;
87
+ /**
88
+ * The level to publish for a run: never above the caller's ceiling, never
89
+ * above what the repository supplied, and 0 when nothing anchored at all.
90
+ */
91
+ export declare function reachedFor(ceiling: ResolutionLevel, anchoredAnything: boolean, reach: ShapeReach | undefined): ResolutionLevel;
92
+ //# sourceMappingURL=shape-reach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape-reach.d.ts","sourceRoot":"","sources":["../src/shape-reach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAgB,MAAM,UAAU,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,eAAmB,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IACvE;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAID;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CA4CrE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,OAAO,EACzB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,eAAe,CAIjB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Which resolution level this repository actually gets Kotlin to.
3
+ *
4
+ * **R3 on ORM-mapped shape facts, R2 on everything else** — a per-fact split,
5
+ * not a ceiling raised across the batch. `adapter-java` and `adapter-csharp`
6
+ * publish the same split on the same ground, and this file is Java's
7
+ * `shape-reach.ts` held to the same bar for the same reason.
8
+ *
9
+ * ## What is R3 here, and what is not
10
+ *
11
+ * R3 is "+ type checker (shapes)", and **no type checker runs here.** DEC-202
12
+ * is the precedent: *a declared schema is R3-grade because the declaration
13
+ * states the shape rather than inferring it.* A JPA mapping is exactly that,
14
+ * and it is the same mapping `adapter-java` already claims R3 on.
15
+ *
16
+ * Everything else Kotlin produces stays at R2 and is emitted at R2. Kotlin
17
+ * writes its package, its imports and its declared types down, so a reference
18
+ * resolves to a definition with no LSP and no compiler — that is name-and-path
19
+ * resolution, and no shape is checked by it.
20
+ *
21
+ * **Exactly one fact kind in this package reaches 3**: the mapped field shape
22
+ * on a `MODEL` (`extract.ts`, the only `SHAPE_LEVEL` there). Routes, client
23
+ * calls, Retrofit endpoints, type references, inheritance and test coverage
24
+ * all push at 2 or below and are unaffected. If a second fact kind ever earns
25
+ * R3, it is added here in the same commit that earns it — never inferred from
26
+ * the fact that some extractor exists.
27
+ *
28
+ * ## Why a count of shapes and not a density
29
+ *
30
+ * `adapter-python` gates its R3 on measured annotation density, because
31
+ * Python's R3 comes from annotations spread across ordinary code and "enough
32
+ * of them" is a real question with a distribution behind it. Kotlin's comes
33
+ * from a mapping that is either declared or is not, so there is no density to
34
+ * measure and a threshold would be a number with nothing under it.
35
+ *
36
+ * ## What a refusal does to the level
37
+ *
38
+ * A refused shape (`jpa.ts`'s four completeness gates) counts for **nothing**
39
+ * here. An entity whose shape was withheld is an entity this run read no shape
40
+ * from, so a repository whose every entity is refused publishes R2 — the same
41
+ * level it would publish with no entity at all, which is the honest answer.
42
+ *
43
+ * ## What this does NOT do
44
+ *
45
+ * It does not mint `DATABASE_TABLE`/`DATABASE_COLUMN`. The physical column
46
+ * name is decided by a *configurable* naming strategy (Spring Boot's
47
+ * camel-to-snake, plain Hibernate's implicit strategy as-written) that no
48
+ * source file states — `discountCode` in the entity against `discount_code`
49
+ * in the migration, measured on this corpus. Minting from the class would
50
+ * mint ids that do not join with `adapter-sql`'s for the same table (DEC-240).
51
+ * Precision over recall: the shape is claimed, the physical schema is not.
52
+ */
53
+ import { jpaModels } from "./jpa.js";
54
+ /**
55
+ * The one level `adapter-kotlin` can reach that R2 machinery cannot supply,
56
+ * and the one place in this package that mints at it.
57
+ */
58
+ export const SHAPE_LEVEL = 3;
59
+ const pathKey = (identityPackage, path) => `${identityPackage}::${path.join(".")}`;
60
+ /**
61
+ * Read every entity in the batch, resolving supertypes across files.
62
+ *
63
+ * Resolution is by the *written* package: a single-type import names the
64
+ * parent's package outright, and an unqualified name otherwise means this
65
+ * file's own package. **Two declarations answering to one key make the name
66
+ * ambiguous, and an ambiguous parent resolves to nothing** — which routes
67
+ * straight into `jpa.ts`'s E1 refusal rather than picking a winner.
68
+ */
69
+ export function readEntities(units) {
70
+ const byFqn = new Map();
71
+ for (const unit of units) {
72
+ for (const declaration of unit.jpaDeclarations) {
73
+ const fqn = `${unit.packageName}.${[...declaration.owners, declaration.name].join(".")}`;
74
+ const bucket = byFqn.get(fqn);
75
+ if (bucket === undefined)
76
+ byFqn.set(fqn, [{ unit, declaration }]);
77
+ else
78
+ bucket.push({ unit, declaration });
79
+ }
80
+ }
81
+ const entities = new Map();
82
+ const refusals = [];
83
+ for (const unit of units) {
84
+ if (unit.identityPackage === undefined || unit.jpaDeclarations.length === 0)
85
+ continue;
86
+ const importedFqn = new Map();
87
+ for (const each of unit.imports) {
88
+ if (each.isWildcard)
89
+ continue;
90
+ importedFqn.set(each.alias ?? each.path.slice(each.path.lastIndexOf(".") + 1), each.path);
91
+ }
92
+ const jpaUnit = { packageName: unit.packageName, jpaDeclarations: unit.jpaDeclarations };
93
+ const { models, refusals: refused } = jpaModels(jpaUnit, (written, from) => {
94
+ const fqn = importedFqn.get(written) ?? `${from.packageName}.${written}`;
95
+ const found = byFqn.get(fqn);
96
+ // One candidate or none. Two is an ambiguity this adapter cannot settle.
97
+ if (found === undefined || found.length !== 1)
98
+ return undefined;
99
+ const [only] = found;
100
+ if (only === undefined)
101
+ return undefined;
102
+ return {
103
+ declaration: only.declaration,
104
+ unit: { packageName: only.unit.packageName, jpaDeclarations: only.unit.jpaDeclarations },
105
+ };
106
+ });
107
+ for (const model of models)
108
+ entities.set(pathKey(unit.identityPackage, [...model.owners, model.className]), model);
109
+ for (const refusal of refused)
110
+ refusals.push({ ...refusal, file: unit.file });
111
+ }
112
+ let mappedShapes = 0;
113
+ for (const model of entities.values())
114
+ if (model.fields.length > 0)
115
+ mappedShapes += 1;
116
+ return { entities, refusals, mappedShapes, reachesShapes: mappedShapes > 0 };
117
+ }
118
+ /**
119
+ * The level to publish for a run: never above the caller's ceiling, never
120
+ * above what the repository supplied, and 0 when nothing anchored at all.
121
+ */
122
+ export function reachedFor(ceiling, anchoredAnything, reach) {
123
+ if (!anchoredAnything)
124
+ return 0;
125
+ if (ceiling < SHAPE_LEVEL)
126
+ return ceiling;
127
+ return reach?.reachesShapes === true ? ceiling : Math.min(2, ceiling);
128
+ }
129
+ //# sourceMappingURL=shape-reach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape-reach.js","sourceRoot":"","sources":["../src/shape-reach.ts"],"names":[],"mappings":"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"}