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.
Files changed (111) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +71 -0
  3. package/build/index.d.ts +54 -0
  4. package/build/index.d.ts.map +1 -0
  5. package/build/index.js +45 -0
  6. package/build/src/backends/identifiers.d.ts +19 -0
  7. package/build/src/backends/identifiers.d.ts.map +1 -0
  8. package/build/src/backends/identifiers.js +93 -0
  9. package/build/src/backends/index.d.ts +35 -0
  10. package/build/src/backends/index.d.ts.map +1 -0
  11. package/build/src/backends/index.js +149 -0
  12. package/build/src/backends/java.d.ts +8 -0
  13. package/build/src/backends/java.d.ts.map +1 -0
  14. package/build/src/backends/java.js +172 -0
  15. package/build/src/backends/javascript.d.ts +8 -0
  16. package/build/src/backends/javascript.d.ts.map +1 -0
  17. package/build/src/backends/javascript.js +173 -0
  18. package/build/src/backends/php.d.ts +8 -0
  19. package/build/src/backends/php.d.ts.map +1 -0
  20. package/build/src/backends/php.js +175 -0
  21. package/build/src/backends/ruby.d.ts +8 -0
  22. package/build/src/backends/ruby.d.ts.map +1 -0
  23. package/build/src/backends/ruby.js +155 -0
  24. package/build/src/backends/scalars.d.ts +15 -0
  25. package/build/src/backends/scalars.d.ts.map +1 -0
  26. package/build/src/backends/scalars.js +138 -0
  27. package/build/src/backends/shared.d.ts +26 -0
  28. package/build/src/backends/shared.d.ts.map +1 -0
  29. package/build/src/backends/shared.js +424 -0
  30. package/build/src/backends/typescript.d.ts +8 -0
  31. package/build/src/backends/typescript.d.ts.map +1 -0
  32. package/build/src/backends/typescript.js +160 -0
  33. package/build/src/backends/writer.d.ts +87 -0
  34. package/build/src/backends/writer.d.ts.map +1 -0
  35. package/build/src/backends/writer.js +207 -0
  36. package/build/src/diagnostic.d.ts +67 -0
  37. package/build/src/diagnostic.d.ts.map +1 -0
  38. package/build/src/diagnostic.js +96 -0
  39. package/build/src/frontends/index.d.ts +14 -0
  40. package/build/src/frontends/index.d.ts.map +1 -0
  41. package/build/src/frontends/index.js +36 -0
  42. package/build/src/frontends/java.d.ts +12 -0
  43. package/build/src/frontends/java.d.ts.map +1 -0
  44. package/build/src/frontends/java.js +630 -0
  45. package/build/src/frontends/javascript-typescript.d.ts +19 -0
  46. package/build/src/frontends/javascript-typescript.d.ts.map +1 -0
  47. package/build/src/frontends/javascript-typescript.js +633 -0
  48. package/build/src/frontends/php.d.ts +12 -0
  49. package/build/src/frontends/php.d.ts.map +1 -0
  50. package/build/src/frontends/php.js +523 -0
  51. package/build/src/frontends/ruby.d.ts +12 -0
  52. package/build/src/frontends/ruby.d.ts.map +1 -0
  53. package/build/src/frontends/ruby.js +515 -0
  54. package/build/src/frontends/scalars.d.ts +19 -0
  55. package/build/src/frontends/scalars.d.ts.map +1 -0
  56. package/build/src/frontends/scalars.js +71 -0
  57. package/build/src/mapping.d.ts +160 -0
  58. package/build/src/mapping.d.ts.map +1 -0
  59. package/build/src/mapping.js +1120 -0
  60. package/build/src/semantic/location.d.ts +61 -0
  61. package/build/src/semantic/location.d.ts.map +1 -0
  62. package/build/src/semantic/location.js +142 -0
  63. package/build/src/semantic/operators.d.ts +16 -0
  64. package/build/src/semantic/operators.d.ts.map +1 -0
  65. package/build/src/semantic/operators.js +24 -0
  66. package/build/src/semantic/provenance.d.ts +74 -0
  67. package/build/src/semantic/provenance.d.ts.map +1 -0
  68. package/build/src/semantic/provenance.js +577 -0
  69. package/build/src/semantic/scalars.d.ts +19 -0
  70. package/build/src/semantic/scalars.d.ts.map +1 -0
  71. package/build/src/semantic/scalars.js +40 -0
  72. package/build/src/semantic/types.d.ts +1003 -0
  73. package/build/src/semantic/types.d.ts.map +1 -0
  74. package/build/src/semantic/types.js +279 -0
  75. package/build/src/semantic/validate.d.ts +60 -0
  76. package/build/src/semantic/validate.d.ts.map +1 -0
  77. package/build/src/semantic/validate.js +472 -0
  78. package/docs/architecture.md +39 -0
  79. package/docs/coding-standards.md +7 -0
  80. package/docs/goals.md +7 -0
  81. package/docs/language-support.md +69 -0
  82. package/docs/plans/2026-09-02-initial-toolchain.md +54 -0
  83. package/docs/source-maps.md +134 -0
  84. package/docs/testing.md +25 -0
  85. package/index.js +63 -0
  86. package/package.json +69 -0
  87. package/src/backends/identifiers.js +101 -0
  88. package/src/backends/index.js +159 -0
  89. package/src/backends/java.js +182 -0
  90. package/src/backends/javascript.js +184 -0
  91. package/src/backends/php.js +184 -0
  92. package/src/backends/ruby.js +163 -0
  93. package/src/backends/scalars.js +120 -0
  94. package/src/backends/shared.js +456 -0
  95. package/src/backends/typescript.js +168 -0
  96. package/src/backends/writer.js +224 -0
  97. package/src/diagnostic.js +103 -0
  98. package/src/frontends/index.js +36 -0
  99. package/src/frontends/java.js +735 -0
  100. package/src/frontends/javascript-typescript.js +718 -0
  101. package/src/frontends/php.js +593 -0
  102. package/src/frontends/ruby.js +622 -0
  103. package/src/frontends/scalars.js +77 -0
  104. package/src/mapping.js +1260 -0
  105. package/src/semantic/location.js +154 -0
  106. package/src/semantic/operators.js +28 -0
  107. package/src/semantic/provenance.js +629 -0
  108. package/src/semantic/scalars.js +44 -0
  109. package/src/semantic/types.js +319 -0
  110. package/src/semantic/validate.js +529 -0
  111. package/tsconfig.json +16 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Returns the canonical semantic scalar type reference.
