tjs-lang 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CONTEXT.md +594 -0
  2. package/LICENSE +190 -0
  3. package/README.md +220 -0
  4. package/bin/benchmarks.ts +351 -0
  5. package/bin/dev.ts +205 -0
  6. package/bin/docs.js +170 -0
  7. package/bin/install-cursor.sh +71 -0
  8. package/bin/install-vscode.sh +71 -0
  9. package/bin/select-local-models.d.ts +1 -0
  10. package/bin/select-local-models.js +28 -0
  11. package/bin/select-local-models.ts +31 -0
  12. package/demo/autocomplete.test.ts +232 -0
  13. package/demo/docs.json +186 -0
  14. package/demo/examples.test.ts +598 -0
  15. package/demo/index.html +91 -0
  16. package/demo/src/autocomplete.ts +482 -0
  17. package/demo/src/capabilities.ts +859 -0
  18. package/demo/src/demo-nav.ts +2097 -0
  19. package/demo/src/examples.test.ts +161 -0
  20. package/demo/src/examples.ts +476 -0
  21. package/demo/src/imports.test.ts +196 -0
  22. package/demo/src/imports.ts +421 -0
  23. package/demo/src/index.ts +639 -0
  24. package/demo/src/module-store.ts +635 -0
  25. package/demo/src/module-sw.ts +132 -0
  26. package/demo/src/playground.ts +949 -0
  27. package/demo/src/service-host.ts +389 -0
  28. package/demo/src/settings.ts +440 -0
  29. package/demo/src/style.ts +280 -0
  30. package/demo/src/tjs-playground.ts +1605 -0
  31. package/demo/src/ts-examples.ts +478 -0
  32. package/demo/src/ts-playground.ts +1092 -0
  33. package/demo/static/favicon.svg +30 -0
  34. package/demo/static/photo-1.jpg +0 -0
  35. package/demo/static/photo-2.jpg +0 -0
  36. package/demo/static/texts/ai-history.txt +9 -0
  37. package/demo/static/texts/coffee-origins.txt +9 -0
  38. package/demo/static/texts/renewable-energy.txt +9 -0
  39. package/dist/index.js +256 -0
  40. package/dist/index.js.map +37 -0
  41. package/dist/tjs-batteries.js +4 -0
  42. package/dist/tjs-batteries.js.map +15 -0
  43. package/dist/tjs-full.js +256 -0
  44. package/dist/tjs-full.js.map +37 -0
  45. package/dist/tjs-transpiler.js +220 -0
  46. package/dist/tjs-transpiler.js.map +21 -0
  47. package/dist/tjs-vm.js +4 -0
  48. package/dist/tjs-vm.js.map +14 -0
  49. package/docs/CNAME +1 -0
  50. package/docs/favicon.svg +30 -0
  51. package/docs/index.html +91 -0
  52. package/docs/index.js +10468 -0
  53. package/docs/index.js.map +92 -0
  54. package/docs/photo-1.jpg +0 -0
  55. package/docs/photo-1.webp +0 -0
  56. package/docs/photo-2.jpg +0 -0
  57. package/docs/photo-2.webp +0 -0
  58. package/docs/texts/ai-history.txt +9 -0
  59. package/docs/texts/coffee-origins.txt +9 -0
  60. package/docs/texts/renewable-energy.txt +9 -0
  61. package/docs/tjs-lang.svg +31 -0
  62. package/docs/tosijs-agent.svg +31 -0
  63. package/editors/README.md +325 -0
  64. package/editors/ace/ajs-mode.js +328 -0
  65. package/editors/ace/ajs-mode.ts +269 -0
  66. package/editors/ajs-syntax.ts +212 -0
  67. package/editors/build-grammars.ts +510 -0
  68. package/editors/codemirror/ajs-language.js +287 -0
  69. package/editors/codemirror/ajs-language.ts +1447 -0
  70. package/editors/codemirror/autocomplete.test.ts +531 -0
  71. package/editors/codemirror/component.ts +404 -0
  72. package/editors/monaco/ajs-monarch.js +243 -0
  73. package/editors/monaco/ajs-monarch.ts +225 -0
  74. package/editors/tjs-syntax.ts +115 -0
  75. package/editors/vscode/language-configuration.json +37 -0
  76. package/editors/vscode/package.json +65 -0
  77. package/editors/vscode/syntaxes/ajs-injection.tmLanguage.json +107 -0
  78. package/editors/vscode/syntaxes/ajs.tmLanguage.json +252 -0
  79. package/editors/vscode/syntaxes/tjs.tmLanguage.json +333 -0
  80. package/package.json +83 -0
  81. package/src/cli/commands/check.ts +41 -0
  82. package/src/cli/commands/convert.ts +133 -0
  83. package/src/cli/commands/emit.ts +260 -0
  84. package/src/cli/commands/run.ts +68 -0
  85. package/src/cli/commands/test.ts +194 -0
  86. package/src/cli/commands/types.ts +20 -0
  87. package/src/cli/create-app.ts +236 -0
  88. package/src/cli/playground.ts +250 -0
  89. package/src/cli/tjs.ts +166 -0
  90. package/src/cli/tjsx.ts +160 -0
  91. package/tjs-lang.svg +31 -0
