aontu 0.57.0 → 0.58.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/README.md +2 -2
- package/dist/agentsmd.js +1 -1
- package/dist/alias.d.ts +3 -0
- package/dist/alias.js +59 -0
- package/dist/alias.js.map +1 -0
- package/dist/aontu.d.ts +4 -2
- package/dist/aontu.js +11 -3
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +475 -3
- package/dist/cli.js.map +1 -1
- package/dist/ctx.d.ts +2 -0
- package/dist/ctx.js +1 -0
- package/dist/ctx.js.map +1 -1
- package/dist/format.js +8 -2
- package/dist/format.js.map +1 -1
- package/dist/hints.js +40 -9
- package/dist/hints.js.map +1 -1
- package/dist/lang.js +354 -57
- package/dist/lang.js.map +1 -1
- package/dist/lower.d.ts +20 -0
- package/dist/lower.js +575 -0
- package/dist/lower.js.map +1 -0
- package/dist/lsp.d.ts +1 -1
- package/dist/lsp.js +1 -1
- package/dist/lsp.js.map +1 -1
- package/dist/mcp-server.js +1 -1
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.js +40 -3
- package/dist/mcp.js.map +1 -1
- package/dist/render.d.ts +53 -0
- package/dist/render.js +542 -0
- package/dist/render.js.map +1 -0
- package/dist/sigdecl.js +1 -1
- package/dist/sigdecl.js.map +1 -1
- package/dist/std.d.ts +2 -0
- package/dist/std.js +498 -2
- package/dist/std.js.map +1 -1
- package/dist/template.d.ts +5 -0
- package/dist/template.js +257 -0
- package/dist/template.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/unify.js +43 -0
- package/dist/unify.js.map +1 -1
- package/dist/val/AggFuncVal.d.ts +1 -1
- package/dist/val/AggFuncVal.js +10 -21
- package/dist/val/AggFuncVal.js.map +1 -1
- package/dist/val/BagVal.js +1 -1
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/ConstraintVal.js +1 -1
- package/dist/val/EachFuncVal.d.ts +1 -1
- package/dist/val/EachFuncVal.js +8 -13
- package/dist/val/EachFuncVal.js.map +1 -1
- package/dist/val/EmitFuncVal.d.ts +23 -4
- package/dist/val/EmitFuncVal.js +298 -28
- package/dist/val/EmitFuncVal.js.map +1 -1
- package/dist/val/FilterFuncVal.js +8 -4
- package/dist/val/FilterFuncVal.js.map +1 -1
- package/dist/val/FormFuncVal.d.ts +14 -0
- package/dist/val/FormFuncVal.js +55 -0
- package/dist/val/FormFuncVal.js.map +1 -0
- package/dist/val/MapVal.d.ts +2 -1
- package/dist/val/MapVal.js +2 -1
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/PackFuncVal.d.ts +1 -1
- package/dist/val/PackFuncVal.js +22 -18
- package/dist/val/PackFuncVal.js.map +1 -1
- package/dist/val/PlaceVal.js +2 -1
- package/dist/val/PlaceVal.js.map +1 -1
- package/dist/val/RefVal.d.ts +3 -0
- package/dist/val/RefVal.js +156 -17
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/Val.d.ts +7 -1
- package/dist/val/Val.js +12 -1
- package/dist/val/Val.js.map +1 -1
- package/dist/val/members.d.ts +9 -0
- package/dist/val/members.js +52 -0
- package/dist/val/members.js.map +1 -0
- package/grammar/aontu.abnf +1 -1
- package/grammar/aontu.gbnf +1 -1
- package/grammar/aontu.lark +1 -1
- package/grammar/aontu.tmLanguage.json +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +4 -4
- package/skill/error-codes.md +1 -1
- package/skill/examples.md +1 -1
- package/skill/grammar-card.md +1 -1
- package/src/agentsmd.ts +1 -1
- package/src/alias.ts +112 -0
- package/src/aontu.ts +19 -2
- package/src/cli.ts +517 -3
- package/src/ctx.ts +13 -0
- package/src/format.ts +12 -2
- package/src/hints.ts +47 -9
- package/src/lang.ts +406 -62
- package/src/lower.ts +636 -0
- package/src/lsp.ts +1 -1
- package/src/mcp-server.ts +1 -1
- package/src/mcp.ts +43 -4
- package/src/render.ts +727 -0
- package/src/sigdecl.ts +1 -1
- package/src/std.ts +506 -1
- package/src/template.ts +291 -0
- package/src/unify.ts +47 -0
- package/src/val/AggFuncVal.ts +10 -21
- package/src/val/BagVal.ts +1 -1
- package/src/val/ConstraintVal.ts +1 -1
- package/src/val/EachFuncVal.ts +8 -16
- package/src/val/EmitFuncVal.ts +376 -39
- package/src/val/FilterFuncVal.ts +11 -4
- package/src/val/FormFuncVal.ts +119 -0
- package/src/val/MapVal.ts +3 -2
- package/src/val/PackFuncVal.ts +23 -19
- package/src/val/PlaceVal.ts +2 -1
- package/src/val/RefVal.ts +167 -18
- package/src/val/Val.ts +42 -1
- package/src/val/members.ts +86 -0
package/dist/lower.js
ADDED
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.splitWords = splitWords;
|
|
5
|
+
exports.caseName = caseName;
|
|
6
|
+
exports.ident = ident;
|
|
7
|
+
exports.quote = quote;
|
|
8
|
+
exports.literal = literal;
|
|
9
|
+
exports.typeExpr = typeExpr;
|
|
10
|
+
exports.lowerHeader = lowerHeader;
|
|
11
|
+
exports.lowerDecl = lowerDecl;
|
|
12
|
+
// THE DECLARATION LOWERING (docs/design/RENDER.0.md D5, D6, P5): the
|
|
13
|
+
// one place in the renderer where "a new language is data" does not
|
|
14
|
+
// hold. A `%record` becoming `export interface X {` or `type X struct
|
|
15
|
+
// {` is a per-language-family function here, selected by the profile's
|
|
16
|
+
// `lowering` field and parameterised by the profile's data -- the
|
|
17
|
+
// indent, the comment forms, the string quote and its escape table, the
|
|
18
|
+
// identifier rules and the type forms. Two families ship, `typescript`
|
|
19
|
+
// and `go`; a third language with declarations is a change here, in
|
|
20
|
+
// both ports (go/lower.go is the twin, function for function).
|
|
21
|
+
//
|
|
22
|
+
// Everything produced is PIECES -- lines at a depth, blanks -- that the
|
|
23
|
+
// fragment fold then turns into bytes, so a lowered declaration and a
|
|
24
|
+
// fragment take the same path to the file: one indent rule, one
|
|
25
|
+
// terminator rule, nothing trimmed.
|
|
26
|
+
//
|
|
27
|
+
// THE PARITY GUARDS (G9 section 3), each a rule both ports keep: case
|
|
28
|
+
// conversion is ASCII-only, and a code point at or above U+0080 rides
|
|
29
|
+
// into the current word verbatim, never split and never converted;
|
|
30
|
+
// string escaping is one pass, per code point, through the profile's
|
|
31
|
+
// table, keyed by decimal code point, with a control character the
|
|
32
|
+
// table does not name spelled as a \u escape; a reserved word is
|
|
33
|
+
// matched by exact equality on the converted name; parenthesisation is
|
|
34
|
+
// by `prec`/`childPrec`; numbers go through `exactJSON`; nothing here
|
|
35
|
+
// sorts, and nothing iterates a map.
|
|
36
|
+
const exactjson_1 = require("./exactjson");
|
|
37
|
+
function ln(at, text) {
|
|
38
|
+
return { k: 'line', at, of: [text] };
|
|
39
|
+
}
|
|
40
|
+
const BLANK = { k: 'blank' };
|
|
41
|
+
// --- identifiers -------------------------------------------------------
|
|
42
|
+
function isUpper(c) {
|
|
43
|
+
return 'A' <= c && c <= 'Z';
|
|
44
|
+
}
|
|
45
|
+
function isLower(c) {
|
|
46
|
+
return 'a' <= c && c <= 'z';
|
|
47
|
+
}
|
|
48
|
+
function isDigit(c) {
|
|
49
|
+
return '0' <= c && c <= '9';
|
|
50
|
+
}
|
|
51
|
+
function isASCII(c) {
|
|
52
|
+
return c.codePointAt(0) < 0x80;
|
|
53
|
+
}
|
|
54
|
+
// THE ASCII WORD SPLITTER. Words break at `_`, `-` and space, at a
|
|
55
|
+
// lower-to-upper boundary (`creditLimit`), at a letter-to-digit
|
|
56
|
+
// boundary in either direction (`utf8String`), and before the last
|
|
57
|
+
// capital of a capital run that a lower case letter follows
|
|
58
|
+
// (`HTTPServer` is HTTP, Server). A code point at or above U+0080
|
|
59
|
+
// rides into the current word and never starts, ends or converts one.
|
|
60
|
+
function splitWords(name) {
|
|
61
|
+
const words = [];
|
|
62
|
+
let cur = '';
|
|
63
|
+
const chars = Array.from(name);
|
|
64
|
+
for (let i = 0; i < chars.length; i++) {
|
|
65
|
+
const c = chars[i];
|
|
66
|
+
if ('_' === c || '-' === c || ' ' === c) {
|
|
67
|
+
if ('' !== cur) {
|
|
68
|
+
words.push(cur);
|
|
69
|
+
}
|
|
70
|
+
cur = '';
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if ('' !== cur) {
|
|
74
|
+
const prev = chars[i - 1];
|
|
75
|
+
const next = chars[i + 1];
|
|
76
|
+
const boundary = isASCII(c) && isASCII(prev) && ((isUpper(c) && (isLower(prev) || isDigit(prev))) ||
|
|
77
|
+
(isDigit(c) !== isDigit(prev)) ||
|
|
78
|
+
(isUpper(c) && isUpper(prev) && undefined !== next && isLower(next)));
|
|
79
|
+
if (boundary) {
|
|
80
|
+
words.push(cur);
|
|
81
|
+
cur = '';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
cur += c;
|
|
85
|
+
}
|
|
86
|
+
if ('' !== cur) {
|
|
87
|
+
words.push(cur);
|
|
88
|
+
}
|
|
89
|
+
return words;
|
|
90
|
+
}
|
|
91
|
+
function lowerASCII(s) {
|
|
92
|
+
return Array.from(s).map((c) => isUpper(c) ? String.fromCharCode(c.charCodeAt(0) + 32) : c).join('');
|
|
93
|
+
}
|
|
94
|
+
function upperASCII(s) {
|
|
95
|
+
return Array.from(s).map((c) => isLower(c) ? String.fromCharCode(c.charCodeAt(0) - 32) : c).join('');
|
|
96
|
+
}
|
|
97
|
+
// A word capitalised: the acronym set wins, so `id` is `ID` under a
|
|
98
|
+
// profile that lists it and `Id` under one that does not.
|
|
99
|
+
function capitalise(word, acronyms) {
|
|
100
|
+
const low = lowerASCII(word);
|
|
101
|
+
for (const a of acronyms) {
|
|
102
|
+
if (lowerASCII(a) === low) {
|
|
103
|
+
return a;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const chars = Array.from(low);
|
|
107
|
+
return upperASCII(chars[0]) + chars.slice(1).join('');
|
|
108
|
+
}
|
|
109
|
+
// THE CASE STYLES of aontu:profile's %case, over the words.
|
|
110
|
+
function caseName(name, style, acronyms) {
|
|
111
|
+
if ('as-is' === style) {
|
|
112
|
+
return name;
|
|
113
|
+
}
|
|
114
|
+
const words = splitWords(name);
|
|
115
|
+
if (0 === words.length) {
|
|
116
|
+
return name;
|
|
117
|
+
}
|
|
118
|
+
if ('snake' === style) {
|
|
119
|
+
return words.map(lowerASCII).join('_');
|
|
120
|
+
}
|
|
121
|
+
if ('screaming' === style) {
|
|
122
|
+
return words.map(upperASCII).join('_');
|
|
123
|
+
}
|
|
124
|
+
if ('kebab' === style) {
|
|
125
|
+
return words.map(lowerASCII).join('-');
|
|
126
|
+
}
|
|
127
|
+
const caps = words.map((w) => capitalise(w, acronyms));
|
|
128
|
+
if ('pascal' === style) {
|
|
129
|
+
return caps.join('');
|
|
130
|
+
}
|
|
131
|
+
// camel: the first word lower, and never an acronym.
|
|
132
|
+
return lowerASCII(words[0]) + caps.slice(1).join('');
|
|
133
|
+
}
|
|
134
|
+
// An identifier in a ROLE (record, field, enum, member, const, func,
|
|
135
|
+
// param, alias): the profile's case style for the role, then -- for
|
|
136
|
+
// the names that become bare identifiers, declarations and parameters
|
|
137
|
+
// -- the reserved-word rule on the converted name, exact equality, so
|
|
138
|
+
// Go's `Type` is not `type`. A reserved name is renamed with a trailing
|
|
139
|
+
// underscore and the report says so, since code that named the
|
|
140
|
+
// original will not compile against the rename. A field is a property,
|
|
141
|
+
// and a property may spell what its target's string form admits.
|
|
142
|
+
function ident(name, role, ctx, path, bare) {
|
|
143
|
+
const rules = ctx.profile.ident ?? {};
|
|
144
|
+
const style = rules.case?.[role] ?? 'as-is';
|
|
145
|
+
const acronyms = rules.acronyms ?? [];
|
|
146
|
+
let out = caseName(name, style, acronyms);
|
|
147
|
+
if (bare && (rules.reserved ?? []).includes(out)) {
|
|
148
|
+
ctx.lossy.push({
|
|
149
|
+
unit: ctx.unit, path, tier: 1, construct: 'reserved',
|
|
150
|
+
reason: out + ' is reserved in ' + ctx.profile.lang + '; renamed ' + out + '_',
|
|
151
|
+
});
|
|
152
|
+
out += '_';
|
|
153
|
+
}
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
// --- literals ----------------------------------------------------------
|
|
157
|
+
function hex4(n) {
|
|
158
|
+
return '\\u' + n.toString(16).padStart(4, '0');
|
|
159
|
+
}
|
|
160
|
+
// A string literal: the profile's quote, and one pass over the code
|
|
161
|
+
// points through its escape table. A control character the table does
|
|
162
|
+
// not name is a \u escape; so are the quote and the backslash when the
|
|
163
|
+
// table is silent about them; everything else, non-ASCII and astral
|
|
164
|
+
// included, is verbatim.
|
|
165
|
+
function quote(s, profile) {
|
|
166
|
+
const q = profile.str?.quote ?? '"';
|
|
167
|
+
const table = profile.str?.escape ?? {};
|
|
168
|
+
let out = q;
|
|
169
|
+
for (const c of Array.from(s)) {
|
|
170
|
+
const cp = c.codePointAt(0);
|
|
171
|
+
const esc = table[String(cp)];
|
|
172
|
+
if ('string' === typeof esc) {
|
|
173
|
+
out += esc;
|
|
174
|
+
}
|
|
175
|
+
else if (cp < 0x20 || 0x7f === cp || c === q || '\\' === c) {
|
|
176
|
+
out += hex4(cp);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
out += c;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return out + q;
|
|
183
|
+
}
|
|
184
|
+
// A literal value as the target spells it: a string quoted, a number
|
|
185
|
+
// through exactJSON (no second number formatter), a boolean as is, and
|
|
186
|
+
// null as the family's null.
|
|
187
|
+
function literal(v, ctx) {
|
|
188
|
+
if ('string' === typeof v) {
|
|
189
|
+
return quote(v, ctx.profile);
|
|
190
|
+
}
|
|
191
|
+
if (null === v) {
|
|
192
|
+
return 'go' === ctx.family ? 'nil' : 'null';
|
|
193
|
+
}
|
|
194
|
+
if ('boolean' === typeof v) {
|
|
195
|
+
return v ? 'true' : 'false';
|
|
196
|
+
}
|
|
197
|
+
return (0, exactjson_1.exactJSON)(v);
|
|
198
|
+
}
|
|
199
|
+
function form(ctx, name) {
|
|
200
|
+
return ctx.profile.types?.[name] ?? { open: '', close: '', prec: 9, childPrec: 0 };
|
|
201
|
+
}
|
|
202
|
+
// An inner expression under a form, in parens when its precedence is
|
|
203
|
+
// below the form's childPrec: TypeScript's `(string | null)[]`.
|
|
204
|
+
//
|
|
205
|
+
// A FORM ALWAYS CARRIES ITS childPrec, so there is nothing to fall back
|
|
206
|
+
// to: the profile vocabulary declares it `*0`, so every type form of a
|
|
207
|
+
// profile met with `aontu:profile` has one, and `form()`'s own fallback
|
|
208
|
+
// spells it. The default lives in the model, which is the point of
|
|
209
|
+
// putting it there.
|
|
210
|
+
function under(inner, f) {
|
|
211
|
+
return inner.prec < f.childPrec ? '(' + inner.text + ')' : inner.text;
|
|
212
|
+
}
|
|
213
|
+
function loss(ctx, path, construct, reason) {
|
|
214
|
+
ctx.lossy.push({ unit: ctx.unit, path, tier: 1, construct, reason });
|
|
215
|
+
}
|
|
216
|
+
// The primitive kind a literal set shares, for a family with no
|
|
217
|
+
// literal type: strings, integers, floats, booleans, null, or any.
|
|
218
|
+
function litPrim(of) {
|
|
219
|
+
const kinds = of.map((v) => null === v ? 'null' : typeof v);
|
|
220
|
+
const first = kinds[0];
|
|
221
|
+
if (!kinds.every((k) => k === first)) {
|
|
222
|
+
return 'any';
|
|
223
|
+
}
|
|
224
|
+
if ('number' === first) {
|
|
225
|
+
return of.every((v) => Number.isInteger(v)) ? 'int' : 'float';
|
|
226
|
+
}
|
|
227
|
+
return 'string' === first ? 'string' : 'boolean' === first ? 'bool' : 'null';
|
|
228
|
+
}
|
|
229
|
+
function prim(ctx, name) {
|
|
230
|
+
return ctx.profile.types?.prim?.[name] ?? name;
|
|
231
|
+
}
|
|
232
|
+
// THE TYPE EXPRESSION, from the profile's type forms (D6): an atom has
|
|
233
|
+
// prec 9; a form is `open + inner + close`, its precedence its own, its
|
|
234
|
+
// inner parenthesised below childPrec. A `text` leaf is verbatim
|
|
235
|
+
// target syntax and tier 3, as a text declaration is.
|
|
236
|
+
function typeExpr(t, ctx, path) {
|
|
237
|
+
const k = t.k;
|
|
238
|
+
if ('prim' === k) {
|
|
239
|
+
return { text: prim(ctx, t.prim), prec: 9 };
|
|
240
|
+
}
|
|
241
|
+
if ('ref' === k) {
|
|
242
|
+
return { text: ident(t.name, 'record', ctx, path, false), prec: 9 };
|
|
243
|
+
}
|
|
244
|
+
if ('text' === k) {
|
|
245
|
+
ctx.lossy.push({
|
|
246
|
+
unit: ctx.unit, path, tier: 3, construct: 'text',
|
|
247
|
+
reason: 'verbatim ' + t.lang + ': the renderer checks nothing in it',
|
|
248
|
+
});
|
|
249
|
+
return { text: t.text, prec: 9 };
|
|
250
|
+
}
|
|
251
|
+
if ('list' === k) {
|
|
252
|
+
const f = form(ctx, 'list');
|
|
253
|
+
return { text: f.open + under(typeExpr(t.of, ctx, path + '.of'), f) + f.close, prec: f.prec };
|
|
254
|
+
}
|
|
255
|
+
if ('map' === k) {
|
|
256
|
+
const f = form(ctx, 'map');
|
|
257
|
+
const key = under(typeExpr(t.key, ctx, path + '.key'), f);
|
|
258
|
+
const of = under(typeExpr(t.of, ctx, path + '.of'), f);
|
|
259
|
+
// The two families spell a map differently between the key and
|
|
260
|
+
// the value: `map[K]V` and `Record<K, V>`.
|
|
261
|
+
const sep = 'go' === ctx.family ? ']' : ', ';
|
|
262
|
+
return { text: f.open + key + sep + of + f.close, prec: f.prec };
|
|
263
|
+
}
|
|
264
|
+
if ('opt' === k) {
|
|
265
|
+
const f = form(ctx, 'opt');
|
|
266
|
+
return { text: f.open + under(typeExpr(t.of, ctx, path + '.of'), f) + f.close, prec: f.prec };
|
|
267
|
+
}
|
|
268
|
+
if ('union' === k) {
|
|
269
|
+
if ('go' === ctx.family) {
|
|
270
|
+
loss(ctx, path, 'union', 'go has no union type: any');
|
|
271
|
+
return { text: prim(ctx, 'any'), prec: 9 };
|
|
272
|
+
}
|
|
273
|
+
const f = form(ctx, 'union');
|
|
274
|
+
const members = t.of.map((m, i) => under(typeExpr(m, ctx, path + '.of.' + i), f));
|
|
275
|
+
return { text: f.open + members.join(' | ') + f.close, prec: f.prec };
|
|
276
|
+
}
|
|
277
|
+
// lit
|
|
278
|
+
if ('go' === ctx.family) {
|
|
279
|
+
const p = litPrim(t.of);
|
|
280
|
+
loss(ctx, path, 'lit', 'go has no literal type: ' + p);
|
|
281
|
+
return { text: prim(ctx, p), prec: 9 };
|
|
282
|
+
}
|
|
283
|
+
const f = form(ctx, 'lit');
|
|
284
|
+
const lits = t.of.map((v) => literal(v, ctx));
|
|
285
|
+
return { text: f.open + lits.join(' | ') + f.close, prec: f.prec };
|
|
286
|
+
}
|
|
287
|
+
// --- comments ----------------------------------------------------------
|
|
288
|
+
// A doc comment as pieces at a depth: the profile's doc form -- open,
|
|
289
|
+
// a prefix per line, close -- and the line form when a profile has no
|
|
290
|
+
// doc form. A deprecation is the last line, in the family's spelling.
|
|
291
|
+
function doc(d, at, ctx) {
|
|
292
|
+
if (null == d) {
|
|
293
|
+
return [];
|
|
294
|
+
}
|
|
295
|
+
const forms = ctx.profile.comment ?? {};
|
|
296
|
+
const f = forms.doc ?? forms.line ?? { prefix: '// ' };
|
|
297
|
+
const prefix = f.prefix ?? '';
|
|
298
|
+
const lines = String(d.text).split('\n');
|
|
299
|
+
if (null != d.deprecated) {
|
|
300
|
+
const dep = d.deprecated;
|
|
301
|
+
const note = [dep.msg, dep.use ? 'use ' + dep.use : '', dep.since ? 'since ' + dep.since : '']
|
|
302
|
+
.filter((s) => s).join('; ');
|
|
303
|
+
lines.push('go' === ctx.family ? 'Deprecated: ' + note : '@deprecated ' + note);
|
|
304
|
+
}
|
|
305
|
+
const out = [];
|
|
306
|
+
if (null != f.open) {
|
|
307
|
+
out.push(ln(at, f.open));
|
|
308
|
+
}
|
|
309
|
+
for (const l of lines) {
|
|
310
|
+
out.push(ln(at, (prefix + l).replace(/[ \t]+$/, '')));
|
|
311
|
+
}
|
|
312
|
+
if (null != f.close) {
|
|
313
|
+
out.push(ln(at, f.close));
|
|
314
|
+
}
|
|
315
|
+
return out;
|
|
316
|
+
}
|
|
317
|
+
// Every check a target's type system cannot enforce is tier-1 loss,
|
|
318
|
+
// one entry per check, addressed at the check.
|
|
319
|
+
function checks(list, path, ctx) {
|
|
320
|
+
(list ?? []).forEach((c, i) => {
|
|
321
|
+
loss(ctx, path + '.check.' + i, 'check', 'the check ' + c.c + ' is not enforced by the ' + ctx.profile.lang + ' type system');
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
// --- the unit header ---------------------------------------------------
|
|
325
|
+
// The path from one unit's directory to another unit, for a TypeScript
|
|
326
|
+
// import: `./other` beside, `../shared/x` across, the extension gone.
|
|
327
|
+
function relImport(from, to) {
|
|
328
|
+
const a = from.split('/').slice(0, -1);
|
|
329
|
+
const b = to.split('/');
|
|
330
|
+
const file = b.pop().replace(/\.[^.]*$/, '');
|
|
331
|
+
let i = 0;
|
|
332
|
+
while (i < a.length && i < b.length && a[i] === b[i]) {
|
|
333
|
+
i++;
|
|
334
|
+
}
|
|
335
|
+
const up = a.slice(i).map(() => '..');
|
|
336
|
+
const parts = [...up, ...b.slice(i), file];
|
|
337
|
+
return (0 === up.length ? './' : '') + parts.join('/');
|
|
338
|
+
}
|
|
339
|
+
// Imports derived from `{k:"ref", unit}` nodes, in order of first
|
|
340
|
+
// appearance, grouped by unit -- TypeScript only: a Go reference names
|
|
341
|
+
// a type in the same package.
|
|
342
|
+
function derivedImports(unit) {
|
|
343
|
+
const groups = [];
|
|
344
|
+
const visit = (t) => {
|
|
345
|
+
if (null == t || 'object' !== typeof t) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
if (Array.isArray(t)) {
|
|
349
|
+
t.forEach(visit);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
if ('ref' === t.k && 'string' === typeof t.unit) {
|
|
353
|
+
let g = groups.find((x) => x.from === t.unit);
|
|
354
|
+
if (undefined === g) {
|
|
355
|
+
g = { from: t.unit, names: [] };
|
|
356
|
+
groups.push(g);
|
|
357
|
+
}
|
|
358
|
+
if (!g.names.includes(t.name)) {
|
|
359
|
+
g.names.push(t.name);
|
|
360
|
+
}
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
for (const key of ['type', 'of', 'key', 'returns', 'fields', 'params']) {
|
|
364
|
+
visit(t[key]);
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
visit(unit.decls);
|
|
368
|
+
return groups;
|
|
369
|
+
}
|
|
370
|
+
// The banner from `code.source`, the package clause, and the imports:
|
|
371
|
+
// what stands before the declarations, each part followed by a blank.
|
|
372
|
+
function lowerHeader(unit, source, ctx) {
|
|
373
|
+
const parts = [];
|
|
374
|
+
const banner = ctx.profile.banner;
|
|
375
|
+
if (null != banner && null != source?.path) {
|
|
376
|
+
const prefix = ctx.profile.comment?.line?.prefix ?? '';
|
|
377
|
+
parts.push([prefix + banner.split('{path}').join(source.path)
|
|
378
|
+
.split('{hash}').join(source.hash ?? '')]);
|
|
379
|
+
}
|
|
380
|
+
if ('go' === ctx.family && 'string' === typeof unit.pkg) {
|
|
381
|
+
parts.push(['package ' + unit.pkg]);
|
|
382
|
+
}
|
|
383
|
+
const imports = [...(unit.imports ?? [])];
|
|
384
|
+
if ('typescript' === ctx.family) {
|
|
385
|
+
for (const g of derivedImports(unit)) {
|
|
386
|
+
imports.push({
|
|
387
|
+
from: relImport(unit.path, g.from),
|
|
388
|
+
names: g.names.map((n) => ident(n, 'record', ctx, '', false)),
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
if (0 < imports.length) {
|
|
393
|
+
const lines = [];
|
|
394
|
+
if ('go' === ctx.family) {
|
|
395
|
+
const spell = (im) => (null == im.alias ? '' : im.alias + ' ') + quote(im.from, ctx.profile);
|
|
396
|
+
if (1 === imports.length) {
|
|
397
|
+
lines.push('import ' + spell(imports[0]));
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
lines.push('import (');
|
|
401
|
+
for (const im of imports) {
|
|
402
|
+
lines.push(ln(1, spell(im)));
|
|
403
|
+
}
|
|
404
|
+
lines.push(')');
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
for (const im of imports) {
|
|
409
|
+
const from = quote(im.from, ctx.profile);
|
|
410
|
+
if (Array.isArray(im.names) && 0 < im.names.length) {
|
|
411
|
+
lines.push('import { ' + im.names.join(', ') + ' } from ' + from + ';');
|
|
412
|
+
}
|
|
413
|
+
else if (null != im.alias) {
|
|
414
|
+
lines.push('import * as ' + im.alias + ' from ' + from + ';');
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
lines.push('import ' + from + ';');
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
parts.push(lines);
|
|
422
|
+
}
|
|
423
|
+
// The parts, a blank between each two; the fold puts the blank
|
|
424
|
+
// after the last when a declaration follows.
|
|
425
|
+
const out = [];
|
|
426
|
+
parts.forEach((part, i) => {
|
|
427
|
+
if (0 < i) {
|
|
428
|
+
out.push(BLANK);
|
|
429
|
+
}
|
|
430
|
+
out.push(...part);
|
|
431
|
+
});
|
|
432
|
+
return out;
|
|
433
|
+
}
|
|
434
|
+
// --- declarations ------------------------------------------------------
|
|
435
|
+
// A body fragment's pieces, one level deeper: a bare string is a line
|
|
436
|
+
// at depth 1, a line or a raw keeps its shape at `at + 1`, a blank is
|
|
437
|
+
// a blank.
|
|
438
|
+
function nest(pieces) {
|
|
439
|
+
return pieces.map((p) => 'string' === typeof p ? ln(1, p)
|
|
440
|
+
: 'blank' === p.k ? p : { ...p, at: (p.at ?? 0) + 1 });
|
|
441
|
+
}
|
|
442
|
+
function params(list, ctx, path) {
|
|
443
|
+
return list.map((p, i) => {
|
|
444
|
+
const ppath = path + '.params.' + i;
|
|
445
|
+
const name = ident(p.name, 'param', ctx, ppath + '.name', true);
|
|
446
|
+
const type = typeExpr(p.type, ctx, ppath + '.type').text;
|
|
447
|
+
if ('go' === ctx.family) {
|
|
448
|
+
if (undefined !== p.default) {
|
|
449
|
+
loss(ctx, ppath + '.default', 'default', 'go has no default parameter: the default of ' + p.name + ' is dropped');
|
|
450
|
+
}
|
|
451
|
+
return name + ' ' + type;
|
|
452
|
+
}
|
|
453
|
+
return name + ': ' + type +
|
|
454
|
+
(undefined === p.default ? '' : ' = ' + literal(p.default, ctx));
|
|
455
|
+
}).join(', ');
|
|
456
|
+
}
|
|
457
|
+
// The lowering of one declaration to pieces. A `frag` and a `text`
|
|
458
|
+
// never arrive here: the fold takes those itself.
|
|
459
|
+
function lowerDecl(decl, path, ctx) {
|
|
460
|
+
const go = 'go' === ctx.family;
|
|
461
|
+
const out = [];
|
|
462
|
+
const k = decl.k;
|
|
463
|
+
if ('record' === k) {
|
|
464
|
+
const name = ident(decl.name, 'record', ctx, path + '.name', true);
|
|
465
|
+
out.push(...doc(decl.doc, 0, ctx));
|
|
466
|
+
out.push(go ? 'type ' + name + ' struct {' : 'export interface ' + name + ' {');
|
|
467
|
+
decl.fields.forEach((f, i) => {
|
|
468
|
+
const fpath = path + '.fields.' + i;
|
|
469
|
+
out.push(...doc(f.doc, 1, ctx));
|
|
470
|
+
const fname = ident(f.name, 'field', ctx, fpath + '.name', false);
|
|
471
|
+
const type = typeExpr(f.type, ctx, fpath + '.type');
|
|
472
|
+
checks(f.check, fpath, ctx);
|
|
473
|
+
const opt = true === f.optional;
|
|
474
|
+
if (go) {
|
|
475
|
+
const star = opt && 'opt' !== f.type.k ? '*' : '';
|
|
476
|
+
out.push(ln(1, fname + ' ' + star + type.text +
|
|
477
|
+
' `json:"' + f.name + (opt ? ',omitempty' : '') + '"`'));
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
out.push(ln(1, fname + (opt ? '?' : '') + ': ' + type.text + ';'));
|
|
481
|
+
}
|
|
482
|
+
if (undefined !== f.default) {
|
|
483
|
+
loss(ctx, fpath + '.default', 'default', 'a field default is not expressed by a ' +
|
|
484
|
+
(go ? 'go struct' : 'typescript interface'));
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
if (true === decl.open) {
|
|
488
|
+
if (go) {
|
|
489
|
+
loss(ctx, path + '.open', 'open', 'go has no open struct: extra keys are dropped');
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
out.push(ln(1, '[key: string]: unknown;'));
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
checks(decl.check, path, ctx);
|
|
496
|
+
out.push('}');
|
|
497
|
+
return out;
|
|
498
|
+
}
|
|
499
|
+
if ('enum' === k) {
|
|
500
|
+
const name = ident(decl.name, 'enum', ctx, path + '.name', true);
|
|
501
|
+
out.push(...doc(decl.doc, 0, ctx));
|
|
502
|
+
const members = decl.members;
|
|
503
|
+
if (go) {
|
|
504
|
+
const numeric = 0 < members.length &&
|
|
505
|
+
members.every((m) => 'number' === typeof m.value);
|
|
506
|
+
out.push('type ' + name + ' ' + prim(ctx, numeric ? 'int' : 'string'));
|
|
507
|
+
out.push(BLANK, 'const (');
|
|
508
|
+
members.forEach((m, i) => {
|
|
509
|
+
out.push(...doc(m.doc, 1, ctx));
|
|
510
|
+
const mname = name + ident(m.name, 'member', ctx, path + '.members.' + i + '.name', false);
|
|
511
|
+
const value = undefined === m.value ? quote(m.name, ctx.profile) : literal(m.value, ctx);
|
|
512
|
+
out.push(ln(1, mname + ' ' + name + ' = ' + value));
|
|
513
|
+
});
|
|
514
|
+
out.push(')');
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
out.push('export enum ' + name + ' {');
|
|
518
|
+
members.forEach((m, i) => {
|
|
519
|
+
out.push(...doc(m.doc, 1, ctx));
|
|
520
|
+
const mname = ident(m.name, 'member', ctx, path + '.members.' + i + '.name', false);
|
|
521
|
+
out.push(ln(1, mname + (undefined === m.value ? '' : ' = ' + literal(m.value, ctx)) + ','));
|
|
522
|
+
});
|
|
523
|
+
out.push('}');
|
|
524
|
+
}
|
|
525
|
+
return out;
|
|
526
|
+
}
|
|
527
|
+
if ('alias' === k) {
|
|
528
|
+
const name = ident(decl.name, 'alias', ctx, path + '.name', true);
|
|
529
|
+
out.push(...doc(decl.doc, 0, ctx));
|
|
530
|
+
const type = typeExpr(decl.type, ctx, path + '.type').text;
|
|
531
|
+
checks(decl.check, path, ctx);
|
|
532
|
+
out.push(go ? 'type ' + name + ' ' + type : 'export type ' + name + ' = ' + type + ';');
|
|
533
|
+
return out;
|
|
534
|
+
}
|
|
535
|
+
if ('const' === k) {
|
|
536
|
+
const name = ident(decl.name, 'const', ctx, path + '.name', true);
|
|
537
|
+
out.push(...doc(decl.doc, 0, ctx));
|
|
538
|
+
const type = null == decl.type ? undefined : typeExpr(decl.type, ctx, path + '.type').text;
|
|
539
|
+
const value = literal(decl.value, ctx);
|
|
540
|
+
out.push(go
|
|
541
|
+
? 'const ' + name + (undefined === type ? '' : ' ' + type) + ' = ' + value
|
|
542
|
+
: 'export const ' + name + (undefined === type ? '' : ': ' + type) + ' = ' + value + ';');
|
|
543
|
+
return out;
|
|
544
|
+
}
|
|
545
|
+
// func
|
|
546
|
+
const name = ident(decl.name, 'func', ctx, path + '.name', true);
|
|
547
|
+
out.push(...doc(decl.doc, 0, ctx));
|
|
548
|
+
const sig = params(decl.params, ctx, path);
|
|
549
|
+
const returns = null == decl.returns ? undefined : typeExpr(decl.returns, ctx, path + '.returns').text;
|
|
550
|
+
const abstract = 'abstract' === decl.body.k;
|
|
551
|
+
if (go) {
|
|
552
|
+
out.push('func ' + name + '(' + sig + ')' + (undefined === returns ? '' : ' ' + returns) + ' {');
|
|
553
|
+
if (abstract) {
|
|
554
|
+
loss(ctx, path + '.body', 'abstract', 'go has no abstract function: the body panics');
|
|
555
|
+
out.push(ln(1, 'panic(' + quote('abstract', ctx.profile) + ')'));
|
|
556
|
+
}
|
|
557
|
+
else {
|
|
558
|
+
out.push(...nest(decl.body.of));
|
|
559
|
+
}
|
|
560
|
+
out.push('}');
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
const ret = ': ' + (returns ?? 'void');
|
|
564
|
+
if (abstract) {
|
|
565
|
+
out.push('export declare function ' + name + '(' + sig + ')' + ret + ';');
|
|
566
|
+
}
|
|
567
|
+
else {
|
|
568
|
+
out.push('export function ' + name + '(' + sig + ')' + ret + ' {');
|
|
569
|
+
out.push(...nest(decl.body.of));
|
|
570
|
+
out.push('}');
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
return out;
|
|
574
|
+
}
|
|
575
|
+
//# sourceMappingURL=lower.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower.js","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"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"}
|
package/dist/lsp.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ declare const SEVERITY_ERROR = 1;
|
|
|
4
4
|
declare const SEVERITY_WARNING = 2;
|
|
5
5
|
declare const SEVERITY_INFORMATION = 3;
|
|
6
6
|
declare const SEVERITY_HINT = 4;
|
|
7
|
-
declare const LSP_VERSION = "0.
|
|
7
|
+
declare const LSP_VERSION = "0.58.0";
|
|
8
8
|
type Position = {
|
|
9
9
|
line: number;
|
|
10
10
|
character: number;
|
package/dist/lsp.js
CHANGED
|
@@ -451,7 +451,7 @@ exports.COMPLETION_KEYWORD = COMPLETION_KEYWORD;
|
|
|
451
451
|
const BUILTIN_FUNCS = [
|
|
452
452
|
'above', 'acyclic', 'add', 'below', 'close', 'copy', 'deprecate', 'div',
|
|
453
453
|
'each', 'emit', 'esc',
|
|
454
|
-
'filter', 'greatest',
|
|
454
|
+
'filter', 'form', 'greatest',
|
|
455
455
|
'hide', 'inverse', 'join', 'key', 'least', 'length', 'list', 'lower',
|
|
456
456
|
'map', 'match', 'max', 'min', 'mod', 'move', 'mul', 'must', 'neq', 'open',
|
|
457
457
|
'pack', 'path', 'pick',
|