3
+ * @param {import("./types.js").SemanticTypeName} name - Semantic scalar name.
4
+ * @returns {import("./types.js").TypeReference} Scalar type reference.
5
+ */
6
+ export declare function scalarType(name: import("./types.js").SemanticTypeName): import("./types.js").TypeReference;
7
+ /**
8
+ * Checks an opaque scalar type name without coercion.
9
+ * @param {string} name - Candidate semantic type name.
10
+ * @returns {name is import("./types.js").SemanticTypeName} Whether the name is supported.
11
+ */
12
+ export declare function isScalarTypeName(name: string): name is import("./types.js").SemanticTypeName;
13
+ /**
14
+ * Checks that a JavaScript string contains only complete Unicode scalar values.
15
+ * @param {string} value - Candidate Unicode string.
16
+ * @returns {boolean} Whether the string excludes lone UTF-16 surrogates.
17
+ */
18
+ export declare function hasOnlyUnicodeScalars(value: string): boolean;
19
+ //# sourceMappingURL=scalars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../../../src/semantic/scalars.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAHpB,OAAO,YAAY,EAAE,gBAGD,GAFlB,OAAO,YAAY,EAAE,aAAa,CAI9C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,IAAI,IAAI,OAAO,YAAY,EAAE,gBAAgB,CAIzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAHhC,MAGgC,GAF9B,OAAO,CAiBnB"}
@@ -0,0 +1,40 @@
1
+ // @ts-check
2
+ /** @type {readonly import("./types.js").SemanticTypeName[]} */
3
+ const scalarTypeNames = Object.freeze(["integer", "boolean", "string"]);
4
+ /**
5
+ * Returns the canonical semantic scalar type reference.
6
+ * @param {import("./types.js").SemanticTypeName} name - Semantic scalar name.
7
+ * @returns {import("./types.js").TypeReference} Scalar type reference.
8
+ */
9
+ export function scalarType(name) {
10
+ return { kind: /** @type {const} */ ("TypeReference"), name };
11
+ }
12
+ /**
13
+ * Checks an opaque scalar type name without coercion.
14
+ * @param {string} name - Candidate semantic type name.
15
+ * @returns {name is import("./types.js").SemanticTypeName} Whether the name is supported.
16
+ */
17
+ export function isScalarTypeName(name) {
18
+ return scalarTypeNames.some((candidate) => candidate == name);
19
+ }
20
+ /**
21
+ * Checks that a JavaScript string contains only complete Unicode scalar values.
22
+ * @param {string} value - Candidate Unicode string.
23
+ * @returns {boolean} Whether the string excludes lone UTF-16 surrogates.
24
+ */
25
+ export function hasOnlyUnicodeScalars(value) {
26
+ for (let index = 0; index < value.length; index++) {
27
+ const codeUnit = value.charCodeAt(index);
28
+ if (codeUnit >= 0xD800 && codeUnit <= 0xDBFF) {
29
+ const trailing = value.charCodeAt(index + 1);
30
+ if (!Number.isInteger(trailing) || trailing < 0xDC00 || trailing > 0xDFFF)
31
+ return false;
32
+ index++;
33
+ }
34
+ else if (codeUnit >= 0xDC00 && codeUnit <= 0xDFFF) {
35
+ return false;
36
+ }
37
+ }
38
+ return true;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZW1hbnRpYy9zY2FsYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWiwrREFBK0Q7QUFDL0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtBQUV2RTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFJO0lBQzdCLE9BQU8sRUFBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQTtBQUM3RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFJO0lBQ25DLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFBO0FBQy9ELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQUs7SUFDekMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXhDLElBQUksUUFBUSxJQUFJLE1BQU0sSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFFNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxRQUFRLEdBQUcsTUFBTTtnQkFBRSxPQUFPLEtBQUssQ0FBQTtZQUN2RixLQUFLLEVBQUUsQ0FBQTtRQUNULENBQUM7YUFBTSxJQUFJLFFBQVEsSUFBSSxNQUFNLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3BELE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlIHtyZWFkb25seSBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLlNlbWFudGljVHlwZU5hbWVbXX0gKi9cbmNvbnN0IHNjYWxhclR5cGVOYW1lcyA9IE9iamVjdC5mcmVlemUoW1wiaW50ZWdlclwiLCBcImJvb2xlYW5cIiwgXCJzdHJpbmdcIl0pXG5cbi8qKlxuICogUmV0dXJucyB0aGUgY2Fub25pY2FsIHNlbWFudGljIHNjYWxhciB0eXBlIHJlZmVyZW5jZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5TZW1hbnRpY1R5cGVOYW1lfSBuYW1lIC0gU2VtYW50aWMgc2NhbGFyIG5hbWUuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5UeXBlUmVmZXJlbmNlfSBTY2FsYXIgdHlwZSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2FsYXJUeXBlKG5hbWUpIHtcbiAgcmV0dXJuIHtraW5kOiAvKiogQHR5cGUge2NvbnN0fSAqLyAoXCJUeXBlUmVmZXJlbmNlXCIpLCBuYW1lfVxufVxuXG4vKipcbiAqIENoZWNrcyBhbiBvcGFxdWUgc2NhbGFyIHR5cGUgbmFtZSB3aXRob3V0IGNvZXJjaW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYW5kaWRhdGUgc2VtYW50aWMgdHlwZSBuYW1lLlxuICogQHJldHVybnMge25hbWUgaXMgaW1wb3J0KFwiLi90eXBlcy5qc1wiKS5TZW1hbnRpY1R5cGVOYW1lfSBXaGV0aGVyIHRoZSBuYW1lIGlzIHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NhbGFyVHlwZU5hbWUobmFtZSkge1xuICByZXR1cm4gc2NhbGFyVHlwZU5hbWVzLnNvbWUoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlID09IG5hbWUpXG59XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgYSBKYXZhU2NyaXB0IHN0cmluZyBjb250YWlucyBvbmx5IGNvbXBsZXRlIFVuaWNvZGUgc2NhbGFyIHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIENhbmRpZGF0ZSBVbmljb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBzdHJpbmcgZXhjbHVkZXMgbG9uZSBVVEYtMTYgc3Vycm9nYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc09ubHlVbmljb2RlU2NhbGFycyh2YWx1ZSkge1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgY29kZVVuaXQgPSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKGNvZGVVbml0ID49IDB4RDgwMCAmJiBjb2RlVW5pdCA8PSAweERCRkYpIHtcbiAgICAgIGNvbnN0IHRyYWlsaW5nID0gdmFsdWUuY2hhckNvZGVBdChpbmRleCArIDEpXG5cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcih0cmFpbGluZykgfHwgdHJhaWxpbmcgPCAweERDMDAgfHwgdHJhaWxpbmcgPiAweERGRkYpIHJldHVybiBmYWxzZVxuICAgICAgaW5kZXgrK1xuICAgIH0gZWxzZSBpZiAoY29kZVVuaXQgPj0gMHhEQzAwICYmIGNvZGVVbml0IDw9IDB4REZGRikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cbiJdfQ==