semantifold 0.1.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 +15 -0
- package/README.md +71 -0
- package/build/index.d.ts +54 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +45 -0
- package/build/src/backends/identifiers.d.ts +19 -0
- package/build/src/backends/identifiers.d.ts.map +1 -0
- package/build/src/backends/identifiers.js +93 -0
- package/build/src/backends/index.d.ts +35 -0
- package/build/src/backends/index.d.ts.map +1 -0
- package/build/src/backends/index.js +149 -0
- package/build/src/backends/java.d.ts +8 -0
- package/build/src/backends/java.d.ts.map +1 -0
- package/build/src/backends/java.js +172 -0
- package/build/src/backends/javascript.d.ts +8 -0
- package/build/src/backends/javascript.d.ts.map +1 -0
- package/build/src/backends/javascript.js +173 -0
- package/build/src/backends/php.d.ts +8 -0
- package/build/src/backends/php.d.ts.map +1 -0
- package/build/src/backends/php.js +175 -0
- package/build/src/backends/ruby.d.ts +8 -0
- package/build/src/backends/ruby.d.ts.map +1 -0
- package/build/src/backends/ruby.js +155 -0
- package/build/src/backends/scalars.d.ts +15 -0
- package/build/src/backends/scalars.d.ts.map +1 -0
- package/build/src/backends/scalars.js +138 -0
- package/build/src/backends/shared.d.ts +26 -0
- package/build/src/backends/shared.d.ts.map +1 -0
- package/build/src/backends/shared.js +424 -0
- package/build/src/backends/typescript.d.ts +8 -0
- package/build/src/backends/typescript.d.ts.map +1 -0
- package/build/src/backends/typescript.js +160 -0
- package/build/src/backends/writer.d.ts +87 -0
- package/build/src/backends/writer.d.ts.map +1 -0
- package/build/src/backends/writer.js +207 -0
- package/build/src/diagnostic.d.ts +67 -0
- package/build/src/diagnostic.d.ts.map +1 -0
- package/build/src/diagnostic.js +96 -0
- package/build/src/frontends/index.d.ts +14 -0
- package/build/src/frontends/index.d.ts.map +1 -0
- package/build/src/frontends/index.js +36 -0
- package/build/src/frontends/java.d.ts +12 -0
- package/build/src/frontends/java.d.ts.map +1 -0
- package/build/src/frontends/java.js +630 -0
- package/build/src/frontends/javascript-typescript.d.ts +19 -0
- package/build/src/frontends/javascript-typescript.d.ts.map +1 -0
- package/build/src/frontends/javascript-typescript.js +633 -0
- package/build/src/frontends/php.d.ts +12 -0
- package/build/src/frontends/php.d.ts.map +1 -0
- package/build/src/frontends/php.js +523 -0
- package/build/src/frontends/ruby.d.ts +12 -0
- package/build/src/frontends/ruby.d.ts.map +1 -0
- package/build/src/frontends/ruby.js +515 -0
- package/build/src/frontends/scalars.d.ts +19 -0
- package/build/src/frontends/scalars.d.ts.map +1 -0
- package/build/src/frontends/scalars.js +71 -0
- package/build/src/mapping.d.ts +160 -0
- package/build/src/mapping.d.ts.map +1 -0
- package/build/src/mapping.js +1120 -0
- package/build/src/semantic/location.d.ts +61 -0
- package/build/src/semantic/location.d.ts.map +1 -0
- package/build/src/semantic/location.js +142 -0
- package/build/src/semantic/operators.d.ts +16 -0
- package/build/src/semantic/operators.d.ts.map +1 -0
- package/build/src/semantic/operators.js +24 -0
- package/build/src/semantic/provenance.d.ts +74 -0
- package/build/src/semantic/provenance.d.ts.map +1 -0
- package/build/src/semantic/provenance.js +577 -0
- package/build/src/semantic/scalars.d.ts +19 -0
- package/build/src/semantic/scalars.d.ts.map +1 -0
- package/build/src/semantic/scalars.js +40 -0
- package/build/src/semantic/types.d.ts +1003 -0
- package/build/src/semantic/types.d.ts.map +1 -0
- package/build/src/semantic/types.js +279 -0
- package/build/src/semantic/validate.d.ts +60 -0
- package/build/src/semantic/validate.d.ts.map +1 -0
- package/build/src/semantic/validate.js +472 -0
- package/docs/architecture.md +39 -0
- package/docs/coding-standards.md +7 -0
- package/docs/goals.md +7 -0
- package/docs/language-support.md +69 -0
- package/docs/plans/2026-09-02-initial-toolchain.md +54 -0
- package/docs/source-maps.md +134 -0
- package/docs/testing.md +25 -0
- package/index.js +63 -0
- package/package.json +69 -0
- package/src/backends/identifiers.js +101 -0
- package/src/backends/index.js +159 -0
- package/src/backends/java.js +182 -0
- package/src/backends/javascript.js +184 -0
- package/src/backends/php.js +184 -0
- package/src/backends/ruby.js +163 -0
- package/src/backends/scalars.js +120 -0
- package/src/backends/shared.js +456 -0
- package/src/backends/typescript.js +168 -0
- package/src/backends/writer.js +224 -0
- package/src/diagnostic.js +103 -0
- package/src/frontends/index.js +36 -0
- package/src/frontends/java.js +735 -0
- package/src/frontends/javascript-typescript.js +718 -0
- package/src/frontends/php.js +593 -0
- package/src/frontends/ruby.js +622 -0
- package/src/frontends/scalars.js +77 -0
- package/src/mapping.js +1260 -0
- package/src/semantic/location.js +154 -0
- package/src/semantic/operators.js +28 -0
- package/src/semantic/provenance.js +629 -0
- package/src/semantic/scalars.js +44 -0
- package/src/semantic/types.js +319 -0
- package/src/semantic/validate.js +529 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import {missingType} from "../diagnostic.js"
|
|
4
|
+
import {setParserRanges} from "../semantic/provenance.js"
|
|
5
|
+
import {scalarType} from "../semantic/scalars.js"
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Builds a source-spelling map with exact semantic scalar values.
|
|
9
|
+
* @param {readonly (readonly [string, import("../semantic/types.js").SemanticTypeName])[]} entries - Source mappings.
|
|
10
|
+
* @returns {Map<string, import("../semantic/types.js").SemanticTypeName>} Source type map.
|
|
11
|
+
*/
|
|
12
|
+
function sourceTypeMap(entries) {
|
|
13
|
+
return new Map(entries)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** @type {Readonly<Record<import("../semantic/types.js").SemanticLanguage, Map<string, import("../semantic/types.js").SemanticTypeName>>>} */
|
|
17
|
+
const sourceScalarTypes = Object.freeze({
|
|
18
|
+
java: sourceTypeMap([
|
|
19
|
+
["int", "integer"],
|
|
20
|
+
["boolean", "boolean"],
|
|
21
|
+
["String", "string"],
|
|
22
|
+
["java.lang.String", "string"]
|
|
23
|
+
]),
|
|
24
|
+
javascript: sourceTypeMap([
|
|
25
|
+
["number", "integer"],
|
|
26
|
+
["boolean", "boolean"],
|
|
27
|
+
["string", "string"]
|
|
28
|
+
]),
|
|
29
|
+
php: sourceTypeMap([
|
|
30
|
+
["int", "integer"],
|
|
31
|
+
["bool", "boolean"],
|
|
32
|
+
["string", "string"]
|
|
33
|
+
]),
|
|
34
|
+
ruby: sourceTypeMap([
|
|
35
|
+
["[Integer]", "integer"],
|
|
36
|
+
["[bool]", "boolean"],
|
|
37
|
+
["[String]", "string"]
|
|
38
|
+
]),
|
|
39
|
+
typescript: sourceTypeMap([
|
|
40
|
+
["number", "integer"],
|
|
41
|
+
["boolean", "boolean"],
|
|
42
|
+
["string", "string"]
|
|
43
|
+
])
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Looks up an exact source scalar spelling without inspecting parser nodes.
|
|
48
|
+
* @param {import("../semantic/types.js").SemanticLanguage} language - Source language.
|
|
49
|
+
* @param {string} sourceType - Exact source type spelling.
|
|
50
|
+
* @param {import("../semantic/types.js").SourceLocation} [location] - Exact parser-owned type spelling.
|
|
51
|
+
* @returns {import("../semantic/types.js").TypeReference | undefined} Semantic type when supported.
|
|
52
|
+
*/
|
|
53
|
+
export function sourceScalarType(language, sourceType, location) {
|
|
54
|
+
const name = sourceScalarTypes[language].get(sourceType)
|
|
55
|
+
const type = name ? scalarType(name) : undefined
|
|
56
|
+
|
|
57
|
+
if (type && location) setParserRanges(type, {type: location})
|
|
58
|
+
|
|
59
|
+
return type
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Requires an exact supported source scalar spelling.
|
|
64
|
+
* @param {import("../semantic/types.js").SemanticLanguage} language - Source language.
|
|
65
|
+
* @param {string | undefined} sourceType - Exact source type spelling.
|
|
66
|
+
* @param {string} subject - Typed source subject.
|
|
67
|
+
* @param {import("../semantic/types.js").SourceLocation} location - Owning source location.
|
|
68
|
+
* @param {import("../semantic/types.js").SourceLocation} [typeLocation] - Exact parser-owned type spelling.
|
|
69
|
+
* @returns {import("../semantic/types.js").TypeReference} Semantic scalar type.
|
|
70
|
+
*/
|
|
71
|
+
export function requireSourceScalarType(language, sourceType, subject, location, typeLocation = location) {
|
|
72
|
+
const type = sourceType ? sourceScalarType(language, sourceType, typeLocation) : undefined
|
|
73
|
+
|
|
74
|
+
if (!type) return missingType(language, subject, location)
|
|
75
|
+
|
|
76
|
+
return type
|
|
77
|
+
}
|