aontu 0.60.0 → 0.62.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 +3 -3
- package/dist/agentsmd.d.ts +1 -0
- package/dist/agentsmd.js +7 -1
- package/dist/agentsmd.js.map +1 -1
- package/dist/allow.d.ts +23 -0
- package/dist/allow.js +230 -0
- package/dist/allow.js.map +1 -0
- package/dist/aontu.d.ts +4 -2
- package/dist/aontu.js +4 -2
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +10 -1
- package/dist/cli.js +1000 -47
- package/dist/cli.js.map +1 -1
- package/dist/format.d.ts +1 -0
- package/dist/format.js +154 -12
- package/dist/format.js.map +1 -1
- package/dist/helpdoc.d.ts +16 -0
- package/dist/helpdoc.js +59 -0
- package/dist/helpdoc.js.map +1 -0
- package/dist/hints.js +15 -2
- package/dist/hints.js.map +1 -1
- package/dist/lang.js +93 -40
- package/dist/lang.js.map +1 -1
- package/dist/lower.d.ts +3 -0
- package/dist/lower.js +3 -0
- package/dist/lower.js.map +1 -1
- package/dist/lsp.d.ts +1 -1
- package/dist/lsp.js +1 -1
- package/dist/lsp.js.map +1 -1
- package/dist/relation.d.ts +2 -0
- package/dist/relation.js +7 -1
- package/dist/relation.js.map +1 -1
- package/dist/render.js +26 -21
- package/dist/render.js.map +1 -1
- package/dist/sigdecl.js +1 -1
- package/dist/sigdecl.js.map +1 -1
- package/dist/std.js +112 -69
- package/dist/std.js.map +1 -1
- package/dist/template.d.ts +2 -1
- package/dist/template.js +51 -15
- package/dist/template.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/val/AggFuncVal.js +2 -2
- package/dist/val/AggFuncVal.js.map +1 -1
- package/dist/val/CmpFuncVal.d.ts +20 -0
- package/dist/val/CmpFuncVal.js +245 -0
- package/dist/val/CmpFuncVal.js.map +1 -0
- package/dist/val/EachFuncVal.d.ts +1 -2
- package/dist/val/EachFuncVal.js +15 -29
- package/dist/val/EachFuncVal.js.map +1 -1
- package/dist/val/FormFuncVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js +17 -1
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/NamerFuncVal.d.ts +12 -0
- package/dist/val/NamerFuncVal.js +176 -0
- package/dist/val/NamerFuncVal.js.map +1 -0
- package/dist/val/NilVal.js +29 -3
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/NomFuncVal.d.ts +12 -0
- package/dist/val/NomFuncVal.js +187 -0
- package/dist/val/NomFuncVal.js.map +1 -0
- package/dist/val/PackFuncVal.js +3 -3
- package/dist/val/PackFuncVal.js.map +1 -1
- package/dist/val/RefVal.js +1 -1
- package/dist/val/TranslateFuncVal.d.ts +12 -0
- package/dist/val/TranslateFuncVal.js +101 -0
- package/dist/val/TranslateFuncVal.js.map +1 -0
- package/dist/val/UpperFuncVal.js +17 -1
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/caserange.d.ts +3 -0
- package/dist/val/caserange.js +110 -0
- package/dist/val/caserange.js.map +1 -0
- package/dist/vet.d.ts +12 -0
- package/dist/vet.js +209 -1
- package/dist/vet.js.map +1 -1
- 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 +8 -0
- package/skill/init/check.sh +28 -0
- package/skill/init/data.aon +12 -0
- package/skill/init/model.aon +19 -0
- package/skill/tasks.md +151 -0
- package/src/agentsmd.ts +13 -2
- package/src/allow.ts +316 -0
- package/src/aontu.ts +10 -1
- package/src/cli.ts +1131 -53
- package/src/format.ts +191 -14
- package/src/helpdoc.ts +77 -0
- package/src/hints.ts +16 -2
- package/src/lang.ts +98 -42
- package/src/lower.ts +3 -3
- package/src/lsp.ts +1 -1
- package/src/relation.ts +21 -1
- package/src/render.ts +26 -21
- package/src/sigdecl.ts +1 -1
- package/src/std.ts +112 -69
- package/src/template.ts +55 -15
- package/src/val/AggFuncVal.ts +2 -2
- package/src/val/CmpFuncVal.ts +411 -0
- package/src/val/EachFuncVal.ts +49 -50
- package/src/val/LowerFuncVal.ts +18 -1
- package/src/val/NilVal.ts +29 -3
- package/src/val/NomFuncVal.ts +287 -0
- package/src/val/PackFuncVal.ts +3 -3
- package/src/val/RefVal.ts +1 -1
- package/src/val/TranslateFuncVal.ts +182 -0
- package/src/val/UpperFuncVal.ts +18 -1
- package/src/val/caserange.ts +115 -0
- package/src/vet.ts +287 -1
- package/src/val/FormFuncVal.ts +0 -119
package/dist/std.js
CHANGED
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.AONTU_MODELS = exports.AONTU_SCHEME = exports.STD_SOURCES = void 0;
|
|
5
|
-
// THE
|
|
6
|
-
// docs/capability-review/g4-identity-relations.md): `@"
|
|
7
|
-
// served from the engine itself — no filesystem, no package
|
|
8
|
-
// — so a document may use it under every include capability
|
|
9
|
-
// `none`, and the hermeticity posture is not widened by a source
|
|
10
|
-
// never leaves the process.
|
|
5
|
+
// THE LANGUAGE-SUPPLIED MODELS (G4 phase 4,
|
|
6
|
+
// docs/capability-review/g4-identity-relations.md): `@"aontu:system"`
|
|
7
|
+
// is served from the engine itself — no filesystem, no package
|
|
8
|
+
// resolution — so a document may use it under every include capability
|
|
9
|
+
// except `none`, and the hermeticity posture is not widened by a source
|
|
10
|
+
// that never leaves the process.
|
|
11
|
+
//
|
|
12
|
+
// EVERY name here carries the `aontu:` prefix (ADR-028): a
|
|
13
|
+
// language-supplied schema is spelled one way, and the scheme is what
|
|
14
|
+
// makes it unshadowable. There is no second, bare-name spelling.
|
|
11
15
|
//
|
|
12
16
|
// The TEXT is the shared artifact: go/std.go carries the same bytes,
|
|
13
|
-
// and test/spec/
|
|
17
|
+
// and test/spec/aontu-system.tsv pins its canon and its canon-hash in
|
|
14
18
|
// both engines, so the two copies cannot drift without a red suite.
|
|
15
19
|
// It carries no backtick for that reason: one string literal per port,
|
|
16
20
|
// and Go's raw string has no escape.
|
|
17
|
-
const STD_SYSTEM = `#
|
|
21
|
+
const STD_SYSTEM = `# aontu:system --- the SYSTEM VOCABULARY (G4 phase 4). Ports, components
|
|
18
22
|
# and relations need no syntax: they are schemas. Everything here is
|
|
19
23
|
# ordinary unification --- conjunction, spreads, marks, defaults ---
|
|
20
24
|
# so the vocabulary costs the language nothing, and an author who wants
|
|
@@ -25,48 +29,74 @@ const STD_SYSTEM = `# std/system --- the SYSTEM VOCABULARY (G4 phase 4). Ports,
|
|
|
25
29
|
# identity and version makes "v1 and v2 describe the same entity"
|
|
26
30
|
# inexpressible.
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
aontu: System: {
|
|
30
33
|
# One end of a connection.
|
|
31
|
-
Port: type({
|
|
32
|
-
direction: *in | out | inout
|
|
33
|
-
protocol?: string
|
|
34
|
-
})
|
|
34
|
+
Port: type({ direction:*in | out | inout protocol?:string })
|
|
35
35
|
|
|
36
36
|
# A node with ports. Where a Component sits in the tree is what it
|
|
37
37
|
# is a component OF -- containment is the document's own structure
|
|
38
38
|
# and needs no mark of its own.
|
|
39
|
-
Component: type({
|
|
40
|
-
ports?: {&: $.std.Port}
|
|
41
|
-
})
|
|
39
|
+
Component: type({ ports?:{ &: $.aontu.System.Port } })
|
|
42
40
|
|
|
43
41
|
# A component that is a service. Written out rather than as
|
|
44
|
-
# $.
|
|
42
|
+
# $.aontu.System.Component & {kind: service}: a reference from one member of
|
|
45
43
|
# this file to another does not survive being INCLUDED into a
|
|
46
44
|
# document (the marks the include carries make the referring member
|
|
47
45
|
# unusable), so the vocabulary states each schema on its own.
|
|
48
|
-
Service: type({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
Service: type({ kind:service ports?:{ &: $.aontu.System.Port } })
|
|
47
|
+
|
|
48
|
+
# A semantic version (semver.org 2.0.0) as an ORDERED TUPLE: major,
|
|
49
|
+
# minor, patch, pre-release. A list and not a dotted string, because a
|
|
50
|
+
# version is COMPARED and the comparison runs component by component
|
|
51
|
+
# from the left: "1.10.0" sorts below "1.9.0" as text. A list and not
|
|
52
|
+
# a map, because a map has no order of its own to compare along.
|
|
53
|
+
#
|
|
54
|
+
# THE TAIL DEFAULTS, so [1] is [1 0 0 ""] and [1 2] is [1 2 0 ""].
|
|
55
|
+
# A major-only version is the common case and should cost one token.
|
|
56
|
+
#
|
|
57
|
+
# LEADING ZEROES ARE IMPOSSIBLE HERE rather than merely forbidden:
|
|
58
|
+
# the numeric parts are integers, and 01 is not a distinct integer
|
|
59
|
+
# literal. The spec's "MUST NOT contain leading zeroes" needs no rule.
|
|
60
|
+
#
|
|
61
|
+
# THE PRE-RELEASE CHECK IS PARTIAL, and deliberately says so. The
|
|
62
|
+
# spec's grammar is dot-separated identifiers, each non-empty, each
|
|
63
|
+
# [0-9A-Za-z-], numeric ones without leading zeroes -- which as a
|
|
64
|
+
# regex is a quantified group containing a quantifier, and re()
|
|
65
|
+
# refuses that shape outright (constraint_pattern) because it
|
|
66
|
+
# backtracks exponentially. So the alphabet is checked and the
|
|
67
|
+
# STRUCTURE is not: "beta_1" is refused, "alpha..1" and "01" are not.
|
|
68
|
+
# Carrying the pre-release as a LIST of identifiers would check it in
|
|
69
|
+
# full, one identifier per element, and is the change to make if that
|
|
70
|
+
# matters more than [1 0 0 ""] does.
|
|
71
|
+
#
|
|
72
|
+
# BUILD METADATA IS NOT CARRIED. The spec has it, and the spec also
|
|
73
|
+
# says it MUST be ignored when determining precedence -- so a type
|
|
74
|
+
# whose purpose is comparison is the wrong place for it.
|
|
75
|
+
Semver: type(
|
|
76
|
+
[
|
|
77
|
+
integer & min(0)
|
|
78
|
+
*0 | (integer & min(0))
|
|
79
|
+
*0 | (integer & min(0))
|
|
80
|
+
*"" | (string & re("^[0-9A-Za-z.-]+$"))
|
|
81
|
+
] & length(4)
|
|
82
|
+
)
|
|
53
83
|
# (The Relation schema that used to sit here is retired with the
|
|
54
84
|
# relations: magic key, RELATIONS.0.md P2: a relation is declared
|
|
55
85
|
# by the graph atoms at its field -- rel(t) & acyclic() &
|
|
56
86
|
# inverse(name) -- and the target half is rel(t)'s flow.)
|
|
57
87
|
}
|
|
58
88
|
`;
|
|
59
|
-
const STD_VIEW = `#
|
|
89
|
+
const STD_VIEW = `# aontu:view --- the FIGURE VOCABULARY (VIEWS.0.md, "6. The view
|
|
60
90
|
# document"). A view document declares its figures as data, and a
|
|
61
91
|
# declaration is just a map: this is the schema for one, so a typo is
|
|
62
92
|
# refused where every other mistake in an aontu document is refused --
|
|
63
93
|
# at evaluation, by unification -- rather than by the verb that reads
|
|
64
94
|
# it afterwards.
|
|
65
95
|
#
|
|
66
|
-
# @"
|
|
96
|
+
# @"aontu:view"
|
|
67
97
|
# @"./system.aon"
|
|
68
98
|
#
|
|
69
|
-
# views: {&: $.
|
|
99
|
+
# views: {&: $.aontu.View.Figure} & {
|
|
70
100
|
# arch: {kind: matrix, order: partition, out: "docs/arch.dsm.txt"}
|
|
71
101
|
# }
|
|
72
102
|
#
|
|
@@ -80,8 +110,7 @@ const STD_VIEW = `# std/view --- the FIGURE VOCABULARY (VIEWS.0.md, "6. The view
|
|
|
80
110
|
# canon-hash. This file carries no backtick: it is one string literal
|
|
81
111
|
# per port, and Go raw strings have no escape.
|
|
82
112
|
|
|
83
|
-
|
|
84
|
-
|
|
113
|
+
aontu: View: {
|
|
85
114
|
# One declared figure. The kind says what to draw and out says where
|
|
86
115
|
# it belongs; everything else narrows the drawing, and each option
|
|
87
116
|
# belongs to the kinds that read it.
|
|
@@ -183,6 +212,7 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
183
212
|
k: "prim"
|
|
184
213
|
prim: "string" | "int" | "bigint" | "float" | "decimal" | "bool" | "null" | "any"
|
|
185
214
|
})
|
|
215
|
+
|
|
186
216
|
%ref = close({ k:"ref" name:%name unit?:string })
|
|
187
217
|
%leaf = %prim | %ref | %text
|
|
188
218
|
|
|
@@ -205,6 +235,7 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
205
235
|
})
|
|
206
236
|
|
|
207
237
|
%member = close({ name:%name value?:string | number doc?:%doc x?:{} })
|
|
238
|
+
|
|
208
239
|
%param = close({
|
|
209
240
|
name: %name
|
|
210
241
|
type: %type
|
|
@@ -218,12 +249,14 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
218
249
|
%inline = string & re("^[^\n\r]*$") | %ref
|
|
219
250
|
%line = close({ k:"line" at:*0 | integer & min(0) & max(64) of:[&: %inline] })
|
|
220
251
|
%blank = close({ k:"blank" n:*1 | integer & min(1) & max(16) })
|
|
252
|
+
|
|
221
253
|
%raw = close({
|
|
222
254
|
k: "raw"
|
|
223
255
|
at: *0 | integer & min(0) & max(64)
|
|
224
256
|
text: string
|
|
225
257
|
reindent: *true | boolean
|
|
226
258
|
})
|
|
259
|
+
|
|
227
260
|
%piece = %line | %blank | %raw | string & re("^[^\n\r]*$")
|
|
228
261
|
%frag = close({ k:"frag" of:[&: %piece] })
|
|
229
262
|
%body = %frag | close({ k:"abstract" })
|
|
@@ -238,7 +271,9 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
238
271
|
check?: [&: %check]
|
|
239
272
|
x?: {}
|
|
240
273
|
})
|
|
274
|
+
|
|
241
275
|
%enum = close({ k:"enum" name:%name doc?:%doc members:[&: %member] x?:{} })
|
|
276
|
+
|
|
242
277
|
%alias = close({
|
|
243
278
|
k: "alias"
|
|
244
279
|
name: %name
|
|
@@ -247,6 +282,7 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
247
282
|
check?: [&: %check]
|
|
248
283
|
x?: {}
|
|
249
284
|
})
|
|
285
|
+
|
|
250
286
|
%const = close({
|
|
251
287
|
k: "const"
|
|
252
288
|
name: %name
|
|
@@ -255,6 +291,7 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
255
291
|
value: string | number | boolean | null
|
|
256
292
|
x?: {}
|
|
257
293
|
})
|
|
294
|
+
|
|
258
295
|
%func = close({
|
|
259
296
|
k: "func"
|
|
260
297
|
name: %name
|
|
@@ -287,7 +324,7 @@ const STD_CODE = String.raw `# aontu:code --- THE OUTPUT VOCABULARY. An aontu tr
|
|
|
287
324
|
|
|
288
325
|
%source = close({ path?:string hash?:string & re("^aon1-[A-Za-z0-9_-]+$") })
|
|
289
326
|
|
|
290
|
-
|
|
327
|
+
aontu: Code: close({ source?:%source units:[&: %unit] })
|
|
291
328
|
`;
|
|
292
329
|
const STD_PROFILE = String.raw `# aontu:profile --- THE PROFILE VOCABULARY. A profile is the data
|
|
293
330
|
# 'aontu render' applies to a unit of one language, and it is DATA and
|
|
@@ -359,7 +396,7 @@ const STD_PROFILE = String.raw `# aontu:profile --- THE PROFILE VOCABULARY. A pr
|
|
|
359
396
|
banner?: string
|
|
360
397
|
})
|
|
361
398
|
|
|
362
|
-
|
|
399
|
+
aontu: Profile: %profile
|
|
363
400
|
`;
|
|
364
401
|
// The text profile (RENDER.0.md D5): the profile of a fragment-only
|
|
365
402
|
// unit, and the fallback of every language without a lowering.
|
|
@@ -374,7 +411,7 @@ const STD_LANG_TEXT = String.raw `# aontu:lang/text --- THE TEXT PROFILE. The pr
|
|
|
374
411
|
|
|
375
412
|
@"aontu:profile"
|
|
376
413
|
|
|
377
|
-
|
|
414
|
+
aontu: Profile: { lang:"text" indent:{ unit:" " width:2 } }
|
|
378
415
|
`;
|
|
379
416
|
// THE TYPESCRIPT PROFILE (docs/design/RENDER.0.md D5, P5): the data the
|
|
380
417
|
// typescript lowering renders under -- two spaces, the JSDoc forms, the
|
|
@@ -394,7 +431,7 @@ const STD_LANG_TYPESCRIPT = String.raw `# aontu:lang/typescript --- THE TYPESCRI
|
|
|
394
431
|
|
|
395
432
|
@"aontu:profile"
|
|
396
433
|
|
|
397
|
-
|
|
434
|
+
aontu: Profile: {
|
|
398
435
|
lang: "typescript"
|
|
399
436
|
lowering: "typescript"
|
|
400
437
|
indent: { unit:" " width:2 }
|
|
@@ -402,13 +439,15 @@ profile: {
|
|
|
402
439
|
comment: block: { open:"/*" prefix:" * " close:" */" }
|
|
403
440
|
comment: doc: { open:"/**" prefix:" * " close:" */" }
|
|
404
441
|
str: quote: "\""
|
|
405
|
-
str: escape:
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
442
|
+
str: escape: {
|
|
443
|
+
"8": "\\b"
|
|
444
|
+
"9": "\\t"
|
|
445
|
+
"10": "\\n"
|
|
446
|
+
"12": "\\f"
|
|
447
|
+
"13": "\\r"
|
|
448
|
+
"34": "\\\""
|
|
449
|
+
"92": "\\\\"
|
|
450
|
+
}
|
|
412
451
|
ident: {
|
|
413
452
|
chars: "ascii-word"
|
|
414
453
|
reserved: [
|
|
@@ -469,14 +508,16 @@ profile: {
|
|
|
469
508
|
case: alias: "pascal"
|
|
470
509
|
acronyms: []
|
|
471
510
|
}
|
|
472
|
-
types: prim:
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
511
|
+
types: prim: {
|
|
512
|
+
string: "string"
|
|
513
|
+
int: "number"
|
|
514
|
+
bigint: "bigint"
|
|
515
|
+
float: "number"
|
|
516
|
+
decimal: "string"
|
|
517
|
+
bool: "boolean"
|
|
518
|
+
null: "null"
|
|
519
|
+
any: "unknown"
|
|
520
|
+
}
|
|
480
521
|
types: list: { close:"[]" childPrec:2 }
|
|
481
522
|
types: map: { open:"Record<" close:">" }
|
|
482
523
|
types: opt: { close:" | null" prec:1 childPrec:2 }
|
|
@@ -503,21 +544,23 @@ const STD_LANG_GO = String.raw `# aontu:lang/go --- THE GO PROFILE. The data a u
|
|
|
503
544
|
|
|
504
545
|
@"aontu:profile"
|
|
505
546
|
|
|
506
|
-
|
|
547
|
+
aontu: Profile: {
|
|
507
548
|
lang: "go"
|
|
508
549
|
lowering: "go"
|
|
509
550
|
indent: { unit:"\t" width:1 }
|
|
510
551
|
comment: { line:prefix:"// " block:{ open:"/*" close:"*/" } doc:prefix:"// " }
|
|
511
552
|
str: quote: "\""
|
|
512
|
-
str: escape:
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
553
|
+
str: escape: {
|
|
554
|
+
"7": "\\a"
|
|
555
|
+
"8": "\\b"
|
|
556
|
+
"9": "\\t"
|
|
557
|
+
"10": "\\n"
|
|
558
|
+
"11": "\\v"
|
|
559
|
+
"12": "\\f"
|
|
560
|
+
"13": "\\r"
|
|
561
|
+
"34": "\\\""
|
|
562
|
+
"92": "\\\\"
|
|
563
|
+
}
|
|
521
564
|
ident: {
|
|
522
565
|
chars: "ascii-word"
|
|
523
566
|
reserved: [
|
|
@@ -596,14 +639,16 @@ profile: {
|
|
|
596
639
|
"XSS"
|
|
597
640
|
]
|
|
598
641
|
}
|
|
599
|
-
types: prim:
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
642
|
+
types: prim: {
|
|
643
|
+
string: "string"
|
|
644
|
+
int: "int64"
|
|
645
|
+
bigint: "string"
|
|
646
|
+
float: "float64"
|
|
647
|
+
decimal: "string"
|
|
648
|
+
bool: "bool"
|
|
649
|
+
null: "any"
|
|
650
|
+
any: "any"
|
|
651
|
+
}
|
|
607
652
|
types: list: open: "[]"
|
|
608
653
|
types: map: open: "map["
|
|
609
654
|
types: opt: open: "*"
|
|
@@ -611,10 +656,8 @@ profile: {
|
|
|
611
656
|
}
|
|
612
657
|
`;
|
|
613
658
|
exports.STD_SOURCES = {
|
|
614
|
-
'
|
|
615
|
-
'
|
|
616
|
-
'std/view': STD_VIEW,
|
|
617
|
-
'std/view.aon': STD_VIEW,
|
|
659
|
+
'aontu:system': STD_SYSTEM,
|
|
660
|
+
'aontu:view': STD_VIEW,
|
|
618
661
|
'aontu:code': STD_CODE,
|
|
619
662
|
'aontu:lang/go': STD_LANG_GO,
|
|
620
663
|
'aontu:lang/text': STD_LANG_TEXT,
|
package/dist/std.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"std.js","sourceRoot":"","sources":["../src/std.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAEpD,
|
|
1
|
+
{"version":3,"file":"std.js","sourceRoot":"","sources":["../src/std.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAEpD,4CAA4C;AAC5C,sEAAsE;AACtE,+DAA+D;AAC/D,uEAAuE;AACvE,wEAAwE;AACxE,iCAAiC;AACjC,EAAE;AACF,2DAA2D;AAC3D,sEAAsE;AACtE,iEAAiE;AACjE,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,oEAAoE;AACpE,uEAAuE;AACvE,qCAAqC;AAErC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElB,CAAA;AAGD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEhB,CAAA;AAGD,4DAA4D;AAC5D,uEAAuE;AACvE,sEAAsE;AACtE,sEAAsE;AACtE,sEAAsE;AACtE,8DAA8D;AAC9D,EAAE;AACF,mEAAmE;AACnE,iEAAiE;AACjE,sEAAsE;AACtE,oEAAoE;AACpE,gEAAgE;AAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgK1B,CAAA;AAGD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuE7B,CAAA;AAGD,oEAAoE;AACpE,+DAA+D;AAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;CAY/B,CAAA;AAED,wEAAwE;AACxE,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,qEAAqE;AACrE,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GrC,CAAA;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,uEAAuE;AACvE,4DAA4D;AAC5D,gDAAgD;AAChD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2H7B,CAAA;AAEY,QAAA,WAAW,GAA2B;IACjD,cAAc,EAAE,UAAU;IAC1B,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,WAAW;IAC5B,iBAAiB,EAAE,aAAa;IAChC,uBAAuB,EAAE,mBAAmB;IAC5C,eAAe,EAAE,WAAW;CAC7B,CAAA;AAED,sEAAsE;AACtE,qEAAqE;AACrE,WAAW;AACE,QAAA,YAAY,GAAG,QAAQ,CAAA;AACvB,QAAA,YAAY,GACvB,MAAM,CAAC,IAAI,CAAC,QAAA,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAA,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA"}
|
package/dist/template.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ declare const DEFAULT_MARKER = "//-";
|
|
|
2
2
|
declare function markerFor(path: string): string;
|
|
3
3
|
declare function desugarTemplate(src: string, marker?: string): string;
|
|
4
4
|
declare function resugarTemplate(src: string, marker?: string): string;
|
|
5
|
-
|
|
5
|
+
declare function templateOutputs(src: string, marker: string): boolean[];
|
|
6
|
+
export { desugarTemplate, resugarTemplate, templateOutputs, markerFor, DEFAULT_MARKER, };
|
package/dist/template.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.DEFAULT_MARKER = void 0;
|
|
5
5
|
exports.desugarTemplate = desugarTemplate;
|
|
6
6
|
exports.resugarTemplate = resugarTemplate;
|
|
7
|
+
exports.templateOutputs = templateOutputs;
|
|
7
8
|
exports.markerFor = markerFor;
|
|
8
9
|
// THE TEMPLATE SURFACE (docs/design/TEMPLATE.0.md; RENDER.0.md P8).
|
|
9
10
|
// A generator written in the TARGET's own syntax: a marked line is
|
|
@@ -28,12 +29,22 @@ exports.markerFor = markerFor;
|
|
|
28
29
|
// comment, and derives for a language this table has never seen: the
|
|
29
30
|
// caller passes the token.
|
|
30
31
|
//
|
|
31
|
-
// A MARKER IS RECOGNISED AFTER LEADING WHITESPACE AND
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
// indented two spaces in the
|
|
35
|
-
//
|
|
36
|
-
// the
|
|
32
|
+
// A MARKER IS RECOGNISED AFTER LEADING WHITESPACE, AND THE INDENTATION
|
|
33
|
+
// THE RESUGARING WRITES IS THE AONTU'S (D2, amended 2026-09-07). An
|
|
34
|
+
// output line is verbatim -- a line indented two spaces in the template
|
|
35
|
+
// is indented two spaces in the generated file (D7) -- and that is the
|
|
36
|
+
// half a reader of the TARGET needs. The other half is the document:
|
|
37
|
+
// the marker lines carry a tree, and a tree nobody can see the shape of
|
|
38
|
+
// is the one thing this surface took away. So the marker stands at the
|
|
39
|
+
// left margin and the aontu is indented AFTER it, which `aontu fmt`
|
|
40
|
+
// (FMT.0.md M-BM-'3.14) is what writes.
|
|
41
|
+
//
|
|
42
|
+
// Reading is unchanged and stays generous: a marker after leading
|
|
43
|
+
// whitespace is a marker, and its own indentation still counts toward
|
|
44
|
+
// the aontu it carries, so a template written the other way desugars to
|
|
45
|
+
// the same document. What changes is the spelling the round trip
|
|
46
|
+
// answers, and `template --check` names the difference as the drift it
|
|
47
|
+
// is.
|
|
37
48
|
//
|
|
38
49
|
// THE SUGAR IS THE FIXPOINT OF THE TWO TRANSFORMS (D6), and that is
|
|
39
50
|
// the whole of the resugaring's safety. A canonical line that looks
|
|
@@ -121,13 +132,17 @@ function indentOf(line) {
|
|
|
121
132
|
}
|
|
122
133
|
return i;
|
|
123
134
|
}
|
|
124
|
-
// The line without its
|
|
125
|
-
function
|
|
135
|
+
// The line without its trailing spaces and tabs.
|
|
136
|
+
function trimEnd(line) {
|
|
126
137
|
let end = line.length;
|
|
127
138
|
while (0 < end && (' ' === line[end - 1] || '\t' === line[end - 1])) {
|
|
128
139
|
end--;
|
|
129
140
|
}
|
|
130
|
-
return line.slice(
|
|
141
|
+
return line.slice(0, end);
|
|
142
|
+
}
|
|
143
|
+
// The line without its indentation or its trailing spaces and tabs.
|
|
144
|
+
function trimLine(line) {
|
|
145
|
+
return trimEnd(line).slice(indentOf(line));
|
|
131
146
|
}
|
|
132
147
|
function readLine(line, marker) {
|
|
133
148
|
const cut = indentOf(line);
|
|
@@ -140,12 +155,15 @@ function readLine(line, marker) {
|
|
|
140
155
|
// The block form's closer is part of the marker, not of the aontu.
|
|
141
156
|
// A block marker line that never closes is not a marker line: the
|
|
142
157
|
// language's own parser would not read it as a comment either.
|
|
158
|
+
// Only the TRAILING space goes: what stands between the opener and
|
|
159
|
+
// the aontu is the aontu's indentation, exactly as it is for a line
|
|
160
|
+
// marker, and the one-space rule below takes the marker's own.
|
|
143
161
|
if (isBlock(marker)) {
|
|
144
162
|
const end = body.lastIndexOf(BLOCK_CLOSE);
|
|
145
163
|
if (end < 0) {
|
|
146
164
|
return { marker: false, indent: '', text: line };
|
|
147
165
|
}
|
|
148
|
-
body =
|
|
166
|
+
body = trimEnd(body.slice(0, end));
|
|
149
167
|
}
|
|
150
168
|
// ONE SPACE AFTER THE MARKER IS THE MARKER'S, so `//- x: 1` carries
|
|
151
169
|
// `x: 1` and the resugaring writes the space back. A marker written
|
|
@@ -246,12 +264,30 @@ function resugarTemplate(src, marker) {
|
|
|
246
264
|
if (undefined !== target && desugarTemplate(target, mark) === trimLine(line)) {
|
|
247
265
|
return target;
|
|
248
266
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
267
|
+
// THE MARKER STANDS AT THE LEFT MARGIN and the line's indentation
|
|
268
|
+
// is written after it, so the aontu's own shape is on the page.
|
|
269
|
+
// The one space is the marker's, which the reading takes back.
|
|
270
|
+
const text = trimEnd(line);
|
|
252
271
|
const close = isBlock(mark) ? ' ' + BLOCK_CLOSE : '';
|
|
253
|
-
return '' === text ?
|
|
272
|
+
return '' === text ? mark + close : mark + ' ' + text + close;
|
|
254
273
|
});
|
|
255
274
|
return out.join('\n') + (tail ? '\n' : '');
|
|
256
|
-
}
|
|
275
|
+
}
|
|
276
|
+
// WHICH LINES OF THE DESUGARED DOCUMENT ARE THE TARGET'S. The
|
|
277
|
+
// desugaring is line for line, so this is one flag per line of what
|
|
278
|
+
// `desugarTemplate` returns: true where the template's line was not a
|
|
279
|
+
// marker, and so where the document's line is one quoted line of the
|
|
280
|
+
// generated file.
|
|
281
|
+
//
|
|
282
|
+
// `aontu fmt` reads it (FMT.0.md M-BM-'3.14) to hold those lines on lines of
|
|
283
|
+
// their own. A body element is a string like any other, and the packing
|
|
284
|
+
// budget would put three of them on one line -- which is aontu where
|
|
285
|
+
// three lines of output were, and a generator that writes them as one.
|
|
286
|
+
function templateOutputs(src, marker) {
|
|
287
|
+
const lines = src.split('\n');
|
|
288
|
+
if (1 < lines.length && '' === lines[lines.length - 1]) {
|
|
289
|
+
lines.pop();
|
|
290
|
+
}
|
|
291
|
+
return lines.map((line) => !readLine(line, marker).marker);
|
|
292
|
+
} /* node:coverage ignore next 9 */
|
|
257
293
|
//# sourceMappingURL=template.js.map
|
package/dist/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|