@@ -0,0 +1,252 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3
+ "name": "AsyncJS",
4
+ "scopeName": "source.ajs",
5
+ "patterns": [
6
+ {
7
+ "include": "#comments"
8
+ },
9
+ {
10
+ "include": "#strings"
11
+ },
12
+ {
13
+ "include": "#function-def"
14
+ },
15
+ {
16
+ "include": "#forbidden"
17
+ },
18
+ {
19
+ "include": "#keywords"
20
+ },
21
+ {
22
+ "include": "#builtins"
23
+ },
24
+ {
25
+ "include": "#type-parameters"
26
+ },
27
+ {
28
+ "include": "#numbers"
29
+ },
30
+ {
31
+ "include": "#operators"
32
+ }
33
+ ],
34
+ "repository": {
35
+ "function-def": {
36
+ "begin": "\\b(function)\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*\\(",
37
+ "beginCaptures": {
38
+ "1": {
39
+ "name": "keyword.control.ajs"
40
+ },
41
+ "2": {
42
+ "name": "entity.name.function.ajs"
43
+ }
44
+ },
45
+ "end": "\\)",
46
+ "patterns": [
47
+ {
48
+ "include": "#type-parameters"
49
+ },
50
+ {
51
+ "include": "#comments"
52
+ }
53
+ ]
54
+ },
55
+ "type-parameters": {
56
+ "patterns": [
57
+ {
58
+ "comment": "Required parameter with type: name: 'string' or name: 0",
59
+ "match": "([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*(:)\\s*('[^']*'|\"[^\"]*\"|\\d+|\\{[^}]*\\}|\\[[^\\]]*\\]|true|false|null)",
60
+ "captures": {
61
+ "1": {
62
+ "name": "variable.parameter.ajs"
63
+ },
64
+ "2": {
65
+ "name": "punctuation.separator.ajs"
66
+ },
67
+ "3": {
68
+ "name": "support.type.ajs"
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "comment": "Optional parameter with default: name = value",
74
+ "match": "([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*(=)\\s*(?=null\\s*&&|'|\"|\\d|\\{|\\[|true|false|null)",
75
+ "captures": {
76
+ "1": {
77
+ "name": "variable.parameter.ajs"
78
+ },
79
+ "2": {
80
+ "name": "keyword.operator.assignment.ajs"
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "comment": "Simple parameter name",
86
+ "match": "([a-zA-Z_$][a-zA-Z0-9_$]*)(?=\\s*[,)])",
87
+ "captures": {
88
+ "1": {
89
+ "name": "variable.parameter.ajs"
90
+ }
91
+ }
92
+ }
93
+ ]
94
+ },
95
+ "forbidden": {
96
+ "comment": "Auto-generated from editors/ajs-syntax.ts FORBIDDEN_KEYWORDS",
97
+ "patterns": [
98
+ {
99
+ "match": "\\\\b(new|class|extends|super|this|implements|interface|abstract|static|private|protected|public|async|await|yield|import|export|require|module|var|throw|switch|case|default|with|delete|void|typeof|instanceof|debugger|eval|type|enum|namespace|declare|readonly|as|is|keyof|infer|never|unknown)\\\\b",
100
+ "name": "invalid.illegal.forbidden.ajs"
101
+ }
102
+ ]
103
+ },
104
+ "keywords": {
105
+ "comment": "Auto-generated from editors/ajs-syntax.ts KEYWORDS",
106
+ "patterns": [
107
+ {
108
+ "match": "\\\\b(function|return|if|else|while|for|of|in|try|catch|finally|let|const)\\\\b",
109
+ "name": "keyword.control.ajs"
110
+ },
111
+ {
112
+ "match": "\\\\b(true|false|null|undefined)\\\\b",
113
+ "name": "constant.language.ajs"
114
+ }
115
+ ]
116
+ },
117
+ "builtins": {
118
+ "comment": "Auto-generated from editors/ajs-syntax.ts TYPE_CONSTRUCTORS",
119
+ "patterns": [
120
+ {
121
+ "match": "\\\\b(Date|Set|Map|Array|Object|String|Number|Boolean|RegExp|Error|JSON|Math|Schema)\\\\b",
122
+ "name": "support.class.ajs"
123
+ }
124
+ ]
125
+ },
126
+ "strings": {
127
+ "patterns": [
128
+ {
129
+ "name": "string.quoted.single.ajs",
130
+ "begin": "'",
131
+ "end": "'",
132
+ "patterns": [
133
+ {
134
+ "name": "constant.character.escape.ajs",
135
+ "match": "\\\\."
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "name": "string.quoted.double.ajs",
141
+ "begin": "\"",
142
+ "end": "\"",
143
+ "patterns": [
144
+ {
145
+ "name": "constant.character.escape.ajs",
146
+ "match": "\\\\."
147
+ }
148
+ ]
149
+ },
150
+ {
151
+ "name": "string.template.ajs",
152
+ "begin": "`",
153
+ "end": "`",
154
+ "patterns": [
155
+ {
156
+ "name": "constant.character.escape.ajs",
157
+ "match": "\\\\."
158
+ },
159
+ {
160
+ "name": "meta.template.expression.ajs",
161
+ "begin": "\\$\\{",
162
+ "end": "\\}",
163
+ "beginCaptures": {
164
+ "0": {
165
+ "name": "punctuation.definition.template-expression.begin.ajs"
166
+ }
167
+ },
168
+ "endCaptures": {
169
+ "0": {
170
+ "name": "punctuation.definition.template-expression.end.ajs"
171
+ }
172
+ },
173
+ "patterns": [
174
+ {
175
+ "include": "#forbidden"
176
+ },
177
+ {
178
+ "include": "#keywords"
179
+ },
180
+ {
181
+ "include": "#builtins"
182
+ },
183
+ {
184
+ "include": "#numbers"
185
+ },
186
+ {
187
+ "include": "#operators"
188
+ }
189
+ ]
190
+ }
191
+ ]
192
+ }
193
+ ]
194
+ },
195
+ "numbers": {
196
+ "patterns": [
197
+ {
198
+ "match": "\\b\\d+\\.\\d+([eE][+-]?\\d+)?\\b",
199
+ "name": "constant.numeric.float.ajs"
200
+ },
201
+ {
202
+ "match": "\\b\\d+\\b",
203
+ "name": "constant.numeric.integer.ajs"
204
+ }
205
+ ]
206
+ },
207
+ "operators": {
208
+ "patterns": [
209
+ {
210
+ "match": "\\?\\?|&&|\\|\\||!|===|!==|==|!=|>=|<=|>|<",
211
+ "name": "keyword.operator.logical.ajs"
212
+ },
213
+ {
214
+ "match": "\\+|\\-|\\*|\\/|%|\\*\\*",
215
+ "name": "keyword.operator.arithmetic.ajs"
216
+ },
217
+ {
218
+ "match": "=",
219
+ "name": "keyword.operator.assignment.ajs"
220
+ },
221
+ {
222
+ "match": "\\?\\.?",
223
+ "name": "keyword.operator.optional.ajs"
224
+ }
225
+ ]
226
+ },
227
+ "comments": {
228
+ "patterns": [
229
+ {
230
+ "name": "comment.line.double-slash.ajs",
231
+ "match": "//.*$"
232
+ },
233
+ {
234
+ "name": "comment.block.documentation.ajs",
235
+ "begin": "/\\*\\*",
236
+ "end": "\\*/",
237
+ "patterns": [
238
+ {
239
+ "match": "@(param|returns?|description|example)\\b",
240
+ "name": "keyword.other.documentation.ajs"
241
+ }
242
+ ]
243
+ },
244
+ {
245
+ "name": "comment.block.ajs",
246
+ "begin": "/\\*",
247
+ "end": "\\*/"
248
+ }
249
+ ]
250
+ }
251
+ }
252
+ }
@@ -0,0 +1,333 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3
+ "name": "TJS",
4
+ "scopeName": "source.tjs",
5
+ "patterns": [
6
+ {
7
+ "include": "#comments"
8
+ },
9
+ {
10
+ "include": "#strings"
11
+ },
12
+ {
13
+ "include": "#test-block"
14
+ },
15
+ {
16
+ "include": "#mock-block"
17
+ },
18
+ {
19
+ "include": "#unsafe-block"
20
+ },
21
+ {
22
+ "include": "#function-def"
23
+ },
24
+ {
25
+ "include": "#return-type"
26
+ },
27
+ {
28
+ "include": "#forbidden"
29
+ },
30
+ {
31
+ "include": "#keywords"
32
+ },
33
+ {
34
+ "include": "#builtins"
35
+ },
36
+ {
37
+ "include": "#type-parameters"
38
+ },
39
+ {
40
+ "include": "#numbers"
41
+ },
42
+ {
43
+ "include": "#operators"
44
+ }
45
+ ],
46
+ "repository": {
47
+ "test-block": {
48
+ "begin": "\\b(test)\\s*\\(\\s*(['\"`])([^'\"`]*)(\\2)\\s*\\)\\s*\\{",
49
+ "beginCaptures": {
50
+ "1": {
51
+ "name": "keyword.control.test.tjs"
52
+ },
53
+ "2": {
54
+ "name": "punctuation.definition.string.begin.tjs"
55
+ },
56
+ "3": {
57
+ "name": "string.quoted.test-description.tjs"
58
+ },
59
+ "4": {
60
+ "name": "punctuation.definition.string.end.tjs"
61
+ }
62
+ },
63
+ "end": "\\}",
64
+ "patterns": [
65
+ {
66
+ "include": "$self"
67
+ }
68
+ ]
69
+ },
70
+ "mock-block": {
71
+ "begin": "\\b(mock)\\s*\\{",
72
+ "beginCaptures": {
73
+ "1": {
74
+ "name": "keyword.control.mock.tjs"
75
+ }
76
+ },
77
+ "end": "\\}",
78
+ "patterns": [
79
+ {
80
+ "include": "$self"
81
+ }
82
+ ]
83
+ },
84
+ "unsafe-block": {
85
+ "begin": "\\b(unsafe)\\s*\\{",
86
+ "beginCaptures": {
87
+ "1": {
88
+ "name": "keyword.control.unsafe.tjs"
89
+ }
90
+ },
91
+ "end": "\\}",
92
+ "patterns": [
93
+ {
94
+ "include": "$self"
95
+ }
96
+ ]
97
+ },
98
+ "return-type": {
99
+ "match": "\\)\\s*(->)\\s*(\\{[^}]+\\}|'[^']*'|\"[^\"]*\"|\\[[^\\]]*\\]|\\w+)",
100
+ "captures": {
101
+ "1": {
102
+ "name": "keyword.operator.return-type.tjs"
103
+ },
104
+ "2": {
105
+ "name": "support.type.return.tjs"
106
+ }
107
+ }
108
+ },
109
+ "function-def": {
110
+ "begin": "\\b(async\\s+)?(function)\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*\\(",
111
+ "beginCaptures": {
112
+ "1": {
113
+ "name": "keyword.control.async.tjs"
114
+ },
115
+ "2": {
116
+ "name": "keyword.control.tjs"
117
+ },
118
+ "3": {
119
+ "name": "entity.name.function.tjs"
120
+ }
121
+ },
122
+ "end": "\\)",
123
+ "patterns": [
124
+ {
125
+ "include": "#type-parameters"
126
+ },
127
+ {
128
+ "include": "#comments"
129
+ }
130
+ ]
131
+ },
132
+ "type-parameters": {
133
+ "patterns": [
134
+ {
135
+ "comment": "Required parameter with type: name: 'string' or name: 0",
136
+ "match": "([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*(:)\\s*('[^']*'|\"[^\"]*\"|\\d+|\\{[^}]*\\}|\\[[^\\]]*\\]|true|false|null)",
137
+ "captures": {
138
+ "1": {
139
+ "name": "variable.parameter.tjs"
140
+ },
141
+ "2": {
142
+ "name": "punctuation.separator.type.tjs"
143
+ },
144
+ "3": {
145
+ "name": "support.type.tjs"
146
+ }
147
+ }
148
+ },
149
+ {
150
+ "comment": "Optional parameter with default: name = value",
151
+ "match": "([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*(=)\\s*(?=null\\s*&&|'|\"|\\d|\\{|\\[|true|false|null)",
152
+ "captures": {
153
+ "1": {
154
+ "name": "variable.parameter.tjs"
155
+ },
156
+ "2": {
157
+ "name": "keyword.operator.assignment.tjs"
158
+ }
159
+ }
160
+ },
161
+ {
162
+ "comment": "Simple parameter name",
163
+ "match": "([a-zA-Z_$][a-zA-Z0-9_$]*)(?=\\s*[,)])",
164
+ "captures": {
165
+ "1": {
166
+ "name": "variable.parameter.tjs"
167
+ }
168
+ }
169
+ }
170
+ ]
171
+ },
172
+ "forbidden": {
173
+ "patterns": [
174
+ {
175
+ "match": "\\\\b(new|class|extends|super|this|implements|interface|abstract|static|private|protected|public|yield|require|module|var|switch|case|default|with|delete|void|typeof|instanceof|debugger|eval|type|enum|namespace|declare|readonly|as|is|keyof|infer|never|unknown)\\\\b",
176
+ "name": "invalid.illegal.forbidden.tjs"
177
+ }
178
+ ]
179
+ },
180
+ "keywords": {
181
+ "patterns": [
182
+ {
183
+ "match": "\\\\b(function|return|if|else|while|for|of|in|try|catch|finally|let|const|test|mock|unsafe|async|await)\\\\b",
184
+ "name": "keyword.control.tjs"
185
+ },
186
+ {
187
+ "match": "\\\\b(true|false|null|undefined)\\\\b",
188
+ "name": "constant.language.tjs"
189
+ }
190
+ ]
191
+ },
192
+ "builtins": {
193
+ "patterns": [
194
+ {
195
+ "match": "\\\\b(Date|Set|Map|Array|Object|String|Number|Boolean|RegExp|Error|JSON|Math|Schema|expect|assert)\\\\b",
196
+ "name": "support.class.tjs"
197
+ }
198
+ ]
199
+ },
200
+ "strings": {
201
+ "patterns": [
202
+ {
203
+ "name": "string.quoted.single.tjs",
204
+ "begin": "'",
205
+ "end": "'",
206
+ "patterns": [
207
+ {
208
+ "name": "constant.character.escape.tjs",
209
+ "match": "\\\\."
210
+ }
211
+ ]
212
+ },
213
+ {
214
+ "name": "string.quoted.double.tjs",
215
+ "begin": "\"",
216
+ "end": "\"",
217
+ "patterns": [
218
+ {
219
+ "name": "constant.character.escape.tjs",
220
+ "match": "\\\\."
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ "name": "string.template.tjs",
226
+ "begin": "`",
227
+ "end": "`",
228
+ "patterns": [
229
+ {
230
+ "name": "constant.character.escape.tjs",
231
+ "match": "\\\\."
232
+ },
233
+ {
234
+ "name": "meta.template.expression.tjs",
235
+ "begin": "\\$\\{",
236
+ "end": "\\}",
237
+ "beginCaptures": {
238
+ "0": {
239
+ "name": "punctuation.definition.template-expression.begin.tjs"
240
+ }
241
+ },
242
+ "endCaptures": {
243
+ "0": {
244
+ "name": "punctuation.definition.template-expression.end.tjs"
245
+ }
246
+ },
247
+ "patterns": [
248
+ {
249
+ "include": "$self"
250
+ }
251
+ ]
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ },
257
+ "numbers": {
258
+ "patterns": [
259
+ {
260
+ "match": "\\b\\d+\\.\\d+([eE][+-]?\\d+)?\\b",
261
+ "name": "constant.numeric.float.tjs"
262
+ },
263
+ {
264
+ "match": "\\b\\d+\\b",
265
+ "name": "constant.numeric.integer.tjs"
266
+ }
267
+ ]
268
+ },
269
+ "operators": {
270
+ "patterns": [
271
+ {
272
+ "match": "->",
273
+ "name": "keyword.operator.return-type.tjs"
274
+ },
275
+ {
276
+ "match": "\\?\\?|&&|\\|\\||!|===|!==|==|!=|>=|<=|>|<",
277
+ "name": "keyword.operator.logical.tjs"
278
+ },
279
+ {
280
+ "match": "\\+|\\-|\\*|\\/|%|\\*\\*",
281
+ "name": "keyword.operator.arithmetic.tjs"
282
+ },
283
+ {
284
+ "match": "=",
285
+ "name": "keyword.operator.assignment.tjs"
286
+ },
287
+ {
288
+ "match": "\\?\\.?",
289
+ "name": "keyword.operator.optional.tjs"
290
+ }
291
+ ]
292
+ },
293
+ "comments": {
294
+ "patterns": [
295
+ {
296
+ "name": "comment.line.double-slash.tjs",
297
+ "match": "//.*$"
298
+ },
299
+ {
300
+ "name": "comment.block.documentation.tjs",
301
+ "begin": "/\\*\\*",
302
+ "end": "\\*/",
303
+ "patterns": [
304
+ {
305
+ "match": "@(param|returns?|description|example)\\b",
306
+ "name": "keyword.other.documentation.tjs"
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ "comment": "Non-JSDoc block comments - could add markdown highlighting here",
312
+ "name": "comment.block.markdown.tjs",
313
+ "begin": "/\\*(?!\\*)",
314
+ "end": "\\*/",
315
+ "patterns": [
316
+ {
317
+ "match": "(^|\\s)(#{1,6})\\s+.*$",
318
+ "name": "markup.heading.markdown.tjs"
319
+ },
320
+ {
321
+ "match": "\\*\\*[^*]+\\*\\*",
322
+ "name": "markup.bold.markdown.tjs"
323
+ },
324
+ {
325
+ "match": "`[^`]+`",
326
+ "name": "markup.inline.raw.markdown.tjs"
327
+ }
328
+ ]
329
+ }
330
+ ]
331
+ }
332
+ }
333
+ }
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "tjs-lang",
3
+ "version": "0.2.0",
4
+ "license": "Apache-2.0",
5
+ "main": "./dist/index.js",
6
+ "exports": {
7
+ ".": "./dist/index.js",
8
+ "./src": "./src/index.ts",
9
+ "./editors/monaco": "./editors/monaco/ajs-monarch.js",
10
+ "./editors/codemirror": "./editors/codemirror/ajs-language.js",
11
+ "./editors/ace": "./editors/ace/ajs-mode.js"
12
+ },
13
+ "bin": {
14
+ "tjs": "./src/cli/tjs.ts",
15
+ "tjsx": "./src/cli/tjsx.ts",
16
+ "tjs-playground": "./src/cli/playground.ts",
17
+ "create-tjs-app": "./src/cli/create-app.ts",
18
+ "ajs-install-vscode": "./bin/install-vscode.sh",
19
+ "ajs-install-cursor": "./bin/install-cursor.sh"
20
+ },
21
+ "type": "module",
22
+ "files": [
23
+ "dist",
24
+ "docs",
25
+ "src/cli",
26
+ "editors",
27
+ "bin",
28
+ "demo",
29
+ "tjs-lang.svg",
30
+ "CONTEXT.md"
31
+ ],
32
+ "sideEffects": false,
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/tonioloewald/tjs-lang.git"
36
+ },
37
+ "devDependencies": {
38
+ "@codemirror/lang-javascript": "^6.2.4",
39
+ "@codemirror/state": "^6.5.3",
40
+ "@codemirror/view": "^6.39.9",
41
+ "@happy-dom/global-registrator": "^20.1.0",
42
+ "@types/bun": "latest",
43
+ "@types/jsdom": "^21.1.7",
44
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
45
+ "@typescript-eslint/parser": "^5.62.0",
46
+ "acorn-walk": "^8.3.4",
47
+ "chokidar": "^4.0.3",
48
+ "codemirror": "^6.0.2",
49
+ "eslint": "^8.57.1",
50
+ "marked": "^9.1.6",
51
+ "prettier": "^2.8.8",
52
+ "tosijs": "^1.0.0",
53
+ "tosijs-ui": "^1.0.0",
54
+ "typescript": "^5.6.2",
55
+ "valibot": "^0.36.0",
56
+ "vitest": "^2.0.5"
57
+ },
58
+ "scripts": {
59
+ "format": "bun eslint src --fix && bun prettier --write .",
60
+ "lint": "eslint src",
61
+ "build:grammars": "bun editors/build-grammars.ts",
62
+ "test:fast": "SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test",
63
+ "test:llm": "bun test src/batteries/models.integration.test.ts",
64
+ "bench": "bun bin/benchmarks.ts",
65
+ "make": "rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts",
66
+ "build:bundles": "bun scripts/build.ts",
67
+ "typecheck": "tsc --noEmit",
68
+ "latest": "rm -rf node_modules && bun install",
69
+ "docs": "node bin/docs.js",
70
+ "dev": "bun run bin/dev.ts",
71
+ "build:demo": "bun run docs && bun build ./demo/src/index.ts --outdir=docs --minify --sourcemap=external --target=browser && cp demo/index.html demo/static/favicon.svg demo/static/photo-*.jpg tjs-lang.svg docs/ && cp -r demo/static/texts docs/",
72
+ "build:cli": "bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx",
73
+ "start": "bun run build:demo && bun run dev"
74
+ },
75
+ "dependencies": {
76
+ "@codemirror/lang-css": "^6.3.1",
77
+ "@codemirror/lang-html": "^6.4.11",
78
+ "@codemirror/lang-markdown": "^6.5.0",
79
+ "@codemirror/theme-one-dark": "^6.1.3",
80
+ "acorn": "^8.15.0",
81
+ "tosijs-schema": "^1.2.0"
82
+ }
83
+ }