@genocode/core 0.2.0 → 0.3.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.
@@ -40,6 +40,15 @@ export declare function morph(a: GeneSet, b: GeneSet, t: number): {
40
40
  * line to write into, so it isn't saved.
41
41
  */
42
42
  export declare function writeGenes(program: CheckResult, values: GeneValues): string;
43
+ /**
44
+ * The edits that write each changed gene's value into the program's text, in order, without
45
+ * laying anything else out. Editors apply them so the rest of the text and the cursor stay put.
46
+ */
47
+ export declare function geneEdits(program: CheckResult, values: GeneValues): {
48
+ start: number;
49
+ end: number;
50
+ text: string;
51
+ }[];
43
52
  /** A gene value written readably, and still within the gene's range. */
44
53
  export declare function geneLiteral(g: GeneInfo, v: Value): string;
45
54
  //# sourceMappingURL=genetics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"genetics.d.ts","sourceRoot":"","sources":["../src/genetics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAY,KAAK,QAAQ,EAAe,MAAM,YAAY,CAAC;AAClE,OAAO,EAML,KAAK,KAAK,EAEX,MAAM,aAAa,CAAC;AAErB,+FAA+F;AAC/F,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEpD,iFAAiF;AACjF,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAE5F;AAID,yCAAyC;AACzC,wBAAgB,MAAM,CACpB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,GACrB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAUpB;AAqED,wEAAwE;AACxE,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAY1F;AA4DD;;;GAGG;AACH,wBAAgB,KAAK,CACnB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,MAAM,GACR;IAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAgBjD;AAsBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAc3E;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAkBzD"}
1
+ {"version":3,"file":"genetics.d.ts","sourceRoot":"","sources":["../src/genetics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAY,KAAK,QAAQ,EAAe,MAAM,YAAY,CAAC;AAClE,OAAO,EAML,KAAK,KAAK,EAEX,MAAM,aAAa,CAAC;AAErB,+FAA+F;AAC/F,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEpD,iFAAiF;AACjF,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAE5F;AAID,yCAAyC;AACzC,wBAAgB,MAAM,CACpB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,GACrB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAUpB;AAqED,wEAAwE;AACxE,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAY1F;AA4DD;;;GAGG;AACH,wBAAgB,KAAK,CACnB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,MAAM,GACR;IAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAgBjD;AAsBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAQ3E;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAShD;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAkBzD"}
package/dist/genetics.js CHANGED
@@ -193,6 +193,20 @@ function morphGene(g, x, y, t) {
193
193
  * line to write into, so it isn't saved.
194
194
  */
195
195
  export function writeGenes(program, values) {
196
+ const edits = geneEdits(program, values);
197
+ if (edits.length === 0)
198
+ return program.text;
199
+ let text = program.text;
200
+ for (const e of [...edits].reverse()) {
201
+ text = text.slice(0, e.start) + e.text + text.slice(e.end);
202
+ }
203
+ return formatText(text).text ?? text;
204
+ }
205
+ /**
206
+ * The edits that write each changed gene's value into the program's text, in order, without
207
+ * laying anything else out. Editors apply them so the rest of the text and the cursor stay put.
208
+ */
209
+ export function geneEdits(program, values) {
196
210
  const edits = [];
197
211
  for (const g of program.genes) {
198
212
  const v = values.get(g.fullName);
@@ -201,13 +215,7 @@ export function writeGenes(program, values) {
201
215
  const span = g.decl.value.span;
202
216
  edits.push({ start: span.start, end: span.end, text: geneLiteral(g, v) });
203
217
  }
204
- if (edits.length === 0)
205
- return program.text;
206
- let text = program.text;
207
- for (const e of edits.sort((p, q) => q.start - p.start)) {
208
- text = text.slice(0, e.start) + e.text + text.slice(e.end);
209
- }
210
- return formatText(text).text ?? text;
218
+ return edits.sort((p, q) => p.start - q.start);
211
219
  }
212
220
  /** A gene value written readably, and still within the gene's range. */
213
221
  export function geneLiteral(g, v) {
@@ -1 +1 @@
1
- {"version":3,"file":"genetics.js","sourceRoot":"","sources":["../src/genetics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genetics.js","sourceRoot":"","sources":["../src/genetics.ts"],"names":[],"mappings":"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"}
package/dist/help.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ import type { CheckResult } from "./checker.js";
2
+ import type { GeneInfo } from "./genes.js";
3
+ import type { Span } from "./source.js";
4
+ export interface Help {
5
+ /** How it's written, such as `clamp(x, lo, hi)`. */
6
+ title: string;
7
+ /** What it does, in a sentence or two. */
8
+ text: string;
9
+ /** The section of docs/LANGUAGE.md that explains it, such as `18.1`. */
10
+ section: string;
11
+ }
12
+ export type CompletionKind = "keyword" | "function" | "constant" | "input" | "gene" | "part" | "variable" | "member";
13
+ export interface Completion {
14
+ label: string;
15
+ kind: CompletionKind;
16
+ /** A short note shown beside the label. */
17
+ detail: string;
18
+ }
19
+ /** The built-in functions. */
20
+ export declare const FUNCTION_HELP: ReadonlyMap<string, Help>;
21
+ /** The built-in constants: numbers, vectors, colours, shapes and pattern kinds. */
22
+ export declare function constantHelp(name: string): Help | undefined;
23
+ /** Keywords, and the inputs `time`, `beat`, `music` and `turtle`. */
24
+ export declare const KEYWORD_HELP: ReadonlyMap<string, Help>;
25
+ /** The parts of `music` and `turtle`. */
26
+ export declare const MEMBER_HELP: ReadonlyMap<string, ReadonlyMap<string, Help>>;
27
+ /** A gene's range in words, such as `3 to 16, steps of 1`. */
28
+ export declare function geneRange(g: GeneInfo): string;
29
+ /** Help for the word at `offset`, and where that word is. */
30
+ export declare function helpAt(program: CheckResult, offset: number): {
31
+ span: Span;
32
+ help: Help;
33
+ } | undefined;
34
+ /** What can be typed at `offset`: everything in scope, built-ins and keywords. */
35
+ export declare function completionsAt(program: CheckResult, offset: number): Completion[];
36
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,IAAI;IACnB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GACxB,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE1F,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,8BAA8B;AAC9B,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAkHlD,CAAC;AAwBH,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAa3D;AAED,qEAAqE;AACrE,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CA2HjD,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CA+BrE,CAAC;AAEH,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAU7C;AA6HD,6DAA6D;AAC7D,wBAAgB,MAAM,CACpB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACb;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG,SAAS,CAmBxC;AAID,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAoChF"}
package/dist/help.js ADDED
@@ -0,0 +1,431 @@
1
+ // Help for editors: what a name means when you point at it, and which names can be typed where.
2
+ // The text follows docs/LANGUAGE.md, and help.test.ts keeps every built-in covered.
3
+ import { BUILTIN_CONSTANTS } from "./builtins.js";
4
+ import { NAMED_COLOURS } from "./colour.js";
5
+ import { KEYWORDS, lex } from "./lexer.js";
6
+ import { formatValue, PATTERN_KINDS, SHAPES } from "./values.js";
7
+ const h = (title, text, section) => ({ title, text, section });
8
+ /** The built-in functions. */
9
+ export const FUNCTION_HELP = new Map([
10
+ ["abs", h("abs(x)", "The absolute value of `x`.", "18.1")],
11
+ ["sign", h("sign(x)", "−1, 0 or 1, depending on the sign of `x`.", "18.1")],
12
+ ["floor", h("floor(x)", "`x` rounded down.", "18.1")],
13
+ ["ceil", h("ceil(x)", "`x` rounded up.", "18.1")],
14
+ ["round", h("round(x)", "The nearest whole number, halves rounded up.", "18.1")],
15
+ [
16
+ "frac",
17
+ h("frac(x)", "`x` minus its whole part, keeping the sign: `frac(-1.25)` is `-0.25`.", "18.1"),
18
+ ],
19
+ ["min", h("min(a, b)", "The smaller of `a` and `b`.", "18.1")],
20
+ ["max", h("max(a, b)", "The larger of `a` and `b`.", "18.1")],
21
+ ["clamp", h("clamp(x, lo, hi)", "`x` limited to lo..hi.", "18.1")],
22
+ ["wrap", h("wrap(x, lo, hi)", "`x` wrapped round into lo..hi, so that hi wraps to lo.", "18.1")],
23
+ ["bounce", h("bounce(x, lo, hi)", "`x` folded back and forth between lo and hi.", "18.1")],
24
+ ["sqrt", h("sqrt(x)", "The square root of `x`.", "18.1")],
25
+ ["exp", h("exp(x)", "e to the power `x`.", "18.1")],
26
+ ["ln", h("ln(x)", "The natural logarithm of `x`.", "18.1")],
27
+ ["log10", h("log10(x)", "The base-10 logarithm of `x`.", "18.1")],
28
+ ["sin", h("sin(a)", "The sine of `a`, in degrees.", "18.1")],
29
+ ["cos", h("cos(a)", "The cosine of `a`, in degrees.", "18.1")],
30
+ ["tan", h("tan(a)", "The tangent of `a`, in degrees.", "18.1")],
31
+ ["asin", h("asin(x)", "The angle whose sine is `x`, in degrees.", "18.1")],
32
+ ["acos", h("acos(x)", "The angle whose cosine is `x`, in degrees.", "18.1")],
33
+ ["atan", h("atan(x)", "The angle whose tangent is `x`, in degrees.", "18.1")],
34
+ ["atan2", h("atan2(y, x)", "The angle of the point (x, y) from the x axis, in degrees.", "18.1")],
35
+ ["degrees", h("degrees(r)", "Converts radians to degrees.", "18.1")],
36
+ ["radians", h("radians(d)", "Converts degrees to radians.", "18.1")],
37
+ [
38
+ "wave",
39
+ h("wave(t)", "`sin(t × 360)`: one full wave (0, 1, 0, −1, 0) as `t` goes from 0 to 1.", "18.1"),
40
+ ],
41
+ [
42
+ "bump",
43
+ h("bump(t)", "`sin(t × 180)`: rises from 0 to 1 and back to 0 as `t` goes from 0 to 1.", "18.1"),
44
+ ],
45
+ [
46
+ "mix",
47
+ h("mix(a, b, t)", "`(1 − t)·a + t·b`, for numbers, vectors and colours. Colours blend hue the short way round.", "18.1"),
48
+ ],
49
+ [
50
+ "smoothmix",
51
+ h("smoothmix(a, b, t)", "Like `mix`, but eases in and out. `t` is clamped to 0–1.", "18.1"),
52
+ ],
53
+ [
54
+ "mandel",
55
+ h("mandel(x, y)", "How quickly the point x + iy escapes the Mandelbrot set, from 0 to 1. 1 means never.", "18.1"),
56
+ ],
57
+ ["vec", h("vec(x, y, z)", "The vector `(x, y, z)`.", "18.2")],
58
+ ["length", h("length(v)", "The length of the vector `v`.", "18.2")],
59
+ ["normalize", h("normalize(v)", "`v` scaled to length 1. The zero vector stays zero.", "18.2")],
60
+ ["dot", h("dot(a, b)", "The dot product of two vectors.", "18.2")],
61
+ ["cross", h("cross(a, b)", "The cross product of two vectors.", "18.2")],
62
+ [
63
+ "hsv",
64
+ h("hsv(h, s, v)", "A colour from hue (degrees), saturation and value, 0–1. A fourth argument is alpha.", "13.1"),
65
+ ],
66
+ [
67
+ "rgb",
68
+ h("rgb(r, g, b)", "A colour from red, green and blue, 0–1. A fourth argument is alpha.", "13.1"),
69
+ ],
70
+ [
71
+ "noise",
72
+ h("noise(x)", "Smooth noise from −1 to 1 that changes gently with `x` (a number or vector).", "18.5"),
73
+ ],
74
+ ["fbm", h("fbm(x)", "Fractal noise: five layers of `noise`, from −1 to 1.", "18.5")],
75
+ [
76
+ "random",
77
+ h("random(lo, hi)", "A random number from `lo` up to `hi`. The creature's `seed` gene decides the sequence.", "18.5"),
78
+ ],
79
+ [
80
+ "pattern",
81
+ h("pattern(kind, hue, seed)", "A texture: a pattern kind such as `marble`, a hue that sets the palette, and a seed.", "14"),
82
+ ],
83
+ [
84
+ "gradient",
85
+ h("gradient(c1, c2 at p, …)", "Colours blended along 0 to 1. Sample it like a call: `skin(0.5)`.", "13.3"),
86
+ ],
87
+ ]);
88
+ const NUMBER_CONSTANTS = new Map([
89
+ ["pi", "π, 3.14159…"],
90
+ ["tau", "2π, 6.28318…"],
91
+ ["golden", "The golden ratio, 1.61803…"],
92
+ ["sqrt2", "The square root of 2."],
93
+ ["sqrt3", "The square root of 3."],
94
+ ["ln2", "The natural logarithm of 2."],
95
+ ["x_axis", "The vector `(1, 0, 0)`."],
96
+ ["y_axis", "The vector `(0, 1, 0)`."],
97
+ ["z_axis", "The vector `(0, 0, 1)`."],
98
+ ["none", "No texture: `texture none`."],
99
+ ]);
100
+ const SHAPE_TEXT = {
101
+ tube: "A cylinder 1 across and 1 long, along the heading.",
102
+ cube: "A cube with sides of 1.",
103
+ cone: "A cone 1 long along the heading, its tip at the front.",
104
+ ball: "A sphere 1 across.",
105
+ ring: "A thin torus around the heading, 1 across.",
106
+ donut: "A fat torus around the heading, 1 across.",
107
+ };
108
+ /** The built-in constants: numbers, vectors, colours, shapes and pattern kinds. */
109
+ export function constantHelp(name) {
110
+ const text = NUMBER_CONSTANTS.get(name);
111
+ if (text !== undefined)
112
+ return h(name, text, name === "none" ? "14" : "18.1");
113
+ const colour = NAMED_COLOURS.get(name);
114
+ if (colour) {
115
+ const alpha = colour.a === 1 ? "" : `, ${colour.a}`;
116
+ return h(name, `The colour hsv(${colour.h}, ${colour.s}, ${colour.v}${alpha}).`, "13.1");
117
+ }
118
+ if (SHAPES.includes(name))
119
+ return h(name, `A shape. ${SHAPE_TEXT[name]}`, "12");
120
+ if (PATTERN_KINDS.includes(name))
121
+ return h(name, "A pattern kind, for `pattern(kind, hue, seed)`.", "14");
122
+ return undefined;
123
+ }
124
+ /** Keywords, and the inputs `time`, `beat`, `music` and `turtle`. */
125
+ export const KEYWORD_HELP = new Map([
126
+ ["creature", h("creature Name", "Starts a creature file.", "3")],
127
+ [
128
+ "gene",
129
+ h("gene name = value in min..max", "A value the app may change when mutating, breeding and morphing.", "6.1"),
130
+ ],
131
+ [
132
+ "part",
133
+ h("part name(a, b) { … }", "A piece of creature: it may move the turtle and lay shapes.", "10"),
134
+ ],
135
+ [
136
+ "function",
137
+ h("function name(a, b) { … }", "Calculates a value with `return`. It can't change the turtle or lay shapes.", "10"),
138
+ ],
139
+ ["return", h("return value", "Leaves a function with a value, or a part early.", "10")],
140
+ ["let", h("let name = value", "Creates a variable in the current block.", "7")],
141
+ ["if", h("if condition { … } else { … }", "Runs a block when the condition is true.", "9")],
142
+ ["else", h("else { … }", "What `if` runs when its condition is false.", "9")],
143
+ ["repeat", h("repeat n as i { … }", "Runs a block `n` times, with `i` counting from 0.", "9")],
144
+ ["as", h("repeat n as i", "Names the counter of a `repeat` loop.", "9")],
145
+ [
146
+ "for",
147
+ h("for v from a to b by s { … }", "Runs a block for `v` from `a` to `b`, in steps of `s` (1 if left out).", "9"),
148
+ ],
149
+ [
150
+ "from",
151
+ h("from", "In `for`: where the loop starts. In a gene: the options it chooses from.", "9"),
152
+ ],
153
+ ["to", h("to", "In `for`: where the loop ends.", "9")],
154
+ ["by", h("by", "In `for`: the step.", "9")],
155
+ ["while", h("while condition { … }", "Runs a block for as long as the condition is true.", "9")],
156
+ ["branch", h("branch { … }", "Runs a block, then puts the turtle back as it was.", "11.5")],
157
+ [
158
+ "lay",
159
+ h("lay / lay { … }", "Lays the current shape, optionally with an extra shape transform.", "12"),
160
+ ],
161
+ [
162
+ "reshape",
163
+ h("reshape { … }", "Changes the shape transform for every shape laid afterwards.", "11.7"),
164
+ ],
165
+ [
166
+ "symmetric",
167
+ h("symmetric x { … }", "Runs a block twice, the second time mirrored. `side` is 1, then −1.", "11.6"),
168
+ ],
169
+ [
170
+ "shape",
171
+ h("shape s", "The shape for later `lay`s: tube, cube, cone, ball, ring or donut.", "12"),
172
+ ],
173
+ ["colour", h("colour c", "The colour for later shapes.", "13.2")],
174
+ ["color", h("color c", "The colour for later shapes.", "13.2")],
175
+ ["shine", h("shine x", "Strength of highlights, 0–1.", "13.2")],
176
+ ["sharpness", h("sharpness x", "How tight the highlights are, 0–1.", "13.2")],
177
+ ["texture", h("texture p", "The texture for later shapes: a `pattern(…)`, or `none`.", "13.2")],
178
+ [
179
+ "background",
180
+ h("background { … fill p }", "The background the creature is shown against.", "15"),
181
+ ],
182
+ ["fill", h("fill p", "What the background shows: a pattern, a colour or a gradient.", "15")],
183
+ ["dance", h("dance { … }", "The creature's dance style: how music moves it as a whole.", "17")],
184
+ ["forward", h("forward d", "Moves the turtle `d` along its heading.", "11.2")],
185
+ ["back", h("back d", "Moves the turtle `d` backwards.", "11.2")],
186
+ ["move", h("move (x, y, z)", "Moves the turtle along its side, up and heading axes.", "11.2")],
187
+ ["pitch", h("pitch a", "Turns about the side axis: positive tips the nose down.", "11.3")],
188
+ ["yaw", h("yaw a", "Turns about the up axis, towards the side axis.", "11.3")],
189
+ ["roll", h("roll a", "Turns about the heading.", "11.3")],
190
+ [
191
+ "rotate",
192
+ h("rotate a around v", "Turns `a` degrees about the axis `v`, in the turtle's own axes.", "11.3"),
193
+ ],
194
+ ["around", h("rotate a around v", "The axis that `rotate` turns about.", "11.3")],
195
+ [
196
+ "grow",
197
+ h("grow k / grow (x, y, z)", "Multiplies the turtle's size. Negative values mirror.", "11.4"),
198
+ ],
199
+ ["mirror", h("mirror x", "Reverses one of the turtle's axes: x, y or z.", "11.4")],
200
+ ["in", h("gene name = v in min..max", "A gene's range.", "6.1")],
201
+ ["step", h("in min..max step s", "A gene that moves in whole steps of `s`.", "6.1")],
202
+ ["log", h("in min..max log", "A gene that changes by ratios rather than amounts.", "6.1")],
203
+ ["at", h("colour at p", "Where a gradient stop sits, from 0 to 1.", "13.3")],
204
+ ["and", h("a and b", "True if both sides are.", "8.1")],
205
+ ["or", h("a or b", "True if either side is.", "8.1")],
206
+ ["not", h("not a", "The opposite of a bool.", "8.1")],
207
+ ["true", h("true", "A bool.", "5")],
208
+ ["false", h("false", "A bool.", "5")],
209
+ ["print", h("print(a, b, …)", "Writes its arguments to the app's console.", "18.6")],
210
+ [
211
+ "turtle",
212
+ h("turtle.position", "Reads the turtle: position, heading, up, side, size, mirrored, shape, colour…", "18.4"),
213
+ ],
214
+ ["time", h("time", "Seconds since the creature started being shown.", "16")],
215
+ ["beat", h("beat", "Position within the current beat: 0 on the beat, rising towards 1.", "16")],
216
+ [
217
+ "music",
218
+ h("music.bass", "The music: `bass`, `mid`, `high`, `level` and `hit`, each 0–1.", "16"),
219
+ ],
220
+ ]);
221
+ /** The parts of `music` and `turtle`. */
222
+ export const MEMBER_HELP = new Map([
223
+ [
224
+ "music",
225
+ new Map([
226
+ ["bass", h("music.bass", "Level of the low frequencies, 0–1.", "16")],
227
+ ["mid", h("music.mid", "Level of the middle frequencies, 0–1.", "16")],
228
+ ["high", h("music.high", "Level of the high frequencies, 0–1.", "16")],
229
+ ["level", h("music.level", "Overall loudness, 0–1.", "16")],
230
+ ["hit", h("music.hit", "Jumps up on each drum hit or note, then falls back, 0–1.", "16")],
231
+ ]),
232
+ ],
233
+ [
234
+ "turtle",
235
+ new Map([
236
+ [
237
+ "position",
238
+ h("turtle.position", "The turtle's position in world space (a vector).", "18.4"),
239
+ ],
240
+ ["heading", h("turtle.heading", "The heading, as a unit vector in world space.", "18.4")],
241
+ ["up", h("turtle.up", "The up axis, as a unit vector.", "18.4")],
242
+ ["side", h("turtle.side", "The side axis, as a unit vector.", "18.4")],
243
+ ["size", h("turtle.size", "The size per axis (a vector).", "18.4")],
244
+ ["mirrored", h("turtle.mirrored", "Whether the turtle is mirrored (a bool).", "18.4")],
245
+ ["shape", h("turtle.shape", "The current shape.", "18.4")],
246
+ ["colour", h("turtle.colour", "The current colour.", "18.4")],
247
+ ["color", h("turtle.color", "The current colour.", "18.4")],
248
+ ["shine", h("turtle.shine", "The current shine.", "18.4")],
249
+ ["sharpness", h("turtle.sharpness", "The current sharpness.", "18.4")],
250
+ ["texture", h("turtle.texture", "The current texture.", "18.4")],
251
+ ]),
252
+ ],
253
+ ]);
254
+ /** A gene's range in words, such as `3 to 16, steps of 1`. */
255
+ export function geneRange(g) {
256
+ if (g.options)
257
+ return `one of ${g.options.map(formatValue).join(", ")}`;
258
+ if (g.kind === "bool")
259
+ return "true or false";
260
+ if (g.kind === "colour")
261
+ return g.hue?.whole ? "any hue" : `hues ${g.hue.start}° + ${g.hue.length}°`;
262
+ if (g.min === undefined || g.max === undefined)
263
+ return "";
264
+ let text = `${formatValue(g.min)} to ${formatValue(g.max)}`;
265
+ if (g.step !== undefined)
266
+ text += `, steps of ${g.step}`;
267
+ if (g.log)
268
+ text += ", by ratios";
269
+ return text;
270
+ }
271
+ const signature = (name, params) => params.length === 0 ? name : `${name}(${params.map((p) => p.name).join(", ")})`;
272
+ const contains = (s, offset) => s.start <= offset && offset <= s.end;
273
+ /** The names that can be used at `offset`, innermost last so they win over outer ones. */
274
+ function symbolsAt(program, offset) {
275
+ const out = [];
276
+ const geneOf = (stmt) => program.genes.find((g) => g.decl === stmt);
277
+ const geneSymbol = (g) => ({
278
+ name: g.name,
279
+ kind: "gene",
280
+ help: h(`gene ${g.fullName}`, [g.description, geneRange(g)].filter(Boolean).join(" · ") || "A gene.", "6"),
281
+ });
282
+ const variable = (name, text, section) => ({
283
+ name,
284
+ kind: "variable",
285
+ help: h(name, text, section),
286
+ });
287
+ // Declarations that can be used from anywhere in the creature.
288
+ const items = program.file.items;
289
+ const selfContained = items.find((s) => (s.kind === "Background" || s.kind === "Dance") && contains(s.span, offset));
290
+ if (!selfContained) {
291
+ for (const s of items) {
292
+ if (s.kind === "Part" || s.kind === "Function") {
293
+ out.push({
294
+ name: s.name,
295
+ kind: s.kind === "Part" ? "part" : "function",
296
+ help: h(`${s.kind === "Part" ? "part" : "function"} ${signature(s.name, s.params)}`, s.kind === "Part"
297
+ ? "A part defined in this creature."
298
+ : "A function defined in this creature.", "10"),
299
+ });
300
+ }
301
+ }
302
+ }
303
+ const visit = (stmts, inBody) => {
304
+ for (const s of stmts) {
305
+ if (s.kind === "Gene") {
306
+ const g = geneOf(s);
307
+ if (g)
308
+ out.push(geneSymbol(g));
309
+ }
310
+ else if (s.kind === "Let" && s.span.start < offset) {
311
+ out.push(variable(s.name, inBody ? "A variable." : "A global variable.", "7"));
312
+ }
313
+ }
314
+ for (const s of stmts) {
315
+ if (!contains(s.span, offset))
316
+ continue;
317
+ const into = (b) => {
318
+ if (b && contains(b.span, offset))
319
+ visit(b.items, inBody);
320
+ };
321
+ switch (s.kind) {
322
+ case "Part":
323
+ case "Function":
324
+ if (!contains(s.body.span, offset))
325
+ break;
326
+ for (const p of s.params)
327
+ out.push(variable(p.name, `A parameter of \`${s.name}\`.`, "10"));
328
+ visit(s.body.items, true);
329
+ break;
330
+ case "Background":
331
+ case "Dance":
332
+ into(s.body);
333
+ break;
334
+ case "If":
335
+ for (const b of s.branches)
336
+ into(b.block);
337
+ into(s.elseBlock);
338
+ break;
339
+ case "Repeat":
340
+ if (s.as && contains(s.block.span, offset))
341
+ out.push(variable(s.as.name, "The loop's counter, from 0.", "9"));
342
+ into(s.block);
343
+ break;
344
+ case "For":
345
+ if (contains(s.block.span, offset))
346
+ out.push(variable(s.variable.name, "The loop's variable.", "9"));
347
+ into(s.block);
348
+ break;
349
+ case "Symmetric":
350
+ if (contains(s.block.span, offset))
351
+ out.push(variable("side", "1 on the first run, −1 on the mirrored one.", "11.6"));
352
+ into(s.block);
353
+ break;
354
+ case "While":
355
+ case "Branch":
356
+ case "Reshape":
357
+ case "Lay":
358
+ into(s.block);
359
+ break;
360
+ }
361
+ }
362
+ };
363
+ visit(selfContained ? [selfContained] : items, false);
364
+ return out;
365
+ }
366
+ // ---------- hover ----------
367
+ /** The token at `offset`, counting a position just after a word as on it. */
368
+ function tokenAt(tokens, offset) {
369
+ return tokens.findIndex((t) => t.kind !== "newline" && t.kind !== "eof" && t.span.start <= offset && offset <= t.span.end);
370
+ }
371
+ /** Help for the word at `offset`, and where that word is. */
372
+ export function helpAt(program, offset) {
373
+ const { tokens } = lex(program.text);
374
+ const i = tokenAt(tokens, offset);
375
+ const t = tokens[i];
376
+ if (!t || (t.kind !== "name" && t.kind !== "keyword"))
377
+ return undefined;
378
+ const found = (help) => (help ? { span: t.span, help } : undefined);
379
+ // `music.bass`, `turtle.heading`: the word after the dot.
380
+ const dot = tokens[i - 1];
381
+ const owner = tokens[i - 2];
382
+ if (dot?.text === "." && owner && MEMBER_HELP.has(owner.text)) {
383
+ return found(MEMBER_HELP.get(owner.text).get(t.text));
384
+ }
385
+ if (t.kind === "name") {
386
+ const symbols = symbolsAt(program, offset).filter((s) => s.name === t.text);
387
+ if (symbols.length > 0)
388
+ return found(symbols[symbols.length - 1].help);
389
+ return found(FUNCTION_HELP.get(t.text) ?? constantHelp(t.text));
390
+ }
391
+ return found(KEYWORD_HELP.get(t.text));
392
+ }
393
+ // ---------- completion ----------
394
+ /** What can be typed at `offset`: everything in scope, built-ins and keywords. */
395
+ export function completionsAt(program, offset) {
396
+ // After `music.` or `turtle.`, only their parts.
397
+ const before = lex(program.text).tokens.filter((t) => t.kind !== "newline" && t.kind !== "eof" && t.span.end <= offset);
398
+ let k = before.length - 1;
399
+ const last = before[k];
400
+ if (last && (last.kind === "name" || last.kind === "keyword") && last.span.end === offset)
401
+ k--;
402
+ const dot = before[k];
403
+ const owner = before[k - 1];
404
+ if (dot?.text === "." && owner && MEMBER_HELP.has(owner.text)) {
405
+ return [...MEMBER_HELP.get(owner.text).entries()].map(([label, help]) => ({
406
+ label,
407
+ kind: "member",
408
+ detail: help.text,
409
+ }));
410
+ }
411
+ const out = new Map();
412
+ const add = (c) => out.set(c.label, c);
413
+ for (const k of KEYWORDS) {
414
+ if (k === "time" || k === "beat" || k === "music" || k === "turtle") {
415
+ add({ label: k, kind: "input", detail: KEYWORD_HELP.get(k).text });
416
+ }
417
+ else {
418
+ add({ label: k, kind: "keyword", detail: KEYWORD_HELP.get(k)?.title ?? "" });
419
+ }
420
+ }
421
+ for (const [name, help] of FUNCTION_HELP)
422
+ add({ label: name, kind: "function", detail: help.title });
423
+ for (const name of BUILTIN_CONSTANTS.keys()) {
424
+ add({ label: name, kind: "constant", detail: constantHelp(name)?.text ?? "" });
425
+ }
426
+ for (const s of symbolsAt(program, offset)) {
427
+ add({ label: s.name, kind: s.kind, detail: s.kind === "gene" ? s.help.text : s.help.title });
428
+ }
429
+ return [...out.values()];
430
+ }
431
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,8 @@ export { check, type CheckResult } from "./checker.js";
7
7
  export { format, formatText, type FormatResult } from "./format.js";
8
8
  export { build, buildBackground, DEFAULT_LIMITS, type BackgroundResult, type BuildOptions, type BuildResult, type Inputs, type LaidShape, type Limits, type MusicInputs, } from "./interpreter.js";
9
9
  export type { GeneInfo, GeneKind, GeneSection, HueArc } from "./genes.js";
10
- export { breed, geneLiteral, morph, mutate, valuesOf, writeGenes, type GeneSet, type GeneticsOptions, type GeneValues, type MutateOptions, } from "./genetics.js";
10
+ export { breed, geneEdits, geneLiteral, morph, mutate, valuesOf, writeGenes, type GeneSet, type GeneticsOptions, type GeneValues, type MutateOptions, } from "./genetics.js";
11
+ export { completionsAt, constantHelp, FUNCTION_HELP, geneRange, helpAt, KEYWORD_HELP, MEMBER_HELP, type Completion, type CompletionKind, type Help, } from "./help.js";
11
12
  export { mulberry32 } from "./noise.js";
12
13
  export { BUILTIN_CONSTANTS, BUILTIN_FUNCTIONS, isBuiltinName, type BuiltinFunction, } from "./builtins.js";
13
14
  export { hsv, rgb, hexColour, toRgb, mixColour, sampleGradient, NAMED_COLOURS } from "./colour.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,mBAAmB,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,eAAe,EACf,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,IAAI,GACV,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,mBAAmB,UAAU,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,WAAW,EACX,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,IAAI,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,eAAe,EACf,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,IAAI,GACV,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -7,7 +7,8 @@ export { parse } from "./parser.js";
7
7
  export { check } from "./checker.js";
8
8
  export { format, formatText } from "./format.js";
9
9
  export { build, buildBackground, DEFAULT_LIMITS, } from "./interpreter.js";
10
- export { breed, geneLiteral, morph, mutate, valuesOf, writeGenes, } from "./genetics.js";
10
+ export { breed, geneEdits, geneLiteral, morph, mutate, valuesOf, writeGenes, } from "./genetics.js";
11
+ export { completionsAt, constantHelp, FUNCTION_HELP, geneRange, helpAt, KEYWORD_HELP, MEMBER_HELP, } from "./help.js";
11
12
  export { mulberry32 } from "./noise.js";
12
13
  export { BUILTIN_CONSTANTS, BUILTIN_FUNCTIONS, isBuiltinName, } from "./builtins.js";
13
14
  export { hsv, rgb, hexColour, toRgb, mixColour, sampleGradient, NAMED_COLOURS } from "./colour.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAE3E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAA8C,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAoB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAoB,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,GAQf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,GAKX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWzE,OAAO,EACL,gBAAgB,EAChB,OAAO,GAKR,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAE3E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAA8C,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,KAAK,EAAoB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,EAAoB,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,KAAK,EACL,eAAe,EACf,cAAc,GAQf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,GAKX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,YAAY,EACZ,WAAW,GAIZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWzE,OAAO,EACL,gBAAgB,EAChB,OAAO,GAKR,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genocode/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "The GenoCode language: parser, checker, formatter, interpreter and genetics.",
5
5
  "license": "MIT",
6
6
  "repository": {